]>
Commit | Line | Data |
---|---|---|
6fc6879b JM |
1 | /* |
2 | * ASN.1 DER parsing | |
3 | * Copyright (c) 2006, Jouni Malinen <j@w1.fi> | |
4 | * | |
0f3d578e JM |
5 | * This software may be distributed under the terms of the BSD license. |
6 | * See README for more details. | |
6fc6879b JM |
7 | */ |
8 | ||
9 | #ifndef ASN1_H | |
10 | #define ASN1_H | |
11 | ||
12 | #define ASN1_TAG_EOC 0x00 /* not used with DER */ | |
13 | #define ASN1_TAG_BOOLEAN 0x01 | |
14 | #define ASN1_TAG_INTEGER 0x02 | |
15 | #define ASN1_TAG_BITSTRING 0x03 | |
16 | #define ASN1_TAG_OCTETSTRING 0x04 | |
17 | #define ASN1_TAG_NULL 0x05 | |
18 | #define ASN1_TAG_OID 0x06 | |
19 | #define ASN1_TAG_OBJECT_DESCRIPTOR 0x07 /* not yet parsed */ | |
20 | #define ASN1_TAG_EXTERNAL 0x08 /* not yet parsed */ | |
21 | #define ASN1_TAG_REAL 0x09 /* not yet parsed */ | |
22 | #define ASN1_TAG_ENUMERATED 0x0A /* not yet parsed */ | |
23 | #define ASN1_TAG_UTF8STRING 0x0C /* not yet parsed */ | |
24 | #define ANS1_TAG_RELATIVE_OID 0x0D | |
25 | #define ASN1_TAG_SEQUENCE 0x10 /* shall be constructed */ | |
26 | #define ASN1_TAG_SET 0x11 | |
27 | #define ASN1_TAG_NUMERICSTRING 0x12 /* not yet parsed */ | |
28 | #define ASN1_TAG_PRINTABLESTRING 0x13 | |
29 | #define ASN1_TAG_TG1STRING 0x14 /* not yet parsed */ | |
30 | #define ASN1_TAG_VIDEOTEXSTRING 0x15 /* not yet parsed */ | |
31 | #define ASN1_TAG_IA5STRING 0x16 | |
32 | #define ASN1_TAG_UTCTIME 0x17 | |
33 | #define ASN1_TAG_GENERALIZEDTIME 0x18 /* not yet parsed */ | |
34 | #define ASN1_TAG_GRAPHICSTRING 0x19 /* not yet parsed */ | |
35 | #define ASN1_TAG_VISIBLESTRING 0x1A | |
36 | #define ASN1_TAG_GENERALSTRING 0x1B /* not yet parsed */ | |
37 | #define ASN1_TAG_UNIVERSALSTRING 0x1C /* not yet parsed */ | |
38 | #define ASN1_TAG_BMPSTRING 0x1D /* not yet parsed */ | |
39 | ||
40 | #define ASN1_CLASS_UNIVERSAL 0 | |
41 | #define ASN1_CLASS_APPLICATION 1 | |
42 | #define ASN1_CLASS_CONTEXT_SPECIFIC 2 | |
43 | #define ASN1_CLASS_PRIVATE 3 | |
44 | ||
45 | ||
46 | struct asn1_hdr { | |
47 | const u8 *payload; | |
48 | u8 identifier, class, constructed; | |
49 | unsigned int tag, length; | |
50 | }; | |
51 | ||
52 | #define ASN1_MAX_OID_LEN 20 | |
53 | struct asn1_oid { | |
54 | unsigned long oid[ASN1_MAX_OID_LEN]; | |
55 | size_t len; | |
56 | }; | |
57 | ||
58 | ||
59 | int asn1_get_next(const u8 *buf, size_t len, struct asn1_hdr *hdr); | |
efe22727 | 60 | int asn1_parse_oid(const u8 *buf, size_t len, struct asn1_oid *oid); |
6fc6879b JM |
61 | int asn1_get_oid(const u8 *buf, size_t len, struct asn1_oid *oid, |
62 | const u8 **next); | |
63 | void asn1_oid_to_str(struct asn1_oid *oid, char *buf, size_t len); | |
64 | unsigned long asn1_bit_string_to_long(const u8 *buf, size_t len); | |
65 | ||
66 | #endif /* ASN1_H */ |