@@ -1238,6 +1238,63 @@ def testIsValidSign(self):
12381238 # Modified message
12391239 self .assertFalse (response_9 .is_valid (self .get_request_data ()))
12401240
1241+ def testIsValidSignFingerprint (self ):
1242+ """
1243+ Tests the is_valid method of the OneLogin_Saml2_Response
1244+ Case valid sign response / sign assertion / both signed
1245+
1246+ Strict mode will always fail due destination problem, if we manipulate
1247+ it the sign will fail.
1248+ """
1249+ settings = OneLogin_Saml2_Settings (self .loadSettingsJSON ("settings6.json" ))
1250+
1251+ # expired cert
1252+ xml = self .file_contents (join (self .data_path , 'responses' , 'signed_message_response.xml.base64' ))
1253+ response = OneLogin_Saml2_Response (settings , xml )
1254+ self .assertTrue (response .is_valid (self .get_request_data ()))
1255+
1256+ xml_2 = self .file_contents (join (self .data_path , 'responses' , 'signed_assertion_response.xml.base64' ))
1257+ response_2 = OneLogin_Saml2_Response (settings , xml_2 )
1258+ self .assertTrue (response_2 .is_valid (self .get_request_data ()))
1259+
1260+ xml_3 = self .file_contents (join (self .data_path , 'responses' , 'double_signed_response.xml.base64' ))
1261+ response_3 = OneLogin_Saml2_Response (settings , xml_3 )
1262+ self .assertTrue (response_3 .is_valid (self .get_request_data ()))
1263+
1264+ settings_2 = OneLogin_Saml2_Settings (self .loadSettingsJSON ('settings2.json' ))
1265+ xml_4 = self .file_contents (join (self .data_path , 'responses' , 'signed_message_response2.xml.base64' ))
1266+ response_4 = OneLogin_Saml2_Response (settings_2 , xml_4 )
1267+ self .assertTrue (response_4 .is_valid (self .get_request_data ()))
1268+
1269+ xml_5 = self .file_contents (join (self .data_path , 'responses' , 'signed_assertion_response2.xml.base64' ))
1270+ response_5 = OneLogin_Saml2_Response (settings_2 , xml_5 )
1271+ self .assertTrue (response_5 .is_valid (self .get_request_data ()))
1272+
1273+ xml_6 = self .file_contents (join (self .data_path , 'responses' , 'double_signed_response2.xml.base64' ))
1274+ response_6 = OneLogin_Saml2_Response (settings_2 , xml_6 )
1275+ self .assertTrue (response_6 .is_valid (self .get_request_data ()))
1276+
1277+ dom = parseString (b64decode (xml_4 ))
1278+ dom .firstChild .firstChild .firstChild .nodeValue = 'https://example.com/other-idp'
1279+ xml_7 = OneLogin_Saml2_Utils .b64encode (dom .toxml ())
1280+ response_7 = OneLogin_Saml2_Response (settings , xml_7 )
1281+ # Modified message
1282+ self .assertFalse (response_7 .is_valid (self .get_request_data ()))
1283+
1284+ dom_2 = parseString (OneLogin_Saml2_Utils .b64decode (xml_5 ))
1285+ dom_2 .firstChild .firstChild .firstChild .nodeValue = 'https://example.com/other-idp'
1286+ xml_8 = OneLogin_Saml2_Utils .b64encode (dom_2 .toxml ())
1287+ response_8 = OneLogin_Saml2_Response (settings , xml_8 )
1288+ # Modified message
1289+ self .assertFalse (response_8 .is_valid (self .get_request_data ()))
1290+
1291+ dom_3 = parseString (OneLogin_Saml2_Utils .b64decode (xml_6 ))
1292+ dom_3 .firstChild .firstChild .firstChild .nodeValue = 'https://example.com/other-idp'
1293+ xml_9 = OneLogin_Saml2_Utils .b64encode (dom_3 .toxml ())
1294+ response_9 = OneLogin_Saml2_Response (settings , xml_9 )
1295+ # Modified message
1296+ self .assertFalse (response_9 .is_valid (self .get_request_data ()))
1297+
12411298 def testIsValidSignWithEmptyReferenceURI (self ):
12421299 settings_info = self .loadSettingsJSON ()
12431300 del settings_info ['idp' ]['x509cert' ]
0 commit comments