Loading CHANGES +4 −0 Original line number Diff line number Diff line Loading @@ -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] Loading crypto/asn1/asn1.h +2 −1 Original line number Diff line number Diff line Loading @@ -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) \ Loading Loading @@ -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); Loading crypto/asn1/asn1_par.c +22 −48 Original line number Diff line number Diff line Loading @@ -93,54 +93,7 @@ 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"; /* 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)"; else p = ASN1_tag2str(tag); if (p2 != NULL) { Loading Loading @@ -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
CHANGES +4 −0 Original line number Diff line number Diff line Loading @@ -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] Loading
crypto/asn1/asn1.h +2 −1 Original line number Diff line number Diff line Loading @@ -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) \ Loading Loading @@ -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); Loading
crypto/asn1/asn1_par.c +22 −48 Original line number Diff line number Diff line Loading @@ -93,54 +93,7 @@ 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"; /* 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)"; else p = ASN1_tag2str(tag); if (p2 != NULL) { Loading Loading @@ -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]; }