Commit adc3ef9
Changed files (4)
lib
xml
spec
fixtures
support
lib/xml/kit/key_info.rb
@@ -23,7 +23,14 @@ module Xml
def asymmetric_cipher(algorithm: Crypto::RsaCipher::ALGORITHM)
return encrypted_key.asymmetric_cipher if encrypted_key
- return Crypto.cipher_for(derive_algorithm_from(x509_data.public_key), x509_data.public_key) if x509_data
+
+ if x509_data
+ return Crypto.cipher_for(
+ derive_algorithm_from(x509_data.public_key),
+ x509_data.public_key
+ )
+ end
+
super
end
lib/xml/kit/templatable.rb
@@ -28,13 +28,13 @@ module Xml
# @since 0.3.0
# @param xml [Builder::XmlMarkup] the xml builder instance
# @param id [String] the id of EncryptedKey element
- def encrypt_key_for(xml:, id:)
+ def encrypt_key_for(xml:, id:, key_info: nil)
::Xml::Kit::EncryptedKey.new(
id: id,
asymmetric_cipher: asymmetric_cipher,
- symmetric_cipher: symmetric_cipher
+ symmetric_cipher: symmetric_cipher,
+ key_info: key_info
).to_xml(xml: xml)
- yield xml if block_given?
end
# @deprecated Use {#encrypt_data_for} instead of this
spec/fixtures/soap.builder
@@ -3,21 +3,12 @@ xml.instruct!
xml.Envelope do
xml.Header do
xml.Security do
- encrypt_key_for(xml: xml, id: key_id) do |xml|
- xml.KeyInfo do
- xml.x509Data do
- xml.X509IssuerSerial do
- xml.X509IssuerName "blah"
- xml.X509IssuerNumber 1
- end
- end
- end
- end
+ encrypt_key_for(xml: xml, id: key_id, key_info: header_key_info)
xml.BinarySecurityToken ''
end
end
xml.Body Id: id do
- encrypt_data_for xml: xml, key_info: key_info do |xml|
+ encrypt_data_for xml: xml, key_info: data_key_info do |xml|
xml.EncryptMe do
xml.Secret "secret"
end
spec/support/soap.rb
@@ -16,7 +16,13 @@ class Soap
'EK-E2C32E59F27A1320A215468956686717'
end
- def key_info
+ def header_key_info
+ ::Xml::Kit::KeyInfo.new do |x|
+ x.x509_data = encryption_certificate.x509
+ end
+ end
+
+ def data_key_info
::Xml::Kit::KeyInfo.new do |x|
x.retrieval_method.uri = key_id
end