import saml2 import xmlenc import xmldsig data1 = """ A23B45C56 """ def test_1(): ed = xmlenc.encrypted_data_from_string(data1) assert ed assert ed.mime_type == "text/xml" assert len(ed.cipher_data) == 1 cd = ed.cipher_data[0] assert len(cd.cipher_value) == 1 assert cd.cipher_value[0].text == "A23B45C56" data2 = """ John Smith DEADBEEF """ def test_2(): ed = xmlenc.encrypted_data_from_string(data2) assert ed print ed assert ed.typ == "http://www.w3.org/2001/04/xmlenc#Element" assert len(ed.encryption_method) == 1 em = ed.encryption_method[0] assert em.algorithm == 'http://www.w3.org/2001/04/xmlenc#tripledes-cbc' assert len(ed.key_info) == 1 ki = ed.key_info[0] assert ki.key_name[0].text == "John Smith" assert len(ed.cipher_data) == 1 cd = ed.cipher_data[0] assert len(cd.cipher_value) == 1 assert cd.cipher_value[0].text == "DEADBEEF" data3 = """ Sally Doe DEADBEEF """ def test_3(): ed = xmlenc.encrypted_data_from_string(data3) assert ed print ed assert len(ed.encryption_method) == 1 em = ed.encryption_method[0] assert em.algorithm == 'http://www.w3.org/2001/04/xmlenc#aes128-cbc' assert len(ed.key_info) == 1 ki = ed.key_info[0] assert ki.key_name[0].text == "Sally Doe" assert len(ki.retrieval_method) == 1 rm = ki.retrieval_method[0] assert rm.uri == "#EK" assert rm.type == "http://www.w3.org/2001/04/xmlenc#EncryptedKey" assert len(ed.cipher_data) == 1 cd = ed.cipher_data[0] assert len(cd.cipher_value) == 1 assert cd.cipher_value[0].text == "DEADBEEF" data4 = """ John Smith xyzabc Sally Doe """ def test_4(): ek = xmlenc.encrypted_key_from_string(data4) assert ek print ek assert len(ek.encryption_method) == 1 em = ek.encryption_method[0] assert em.algorithm == 'http://www.w3.org/2001/04/xmlenc#rsa-1_5' assert len(ek.key_info) == 1 ki = ek.key_info[0] assert ki.key_name[0].text == "John Smith" assert len(ek.reference_list) == 1 rl = ek.reference_list[0] assert len(rl.data_reference) dr = rl.data_reference[0] assert dr.uri == "#ED" assert len(ek.cipher_data) == 1 cd = ek.cipher_data[0] assert len(cd.cipher_value) == 1 assert cd.cipher_value[0].text == "xyzabc" data5 = """ self::text()[parent::rep:CipherValue[@Id="example1"]] """ def test_5(): cr = xmlenc.cipher_reference_from_string(data5) assert cr print cr assert len(cr.transforms) == 1 trs = cr.transforms[0] assert len(trs.transform) == 2 tr = trs.transform[0] assert tr.algorithm in ["http://www.w3.org/TR/1999/REC-xpath-19991116", "http://www.w3.org/2000/09/xmldsig#base64"] if tr.algorithm == "http://www.w3.org/2000/09/xmldsig#base64": pass elif tr.algorithm == "http://www.w3.org/TR/1999/REC-xpath-19991116": assert len(tr.xpath) == 1 xp = tr.xpath[0] assert xp.text.strip() == """self::text()[parent::rep:CipherValue[@Id="example1"]]""" data6 = """ self::xenc:EncryptedData[@Id="example1"] """ def test_6(): rl = xmlenc.reference_list_from_string(data6) assert rl print rl assert len(rl.data_reference) == 1 dr = rl.data_reference[0] assert dr.uri == "#invoice34" assert len(dr.extension_elements) == 1 ee = dr.extension_elements[0] assert ee.tag == "Transforms" assert ee.namespace == "http://www.w3.org/2000/09/xmldsig#" trs = saml2.extension_element_to_element(ee, xmldsig.ELEMENT_FROM_STRING, namespace=xmldsig.NAMESPACE) assert trs assert len(trs.transform) == 1 tr = trs.transform[0] assert tr.algorithm == "http://www.w3.org/TR/1999/REC-xpath-19991116" assert len(tr.xpath) == 1 assert tr.xpath[0].text.strip() == """self::xenc:EncryptedData[@Id="example1"]"""