1 #ifndef ASN1_PARSER_EXPR2UCLASS_H
2 #define ASN1_PARSER_EXPR2UCLASS_H
5 #define __attribute__(x) /* unused */
8 static int expr_type2uclass_value[ASN_EXPR_TYPE_MAX]
9 __attribute__ ((unused)) = {
10 [ ASN_BASIC_BOOLEAN ] = 1,
11 [ ASN_BASIC_INTEGER ] = 2,
12 [ ASN_BASIC_BIT_STRING ] = 3,
13 [ ASN_BASIC_OCTET_STRING ] = 4,
14 [ ASN_BASIC_NULL ] = 5,
15 [ ASN_BASIC_OBJECT_IDENTIFIER ] = 6,
16 [ ASN_STRING_ObjectDescriptor ] = 7,
17 [ ASN_BASIC_EXTERNAL ] = 8,
18 [ ASN_BASIC_REAL ] = 9,
19 [ ASN_BASIC_ENUMERATED ] = 10,
20 [ ASN_BASIC_EMBEDDED_PDV ] = 11,
21 [ ASN_STRING_UTF8String ] = 12,
22 [ ASN_BASIC_RELATIVE_OID ] = 13,
23 [ ASN_CONSTR_SEQUENCE ] = 16,
24 [ ASN_CONSTR_SEQUENCE_OF ] = 16,
25 [ ASN_CONSTR_SET ] = 17,
26 [ ASN_CONSTR_SET_OF ] = 17,
27 [ ASN_STRING_NumericString ] = 18,
28 [ ASN_STRING_PrintableString ] = 19,
29 [ ASN_STRING_TeletexString ] = 20,
30 [ ASN_STRING_T61String ] = 20,
31 [ ASN_STRING_VideotexString ] = 21,
32 [ ASN_STRING_IA5String ] = 22,
33 [ ASN_BASIC_UTCTime ] = 23,
34 [ ASN_BASIC_GeneralizedTime ] = 24,
35 [ ASN_STRING_GraphicString ] = 25,
36 [ ASN_STRING_VisibleString ] = 26,
37 [ ASN_STRING_ISO646String ] = 26,
38 [ ASN_STRING_GeneralString ] = 27,
39 [ ASN_STRING_UniversalString ] = 28,
40 [ ASN_BASIC_CHARACTER_STRING ] = 29,
41 [ ASN_STRING_BMPString ] = 30,
44 static enum asn1p_expr_type expr_utag2type[32] __attribute__ ((unused)) = {
45 [ 0 ] = 0, /* If zero length, end-of-content */
46 [ 1 ] = ASN_BASIC_BOOLEAN,
47 [ 2 ] = ASN_BASIC_INTEGER,
48 [ 3 ] = ASN_BASIC_BIT_STRING,
49 [ 4 ] = ASN_BASIC_OCTET_STRING,
50 [ 5 ] = ASN_BASIC_NULL,
51 [ 6 ] = ASN_BASIC_OBJECT_IDENTIFIER,
52 [ 7 ] = ASN_STRING_ObjectDescriptor,
53 [ 8 ] = ASN_BASIC_EXTERNAL,
54 [ 9 ] = ASN_BASIC_REAL,
55 [ 10 ] = ASN_BASIC_ENUMERATED,
56 [ 11 ] = ASN_BASIC_EMBEDDED_PDV,
57 [ 12 ] = ASN_STRING_UTF8String,
58 [ 13 ] = ASN_BASIC_RELATIVE_OID,
61 [ 16 ] = ASN_CONSTR_SEQUENCE, /* Or SEQUENCE OF */
62 [ 17 ] = ASN_CONSTR_SET, /* Or SET OF */
63 [ 18 ] = ASN_STRING_NumericString, /* " "|"0".."9" */
64 [ 19 ] = ASN_STRING_PrintableString,
65 [ 20 ] = ASN_STRING_TeletexString,
66 [ 21 ] = ASN_STRING_VideotexString,
67 [ 22 ] = ASN_STRING_IA5String,
68 [ 23 ] = ASN_BASIC_UTCTime,
69 [ 24 ] = ASN_BASIC_GeneralizedTime,
70 [ 25 ] = ASN_STRING_GraphicString,
71 [ 26 ] = ASN_STRING_VisibleString,
72 [ 27 ] = ASN_STRING_GeneralString,
73 [ 28 ] = ASN_STRING_UniversalString, /* 32-bit UCS-4 */
74 [ 29 ] = ASN_BASIC_CHARACTER_STRING,
75 [ 30 ] = ASN_STRING_BMPString, /* 16-bit UCS-2 */
79 * Convert the [UNIVERSAL value] into the internal type or a string.
81 #define ASN_UNIVERSAL_TAG2TYPE(utag) \
84 || ((int)(utag)) >= (int)(sizeof(expr_utag2type) \
85 / sizeof(expr_utag2type[0]))) \
87 : expr_utag2type[(int)(utag)] \
89 #define ASN_UNIVERSAL_TAG2STR(utag) \
90 ASN_EXPR_TYPE2STR(ASN_UNIVERSAL_TAG2TYPE(utag))
92 #endif /* ASN1_PARSER_EXPR2UCLASS_H */