Class: Xmldsign::Transforms

Inherits:
XML::Node
  • Object
show all
Defined in:
lib/xmldsign/transforms.rb

Instance Method Summary collapse

Instance Method Details

#algorithmsObject



22
23
24
# File 'lib/xmldsign/transforms.rb', line 22

def algorithms
  find('.//ds:Transform').map { |t| factory(t['Algorithm'], t) }
end

#executeObject



3
4
5
6
7
# File 'lib/xmldsign/transforms.rb', line 3

def execute
  signing_doc = LibXML::XML::Document.new
  signing_doc.root = signing_node.copy(true)
  algorithms.inject(signing_doc) { |d, algorithm| algorithm.execute d }
end

#factory(algorithm, node) ⇒ Object



26
27
28
# File 'lib/xmldsign/transforms.rb', line 26

def factory(algorithm, node)
  Algorithms.factory(algorithm, node)
end

#referenceObject



18
19
20
# File 'lib/xmldsign/transforms.rb', line 18

def reference
  doc.find_first('.//ds:Reference')
end

#signing_nodeObject



9
10
11
12
13
14
15
16
# File 'lib/xmldsign/transforms.rb', line 9

def signing_node
  if (reference_uri = reference[:URI] and not reference_uri.empty?)
    id = reference_uri.sub!('#', '')
    doc.find_first("//*[@wsu:Id='#{id}']")
  else
    doc.root
  end
end