-
Notifications
You must be signed in to change notification settings - Fork 106
Closed
Description
I'm getting a Segmentation fault: 11 error when I try to encrypt an XML document using xmlsec.EncryptionType.CONTENT. It works using xmlsec.EncryptionType.ELEMENT though.
Here's the code and the XML document.
from lxml import etree
import xmlsec
namespaces = {
'soap': 'http://schemas.xmlsoap.org/soap/envelope/'
}
manager = xmlsec.KeysManager()
key = xmlsec.Key.from_file('certificate.pem', xmlsec.KeyFormat.CERT_PEM, None)
manager.add_key(key)
template = etree.parse('document.xml').getroot()
enc_data = xmlsec.template.encrypted_data_create(
template, xmlsec.Transform.AES128, type=xmlsec.EncryptionType.CONTENT, ns='xenc')
xmlsec.template.encrypted_data_ensure_cipher_value(enc_data)
key_info = xmlsec.template.encrypted_data_ensure_key_info(enc_data, ns='dsig')
enc_key = xmlsec.template.add_encrypted_key(key_info, xmlsec.Transform.RSA_PKCS1)
xmlsec.template.encrypted_data_ensure_cipher_value(enc_key)
data = template.find('soap:Body', namespaces=namespaces)
enc_ctx = xmlsec.EncryptionContext(manager)
enc_ctx.key = xmlsec.Key.generate(xmlsec.KeyData.AES, 192, xmlsec.KeyDataType.SESSION)
enc_ctx.encrypt_xml(enc_data, data)And here's some lldb info I gathered:
Process 82119 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
frame #0: 0x00000001085e23bc xmlsec.so`PyXmlSec_ClearReplacedNodes + 47
xmlsec.so`PyXmlSec_ClearReplacedNodes:
-> 0x1085e23bc <+47>: decq (%rax)
0x1085e23bf <+50>: jne 0x1085e23e5 ; <+88>
0x1085e23c1 <+52>: movq %r15, %rdi
0x1085e23c4 <+55>: movq %rbx, %rsi
Target 0: (python) stopped.
(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
* frame #0: 0x00000001085e23bc xmlsec.so`PyXmlSec_ClearReplacedNodes + 47
frame #1: 0x00000001085e1f6d xmlsec.so`PyXmlSec_EncryptionContextEncryptXml + 368
frame #2: 0x0000000100112f2d Python`PyEval_EvalFrameEx + 10117
frame #3: 0x00000001001105b6 Python`PyEval_EvalCodeEx + 1551
frame #4: 0x00000001000b6d36 Python`function_call + 327
frame #5: 0x00000001000993cd Python`PyObject_Call + 97
frame #6: 0x0000000100115314 Python`PyEval_EvalFrameEx + 19308
frame #7: 0x00000001001105b6 Python`PyEval_EvalCodeEx + 1551
frame #8: 0x00000001000b6d36 Python`function_call + 327
frame #9: 0x00000001000993cd Python`PyObject_Call + 97
frame #10: 0x0000000100115314 Python`PyEval_EvalFrameEx + 19308
frame #11: 0x00000001001105b6 Python`PyEval_EvalCodeEx + 1551
frame #12: 0x0000000100118d65 Python`fast_function + 290
frame #13: 0x0000000100112e6d Python`PyEval_EvalFrameEx + 9925
frame #14: 0x00000001001105b6 Python`PyEval_EvalCodeEx + 1551
frame #15: 0x0000000100118d65 Python`fast_function + 290
frame #16: 0x0000000100112e6d Python`PyEval_EvalFrameEx + 9925
frame #17: 0x00000001001105b6 Python`PyEval_EvalCodeEx + 1551
frame #18: 0x0000000100118d65 Python`fast_function + 290
frame #19: 0x0000000100112e6d Python`PyEval_EvalFrameEx + 9925
frame #20: 0x00000001001105b6 Python`PyEval_EvalCodeEx + 1551
frame #21: 0x000000010010ffa1 Python`PyEval_EvalCode + 32
frame #22: 0x000000010013110b Python`run_mod + 49
frame #23: 0x00000001001311b2 Python`PyRun_FileExFlags + 130
frame #24: 0x0000000100130d34 Python`PyRun_SimpleFileExFlags + 706
frame #25: 0x0000000100141dfe Python`Py_Main + 3030
frame #26: 0x00007fffc4665235 libdyld.dylib`start + 1
frame #27: 0x00007fffc4665235 libdyld.dylib`start + 1
Environments
I was to reproduce in the following environments.
macOS Sierra 10.12.6
- libxmlsec1 1.2.25 1.2.26
- libxml2 2.9.6 2.9.7
- xmlsec (1.3.3)
$ pkg-config --cflags xmlsec1
-D__XMLSEC_FUNCTION__=__func__ -DXMLSEC_NO_SIZE_T -DXMLSEC_NO_GOST=1 -DXMLSEC_NO_GOST2012=1 -DXMLSEC_NO_CRYPTO_DYNAMIC_LOADING=1 -DXMLSEC_CRYPTO_OPENSSL=1 -I/usr/local/Cellar/libxmlsec1/1.2.26/include/xmlsec1 -I/usr/local/opt/openssl/include -I/usr/local/opt/openssl/include/openssl -I/usr/include/libxml2
Ubuntu 14.04.3 LTS
- libxml2:amd64 2.9.1+dfsg1-3ubuntu4.12
- libxmlsec1 1.2.18-2ubuntu1
- xmlsec 1.3.3
$ pkg-config --cflags xmlsec1
-DXMLSEC_CRYPTO=\"openssl\" -D__XMLSEC_FUNCTION__=__FUNCTION__ -DXMLSEC_NO_SIZE_T -DXMLSEC_NO_GOST=1 -DXMLSEC_NO_XKMS=1 -DXMLSEC_NO_CRYPTO_DYNAMIC_LOADING=1 -DXMLSEC_OPENSSL_098=1 -DXMLSEC_CRYPTO_OPENSSL=1 -I/usr/include/libxml2 -I/usr/include/xmlsec1
Metadata
Metadata
Assignees
Labels
No labels