Sha256: 2f20e63533d41b9b518dca1713cc8cebbe9ebe6a0c185f9126e59b878337826f
Contents?: true
Size: 1.21 KB
Versions: 1
Compression:
Stored size: 1.21 KB
Contents
module Xmlenc class EncryptedKey ALGORITHMS = { 'http://www.w3.org/2001/04/xmlenc#rsa-1_5' => Algorithms::Rsa15, 'http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p' => Algorithms::RsaOaepMgf1p } def initialize(node) @node = node end def document @node.document end def encryption_method at_xpath('./xenc:EncryptionMethod') end def encrypted_data EncryptedData.new(referenced_node) end def cipher_value at_xpath('./xenc:CipherData/xenc:CipherValue').content.gsub(/[\n\s]/, '') end def decrypt(key) decryptor = algorithm.new(key) decryptor.decrypt(Base64.decode64(cipher_value), node: encryption_method) end private def referenced_node document.at_xpath("//xenc:EncryptedData[@Id='#{reference_uri}']", NAMESPACES) end def reference_uri at_xpath('./xenc:ReferenceList/xenc:DataReference')['URI'][1..-1] end def at_xpath(xpath) @node.at_xpath(xpath, NAMESPACES) end def algorithm algorithm = encryption_method['Algorithm'] ALGORITHMS[algorithm] || raise(UnsupportedError.new("Unsupported encryption method #{algorithm}")) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
xmlenc-0.0.1 | lib/xmlenc/encrypted_key.rb |