Class: Xmldsig::Signature

Inherits:
Object
  • Object
show all
Defined in:
lib/xmldsig/signature.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(signature) ⇒ Signature

Returns a new instance of Signature.



5
6
7
# File 'lib/xmldsig/signature.rb', line 5

def initialize(signature)
  @signature = signature
end

Instance Attribute Details

#signatureObject

Returns the value of attribute signature.



3
4
5
# File 'lib/xmldsig/signature.rb', line 3

def signature
  @signature
end

Instance Method Details

#certificateObject



41
42
43
# File 'lib/xmldsig/signature.rb', line 41

def certificate
  x509_certificate
end

#errorsObject



23
24
25
# File 'lib/xmldsig/signature.rb', line 23

def errors
  references.flat_map(&:errors) + @errors
end

#referencesObject



27
28
29
30
31
# File 'lib/xmldsig/signature.rb', line 27

def references
  @references ||= signature.xpath("descendant::ds:Reference", Xmldsig::NAMESPACES).map do |node|
    Reference.new(node)
  end
end

#sign(private_key = nil, certificate = nil, &block) ⇒ Object



9
10
11
12
13
# File 'lib/xmldsig/signature.rb', line 9

def sign(private_key = nil, certificate =nil, &block)
  references.each(&:sign)
  self.x509_certificate = certificate
  self.signature_value = calculate_signature_value(private_key, &block)
end

#signature_valueObject



33
34
35
# File 'lib/xmldsig/signature.rb', line 33

def signature_value
  Base64.decode64 signature.at_xpath("descendant::ds:SignatureValue", Xmldsig::NAMESPACES).content
end

#signed_infoObject



37
38
39
# File 'lib/xmldsig/signature.rb', line 37

def signed_info
  signature.at_xpath("descendant::ds:SignedInfo", Xmldsig::NAMESPACES)
end

#valid?(certificate = nil, &block) ⇒ Boolean

Returns:

  • (Boolean)


15
16
17
18
19
20
21
# File 'lib/xmldsig/signature.rb', line 15

def valid?(certificate = nil, &block)
  @errors = []
  references.each { |r| r.errors = [] }
  validate_digest_values
  validate_signature_value(certificate, &block)
  errors.empty?
end