[xmlsec] --untrustedXXXX cmd line option
Roumen Petrov
xmlsec at roumenpetrov.info
Mon Jul 7 06:56:34 PDT 2003
Hi all,
code from .../apps/xmlsec.c show that we can call xmlsec1 with more than
one option --untrustedXXX file_name,
but when xmlsec is build with openssl, source code in
.../src/openssl/x509vfy.c method xmlSecOpenSSLX509StoreAdoptCert() is:
===========================================================
....
int
xmlSecOpenSSLX509StoreAdoptCert(xmlSecKeyDataStorePtr store, X509* cert,
xmlSecKeyDataType type) {
if((type & xmlSecKeyDataTypeTrusted) != 0) {
xmlSecAssert2(ctx->xst != NULL, -1);
....
} else {
xmlSecAssert2(ctx->untrusted != NULL, -1);
ret = sk_X509_push(ctx->untrusted, cert);
if(ret != 1) {
xmlSecError(XMLSEC_ERRORS_HERE,
xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
"sk_X509_push",
XMLSEC_ERRORS_R_CRYPTO_FAILED,
XMLSEC_ERRORS_NO_MESSAGE);
return(-1);
}
....
===========================================================
OpenSSL function sk_X509_push return number of certificates in stack.
When stack ctx->untrusted contain one cert. on next call of
xmlSecOpenSSLX509StoreAdoptCert(..) sk_X509_push return 2 and check (
ret != 1 ) fail.
Where/What is problem:
- xmlsec1 can accept only one untrusted certificate, i.e.
.../apps/xmlsec.c should skip extra --untrustedXXX options;
- after sk_X509_push check should be if ( ret < 1 );
- all source code is correct. But in that case xmlsec1 core dump and
might .../src/openssl/x509vfy.c source should pop from untrusted stack
to avoid core dump or never to push a cert. when stack contain already one;
?
All is tested with xmlsec 1.0.3 and CVS version. Test file rumen-sn.tmp
is attached and test commans are:
apps/xmlsec1 verify \
--untrusted-der tests/keys/dsacert.der \
--[un]trusted-der tests/keys/ca2cert.der \
--trusted-der tests/keys/cacert.der \
rumen-sn.tmp
-------------- next part --------------
<?xml version="1.0" encoding="UTF-8"?>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"/>
<Reference URI="http://www.w3.org/TR/xml-stylesheet">
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>vAS4NUtweyTpauQlw0OKw38j6K9iV3hagtCV6T8FoEpsaXwp/+q+Ag==</SignatureValue>
<KeyInfo>
<X509Data>
<X509SubjectName>emailAddress=xmlsec at aleksey.com,CN=Aleksey Sanin,OU=Third Level DSA Certificate,O=XML Security Library (http://www.aleksey.com/xmlsec),ST=California,C=US</X509SubjectName>
<X509SubjectName>emailAddress=xmlsec at aleksey.com,CN=Aleksey Sanin,OU=Second Level Certificate,O=XML Security Library (http://www.aleksey.com/xmlsec),ST=California,C=US</X509SubjectName>
</X509Data>
</KeyInfo>
</Signature>
More information about the xmlsec
mailing list