X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=crypto%2Fasn1%2Ft_req.c;h=bfa58cc967135f9c1edc766758bfdf4148d609a9;hp=922f6b392315c281003ed6f8b00da7e46498591b;hb=65ee74fbc75b06e58bbcb7cc35fc68191cd289c2;hpb=b7896b3cb86d80206af14a14d69b0717786f2729 diff --git a/crypto/asn1/t_req.c b/crypto/asn1/t_req.c index 922f6b3923..bfa58cc967 100644 --- a/crypto/asn1/t_req.c +++ b/crypto/asn1/t_req.c @@ -1,5 +1,5 @@ /* crypto/asn1/t_req.c */ -/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * * This package is an SSL implementation written @@ -58,15 +58,14 @@ #include #include "cryptlib.h" -#include "buffer.h" -#include "bn.h" -#include "objects.h" -#include "x509.h" - -#ifndef WIN16 -int X509_REQ_print_fp(fp,x) -FILE *fp; -X509_REQ *x; +#include +#include +#include +#include +#include + +#ifndef OPENSSL_NO_FP_API +int X509_REQ_print_fp(FILE *fp, X509_REQ *x) { BIO *b; int ret; @@ -83,16 +82,15 @@ X509_REQ *x; } #endif -int X509_REQ_print(bp,x) -BIO *bp; -X509_REQ *x; +int X509_REQ_print(BIO *bp, X509_REQ *x) { unsigned long l; - int i,n; - char *s,*neg; + int i; + const char *neg; X509_REQ_INFO *ri; EVP_PKEY *pkey; - STACK *sk; + STACK_OF(X509_ATTRIBUTE) *sk; + STACK_OF(X509_EXTENSION) *exts; char str[128]; ri=x->req_info; @@ -119,8 +117,8 @@ X509_REQ *x; if (BIO_puts(bp,str) <= 0) goto err; pkey=X509_REQ_get_pubkey(x); -#ifndef NO_RSA - if (pkey->type == EVP_PKEY_RSA) +#ifndef OPENSSL_NO_RSA + if (pkey != NULL && pkey->type == EVP_PKEY_RSA) { BIO_printf(bp,"%12sRSA Public Key: (%d bit)\n","", BN_num_bits(pkey->pkey.rsa->n)); @@ -128,32 +126,41 @@ X509_REQ *x; } else #endif -#ifndef NO_DSA - if (pkey->type == EVP_PKEY_DSA) +#ifndef OPENSSL_NO_DSA + if (pkey != NULL && pkey->type == EVP_PKEY_DSA) { BIO_printf(bp,"%12sDSA Public Key:\n",""); DSA_print(bp,pkey->pkey.dsa,16); } else #endif +#ifndef OPENSSL_NO_ECDSA + if (pkey != NULL && pkey->type == EVP_PKEY_ECDSA) + { + BIO_printf(bp, "%12sECDSA Public Key: \n",""); + ECDSA_print(bp, pkey->pkey.ecdsa, 16); + } + else +#endif + BIO_printf(bp,"%12sUnknown Public Key:\n",""); + if (pkey != NULL) + EVP_PKEY_free(pkey); + /* may not be */ sprintf(str,"%8sAttributes:\n",""); if (BIO_puts(bp,str) <= 0) goto err; sk=x->req_info->attributes; - if ((sk == NULL) || (sk_num(sk) == 0)) + if (sk_X509_ATTRIBUTE_num(sk) == 0) { - if (!x->req_info->req_kludge) - { - sprintf(str,"%12sa0:00\n",""); - if (BIO_puts(bp,str) <= 0) goto err; - } + sprintf(str,"%12sa0:00\n",""); + if (BIO_puts(bp,str) <= 0) goto err; } else { - for (i=0; iobject))) + continue; sprintf(str,"%12s",""); if (BIO_puts(bp,str) <= 0) goto err; if ((j=i2a_ASN1_OBJECT(bp,a->object)) > 0) - - if (a->set) + { + if (a->single) + { + t=a->value.single; + type=t->type; + bs=t->value.bit_string; + } + else { ii=0; - count=sk_num(a->value.set); + count=sk_ASN1_TYPE_num(a->value.set); get_next: - at=(ASN1_TYPE *)sk_value(a->value.set,ii); + at=sk_ASN1_TYPE_value(a->value.set,ii); type=at->type; bs=at->value.asn1_string; } - else - { - t=a->value.single; - type=t->type; - bs=t->value.bit_string; - } + } for (j=25-j; j>0; j--) if (BIO_write(bp," ",1) != 1) goto err; if (BIO_puts(bp,":") <= 0) goto err; @@ -201,24 +211,31 @@ get_next: } } - i=OBJ_obj2nid(x->sig_alg->algorithm); - sprintf(str,"%4sSignature Algorithm: %s","", - (i == NID_undef)?"UNKNOWN":OBJ_nid2ln(i)); - if (BIO_puts(bp,str) <= 0) goto err; - - n=x->signature->length; - s=(char *)x->signature->data; - for (i=0; ivalue); } - sprintf(str,"%02x%s",(unsigned char)s[i],((i+1) == n)?"":":"); - if (BIO_puts(bp,str) <= 0) goto err; + if (BIO_write(bp,"\n",1) <= 0) goto err; } - if (BIO_puts(bp,"\n") <= 0) goto err; + sk_X509_EXTENSION_pop_free(exts, X509_EXTENSION_free); + } + + if(!X509_signature_print(bp, x->sig_alg, x->signature)) goto err; + return(1); err: X509err(X509_F_X509_REQ_PRINT,ERR_R_BUF_LIB);