Encrypt/decrypt works in one environment, but not another (parser error : internal error: detected an error in element content)

Matthias Hjalmarsson <[email protected]> Sun, 23 Jun 2019 17:58:09 +0200
Newsgroups gmane.text.xml.xmlsec
Message-ID <CAJJNpsD-ARcdJgKhy4RWcLuk1LU-A3P=sUkz-y7SVBHGGcovwA@mail.gmail.com>
--000000000000be5d53058bffc3ef
Content-Type: multipart/alternative; boundary="000000000000be5d50058bffc3ed"

--000000000000be5d50058bffc3ed
Content-Type: text/plain; charset="UTF-8"

Hi!

I'm trying to use xmlsec to implement encrypt/decrypt functionality, with
help from
https://users.dcc.uchile.cl/~pcamacho/tutorial/web/xmlsec/xmlsec.html for
providing basic examples.

I have a problem where a test case works in one environment, but not in
another and I'm not sure how to proceed.

I'm attaching 4 files

* certificate.p12 - private key given in PKCS #12 for decrypting (password:
hello)
* public.pem - public file for encrypting
* doc.xml - document to encrypt
* template.xml - template used for encrypting

Encrypt:
xmlsec1 encrypt --pubkey-pem public.pem --session-key des-192 --xml-data
doc.xml --output encrypted.xml template.xml

Decrypt
xmlsec1 decrypt --output result.xml --pkcs12 certificate.p12 --pwd hello
encrypted.xml

When run with latest version available via cygwin (xmlsec1 1.2.24
(openssl)) on Windows, this produces the desired result that result.xml is
equivalent to doc.xml. However, when run on CentOS 7 with the latest
available version (xmlsec1 1.2.20 (openssl)) decryption fails with:

Entity: line 2: parser error : internal error: detected an error in element
content

<PayInfo>
         ^
func=xmlSecReplaceNodeBufferAndReturn:file=xmltree.c:line=573:obj=unknown:subj=xmlParseInNodeContext:error=5:libxml2
library function failed:Failed to parse content
func=xmlSecEncCtxDecrypt:file=xmlenc.c:line=648:obj=unknown:subj=xmlSecReplaceNodeBuffer:error=1:xmlsec
library function failed:node=EncryptedData
Error: failed to decrypt file
Error: failed to decrypt file "encrypted.xml"

Obviously, I see that I'm running different versions, but does anyone know
what might be wrong regardless? Is the test case flawed but 1.2.24 accepts
it anyway, or did I run into a bug?

Regards,
Matthias Hjalmarsson

--000000000000be5d50058bffc3ed
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi!<div><br></div><div>I&#39;m trying to use xmlsec to imp=
lement encrypt/decrypt functionality, with help from=C2=A0<a href=3D"https:=
//users.dcc.uchile.cl/~pcamacho/tutorial/web/xmlsec/xmlsec.html">https://us=
ers.dcc.uchile.cl/~pcamacho/tutorial/web/xmlsec/xmlsec.html</a>=C2=A0for pr=
oviding basic examples.</div><div><br></div><div>I have a problem where a t=
est case works in one environment, but not in another and I&#39;m not sure =
how to proceed.</div><div><br></div><div>I&#39;m attaching 4 files</div><di=
v><br></div><div>* certificate.p12 - private key given in PKCS #12 for decr=
ypting (password: hello)</div><div>* public.pem - public file for encryptin=
g</div><div>* doc.xml - document to encrypt</div><div>* template.xml - temp=
late used for encrypting</div><div><br></div><div>Encrypt:</div><div>xmlsec=
1 encrypt --pubkey-pem public.pem --session-key des-192 --xml-data doc.xml =
--output encrypted.xml template.xml<br></div><div><br></div><div>Decrypt</d=
iv><div>xmlsec1 decrypt --output result.xml --pkcs12 certificate.p12 --pwd =
hello encrypted.xml<br></div><div><br></div><div>When run with latest versi=
on available via cygwin (xmlsec1 1.2.24 (openssl)) on Windows, this produce=
s the desired result that result.xml is equivalent to doc.xml. However, whe=
n run on CentOS 7 with the latest available version (xmlsec1 1.2.20 (openss=
l)) decryption fails with:</div><div><br></div><div>Entity: line 2: parser =
error : internal error: detected an error in element content<br><br>&lt;Pay=
Info&gt;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0^<br>func=3DxmlSecReplaceNode=
BufferAndReturn:file=3Dxmltree.c:line=3D573:obj=3Dunknown:subj=3DxmlParseIn=
NodeContext:error=3D5:libxml2 library function failed:Failed to parse conte=
nt<br>func=3DxmlSecEncCtxDecrypt:file=3Dxmlenc.c:line=3D648:obj=3Dunknown:s=
ubj=3DxmlSecReplaceNodeBuffer:error=3D1:xmlsec library function failed:node=
=3DEncryptedData<br>Error: failed to decrypt file<br>Error: failed to decry=
pt file &quot;encrypted.xml&quot;<br></div><div><br></div><div>Obviously, I=
 see that I&#39;m running different versions, but does anyone know what mig=
ht be wrong regardless? Is the test case flawed but 1.2.24 accepts it anywa=
y, or did I run into a bug?=C2=A0</div><div><br></div><div>Regards,</div><d=
iv>Matthias Hjalmarsson</div><div><br></div><div><br></div></div>

--000000000000be5d50058bffc3ed--

--000000000000be5d53058bffc3ef
Content-Type: application/x-pkcs12; name="certificate.p12"
Content-Disposition: attachment; filename="certificate.p12"
Content-Transfer-Encoding: base64
Content-ID: <f_jx94nyqe0>
X-Attachment-Id: f_jx94nyqe0

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
--000000000000be5d53058bffc3ef
Content-Type: application/octet-stream; name="public.pem"
Content-Disposition: attachment; filename="public.pem"
Content-Transfer-Encoding: base64
Content-ID: <f_jx94nyqt1>
X-Attachment-Id: f_jx94nyqt1

LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0NCk1JR2ZNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0R05B
RENCaVFLQmdRQzhFb1NBMVlvOXRGeFF2RmR3YlBGNSttOTcNCmtXdks1ejRKREFuUGRpNk1UWFB5
TXdxNHNQWUx2VFJxYlAyOEdwMW9HV3l1YjJ1T21OdTJzUllSNk5yalpQV1INCk5wWTlGRUhvQlhR
UnBSQ0RyZllaYVJ4VXFrNTVsd0NxMmtoM2Rzc1lWWHZpYWhpSzdjazBKYmxsVFR6Z2lsM2YNCk03
bXhZRnFwVkRGeks1L0Njd0lEQVFBQg0KLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tDQo=
--000000000000be5d53058bffc3ef
Content-Type: text/xml; charset="US-ASCII"; name="doc.xml"
Content-Disposition: attachment; filename="doc.xml"
Content-Transfer-Encoding: base64
Content-ID: <f_jx94o2gu2>
X-Attachment-Id: f_jx94o2gu2

PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxQYXlJbmZvPg0KCTxOYW1l
PkpvaG4gU21pdGg8L05hbWU+DQoJPENyZWRpdENhcmQgTGltaXQ9IjIsMDAwIiBDdXJyZW5jeT0i
VVNEIj4NCgkJPE51bWJlcj4xMDc2IDI0NzggMDY3OCA1NTg5PC9OdW1iZXI+DQoJCTxJc3N1ZXI+
Q2l0aUJhbms8L0lzc3Vlcj4NCgkJPEV4cGlyYXRpb24+MDYvMTA8L0V4cGlyYXRpb24+DQoJPC9D
cmVkaXRDYXJkPg0KPC9QYXlJbmZvPg0K
--000000000000be5d53058bffc3ef
Content-Type: text/xml; charset="US-ASCII"; name="template.xml"
Content-Disposition: attachment; filename="template.xml"
Content-Transfer-Encoding: base64
Content-ID: <f_jx94o2gw3>
X-Attachment-Id: f_jx94o2gw3

PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjwhLS0NClhNTCBTZWN1cml0
eSBMaWJyYXJ5IGV4YW1wbGU6IE9yaWdpbmFsIFhNTA0KIGRvYyBmaWxlIGJlZm9yZSBlbmNyeXB0
aW9uIChlbmNyeXB0MyBleGFtcGxlKS4NCi0tPg0KPEVuY3J5cHRlZERhdGENCgkJeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyINCgkJVHlwZT0iaHR0cDovL3d3dy53My5v
cmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+DQoJPEVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGht
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyN0cmlwbGVkZXMtY2JjIi8+DQoJPEtl
eUluZm8geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPg0KCQk8RW5j
cnlwdGVkS2V5IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPg0KCQkJ
PEVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3ht
bGVuYyNyc2EtMV81Ii8+DQoJCQk8Q2lwaGVyRGF0YT4NCgkJCQk8Q2lwaGVyVmFsdWUvPg0KCQkJ
PC9DaXBoZXJEYXRhPg0KCQk8L0VuY3J5cHRlZEtleT4NCgk8L0tleUluZm8+DQoJPENpcGhlckRh
dGE+DQoJCTxDaXBoZXJWYWx1ZS8+DQoJPC9DaXBoZXJEYXRhPg0KPC9FbmNyeXB0ZWREYXRhPg==
--000000000000be5d53058bffc3ef
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KeG1sc2VjIG1h
aWxpbmcgbGlzdAp4bWxzZWNAYWxla3NleS5jb20KaHR0cDovL3d3dy5hbGVrc2V5LmNvbS9tYWls
bWFuL2xpc3RpbmZvL3htbHNlYwo=

--000000000000be5d53058bffc3ef--