main
1# frozen_string_literal: true
2
3module Xml
4 module Kit
5 # @deprecated Use {#Xml::Kit::EncryptedData} class instead of this
6 class Encryption < EncryptedData
7 DEFAULT_SYMMETRIC = Crypto::SymmetricCipher::DEFAULT_ALGORITHM
8 DEFAULT_ASYMMETRIC = Crypto::RsaCipher::ALGORITHM
9
10 attr_reader :asymmetric_algorithm
11 attr_reader :symmetric_algorithm
12 attr_reader :symmetric_cipher_value
13 attr_reader :key_info
14
15 def initialize(raw_xml, public_key,
16 symmetric_algorithm: DEFAULT_SYMMETRIC,
17 asymmetric_algorithm: DEFAULT_ASYMMETRIC, key_info: nil)
18 @symmetric_algorithm = symmetric_algorithm
19 @asymmetric_algorithm = asymmetric_algorithm
20 Xml::Kit.deprecate('Encryption', alternative: 'EncryptedData')
21 super(raw_xml,
22 symmetric_cipher: symmetric(symmetric_algorithm),
23 asymmetric_cipher: asymmetric(asymmetric_algorithm, public_key),
24 key_info: key_info
25 )
26 end
27
28 def template_path
29 Template::TEMPLATES_DIR.join('encrypted_data.builder')
30 end
31
32 private
33
34 def symmetric(algorithm)
35 return algorithm unless algorithm.is_a?(String)
36
37 ::Xml::Kit::Crypto::SymmetricCipher.new(algorithm)
38 end
39
40 def asymmetric(algorithm, public_key)
41 return algorithm unless algorithm.is_a?(String)
42
43 ::Xml::Kit::Crypto.cipher_for(algorithm, public_key)
44 end
45 end
46 end
47end