Class: Epics::Signer
- Inherits:
-
Object
- Object
- Epics::Signer
- Defined in:
- lib/epics/signer.rb
Instance Attribute Summary collapse
-
#client ⇒ Object
Returns the value of attribute client.
-
#doc ⇒ Object
Returns the value of attribute doc.
Instance Method Summary collapse
- #digest! ⇒ Object
- #digest_node ⇒ Object
- #digester ⇒ Object
-
#initialize(client, doc = nil) ⇒ Signer
constructor
A new instance of Signer.
- #sign! ⇒ Object
- #signature_node ⇒ Object
Constructor Details
#initialize(client, doc = nil) ⇒ Signer
Returns a new instance of Signer.
4 5 6 7 |
# File 'lib/epics/signer.rb', line 4 def initialize(client, doc = nil) self.doc = Nokogiri::XML.parse(doc) if doc self.client = client end |
Instance Attribute Details
#client ⇒ Object
Returns the value of attribute client.
2 3 4 |
# File 'lib/epics/signer.rb', line 2 def client @client end |
#doc ⇒ Object
Returns the value of attribute doc.
2 3 4 |
# File 'lib/epics/signer.rb', line 2 def doc @doc end |
Instance Method Details
#digest! ⇒ Object
9 10 11 12 13 14 15 16 17 |
# 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 ⇒ Object
29 30 31 |
# File 'lib/epics/signer.rb', line 29 def digest_node @d ||= doc.xpath("//ds:DigestValue").first end |
#digester ⇒ Object
37 38 39 |
# File 'lib/epics/signer.rb', line 37 def digester OpenSSL::Digest::SHA256.new end |
#sign! ⇒ Object
19 20 21 22 23 24 25 26 27 |
# 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 ⇒ Object
33 34 35 |
# File 'lib/epics/signer.rb', line 33 def signature_node @s ||= doc.xpath("//ds:SignedInfo").first end |