mirror of
https://github.com/openssl/openssl.git
synced 2024-11-25 11:03:37 +08:00
New function to convert ASN1 tag values to strings. Also fix typo in asn1.h
This commit is contained in:
parent
092ec334f0
commit
a785abc324
4
CHANGES
4
CHANGES
@ -4,6 +4,10 @@
|
||||
|
||||
Changes between 0.9.4 and 0.9.5 [xx XXX 1999]
|
||||
|
||||
*) New function ANS1_tag2str() to convert an ASN1 tag to a descriptive
|
||||
ASCII string. This was handled independently in various places before.
|
||||
[Steve Henson]
|
||||
|
||||
*) New functions UTF8_getc() and UTF8_putc() that parse and generate
|
||||
UTF8 strings a character at a time.
|
||||
[Steve Henson]
|
||||
|
@ -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);
|
||||
|
@ -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];
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user