main
1# frozen_string_literal: true
2
3RSpec.describe Xml::Kit::EncryptedData do
4 describe '#to_xml' do
5 [
6 ::Xml::Kit::Crypto::RsaCipher::ALGORITHM,
7 ::Xml::Kit::Crypto::OaepCipher::ALGORITHM,
8 ].each do |asymmetric_algorithm|
9 subject do
10 described_class.new(xml, asymmetric_cipher: asymmetric_cipher)
11 end
12
13 let(:symmetric_cipher) { ::Xml::Kit::Crypto::SymmetricCipher.new(symmetric_algorithm) }
14 let(:symmetric_algorithm) { Xml::Kit::Crypto::SymmetricCipher::DEFAULT_ALGORITHM }
15 let(:asymmetric_cipher) { ::Xml::Kit::Crypto.cipher_for(asymmetric_algorithm, key_pair.public_key) }
16 let(:key_pair) { Xml::Kit::KeyPair.generate(use: :encryption, algorithm: symmetric_algorithm) }
17 let(:decryptor) { Xml::Kit::Decryption.new(private_keys: [key_pair.private_key]) }
18 let(:xml) do
19 xml = ::Builder::XmlMarkup.new
20 xml.HellWorld do
21 xml.Now Time.now.iso8601
22 end
23 xml.target!
24 end
25
26 specify { expect(decryptor.decrypt_xml(subject.to_xml)).to eql(xml) }
27
28 [
29 "#{::Xml::Kit::Namespaces::XMLENC}tripledes-cbc",
30 "#{::Xml::Kit::Namespaces::XMLENC}aes128-cbc",
31 "#{::Xml::Kit::Namespaces::XMLENC}aes192-cbc",
32 "#{::Xml::Kit::Namespaces::XMLENC}aes256-cbc",
33 ].each do |symmetric_algorithm|
34 context symmetric_algorithm do
35 subject do
36 described_class.new(xml, id: id, symmetric_cipher: symmetric_cipher, asymmetric_cipher: asymmetric_cipher)
37 end
38
39 let(:id) { ::Xml::Kit::Id.generate }
40
41 specify { expect(decryptor.decrypt_xml(subject.to_xml)).to eql(xml) }
42 end
43 end
44 end
45 end
46end