17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/saml/elements/encrypted_attribute.rb', line 17
def encrypt(attribute, encrypted_key_data, encrypted_data_options = {})
self.encrypted_data = Xmlenc::Builder::EncryptedData.new(encrypted_data_options)
self.encrypted_data.set_encryption_method algorithm: 'http://www.w3.org/2001/04/xmlenc#aes256-cbc'
self.encrypted_data.set_key_name key_name
encrypted_key_data.each do |key_descriptor, key_options|
encrypted_key = self.encrypted_data.encrypt Nokogiri::XML(attribute.to_xml).root.to_xml, key_options
encrypted_key.set_encryption_method algorithm: 'http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p', digest_method_algorithm: 'http://www.w3.org/2000/09/xmldsig#sha1'
encrypted_key.set_key_name key_descriptor.key_info.key_name
encrypted_key.carried_key_name = key_name
encrypted_key.encrypt key_descriptor.certificate.public_key
self.encrypted_keys ||= []
self.encrypted_keys << encrypted_key
end
end
|