提交 4ff18c8c 编写于 作者: D Dr. Stephen Henson

Print out OID of unknown signature or public key
algorithms.
上级 db4a4659
...@@ -3,6 +3,10 @@ ...@@ -3,6 +3,10 @@
Changes between 0.9.6 and 0.9.7 [xx XXX 2000] Changes between 0.9.6 and 0.9.7 [xx XXX 2000]
*) If signature or public key algorithm is unrecognized print out its
OID rather that just UNKOWN.
[Steve Henson]
*) Avoid coredump with unsupported or invalid public keys by checking if *) Avoid coredump with unsupported or invalid public keys by checking if
X509_get_pubkey() fails in PKCS7_verify(). Fix memory leak when X509_get_pubkey() fails in PKCS7_verify(). Fix memory leak when
PKCS7_verify() fails with non detached data. PKCS7_verify() fails with non detached data.
......
...@@ -165,9 +165,11 @@ int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflags, unsigned long cflag) ...@@ -165,9 +165,11 @@ int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflags, unsigned long cflag)
if(!(cflag & X509_FLAG_NO_SIGNAME)) if(!(cflag & X509_FLAG_NO_SIGNAME))
{ {
i=OBJ_obj2nid(ci->signature->algorithm); if (BIO_printf(bp,"%8sSignature Algorithm: ","") <= 0)
if (BIO_printf(bp,"%8sSignature Algorithm: %s\n","", goto err;
(i == NID_undef)?"UNKNOWN":OBJ_nid2ln(i)) <= 0) if (i2a_ASN1_OBJECT(bp, ci->signature->algorithm) <= 0)
goto err;
if (BIO_puts(bp, "\n") <= 0)
goto err; goto err;
} }
...@@ -194,9 +196,12 @@ int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflags, unsigned long cflag) ...@@ -194,9 +196,12 @@ int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflags, unsigned long cflag)
{ {
if (BIO_write(bp,"\n Subject Public Key Info:\n",34) <= 0) if (BIO_write(bp,"\n Subject Public Key Info:\n",34) <= 0)
goto err; goto err;
i=OBJ_obj2nid(ci->key->algor->algorithm); if (BIO_printf(bp,"%12sPublic Key Algorithm: ","") <= 0)
if (BIO_printf(bp,"%12sPublic Key Algorithm: %s\n","", goto err;
(i == NID_undef)?"UNKNOWN":OBJ_nid2ln(i)) <= 0) goto err; if (i2a_ASN1_OBJECT(bp, ci->key->algor->algorithm) <= 0)
goto err;
if (BIO_puts(bp, "\n") <= 0)
goto err;
pkey=X509_get_pubkey(x); pkey=X509_get_pubkey(x);
if (pkey == NULL) if (pkey == NULL)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册