New function X509_signature_print() to remove some duplicate
authorDr. Stephen Henson <steve@openssl.org>
Thu, 14 Dec 2000 00:53:10 +0000 (00:53 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Thu, 14 Dec 2000 00:53:10 +0000 (00:53 +0000)
code from certificate, CRL and request printing routines.

CHANGES
crypto/asn1/t_crl.c
crypto/asn1/t_req.c
crypto/asn1/t_x509.c
crypto/x509/x509.h

diff --git a/CHANGES b/CHANGES
index 3efb236f63a6c817b9377b05c58cf6e5b1020915..ad71e3d7218c54ae91efcb92d78069f5b03c22f7 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -3,6 +3,10 @@
 
  Changes between 0.9.6 and 0.9.7  [xx XXX 2000]
 
+  *) New function X509_signature_print() to remove duplication in some
+     print routines.
+     [Steve Henson]
+
   *) Add a special meaning when SET OF and SEQUENCE OF flags are both
      set (this was treated exactly the same as SET OF previously). This
      is used to reorder the STACK representing the structure to match the
index d78e4a8f8878609ada45afb425f65af3f399a80e..3a1443386da464533234878f8036f3636216f048 100644 (file)
@@ -86,7 +86,6 @@ int X509_CRL_print_fp(FILE *fp, X509_CRL *x)
 int X509_CRL_print(BIO *out, X509_CRL *x)
 {
        char buf[256];
-       unsigned char *s;
        STACK_OF(X509_REVOKED) *rev;
        X509_REVOKED *r;
        long l;
@@ -131,19 +130,7 @@ int X509_CRL_print(BIO *out, X509_CRL *x)
                for(j = 0; j < X509_REVOKED_get_ext_count(r); j++)
                                ext_print(out, X509_REVOKED_get_ext(r, j));
        }
-
-       i=OBJ_obj2nid(x->sig_alg->algorithm);
-       BIO_printf(out,"    Signature Algorithm: %s",
-                               (i == NID_undef)?"UNKNOWN":OBJ_nid2ln(i));
-
-       s = x->signature->data;
-       n = x->signature->length;
-       for (i=0; i<n; i++, s++)
-       {
-               if ((i%18) == 0) BIO_write(out,"\n        ",9);
-               BIO_printf(out,"%02x%s",*s, ((i+1) == n)?"":":");
-       }
-       BIO_write(out,"\n",1);
+       X509_signature_print(out, x->sig_alg, x->signature);
 
        return 1;
 
index b80ea1857fcd3f3bfc39a9f4a95ff06545062157..5e875b2f87439f03a4a3eb2d0215d789fe44f739 100644 (file)
@@ -85,8 +85,7 @@ int X509_REQ_print_fp(FILE *fp, X509_REQ *x)
 int X509_REQ_print(BIO *bp, X509_REQ *x)
        {
        unsigned long l;
-       int i,n;
-       char *s;
+       int i;
        const char *neg;
        X509_REQ_INFO *ri;
        EVP_PKEY *pkey;
@@ -226,24 +225,8 @@ get_next:
                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));
-       if (BIO_puts(bp,str) <= 0) goto err;
+       if(!X509_signature_print(bp, x->sig_alg, x->signature)) goto err;
 
-       n=x->signature->length;
-       s=(char *)x->signature->data;
-       for (i=0; i<n; i++)
-               {
-               if ((i%18) == 0)
-                       {
-                       sprintf(str,"\n%8s","");
-                       if (BIO_puts(bp,str) <= 0) goto err;
-                       }
-               sprintf(str,"%02x%s",(unsigned char)s[i],((i+1) == n)?"":":");
-               if (BIO_puts(bp,str) <= 0) goto err;
-               }
-       if (BIO_puts(bp,"\n") <= 0) goto err;
        return(1);
 err:
        X509err(X509_F_X509_REQ_PRINT,ERR_R_BUF_LIB);
index 823c20860ce96280a2f590a9141e24494f9d5660..beba47c6651f46b90c1646ce06724691e7649f53 100644 (file)
@@ -102,7 +102,7 @@ int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflags, unsigned long cflag)
        {
        long l;
        int ret=0,i,j,n;
-       char *m=NULL,*s, mlch = ' ';
+       char *m=NULL,mlch = ' ';
        int nmindent = 0;
        X509_CINF *ci;
        ASN1_INTEGER *bs;
@@ -256,20 +256,7 @@ int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflags, unsigned long cflag)
 
        if(!(cflag & X509_FLAG_NO_SIGDUMP))
                {
-               i=OBJ_obj2nid(x->sig_alg->algorithm);
-               if (BIO_printf(bp,"%4sSignature Algorithm: %s","",
-                       (i == NID_undef)?"UNKNOWN":OBJ_nid2ln(i)) <= 0) goto err;
-
-               n=x->signature->length;
-               s=(char *)x->signature->data;
-               for (i=0; i<n; i++)
-                       {
-                       if ((i%18) == 0)
-                               if (BIO_write(bp,"\n        ",9) <= 0) goto err;
-                       if (BIO_printf(bp,"%02x%s",(unsigned char)s[i],
-                               ((i+1) == n)?"":":") <= 0) goto err;
-                       }
-               if (BIO_write(bp,"\n",1) != 1) goto err;
+               if(X509_signature_print(bp, x->sig_alg, x->signature) <= 0) goto err;
                }
        if(!(cflag & X509_FLAG_NO_AUX))
                {
@@ -332,6 +319,26 @@ err:
        return(0);
        }
 
+int X509_signature_print(BIO *bp, X509_ALGOR *sigalg, ASN1_STRING *sig)
+{
+       unsigned char *s;
+       int i, n;
+       if (BIO_puts(bp,"    Signature Algorithm: ") <= 0) return 0;
+       if (i2a_ASN1_OBJECT(bp, sigalg->algorithm) <= 0) return 0;
+
+       n=sig->length;
+       s=sig->data;
+       for (i=0; i<n; i++)
+               {
+               if ((i%18) == 0)
+                       if (BIO_write(bp,"\n        ",9) <= 0) return 0;
+                       if (BIO_printf(bp,"%02x%s",s[i],
+                               ((i+1) == n)?"":":") <= 0) return 0;
+               }
+       if (BIO_write(bp,"\n",1) != 1) return 0;
+       return 1;
+}
+
 int ASN1_STRING_print(BIO *bp, ASN1_STRING *v)
        {
        int i,n;
index 82714b7601c2ff820b6913867e38a434e016a048..6ef1b48c0205b63fef402cae61a5eadd976302b6 100644 (file)
@@ -711,6 +711,8 @@ int NETSCAPE_SPKI_set_pubkey(NETSCAPE_SPKI *x, EVP_PKEY *pkey);
 
 int NETSCAPE_SPKI_print(BIO *out, NETSCAPE_SPKI *spki);
 
+int X509_signature_print(BIO *bp,X509_ALGOR *alg, ASN1_STRING *sig);
+
 int X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md);
 int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md);
 int X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md);