[xmlsec] mscrypto, failing signature creation
Miklos Vajna
vmiklos at vmiklos.hu
Sun May 7 07:04:04 PDT 2017
Hi,
I'm working on upgrading xmlsec as bundled by LibreOffice and with the
updated version creating a new signature on Windows doesn't work
anymore. I bisected the problem and it's commit
fd1807670cd6b919a213f5603dd27bf2b056c93d that causes the problem for us.
The error callback of LibreOffice is is invoked like this:
debug:2688:2836: ..\src\mscrypto\x509.c:718: xmlSecMSCryptoKeyDataX509XmlWrite() 'x509' 'xmlSecMSCryptoKeyDataX509GetCert' 1 'pos=0' The operation completed successfully.
debug:2688:2836: ..\src\keyinfo.c:178: xmlSecKeyInfoNodeWrite() 'x509' 'xmlSecKeyDataXmlWrite' 1 'node=X509Data' The operation completed successfully.
debug:2688:2836: ..\src\xmldsig.c:806: xmlSecDSigCtxProcessKeyInfoNode() '' 'xmlSecKeyInfoNodeWrite' 1 ' ' The operation completed successfully.
debug:2688:2836: ..\src\xmldsig.c:503: xmlSecDSigCtxProcessSignatureNode() '' 'xmlSecDSigCtxProcessKeyInfoNode' 1 ' ' The operation completed successfully.
debug:2688:2836: ..\src\xmldsig.c:286: xmlSecDSigCtxSign() '' 'xmlSecDSigCtxSignatureProcessNode' 1 ' ' The operation completed successfully.
Reading the mentioned commit and this trace, here is a trivial revert
that fixes the problem for me:
----
diff --git a/src/mscrypto/x509.c b/src/mscrypto/x509.c
index 08c9088d..40dbb39a 100644
--- a/src/mscrypto/x509.c
+++ b/src/mscrypto/x509.c
@@ -392,11 +392,7 @@ xmlSecMSCryptoKeyDataX509GetCert(xmlSecKeyDataPtr data, xmlSecSize pos) {
xmlSecAssert2(ctx->hMemStore != 0, NULL);
xmlSecAssert2(ctx->numCerts > pos, NULL);
- while (pos > 0) {
- pCert = CertEnumCertificatesInStore(ctx->hMemStore, pCert);
- if(pCert == NULL) {
- break;
- }
+ while ((pCert = CertEnumCertificatesInStore(ctx->hMemStore, pCert)) && (pos > 0)) {
pos--;
}
----
Sounds like this wasn't meant to be a functional change, but in case pos
is 0, then now we return NULL unconditionally, while previously
CertEnumCertificatesInStore() was invoked once.
Aleksey, should I send a pull request with just this revert, or you
have an idea how to fix the problem in a better way?
Thanks,
Miklos
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://www.aleksey.com/pipermail/xmlsec/attachments/20170507/5a37a488/attachment.sig>
More information about the xmlsec
mailing list