Add RFC 3779 support, contributed by ARIN.
[oweals/openssl.git] / crypto / asn1 / asn1_par.c
index 0e5bf915a0c1a74b83bdd6aa773dc49b31f14c07..501b62a4b1993b4a957098f11ac54a262f746ccc 100644 (file)
@@ -88,7 +88,10 @@ static int asn1_print_info(BIO *bp, int tag, int xclass, int constructed,
                BIO_snprintf(str,sizeof str,"cont [ %d ]",tag);
        else if ((xclass & V_ASN1_APPLICATION) == V_ASN1_APPLICATION)
                BIO_snprintf(str,sizeof str,"appl [ %d ]",tag);
-       else p = ASN1_tag2str(tag);
+       else if (tag > 30)
+               BIO_snprintf(str,sizeof str,"<ASN1 %d>",tag);
+       else
+               p = ASN1_tag2str(tag);
 
        if (p2 != NULL)
                {
@@ -215,7 +218,7 @@ static int asn1_parse2(BIO *bp, const unsigned char **pp, long length, int offse
                                {
                                if (BIO_write(bp,":",1) <= 0) goto end;
                                if ((len > 0) &&
-                                       BIO_write(bp,(char *)p,(int)len)
+                                       BIO_write(bp,(const char *)p,(int)len)
                                        != (int)len)
                                        goto end;
                                }
@@ -278,7 +281,7 @@ static int asn1_parse2(BIO *bp, const unsigned char **pp, long length, int offse
                                                {
                                                if (BIO_write(bp,":",1) <= 0)
                                                        goto end;
-                                               if (BIO_write(bp,(char *)opp,
+                                               if (BIO_write(bp,(const char *)opp,
                                                        os->length) <= 0)
                                                        goto end;
                                                }
@@ -303,7 +306,8 @@ static int asn1_parse2(BIO *bp, const unsigned char **pp, long length, int offse
                                                        if (BIO_write(bp,"\n",1) <= 0)
                                                                goto end;
                                                        }
-                                               if (BIO_dump_indent(bp,(char *)opp,
+                                               if (BIO_dump_indent(bp,
+                                                       (const char *)opp,
                                                        ((dump == -1 || dump > 
                                                        os->length)?os->length:dump),
                                                        dump_indent) <= 0)
@@ -388,7 +392,7 @@ static int asn1_parse2(BIO *bp, const unsigned char **pp, long length, int offse
                                        if (BIO_write(bp,"\n",1) <= 0)
                                                goto end;
                                        }
-                               if (BIO_dump_indent(bp,(char *)p,
+                               if (BIO_dump_indent(bp,(const char *)p,
                                        ((dump == -1 || dump > len)?len:dump),
                                        dump_indent) <= 0)
                                        goto end;
@@ -418,7 +422,7 @@ end:
 
 const char *ASN1_tag2str(int tag)
 {
-       const static char *tag2str[] = {
+       static const char *tag2str[] = {
         "EOC", "BOOLEAN", "INTEGER", "BIT STRING", "OCTET STRING", /* 0-4 */
         "NULL", "OBJECT", "OBJECT DESCRIPTOR", "EXTERNAL", "REAL", /* 5-9 */
         "ENUMERATED", "<ASN1 11>", "UTF8STRING", "<ASN1 13>",      /* 10-13 */