Fix change to OPENSSL_NO_RFC3779
[openssl.git] / crypto / asn1 / t_req.c
index 7ebb39b2160a3794a7932a5bcda4f4d3b25776a2..0d169c9acc0f9ce8e820b18232ffa70980e44db2 100644 (file)
 #include <openssl/objects.h>
 #include <openssl/x509.h>
 #include <openssl/x509v3.h>
+#ifndef OPENSSL_NO_RSA
+#include <openssl/rsa.h>
+#endif
+#ifndef OPENSSL_NO_DSA
+#include <openssl/dsa.h>
+#endif
 
 #ifndef OPENSSL_NO_FP_API
 int X509_REQ_print_fp(FILE *fp, X509_REQ *x)
@@ -91,7 +97,6 @@ int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflags, unsigned long
        EVP_PKEY *pkey;
        STACK_OF(X509_ATTRIBUTE) *sk;
        STACK_OF(X509_EXTENSION) *exts;
-       char str[128];
        char mlch = ' ';
        int nmindent = 0;
 
@@ -116,8 +121,9 @@ int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflags, unsigned long
                l=0;
                for (i=0; i<ri->version->length; i++)
                        { l<<=8; l+=ri->version->data[i]; }
-               sprintf(str,"%8sVersion: %s%lu (%s0x%lx)\n","",neg,l,neg,l);
-               if (BIO_puts(bp,str) <= 0) goto err;
+               if(BIO_printf(bp,"%8sVersion: %s%lu (%s0x%lx)\n","",neg,l,neg,
+                             l) <= 0)
+                   goto err;
                }
         if(!(cflag & X509_FLAG_NO_SUBJECT))
                 {
@@ -143,47 +149,23 @@ int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflags, unsigned long
                        ERR_print_errors(bp);
                        }
                else
-#ifndef OPENSSL_NO_RSA
-               if (pkey->type == EVP_PKEY_RSA)
-                       {
-                       BIO_printf(bp,"%12sRSA Public Key: (%d bit)\n","",
-                       BN_num_bits(pkey->pkey.rsa->n));
-                       RSA_print(bp,pkey->pkey.rsa,16);
-                       }
-               else
-#endif
-#ifndef OPENSSL_NO_DSA
-               if (pkey->type == EVP_PKEY_DSA)
                        {
-                       BIO_printf(bp,"%12sDSA Public Key:\n","");
-                       DSA_print(bp,pkey->pkey.dsa,16);
+                       EVP_PKEY_print_public(bp, pkey, 16, NULL);
+                       EVP_PKEY_free(pkey);
                        }
-               else
-#endif
-#ifndef OPENSSL_NO_EC
-               if (pkey->type == EVP_PKEY_EC)
-               {
-                       BIO_printf(bp, "%12sEC Public Key: \n","");
-                       EC_KEY_print(bp, pkey->pkey.eckey, 16);
-               }
-       else
-#endif
-                       BIO_printf(bp,"%12sUnknown Public Key:\n","");
-
-               EVP_PKEY_free(pkey);
                }
 
        if(!(cflag & X509_FLAG_NO_ATTRIBUTES))
                {
                /* may not be */
-               sprintf(str,"%8sAttributes:\n","");
-               if (BIO_puts(bp,str) <= 0) goto err;
+               if(BIO_printf(bp,"%8sAttributes:\n","") <= 0)
+                   goto err;
 
                sk=x->req_info->attributes;
                if (sk_X509_ATTRIBUTE_num(sk) == 0)
                        {
-                       sprintf(str,"%12sa0:00\n","");
-                       if (BIO_puts(bp,str) <= 0) goto err;
+                       if(BIO_printf(bp,"%12sa0:00\n","") <= 0)
+                           goto err;
                        }
                else
                        {
@@ -198,8 +180,8 @@ int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflags, unsigned long
                                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(BIO_printf(bp,"%12s","") <= 0)
+                                   goto err;
                                if ((j=i2a_ASN1_OBJECT(bp,a->object)) > 0)
                                {
                                if (a->single)
@@ -254,7 +236,7 @@ get_next:
                                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)
+                               if (BIO_printf(bp,": %s\n",j?"critical":"") <= 0)
                                        goto err;
                                if(!X509V3_EXT_print(bp, ex, 0, 16))
                                        {
@@ -274,7 +256,7 @@ get_next:
 
        return(1);
 err:
-       X509err(X509_F_X509_REQ_PRINT,ERR_R_BUF_LIB);
+       X509err(X509_F_X509_REQ_PRINT_EX,ERR_R_BUF_LIB);
        return(0);
        }