class Xmldsig::Reference
Attributes
errors[RW]
reference[RW]
Public Class Methods
new(reference)
click to toggle source
# File lib/xmldsig/reference.rb, line 7 def initialize(reference) @reference = reference @errors = [] end
Public Instance Methods
digest_value()
click to toggle source
# File lib/xmldsig/reference.rb, line 39 def digest_value Base64.decode64 reference.at_xpath("descendant::ds:DigestValue", Xmldsig::NAMESPACES).content end
document()
click to toggle source
# File lib/xmldsig/reference.rb, line 43 def document reference.document end
reference_uri()
click to toggle source
# File lib/xmldsig/reference.rb, line 35 def reference_uri reference.get_attribute("URI") end
referenced_node()
click to toggle source
# File lib/xmldsig/reference.rb, line 22 def referenced_node if reference_uri && reference_uri != "" id = reference_uri[1..-1] if ref = document.dup.at_xpath("//*[@Id|@ID='#{id}' or @wsu:Id='#{id}']", Xmldsig::NAMESPACES) ref else raise(ReferencedNodeNotFound, "Could not find the referenced node #{id}") end else document.dup.root end end
sign()
click to toggle source
# File lib/xmldsig/reference.rb, line 12 def sign self.digest_value = calculate_digest_value end
validate_digest_value()
click to toggle source
# File lib/xmldsig/reference.rb, line 16 def validate_digest_value unless digest_value == calculate_digest_value @errors << :digest_value end end
Private Instance Methods
calculate_digest_value()
click to toggle source
# File lib/xmldsig/reference.rb, line 48 def calculate_digest_value node = transforms.apply(referenced_node) digest_method.digest node end
digest_method()
click to toggle source
# File lib/xmldsig/reference.rb, line 53 def digest_method algorithm = reference.at_xpath("descendant::ds:DigestMethod", Xmldsig::NAMESPACES).get_attribute("Algorithm") case algorithm when "http://www.w3.org/2001/04/xmlenc#sha256" Digest::SHA2 when "http://www.w3.org/2000/09/xmldsig#sha1" Digest::SHA1 end end
digest_value=(digest_value)
click to toggle source
# File lib/xmldsig/reference.rb, line 63 def digest_value=(digest_value) reference.at_xpath("descendant::ds:DigestValue", Xmldsig::NAMESPACES).content = Base64.encode64(digest_value).chomp end
transforms()
click to toggle source
# File lib/xmldsig/reference.rb, line 68 def transforms Transforms.new(reference.xpath("descendant::ds:Transform", Xmldsig::NAMESPACES)) end