blob: 8bb4f637318b8a02b7e5ac06bcd9bc611b4604cf [file] [log] [blame]
Lev Walkinf15320b2004-06-03 03:38:44 +00001#ifndef ASN1_PARSER_EXPR2UCLASS_H
2#define ASN1_PARSER_EXPR2UCLASS_H
3
Lev Walkin0c735e92004-08-19 13:32:46 +00004static int expr_type2uclass_value[ASN_EXPR_TYPE_MAX]
Lev Walkinf15320b2004-06-03 03:38:44 +00005 __attribute__ ((unused)) = {
6 [ ASN_BASIC_BOOLEAN ] = 1,
7 [ ASN_BASIC_INTEGER ] = 2,
8 [ ASN_BASIC_BIT_STRING ] = 3,
9 [ ASN_BASIC_OCTET_STRING ] = 4,
10 [ ASN_BASIC_NULL ] = 5,
11 [ ASN_BASIC_OBJECT_IDENTIFIER ] = 6,
Lev Walkinf15320b2004-06-03 03:38:44 +000012 [ ASN_STRING_ObjectDescriptor ] = 7,
Lev Walkin53c43712004-08-17 06:48:25 +000013 [ ASN_BASIC_EXTERNAL ] = 8,
Lev Walkinf15320b2004-06-03 03:38:44 +000014 [ ASN_BASIC_REAL ] = 9,
15 [ ASN_BASIC_ENUMERATED ] = 10,
16 [ ASN_BASIC_EMBEDDED_PDV ] = 11,
17 [ ASN_STRING_UTF8String ] = 12,
18 [ ASN_BASIC_RELATIVE_OID ] = 13,
19 [ ASN_CONSTR_SEQUENCE ] = 16,
20 [ ASN_CONSTR_SEQUENCE_OF ] = 16,
21 [ ASN_CONSTR_SET ] = 17,
22 [ ASN_CONSTR_SET_OF ] = 17,
23 [ ASN_STRING_NumericString ] = 18,
24 [ ASN_STRING_PrintableString ] = 19,
25 [ ASN_STRING_TeletexString ] = 20,
26 [ ASN_STRING_T61String ] = 20,
27 [ ASN_STRING_VideotexString ] = 21,
28 [ ASN_STRING_IA5String ] = 22,
29 [ ASN_BASIC_UTCTime ] = 23,
30 [ ASN_BASIC_GeneralizedTime ] = 24,
31 [ ASN_STRING_GraphicString ] = 25,
32 [ ASN_STRING_VisibleString ] = 26,
33 [ ASN_STRING_ISO646String ] = 26,
34 [ ASN_STRING_GeneralString ] = 27,
35 [ ASN_STRING_UniversalString ] = 28,
36 [ ASN_BASIC_CHARACTER_STRING ] = 29,
37 [ ASN_STRING_BMPString ] = 30,
38};
39
Lev Walkin61f89c42004-09-23 22:21:07 +000040static enum asn1p_expr_type expr_utag2type[32] __attribute__ ((unused)) = {
Lev Walkin0c735e92004-08-19 13:32:46 +000041 [ 0 ] = 0, /* If zero length, end-of-content */
Lev Walkin61f89c42004-09-23 22:21:07 +000042 [ 1 ] = ASN_BASIC_BOOLEAN,
43 [ 2 ] = ASN_BASIC_INTEGER,
44 [ 3 ] = ASN_BASIC_BIT_STRING,
45 [ 4 ] = ASN_BASIC_OCTET_STRING,
46 [ 5 ] = ASN_BASIC_NULL,
47 [ 6 ] = ASN_BASIC_OBJECT_IDENTIFIER,
48 [ 7 ] = ASN_STRING_ObjectDescriptor,
49 [ 8 ] = ASN_BASIC_EXTERNAL,
50 [ 9 ] = ASN_BASIC_REAL,
51 [ 10 ] = ASN_BASIC_ENUMERATED,
52 [ 11 ] = ASN_BASIC_EMBEDDED_PDV,
53 [ 12 ] = ASN_STRING_UTF8String,
54 [ 13 ] = ASN_BASIC_RELATIVE_OID,
Lev Walkin0c735e92004-08-19 13:32:46 +000055 [ 14 ] = 0,
Lev Walkin61f89c42004-09-23 22:21:07 +000056 [ 15 ] = 0,
57 [ 16 ] = ASN_CONSTR_SEQUENCE, /* Or SEQUENCE OF */
58 [ 17 ] = ASN_CONSTR_SET, /* Or SET OF */
59 [ 18 ] = ASN_STRING_NumericString, /* " "|"0".."9" */
60 [ 19 ] = ASN_STRING_PrintableString,
61 [ 20 ] = ASN_STRING_TeletexString,
62 [ 21 ] = ASN_STRING_VideotexString,
63 [ 22 ] = ASN_STRING_IA5String,
64 [ 23 ] = ASN_BASIC_UTCTime,
65 [ 24 ] = ASN_BASIC_GeneralizedTime,
66 [ 25 ] = ASN_STRING_GraphicString,
67 [ 26 ] = ASN_STRING_VisibleString,
68 [ 27 ] = ASN_STRING_GeneralString,
69 [ 28 ] = ASN_STRING_UniversalString, /* 32-bit UCS-4 */
70 [ 29 ] = ASN_BASIC_CHARACTER_STRING,
71 [ 30 ] = ASN_STRING_BMPString, /* 16-bit UCS-2 */
Lev Walkin0c735e92004-08-19 13:32:46 +000072};
73
Lev Walkin61f89c42004-09-23 22:21:07 +000074/*
75 * Convert the [UNIVERSAL value] into the internal type or a string.
76 */
77#define ASN_UNIVERSAL_TAG2TYPE(utag) \
78 ( \
79 (((int)(utag)) < 0 \
80 || ((int)(utag)) >= (int)(sizeof(expr_utag2type) \
81 / sizeof(expr_utag2type[0]))) \
82 ? 0 \
83 : expr_utag2type[(int)(utag)] \
84 )
85#define ASN_UNIVERSAL_TAG2STR(utag) \
86 ASN_EXPR_TYPE2STR(ASN_UNIVERSAL_TAG2TYPE(utag))
87
Lev Walkinf15320b2004-06-03 03:38:44 +000088#endif /* ASN1_PARSER_EXPR2UCLASS_H */