aboutsummaryrefslogtreecommitdiffstats
path: root/crypto/asn1
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>1999-09-07 12:16:29 +0000
committerDr. Stephen Henson <steve@openssl.org>1999-09-07 12:16:29 +0000
commita785abc324b06a41ee043be128bf576a95d1fa1b (patch)
tree583e909d9449ce1a14aacf7d6c44b2c970a19724 /crypto/asn1
parent092ec334f023cdd97dc105110dada12308f9ec0d (diff)
downloadopenssl-a785abc324b06a41ee043be128bf576a95d1fa1b.tar.gz
New function to convert ASN1 tag values to strings. Also fix typo in asn1.h
Diffstat (limited to 'crypto/asn1')
-rw-r--r--crypto/asn1/asn1.h3
-rw-r--r--crypto/asn1/asn1_par.c70
2 files changed, 24 insertions, 49 deletions
diff --git a/crypto/asn1/asn1.h b/crypto/asn1/asn1.h
index 0ef18ac41c..bb5c12131c 100644
--- a/crypto/asn1/asn1.h
+++ b/crypto/asn1/asn1.h
@@ -379,7 +379,7 @@ typedef struct asn1_header_st
(ASN1_PRINTABLESTRING *)d2i_ASN1_type_bytes\
((ASN1_STRING **)a,pp,l,B_ASN1_PRINTABLESTRING)
-#define ASN1_T61STRING_new() (ASN1_T61STRING_STRING *)\
+#define ASN1_T61STRING_new() (ASN1_T61STRING *)\
ASN1_STRING_type_new(V_ASN1_T61STRING)
#define ASN1_T61STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a)
#define M_i2d_ASN1_T61STRING(a,pp) \
@@ -658,6 +658,7 @@ int ASN1_TIME_print(BIO *fp,ASN1_TIME *a);
int ASN1_STRING_print(BIO *bp,ASN1_STRING *v);
int ASN1_parse(BIO *bp,unsigned char *pp,long len,int indent);
#endif
+const char *ASN1_tag2str(int tag);
/* Used to load and write netscape format cert/key */
int i2d_ASN1_HEADER(ASN1_HEADER *a,unsigned char **pp);
diff --git a/crypto/asn1/asn1_par.c b/crypto/asn1/asn1_par.c
index 86886606ef..8209b7f240 100644
--- a/crypto/asn1/asn1_par.c
+++ b/crypto/asn1/asn1_par.c
@@ -93,55 +93,8 @@ static int asn1_print_info(BIO *bp, int tag, int xclass, int constructed,
sprintf(str,"cont [ %d ]",tag);
else if ((xclass & V_ASN1_APPLICATION) == V_ASN1_APPLICATION)
sprintf(str,"appl [ %d ]",tag);
- else if ((tag == V_ASN1_EOC) /* && (xclass == V_ASN1_UNIVERSAL) */)
- p="EOC";
- else if (tag == V_ASN1_BOOLEAN)
- p="BOOLEAN";
- else if (tag == V_ASN1_INTEGER)
- p="INTEGER";
- else if (tag == V_ASN1_ENUMERATED)
- p="ENUMERATED";
- else if (tag == V_ASN1_BIT_STRING)
- p="BIT STRING";
- else if (tag == V_ASN1_OCTET_STRING)
- p="OCTET STRING";
- else if (tag == V_ASN1_NULL)
- p="NULL";
- else if (tag == V_ASN1_OBJECT)
- p="OBJECT";
- else if (tag == V_ASN1_SEQUENCE)
- p="SEQUENCE";
- else if (tag == V_ASN1_SET)
- p="SET";
- else if (tag == V_ASN1_PRINTABLESTRING)
- p="PRINTABLESTRING";
- else if (tag == V_ASN1_T61STRING)
- p="T61STRING";
- else if (tag == V_ASN1_IA5STRING)
- p="IA5STRING";
- else if (tag == V_ASN1_UTCTIME)
- p="UTCTIME";
+ else p = ASN1_tag2str(tag);
- /* extras */
- else if (tag == V_ASN1_NUMERICSTRING)
- p="NUMERICSTRING";
- else if (tag == V_ASN1_VIDEOTEXSTRING)
- p="VIDEOTEXSTRING";
- else if (tag == V_ASN1_GENERALIZEDTIME)
- p="GENERALIZEDTIME";
- else if (tag == V_ASN1_GRAPHICSTRING)
- p="GRAPHICSTRING";
- else if (tag == V_ASN1_VISIBLESTRING)
- p="VISIBLESTRING";
- else if (tag == V_ASN1_GENERALSTRING)
- p="GENERALSTRING";
- else if (tag == V_ASN1_UNIVERSALSTRING)
- p="UNIVERSALSTRING";
- else if (tag == V_ASN1_BMPSTRING)
- p="BMPSTRING";
- else
- p2="(unknown)";
-
if (p2 != NULL)
{
if (BIO_printf(bp,fmt2,tag,p2) <= 0) goto err;
@@ -409,3 +362,24 @@ end:
*pp=p;
return(ret);
}
+
+const char *ASN1_tag2str(int tag)
+{
+ const static 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 */
+ "<ASN1 14>", "<ASN1 15>", "SEQUENCE", "SET", /* 15-17 */
+ "NUMERICSTRING", "PRINTABLESTRING", "T61STRING", /* 18-20 */
+ "VIDEOTEXSTRING", "IA5STRING", "UTCTIME" "GENERALIZEDTIME", /* 21-24 */
+ "GRAPHICSTRING", "VISIBLESTRING", "GENERALSTRING", /* 25-27 */
+ "UNIVERSALSTRING", "<ASN1 29>", "BMPSTRING" /* 28-30 */
+ };
+
+ if((tag == V_ASN1_NEG_INTEGER) || (tag == V_ASN1_NEG_ENUMERATED))
+ tag &= ~0x100;
+
+ if(tag < 0 || tag > 30) return "(unknown)";
+ return tag2str[tag];
+}
+