Module: Pdfrb::DigitalSignature::TimestampHandler
- Defined in:
- lib/pdfrb/digital_signature/timestamp_handler.rb
Class Method Summary collapse
Class Method Details
.build_tsr_request(data) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/pdfrb/digital_signature/timestamp_handler.rb', line 27 def build_tsr_request(data) require "openssl" hash = OpenSSL::Digest.new("SHA256") req = OpenSSL::ASN1::Sequence.new([ OpenSSL::ASN1::Integer.new(1), OpenSSL::ASN1::Sequence.new([ OpenSSL::ASN1::Sequence.new([ OpenSSL::ASN1::ObjectId.new("2.16.840.1.101.3.4.2.1"), OpenSSL::ASN1::OctetString.new(hash.digest(data).force_encoding("BINARY")), ]), ]), OpenSSL::ASN1::Integer.new(0), OpenSSL::ASN1::Boolean.new(false), ]) req.to_der end |
.create_timestamp(data, tsa_url: nil) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/pdfrb/digital_signature/timestamp_handler.rb', line 10 def (data, tsa_url: nil) return nil unless tsa_url require "net/http" require "uri" uri = URI(tsa_url) response = Net::HTTP.start(uri.host, uri.port) do |http| req = Net::HTTP::Post.new(uri.request_uri) req["Content-Type"] = "application/timestamp-query" req.body = build_tsr_request(data) http.request(req) end response.body if response.is_a?(Net::HTTPSuccess) end |
.type ⇒ Object
8 |
# File 'lib/pdfrb/digital_signature/timestamp_handler.rb', line 8 def type; :"adbe.revision"; end |