class Transbank::Oneclick::Document
Constants
- NS1
- SOAP_ENV
- WSSE
- WSU
Attributes
action[RW]
cert[RW]
doc[RW]
params[RW]
private_key[RW]
template[RW]
Public Class Methods
new(action, params = {})
click to toggle source
# File lib/transbank/oneclick/document.rb, line 12 def initialize(action, params = {}) self.cert = OpenSSL::X509::Certificate.new File.read(Transbank::Oneclick.configuration.cert_path) self.private_key = OpenSSL::PKey::RSA.new File.read(Transbank::Oneclick.configuration.key_path) self.action = action self.params = params self.doc = template.clone.doc sign! end
Public Instance Methods
body_canonicalize()
click to toggle source
# File lib/transbank/oneclick/document.rb, line 41 def body_canonicalize body_node.canonicalize(Nokogiri::XML::XML_C14N_EXCLUSIVE_1_0, nil, nil) end
body_id()
click to toggle source
# File lib/transbank/oneclick/document.rb, line 21 def body_id OpenSSL::Digest::MD5.hexdigest(action.to_s + params.to_s + DateTime::now.to_s) end
body_node()
click to toggle source
# File lib/transbank/oneclick/document.rb, line 25 def body_node doc.at_xpath('//SOAP-ENV:Body') end
canonicalize()
click to toggle source
# File lib/transbank/oneclick/document.rb, line 49 def canonicalize doc.canonicalize(Nokogiri::XML::XML_C14N_EXCLUSIVE_1_0, nil, nil) end
digest_value()
click to toggle source
# File lib/transbank/oneclick/document.rb, line 53 def digest_value Base64.encode64(OpenSSL::Digest::SHA1.digest(body_canonicalize)).gsub("\n", '') end
digest_value_node()
click to toggle source
# File lib/transbank/oneclick/document.rb, line 33 def digest_value_node doc.at_xpath '//ds:DigestValue', {'ds' => 'http://www.w3.org/2000/09/xmldsig#'} end
sign!()
click to toggle source
# File lib/transbank/oneclick/document.rb, line 61 def sign! digest_value_node.content = digest_value signature_value_node.content = signature_value end
signature_value()
click to toggle source
# File lib/transbank/oneclick/document.rb, line 57 def signature_value Base64.encode64(private_key.sign(OpenSSL::Digest::SHA1.new, signed_node_canonicalize)).gsub("\n", '') end
signature_value_node()
click to toggle source
# File lib/transbank/oneclick/document.rb, line 37 def signature_value_node doc.at_xpath '//ds:SignatureValue', {'ds' => 'http://www.w3.org/2000/09/xmldsig#'} end
signed_node()
click to toggle source
# File lib/transbank/oneclick/document.rb, line 29 def signed_node doc.at_xpath '//ds:SignedInfo', {'ds' => 'http://www.w3.org/2000/09/xmldsig#'} end
signed_node_canonicalize()
click to toggle source
# File lib/transbank/oneclick/document.rb, line 45 def signed_node_canonicalize signed_node.canonicalize(Nokogiri::XML::XML_C14N_EXCLUSIVE_1_0, nil, nil) end