Class: Xmldsig_fiscalizer::SignedDocument

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(document, options = {}) ⇒ SignedDocument

Returns a new instance of SignedDocument.



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

def initialize(document, options = {})
  @document = Nokogiri::XML::Document.parse(document)
end

Instance Attribute Details

#documentObject

Returns the value of attribute document.



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

def document
  @document
end

Instance Method Details

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



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

def sign(private_key = nil, instruct = true, &block)
  signatures.each { |signature| signature.sign(private_key, &block) }
  instruct ? @document.to_s : @document.root.to_s
end

#signaturesObject



22
23
24
# File 'lib/xmldsig_fiscalizer/signed_document.rb', line 22

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

#signed_nodesObject



18
19
20
# File 'lib/xmldsig_fiscalizer/signed_document.rb', line 18

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

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



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

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