class BuhoCfdi::Key
Attributes
private_key[R]
Public Class Methods
new(file, password=nil)
click to toggle source
# File lib/buho_cfdi/key.rb, line 8 def initialize(file, password=nil) if file.is_a? String @private_key = file end end
Public Instance Methods
generate_seal(xml)
click to toggle source
# File lib/buho_cfdi/key.rb, line 21 def generate_seal(xml) chain = original_chain(xml) key = OpenSSL::PKey::RSA.new(@private_key) digester = OpenSSL::Digest::SHA256.new signature = key.sign(digester, chain) signature = Base64.strict_encode64(signature) signature end
original_chain(invoice)
click to toggle source
# File lib/buho_cfdi/key.rb, line 30 def original_chain(invoice) invoice = invoice xslt = Nokogiri::XSLT(File.read('storage/xslt/cadenaoriginal_3_3.xslt')) chain = xslt.transform(invoice) chain.text.gsub("\n","") end
seal(xml)
click to toggle source
# File lib/buho_cfdi/key.rb, line 14 def seal(xml) xml = Nokogiri::XML(xml) signature = generate_seal(xml) xml.at_css('cfdi|Comprobante').set_attribute('Sello',signature) xml.to_xml end