Hello, I have a problem to decrypt S/MIME email produced by a third party application and I hope you'll be able to bring me some light.
The problem happens when X509_NAME_ENTRY's of the local certificate are
compared with those of the matching certificate included in the message
(function X509_NAME_cmp() of crypto/x509/x509_cmp.c, at line 270)
With messages produced by openssl itself or, for example, Outlook
Express, X509_NAME_ENTRY's are viewed by OpenSSL as being of the
V_ASN1_PRINTABLESTRING type, even if they have latin characters. But
with with the particular application I'm dealing with, entries with
latin characters are viewed as being of the V_ASN1_T61STRING type by
OpenSSL. Consequently, X509_NAME_cmp()'s type comparison fails, because
openssl find V_ASN1_PRINTABLESTRING in the local certificate and
V_ASN1_T61STRING in the provides message.
For example I was able to decrypt by adding
if ( nb->value->type == V_ASN1_T61STRING ) {
nb->value->type = V_ASN1_PRINTABLESTRING;
}
before the type comparison (you'll probably laugh at such a poor
workaround, I'm open to better ones)
I wonder if this is a problem in the third party software, and I'll be
interested to know if you know what they are doing wrong.
I attach a tarball with the message and the key pair which brings the
problem.
Here is the output of openssl smime when I run it on these files :
------------------
$ openssl smime -decrypt -in smime.msg -inkey key.pem -recip cert.pem \
-passin env:SSL_PASSWD
Error decrypting PKCS#7 structure
23290:error:21070073:PKCS7 routines:PKCS7_dataDecode:no recipient
matches
certificate:/usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/pkcs7/pk7_doit.c:411:
23290:error:21072077:PKCS7 routines:PKCS7_decrypt:decrypt
error:/usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/pkcs7/pk7_smime.c:414:
------------------
Whith my poor ugly patch applied, I's nicely decrypted.
Any help appreciated.
PS :
Please forgive my english, i'm a non-native speaker.
--
Alex Marandon
CLARISYS Informatique
http://clarisys.fr
example.tar.gz
Description: application/tar-gz
