]> git.saurik.com Git - apple/security.git/blob - OSX/libsecurity_keychain/libDER/libDER/asn1Types.h
e1e9510c08bc2e39c3192c1ef3d06b96b00801b3
[apple/security.git] / OSX / libsecurity_keychain / libDER / libDER / asn1Types.h
1 /*
2 * Copyright (c) 2005-2016 Apple Inc. All Rights Reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
11 * file.
12 *
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
20 *
21 * @APPLE_LICENSE_HEADER_END@
22 */
23
24
25 /*
26 * asn1Types.h - ASN.1/DER #defines - strictly hard coded per the real world
27 *
28 */
29
30 #ifndef _ASN1_TYPES_H_
31 #define _ASN1_TYPES_H_
32
33 #include <sys/cdefs.h>
34
35 #include <libDER/libDER_config.h>
36
37 __BEGIN_DECLS
38
39 /* copied from libsecurity_asn1 project */
40
41 /* Type tag numbers */
42 #define ASN1_BOOLEAN 0x01
43 #define ASN1_INTEGER 0x02
44 #define ASN1_BIT_STRING 0x03
45 #define ASN1_OCTET_STRING 0x04
46 #define ASN1_NULL 0x05
47 #define ASN1_OBJECT_ID 0x06
48 #define ASN1_OBJECT_DESCRIPTOR 0x07
49 /* External type and instance-of type 0x08 */
50 #define ASN1_REAL 0x09
51 #define ASN1_ENUMERATED 0x0a
52 #define ASN1_EMBEDDED_PDV 0x0b
53 #define ASN1_UTF8_STRING 0x0c
54 /* 0x0d */
55 /* 0x0e */
56 /* 0x0f */
57 #define ASN1_SEQUENCE 0x10
58 #define ASN1_SET 0x11
59 #define ASN1_NUMERIC_STRING 0x12
60 #define ASN1_PRINTABLE_STRING 0x13
61 #define ASN1_T61_STRING 0x14
62 #define ASN1_VIDEOTEX_STRING 0x15
63 #define ASN1_IA5_STRING 0x16
64 #define ASN1_UTC_TIME 0x17
65 #define ASN1_GENERALIZED_TIME 0x18
66 #define ASN1_GRAPHIC_STRING 0x19
67 #define ASN1_VISIBLE_STRING 0x1a
68 #define ASN1_GENERAL_STRING 0x1b
69 #define ASN1_UNIVERSAL_STRING 0x1c
70 /* 0x1d */
71 #define ASN1_BMP_STRING 0x1e
72 #define ASN1_HIGH_TAG_NUMBER 0x1f
73 #define ASN1_TELETEX_STRING ASN1_T61_STRING
74
75 /* Tag modifiers */
76 #define ASN1_TAG_MASK ((DERTag)~0)
77 #define ASN1_TAGNUM_MASK ((DERTag)~((DERTag)7 << (sizeof(DERTag) * 8 - 3)))
78
79 #define ASN1_METHOD_MASK ((DERTag)1 << (sizeof(DERTag) * 8 - 3))
80 #define ASN1_PRIMITIVE ((DERTag)0 << (sizeof(DERTag) * 8 - 3))
81 #define ASN1_CONSTRUCTED ((DERTag)1 << (sizeof(DERTag) * 8 - 3))
82
83 #define ASN1_CLASS_MASK ((DERTag)3 << (sizeof(DERTag) * 8 - 2))
84 #define ASN1_UNIVERSAL ((DERTag)0 << (sizeof(DERTag) * 8 - 2))
85 #define ASN1_APPLICATION ((DERTag)1 << (sizeof(DERTag) * 8 - 2))
86 #define ASN1_CONTEXT_SPECIFIC ((DERTag)2 << (sizeof(DERTag) * 8 - 2))
87 #define ASN1_PRIVATE ((DERTag)3 << (sizeof(DERTag) * 8 - 2))
88
89 /* One-byte tag modifiers */
90 #define ONE_BYTE_ASN1_TAG_MASK 0xff
91 #define ONE_BYTE_ASN1_TAGNUM_MASK 0x1f
92 #define ONE_BYTE_ASN1_METHOD_MASK 0x20
93 #define ONE_BYTE_ASN1_PRIMITIVE 0x00
94 #define ONE_BYTE_ASN1_CONSTRUCTED 0x20
95
96 #define ONE_BYTE_ASN1_CLASS_MASK 0xc0
97 #define ONE_BYTE_ASN1_UNIVERSAL 0x00
98 #define ONE_BYTE_ASN1_APPLICATION 0x40
99 #define ONE_BYTE_ASN1_CONTEXT_SPECIFIC 0x80
100 #define ONE_BYTE_ASN1_PRIVATE 0xc0
101
102 /* sequence and set appear as the following */
103 #define ASN1_CONSTR_SEQUENCE ((DERTag)(ASN1_CONSTRUCTED | ASN1_SEQUENCE))
104 #define ASN1_CONSTR_SET ((DERTag)(ASN1_CONSTRUCTED | ASN1_SET))
105
106 #define ONE_BYTE_ASN1_CONSTR_SEQUENCE ((uint8_t)(ONE_BYTE_ASN1_CONSTRUCTED | ASN1_SEQUENCE))
107 #define ONE_BYTE_ASN1_CONSTR_SET ((uint8_t)(ONE_BYTE_ASN1_CONSTRUCTED | ASN1_SET))
108
109 __END_DECLS
110
111 #endif /* _ASN1_TYPES_H_ */