class Fiscalizer::Serializers::Signature

Attributes

cert_issuer[R]
public_key[R]
reference[R]
xml[R]

Public Class Methods

new(xml, reference, public_key, cert_issuer) click to toggle source
# File lib/fiscalizer/serializers/signature.rb, line 4
def initialize(xml, reference, public_key, cert_issuer)
  @xml = xml
  @reference = reference
  @public_key = public_key
  @cert_issuer = cert_issuer
end

Public Instance Methods

call() click to toggle source
# File lib/fiscalizer/serializers/signature.rb, line 13
def call
  xml.Signature('xmlns' => 'http://www.w3.org/2000/09/xmldsig#') do
    add_signed_info
    add_signature_value
    add_key_info
  end
end

Private Instance Methods

add_key_info() click to toggle source
# File lib/fiscalizer/serializers/signature.rb, line 42
def add_key_info
  xml.KeyInfo do
    xml.X509Data do
      xml.X509Certificate public_key_string
      xml.X509IssuerSerial do
        xml.X509IssuerName cert_issuer
        xml.X509SerialNumber '1053520622'
      end
    end
  end
end
add_signature_value() click to toggle source
# File lib/fiscalizer/serializers/signature.rb, line 38
def add_signature_value
  xml.SignatureValue
end
add_signed_info() click to toggle source
# File lib/fiscalizer/serializers/signature.rb, line 23
def add_signed_info
  xml.SignedInfo do
    xml.CanonicalizationMethod('Algorithm' => 'http://www.w3.org/2001/10/xml-exc-c14n#')
    xml.SignatureMethod('Algorithm' => 'http://www.w3.org/2000/09/xmldsig#rsa-sha1')
    xml.Reference('URI' => reference) do
      xml.Transforms do
        xml.Transform('Algorithm' => 'http://www.w3.org/2000/09/xmldsig#enveloped-signature')
        xml.Transform('Algorithm' => 'http://www.w3.org/2001/10/xml-exc-c14n#')
      end
      xml.DigestMethod('Algorithm' => 'http://www.w3.org/2000/09/xmldsig#sha1')
      xml.DigestValue
    end
  end
end
public_key_string() click to toggle source
# File lib/fiscalizer/serializers/signature.rb, line 54
def public_key_string
  public_key.to_s
    .gsub('-----BEGIN CERTIFICATE-----', '')
    .gsub('-----END CERTIFICATE-----', '')
    .gsub("\n", '')
end