class Epics::Signer
Attributes
client[RW]
doc[RW]
Public Class Methods
new(client, doc = nil)
click to toggle source
# File lib/epics/signer.rb, line 4 def initialize(client, doc = nil) self.doc = Nokogiri::XML.parse(doc) if doc self.client = client end
Public Instance Methods
digest!()
click to toggle source
# File lib/epics/signer.rb, line 9 def digest! content_to_digest = Base64.encode64(digester.digest(doc.xpath("//*[@authenticate='true']").map(&:canonicalize).join)).strip if digest_node digest_node.content = content_to_digest end doc end
digest_node()
click to toggle source
# File lib/epics/signer.rb, line 29 def digest_node @d ||= doc.xpath("//ds:DigestValue").first end
digester()
click to toggle source
# File lib/epics/signer.rb, line 37 def digester OpenSSL::Digest::SHA256.new end
sign!()
click to toggle source
# File lib/epics/signer.rb, line 19 def sign! signature_value_node = doc.xpath("//ds:SignatureValue").first if signature_node signature_value_node.content = Base64.encode64(client.x.key.sign(digester, signature_node.canonicalize)).gsub(/\n/,'') end doc end
signature_node()
click to toggle source
# File lib/epics/signer.rb, line 33 def signature_node @s ||= doc.xpath("//ds:SignedInfo").first end