lib/saml/util.rb in libsaml-2.1.0 vs lib/saml/util.rb in libsaml-2.1.2
- old
+ new
@@ -5,11 +5,11 @@
query = URI.parse(url).query
return {} unless query
params = {}
query.split(/[&;]/).each do |pairs|
- key, value = pairs.split('=',2)
+ key, value = pairs.split('=', 2)
params[key] = value
end
params
end
@@ -35,9 +35,21 @@
else
document.sign do |data, signature_algorithm|
message.provider.sign(signature_algorithm, data)
end
end
+ end
+
+ def encrypt_assertion(assertion, certificate)
+ encrypted_data = Xmlenc::Builder::EncryptedData.new
+ encrypted_data.set_encryption_method(algorithm: 'http://www.w3.org/2001/04/xmlenc#aes128-cbc')
+
+ encrypted_key = encrypted_data.encrypt(assertion)
+ 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.encrypt(certificate.public_key)
+
+ Saml::Elements::EncryptedAssertion.new(encrypted_data: encrypted_data, encrypted_keys: encrypted_key)
end
def verify_xml(message, raw_body)
document = Xmldsig::SignedDocument.new(raw_body)