Skip to content

Commit b9e28d5

Browse files
committed
Fix signature tag position in the SP metadata
1 parent e08cc28 commit b9e28d5

3 files changed

Lines changed: 7 additions & 2 deletions

File tree

src/onelogin/saml2/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -742,7 +742,7 @@ def add_sign(xml, key, cert, debug=False, sign_algorithm=OneLogin_Saml2_Constant
742742
issuer = issuer[0]
743743
issuer.addnext(signature)
744744
else:
745-
elem[0].insert(0, signature)
745+
elem.insert(0, signature)
746746

747747
elem_id = elem.get('ID', None)
748748
if elem_id:

tests/src/OneLogin/saml2_tests/metadata_test.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from onelogin.saml2.metadata import OneLogin_Saml2_Metadata
1414
from onelogin.saml2.settings import OneLogin_Saml2_Settings
1515
from onelogin.saml2.constants import OneLogin_Saml2_Constants
16+
from onelogin.saml2.xml_utils import OneLogin_Saml2_XML
1617

1718

1819
class OneLogin_Saml2_Metadata_Test(unittest.TestCase):
@@ -248,6 +249,10 @@ def testSignMetadata(self):
248249
self.assertIn('<ds:Reference', signed_metadata_2)
249250
self.assertIn('<ds:KeyInfo>\n<ds:X509Data>\n<ds:X509Certificate>', signed_metadata_2)
250251

252+
root = OneLogin_Saml2_XML.to_etree(signed_metadata_2)
253+
first_child = OneLogin_Saml2_XML.query(root, '/md:EntityDescriptor/*[1]')[0]
254+
self.assertEqual('{http://www.w3.org/2000/09/xmldsig#}Signature', first_child.tag)
255+
251256
def testAddX509KeyDescriptors(self):
252257
"""
253258
Tests the addX509KeyDescriptors method of the OneLogin_Saml2_Metadata

tests/src/OneLogin/saml2_tests/utils_test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -774,7 +774,7 @@ def testAddSign(self):
774774
xml_metadata_signed = compat.to_string(OneLogin_Saml2_Utils.add_sign(xml_metadata, key, cert))
775775
self.assertIn('<ds:SignatureValue>', xml_metadata_signed)
776776
res_8 = parseString(xml_metadata_signed)
777-
ds_signature_8 = res_8.firstChild.firstChild.nextSibling.firstChild.nextSibling
777+
ds_signature_8 = res_8.firstChild.firstChild.nextSibling
778778
self.assertIn('ds:Signature', ds_signature_8.tagName)
779779

780780
def testAddSignCheckAlg(self):

0 commit comments

Comments
 (0)