Class: Xmldsig::SignedDocument

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(document) ⇒ SignedDocument

Returns a new instance of SignedDocument.



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

def initialize(document)
  @document = Nokogiri::XML::Document.parse(document)
end

Instance Attribute Details

#documentObject

Returns the value of attribute document.



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

def document
  @document
end

Instance Method Details

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



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

def sign(private_key = nil, certificate = nil, &block)
  signatures.each { |signature| signature.sign(private_key, certificate, &block) }
  document.root.to_s
end

#signaturesObject



18
19
20
21
22
# File 'lib/xmldsig/signed_document.rb', line 18

def signatures
  document.xpath("//ds:Signature", Xmldsig::NAMESPACES).reverse.collect do |node|
    Signature.new(node)
  end || []
end

#signed_nodesObject



24
25
26
# File 'lib/xmldsig/signed_document.rb', line 24

def signed_nodes
  signatures.flat_map(&:references).map(&:referenced_node)
end

#validate(certificate = nil, &block) ⇒ Object



14
15
16
# File 'lib/xmldsig/signed_document.rb', line 14

def validate(certificate = nil, &block)
  signatures.any? && signatures.all? { |signature| signature.valid?(certificate, &block) }
end