diff options
Diffstat (limited to 'lib/libcrypto/asn1/t_req.c')
-rw-r--r-- | lib/libcrypto/asn1/t_req.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/libcrypto/asn1/t_req.c b/lib/libcrypto/asn1/t_req.c index bdd749436ab..81dd6355a88 100644 --- a/lib/libcrypto/asn1/t_req.c +++ b/lib/libcrypto/asn1/t_req.c @@ -62,6 +62,7 @@ #include <openssl/bn.h> #include <openssl/objects.h> #include <openssl/x509.h> +#include <openssl/x509v3.h> #ifndef NO_FP_API int X509_REQ_print_fp(FILE *fp, X509_REQ *x) @@ -90,6 +91,7 @@ int X509_REQ_print(BIO *bp, X509_REQ *x) X509_REQ_INFO *ri; EVP_PKEY *pkey; STACK_OF(X509_ATTRIBUTE) *sk; + STACK_OF(X509_EXTENSION) *exts; char str[128]; ri=x->req_info; @@ -161,6 +163,8 @@ int X509_REQ_print(BIO *bp, X509_REQ *x) int j,type=0,count=1,ii=0; a=sk_X509_ATTRIBUTE_value(sk,i); + if(X509_REQ_extension_nid(OBJ_obj2nid(a->object))) + continue; sprintf(str,"%12s",""); if (BIO_puts(bp,str) <= 0) goto err; if ((j=i2a_ASN1_OBJECT(bp,a->object)) > 0) @@ -201,6 +205,29 @@ get_next: } } + exts = X509_REQ_get_extensions(x); + if(exts) { + BIO_printf(bp,"%8sRequested Extensions:\n",""); + for (i=0; i<sk_X509_EXTENSION_num(exts); i++) { + ASN1_OBJECT *obj; + X509_EXTENSION *ex; + int j; + ex=sk_X509_EXTENSION_value(exts, i); + if (BIO_printf(bp,"%12s","") <= 0) goto err; + obj=X509_EXTENSION_get_object(ex); + i2a_ASN1_OBJECT(bp,obj); + j=X509_EXTENSION_get_critical(ex); + if (BIO_printf(bp,": %s\n",j?"critical":"","") <= 0) + goto err; + if(!X509V3_EXT_print(bp, ex, 0, 16)) { + BIO_printf(bp, "%16s", ""); + M_ASN1_OCTET_STRING_print(bp,ex->value); + } + if (BIO_write(bp,"\n",1) <= 0) goto err; + } + sk_X509_EXTENSION_pop_free(exts, X509_EXTENSION_free); + } + i=OBJ_obj2nid(x->sig_alg->algorithm); sprintf(str,"%4sSignature Algorithm: %s","", (i == NID_undef)?"UNKNOWN":OBJ_nid2ln(i)); |