Skip to content

Commit 8f76c85

Browse files
committed
Set sha256 and rsa-sha256 as default algorithms
1 parent b315dc5 commit 8f76c85

File tree

9 files changed

+15
-15
lines changed

9 files changed

+15
-15
lines changed

src/onelogin/saml2/logout_request.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@ def is_valid(self, request_data, raise_exceptions=False):
398398
signed_query = 'SAMLRequest=%s' % OneLogin_Saml2_Utils.get_encoded_parameter(get_data, 'SAMLRequest', lowercase_urlencoding=lowercase_urlencoding)
399399
if 'RelayState' in get_data:
400400
signed_query = '%s&RelayState=%s' % (signed_query, OneLogin_Saml2_Utils.get_encoded_parameter(get_data, 'RelayState', lowercase_urlencoding=lowercase_urlencoding))
401-
signed_query = '%s&SigAlg=%s' % (signed_query, OneLogin_Saml2_Utils.get_encoded_parameter(get_data, 'SigAlg', OneLogin_Saml2_Constants.RSA_SHA1, lowercase_urlencoding=lowercase_urlencoding))
401+
signed_query = '%s&SigAlg=%s' % (signed_query, OneLogin_Saml2_Utils.get_encoded_parameter(get_data, 'SigAlg', sign_alg, lowercase_urlencoding=lowercase_urlencoding))
402402

403403
exists_x509cert = 'x509cert' in idp_data and idp_data['x509cert']
404404
exists_multix509sign = 'x509certMulti' in idp_data and \

src/onelogin/saml2/logout_response.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ def is_valid(self, request_data, request_id=None, raise_exceptions=False):
148148
signed_query = 'SAMLResponse=%s' % OneLogin_Saml2_Utils.get_encoded_parameter(get_data, 'SAMLResponse', lowercase_urlencoding=lowercase_urlencoding)
149149
if 'RelayState' in get_data:
150150
signed_query = '%s&RelayState=%s' % (signed_query, OneLogin_Saml2_Utils.get_encoded_parameter(get_data, 'RelayState', lowercase_urlencoding=lowercase_urlencoding))
151-
signed_query = '%s&SigAlg=%s' % (signed_query, OneLogin_Saml2_Utils.get_encoded_parameter(get_data, 'SigAlg', OneLogin_Saml2_Constants.RSA_SHA1, lowercase_urlencoding=lowercase_urlencoding))
151+
signed_query = '%s&SigAlg=%s' % (signed_query, OneLogin_Saml2_Utils.get_encoded_parameter(get_data, 'SigAlg', sign_alg, lowercase_urlencoding=lowercase_urlencoding))
152152

153153
exists_x509cert = 'x509cert' in idp_data and idp_data['x509cert']
154154
exists_multix509sign = 'x509certMulti' in idp_data and \

src/onelogin/saml2/metadata.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ def builder(sp, authnsign=False, wsign=False, valid_until=None, cache_duration=N
202202
return metadata
203203

204204
@staticmethod
205-
def sign_metadata(metadata, key, cert, sign_algorithm=OneLogin_Saml2_Constants.RSA_SHA1, digest_algorithm=OneLogin_Saml2_Constants.SHA1):
205+
def sign_metadata(metadata, key, cert, sign_algorithm=OneLogin_Saml2_Constants.RSA_SHA256, digest_algorithm=OneLogin_Saml2_Constants.SHA256):
206206
"""
207207
Signs the metadata with the key/cert provided
208208

src/onelogin/saml2/settings.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -301,10 +301,10 @@ def __add_default_values(self):
301301
self.__security.setdefault('wantNameIdEncrypted', False)
302302

303303
# Signature Algorithm
304-
self.__security.setdefault('signatureAlgorithm', OneLogin_Saml2_Constants.RSA_SHA1)
304+
self.__security.setdefault('signatureAlgorithm', OneLogin_Saml2_Constants.RSA_SHA256)
305305

306306
# Digest Algorithm
307-
self.__security.setdefault('digestAlgorithm', OneLogin_Saml2_Constants.SHA1)
307+
self.__security.setdefault('digestAlgorithm', OneLogin_Saml2_Constants.SHA256)
308308

309309
# AttributeStatement required by default
310310
self.__security.setdefault('wantAttributeStatement', True)

src/onelogin/saml2/utils.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -840,7 +840,7 @@ def write_temp_file(content):
840840
return f_temp
841841

842842
@staticmethod
843-
def add_sign(xml, key, cert, debug=False, sign_algorithm=OneLogin_Saml2_Constants.RSA_SHA1, digest_algorithm=OneLogin_Saml2_Constants.SHA1):
843+
def add_sign(xml, key, cert, debug=False, sign_algorithm=OneLogin_Saml2_Constants.RSA_SHA256, digest_algorithm=OneLogin_Saml2_Constants.SHA256):
844844
"""
845845
Adds signature key and senders certificate to an element (Message or
846846
Assertion).
@@ -1208,7 +1208,7 @@ def validate_node_sign(signature_node, elem, cert=None, fingerprint=None, finger
12081208

12091209
@staticmethod
12101210
@return_false_on_exception
1211-
def validate_binary_sign(signed_query, signature, cert=None, algorithm=OneLogin_Saml2_Constants.RSA_SHA1, debug=False):
1211+
def validate_binary_sign(signed_query, signature, cert=None, algorithm=OneLogin_Saml2_Constants.RSA_SHA256, debug=False):
12121212
"""
12131213
Validates signed binary data (Used to validate GET Signature).
12141214

tests/src/OneLogin/saml2_tests/auth_test.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -559,7 +559,7 @@ def testProcessSLORequestSignedResponse(self):
559559
self.assertIn('SigAlg', parsed_query)
560560
self.assertIn('Signature', parsed_query)
561561
self.assertIn('http://relaystate.com', parsed_query['RelayState'])
562-
self.assertIn(OneLogin_Saml2_Constants.RSA_SHA1, parsed_query['SigAlg'])
562+
self.assertIn(OneLogin_Saml2_Constants.RSA_SHA256, parsed_query['SigAlg'])
563563

564564
def testLogin(self):
565565
"""
@@ -630,7 +630,7 @@ def testLoginSigned(self):
630630
self.assertIn('SigAlg', parsed_query)
631631
self.assertIn('Signature', parsed_query)
632632
self.assertIn(return_to, parsed_query['RelayState'])
633-
self.assertIn(OneLogin_Saml2_Constants.RSA_SHA1, parsed_query['SigAlg'])
633+
self.assertIn(OneLogin_Saml2_Constants.RSA_SHA256, parsed_query['SigAlg'])
634634

635635
def testLoginForceAuthN(self):
636636
"""
@@ -831,7 +831,7 @@ def testLogoutSigned(self):
831831
self.assertIn('SigAlg', parsed_query)
832832
self.assertIn('Signature', parsed_query)
833833
self.assertIn(return_to, parsed_query['RelayState'])
834-
self.assertIn(OneLogin_Saml2_Constants.RSA_SHA1, parsed_query['SigAlg'])
834+
self.assertIn(OneLogin_Saml2_Constants.RSA_SHA256, parsed_query['SigAlg'])
835835

836836
def testLogoutNoSLO(self):
837837
"""

tests/src/OneLogin/saml2_tests/metadata_test.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -223,8 +223,8 @@ def testSignMetadata(self):
223223
self.assertIn('<md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat>', signed_metadata)
224224

225225
self.assertIn('<ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>', signed_metadata)
226-
self.assertIn('<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>', signed_metadata)
227-
self.assertIn('<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>', signed_metadata)
226+
self.assertIn('<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>', signed_metadata)
227+
self.assertIn('<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>', signed_metadata)
228228
self.assertIn('<ds:Reference', signed_metadata)
229229
self.assertIn('<ds:KeyInfo><ds:X509Data>\n<ds:X509Certificate>', signed_metadata)
230230

tests/src/OneLogin/saml2_tests/settings_test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -529,7 +529,7 @@ def generateAndCheckMetadata(self, settings):
529529
self.assertIn('<md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="http://stuff.com/endpoints/endpoints/sls.php"/>', metadata)
530530
self.assertIn('<md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat>', metadata)
531531
self.assertIn('<ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>', metadata)
532-
self.assertIn('<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>', metadata)
532+
self.assertIn('<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>', metadata)
533533
self.assertIn('<ds:Reference', metadata)
534534
self.assertIn('<ds:KeyInfo><ds:X509Data><ds:X509Certificate>', metadata)
535535
return metadata

tests/src/OneLogin/saml2_tests/utils_test.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -883,8 +883,8 @@ def testAddSignCheckAlg(self):
883883
xml_authn_signed = OneLogin_Saml2_Utils.add_sign(xml_authn, key, cert)
884884
self.assertIn('<ds:SignatureValue>', xml_authn_signed)
885885
self.assertIn('<ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>', xml_authn_signed)
886-
self.assertIn('<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>', xml_authn_signed)
887-
self.assertIn('<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>', xml_authn_signed)
886+
self.assertIn('<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>', xml_authn_signed)
887+
self.assertIn('<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>', xml_authn_signed)
888888

889889
xml_authn_signed_2 = OneLogin_Saml2_Utils.add_sign(xml_authn, key, cert, False, OneLogin_Saml2_Constants.RSA_SHA256, OneLogin_Saml2_Constants.SHA384)
890890
self.assertIn('<ds:SignatureValue>', xml_authn_signed_2)

0 commit comments

Comments
 (0)