Commit 9e25437
Changed files (4)
lib
xml
kit
spec
xml
lib/xml/kit/crypto/oaep_cipher.rb
@@ -4,8 +4,9 @@ module Xml
module Kit
module Crypto
class OaepCipher
+ ALGORITHM = "#{::Xml::Kit::Namespaces::XMLENC}rsa-oaep-mgf1p"
ALGORITHMS = {
- 'http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p' => true,
+ ALGORITHM => true
}.freeze
def initialize(_algorithm, key)
@key = key
lib/xml/kit/encryption.rb
@@ -18,7 +18,8 @@ module Xml
@symmetric_cipher_value = Base64.encode64(symmetric_cipher.encrypt(raw_xml)).delete("\n")
@asymmetric_algorithm = asymmetric_algorithm
- @asymmetric_cipher_value = Base64.encode64(public_key.public_encrypt(symmetric_cipher.key)).delete("\n")
+ cipher = Crypto.cipher_for(asymmetric_algorithm, public_key)
+ @asymmetric_cipher_value = Base64.encode64(cipher.encrypt(symmetric_cipher.key)).delete("\n")
end
def to_xml(xml: ::Builder::XmlMarkup.new)
lib/xml/kit/version.rb
@@ -2,6 +2,6 @@
module Xml
module Kit
- VERSION = '0.1.13'.freeze
+ VERSION = '0.1.14'.freeze
end
end
spec/xml/kit/encryption_spec.rb
@@ -3,29 +3,32 @@
RSpec.describe Xml::Kit::Encryption do
describe '#to_xml' do
[
- "#{::Xml::Kit::Namespaces::XMLENC}tripledes-cbc",
- "#{::Xml::Kit::Namespaces::XMLENC}aes128-cbc",
- "#{::Xml::Kit::Namespaces::XMLENC}aes192-cbc",
- "#{::Xml::Kit::Namespaces::XMLENC}aes256-cbc",
- ].each do |symmetric_algorithm|
- describe symmetric_algorithm do
- subject do
- described_class.new(xml, public_key, symmetric_algorithm: symmetric_algorithm)
- end
+ ::Xml::Kit::Crypto::RsaCipher::ALGORITHM,
+ ::Xml::Kit::Crypto::OaepCipher::ALGORITHM,
+ ].each do |asymmetric_algorithm|
+ [
+ "#{::Xml::Kit::Namespaces::XMLENC}tripledes-cbc",
+ "#{::Xml::Kit::Namespaces::XMLENC}aes128-cbc",
+ "#{::Xml::Kit::Namespaces::XMLENC}aes192-cbc",
+ "#{::Xml::Kit::Namespaces::XMLENC}aes256-cbc",
+ ].each do |symmetric_algorithm|
+ describe symmetric_algorithm do
+ subject do
+ described_class.new(xml, public_key, symmetric_algorithm: symmetric_algorithm, asymmetric_algorithm: asymmetric_algorithm)
+ end
- let(:key_pair) { Xml::Kit::KeyPair.generate(use: :encryption, algorithm: symmetric_algorithm) }
- let(:decryptor) { Xml::Kit::Decryption.new(private_keys: [key_pair.private_key]) }
- let(:public_key) { key_pair.public_key }
- let(:xml) do
- xml = ::Builder::XmlMarkup.new
- xml.HellWorld do
- xml.Now Time.now.iso8601
+ let(:key_pair) { Xml::Kit::KeyPair.generate(use: :encryption, algorithm: symmetric_algorithm) }
+ let(:decryptor) { Xml::Kit::Decryption.new(private_keys: [key_pair.private_key]) }
+ let(:public_key) { key_pair.public_key }
+ let(:xml) do
+ xml = ::Builder::XmlMarkup.new
+ xml.HellWorld do
+ xml.Now Time.now.iso8601
+ end
+ xml.target!
end
- xml.target!
- end
- it 'generates an encrypted xml' do
- expect(decryptor.decrypt_xml(subject.to_xml)).to eql(xml)
+ specify { expect(decryptor.decrypt_xml(subject.to_xml)).to eql(xml) }
end
end
end