Skip to content

Commit 2c58d43

Browse files
committed
Fix #244 - Fix failing test with libxmlsec-1.2.36, also make libxmlsec version available from Python.
1 parent bddf28e commit 2c58d43

File tree

3 files changed

+85
-1
lines changed

3 files changed

+85
-1
lines changed

src/main.c

+13
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,13 @@ static PyObject* PyXmlSec_PyShutdown(PyObject* self) {
119119
Py_RETURN_NONE;
120120
}
121121

122+
static char PyXmlSec_GetLibXmlSecVersion__doc__[] = \
123+
"get_libxmlsec_version() -> tuple\n"
124+
"Returns Version tuple of wrapped libxml library.";
125+
static PyObject* PyXmlSec_GetLibXmlSecVersion() {
126+
return Py_BuildValue("(iii)", XMLSEC_VERSION_MAJOR, XMLSEC_VERSION_MINOR, XMLSEC_VERSION_SUBMINOR);
127+
}
128+
122129
static char PyXmlSec_PyEnableDebugOutput__doc__[] = \
123130
"enable_debug_trace(enabled) -> None\n"
124131
"Enables or disables calling LibXML2 callback from the default errors callback.\n\n"
@@ -386,6 +393,12 @@ static PyMethodDef PyXmlSec_MainMethods[] = {
386393
METH_NOARGS,
387394
PyXmlSec_PyShutdown__doc__
388395
},
396+
{
397+
"get_libxmlsec_version",
398+
(PyCFunction)PyXmlSec_GetLibXmlSecVersion,
399+
METH_NOARGS,
400+
PyXmlSec_GetLibXmlSecVersion__doc__
401+
},
389402
{
390403
"enable_debug_trace",
391404
(PyCFunction)PyXmlSec_PyEnableDebugOutput,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
XML Security Library example: Signed XML doc file (sign5 example).
4+
-->
5+
<Envelope xmlns="urn:envelope">
6+
<Data>
7+
Hello, World!
8+
</Data>
9+
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
10+
<SignedInfo>
11+
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
12+
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
13+
<Reference>
14+
<Transforms>
15+
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
16+
</Transforms>
17+
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
18+
<DigestValue>HjY8ilZAIEM2tBbPn5mYO1ieIX4=</DigestValue>
19+
</Reference>
20+
</SignedInfo>
21+
<SignatureValue>SIaj/6KY3C1SmDXU2++Gm31U1xTadFp04WhBgfsJFbxrL+q7GKSKN9kfQ+UpN9+i
22+
D5fWmuavXEHe4Gw6RMaMEkq2URQo7F68+d5J/ajq8/l4n+xE6/reGScVwT6L4dEP
23+
XXVJcAi2ZnQ3O7GTNvNGCPibL9mUcyCWBFZ92Uemtc/vJFCQ7ZyKMdMfACgxOwyN
24+
T/9971oog241/2doudhonc0I/3mgPYWkZdX6yvr62mEjnG+oUZkhWYJ4ewZJ4hM4
25+
JjbFqZO+OEzDRSbw3DkmuBA/mtlx+3t13SESfEub5hqoMdVmtth/eTb64dsPdl9r
26+
3k1ACVX9f8aHfQQdJOmLFQ==</SignatureValue>
27+
<KeyInfo>
28+
<X509Data>
29+
30+
31+
32+
<X509IssuerSerial>
33+
<X509IssuerName>Test Issuer</X509IssuerName>
34+
<X509SerialNumber>1</X509SerialNumber>
35+
</X509IssuerSerial>
36+
<X509Certificate>MIIE3zCCBEigAwIBAgIBBTANBgkqhkiG9w0BAQQFADCByzELMAkGA1UEBhMCVVMx
37+
EzARBgNVBAgTCkNhbGlmb3JuaWExEjAQBgNVBAcTCVN1bm55dmFsZTE9MDsGA1UE
38+
ChM0WE1MIFNlY3VyaXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20v
39+
eG1sc2VjKTEZMBcGA1UECxMQUm9vdCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxl
40+
a3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMB4X
41+
DTAzMDMzMTA0MDIyMloXDTEzMDMyODA0MDIyMlowgb8xCzAJBgNVBAYTAlVTMRMw
42+
EQYDVQQIEwpDYWxpZm9ybmlhMT0wOwYDVQQKEzRYTUwgU2VjdXJpdHkgTGlicmFy
43+
eSAoaHR0cDovL3d3dy5hbGVrc2V5LmNvbS94bWxzZWMpMSEwHwYDVQQLExhFeGFt
44+
cGxlcyBSU0EgQ2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtzZXkgU2FuaW4xITAf
45+
BgkqhkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbTCCASIwDQYJKoZIhvcNAQEB
46+
BQADggEPADCCAQoCggEBAJe4/rQ/gzV4FokE7CthjL/EXwCBSkXm2c3p4jyXO0Wt
47+
quaNC3dxBwFPfPl94hmq3ZFZ9PHPPbp4RpYRnLZbRjlzVSOq954AXOXpSew7nD+E
48+
mTqQrd9+ZIbGJnLOMQh5fhMVuOW/1lYCjWAhTCcYZPv7VXD2M70vVXDVXn6ZrqTg
49+
qkVHE6gw1aCKncwg7OSOUclUxX8+Zi10v6N6+PPslFc5tKwAdWJhVLTQ4FKG+F53
50+
7FBDnNK6p4xiWryy/vPMYn4jYGvHUUk3eH4lFTCr+rSuJY8i/KNIf/IKim7g/o3w
51+
Ae3GM8xrof2mgO8GjK/2QDqOQhQgYRIf4/wFsQXVZcMCAwEAAaOCAVcwggFTMAkG
52+
A1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRp
53+
ZmljYXRlMB0GA1UdDgQWBBQkhCzy1FkgYosuXIaQo6owuicanDCB+AYDVR0jBIHw
54+
MIHtgBS0ue+a5pcOaGUemM76VQ2JBttMfKGB0aSBzjCByzELMAkGA1UEBhMCVVMx
55+
EzARBgNVBAgTCkNhbGlmb3JuaWExEjAQBgNVBAcTCVN1bm55dmFsZTE9MDsGA1UE
56+
ChM0WE1MIFNlY3VyaXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20v
57+
eG1sc2VjKTEZMBcGA1UECxMQUm9vdCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxl
58+
a3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tggEA
59+
MA0GCSqGSIb3DQEBBAUAA4GBALU/mzIxSv8vhDuomxFcplzwdlLZbvSQrfoNkMGY
60+
1UoS3YJrN+jZLWKSyWE3mIaPpElqXiXQGGkwD5iPQ1iJMbI7BeLvx6ZxX/f+c8Wn
61+
ss0uc1NxfahMaBoyG15IL4+beqO182fosaKJTrJNG3mc//ANGU9OsQM9mfBEt4oL
62+
NJ2D</X509Certificate>
63+
<X509SubjectName/>
64+
<X509SKI/>
65+
</X509Data>
66+
</KeyInfo>
67+
</Signature></Envelope>

tests/test_ds.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,11 @@ def test_sign_case5(self):
182182
self.assertEqual("rsakey.pem", ctx.key.name)
183183

184184
ctx.sign(sign)
185-
self.assertEqual(self.load_xml("sign5-out.xml"), root)
185+
if (1, 2, 36) <= xmlsec.get_libxmlsec_version() <= (1, 2, 37):
186+
expected_xml_file = 'sign5-out-xmlsec_1_2_36_to_37.xml'
187+
else:
188+
expected_xml_file = 'sign5-out.xml'
189+
self.assertEqual(self.load_xml(expected_xml_file), root)
186190

187191
def test_sign_binary_bad_args(self):
188192
ctx = xmlsec.SignatureContext()

0 commit comments

Comments
 (0)