Skip to content

Commit 0f1f27f

Browse files
committed
Allow saml2.response.AuthnResponse::get_subject to decrypt a NameID with the given keys
Signed-off-by: Ivan Kanakarakis <[email protected]>
1 parent b1706ab commit 0f1f27f

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

src/saml2/response.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -628,7 +628,7 @@ def condition_ok(self, lax=False):
628628

629629
return True
630630

631-
def decrypt_attributes(self, attribute_statement):
631+
def decrypt_attributes(self, attribute_statement, keys=None):
632632
"""
633633
Decrypts possible encrypted attributes and adds the decrypts to the
634634
list of attributes.
@@ -642,11 +642,11 @@ def decrypt_attributes(self, attribute_statement):
642642

643643
for encattr in attribute_statement.encrypted_attribute:
644644
if not encattr.encrypted_key:
645-
_decr = self.sec.decrypt(encattr.encrypted_data)
645+
_decr = self.sec.decrypt_keys(encattr.encrypted_data, keys=keys)
646646
_attr = attribute_from_string(_decr)
647647
attribute_statement.attribute.append(_attr)
648648
else:
649-
_decr = self.sec.decrypt(encattr)
649+
_decr = self.sec.decrypt_keys(encattr, keys=keys)
650650
enc_attr = encrypted_attribute_from_string(_decr)
651651
attrlist = enc_attr.extensions_as_elements("Attribute", saml)
652652
attribute_statement.attribute.extend(attrlist)
@@ -734,7 +734,7 @@ def _holder_of_key_confirmed(self, data):
734734

735735
return has_keyinfo
736736

737-
def get_subject(self):
737+
def get_subject(self, keys=None):
738738
""" The assertion must contain a Subject
739739
"""
740740

@@ -785,8 +785,9 @@ def get_subject(self):
785785
self.name_id = subject.name_id
786786
elif subject.encrypted_id:
787787
# decrypt encrypted ID
788-
_name_id_str = self.sec.decrypt(
789-
subject.encrypted_id.encrypted_data.to_string())
788+
_name_id_str = self.sec.decrypt_keys(
789+
subject.encrypted_id.encrypted_data.to_string(), keys=keys
790+
)
790791
_name_id = saml.name_id_from_string(_name_id_str)
791792
self.name_id = _name_id
792793

@@ -958,7 +959,7 @@ def parse_assertion(self, keys=None):
958959
while self.find_encrypt_data(resp) and decr_text_old != decr_text:
959960
decr_text_old = decr_text
960961
try:
961-
decr_text = self.sec.decrypt_keys(decr_text, keys)
962+
decr_text = self.sec.decrypt_keys(decr_text, keys=keys)
962963
except DecryptError as e:
963964
continue
964965
else:
@@ -981,7 +982,7 @@ def parse_assertion(self, keys=None):
981982
) and decr_text_old != decr_text:
982983
decr_text_old = decr_text
983984
try:
984-
decr_text = self.sec.decrypt_keys(decr_text, keys)
985+
decr_text = self.sec.decrypt_keys(decr_text, keys=keys)
985986
except DecryptError as e:
986987
continue
987988
else:

0 commit comments

Comments
 (0)