1/*
2 * Copyright (c) 1999-2001,2003-2004,2008-2010 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 * oidsbase.h -- Basic Object Identifier Macros and Data Types.
24 */
25
26#include "SecAsn1Types.h"
27
28#ifndef _OIDSBASE_H_
29#define _OIDSBASE_H_  1
30
31#ifdef __cplusplus
32extern "C" {
33#endif
34
35#define SECASN1OID_DEF(NAME, VALUE, ARGS...) \
36static const uint8_t _##NAME[] = { VALUE, ## ARGS }; \
37const SecAsn1Oid NAME = { sizeof(_##NAME), (uint8_t *)_##NAME }
38
39/* Intel CSSM */
40
41#define INTEL 96, 134, 72, 1, 134, 248, 77
42#define INTEL_LENGTH 7
43
44#define INTEL_CDSASECURITY INTEL, 2
45#define INTEL_CDSASECURITY_LENGTH (INTEL_LENGTH + 1)
46
47#define INTEL_SEC_FORMATS INTEL_CDSASECURITY, 1
48#define INTEL_SEC_FORMATS_LENGTH (INTEL_CDSASECURITY_LENGTH + 1)
49
50#define INTEL_SEC_ALGS INTEL_CDSASECURITY, 2, 5
51#define INTEL_SEC_ALGS_LENGTH (INTEL_CDSASECURITY_LENGTH + 2)
52
53#define INTEL_SEC_OBJECT_BUNDLE INTEL_SEC_FORMATS, 4
54#define INTEL_SEC_OBJECT_BUNDLE_LENGTH (INTEL_SEC_FORMATS_LENGTH + 1)
55
56#define INTEL_CERT_AND_PRIVATE_KEY_2_0 INTEL_SEC_OBJECT_BUNDLE, 1
57#define INTEL_CERT_AND_PRIVATE_KEY_2_0_LENGTH (INTEL_SEC_OBJECT_BUNDLE_LENGTH + 1)
58
59/* Suffix specifying format or representation of a field value */
60/* Note that if a format suffix is not specified, a flat data
61representation is implied */
62#define INTEL_X509_C_DATATYPE 1
63#define INTEL_X509_LDAPSTRING_DATATYPE 2
64
65#define OID_ISO_CCITT_DIR_SERVICE 			85
66#define OID_DS              				OID_ISO_CCITT_DIR_SERVICE
67#define OID_DS_LENGTH       				1
68#define OID_ATTR_TYPE        				OID_DS, 4
69#define OID_ATTR_TYPE_LENGTH 				OID_DS_LENGTH + 1
70#define OID_EXTENSION        				OID_DS, 29
71#define OID_EXTENSION_LENGTH 				OID_DS_LENGTH + 1
72#define OID_ISO_STANDARD      	 			40
73#define OID_ISO_MEMBER         				42
74#define OID_US                 				OID_ISO_MEMBER, 134, 72
75
76#define OID_ISO_IDENTIFIED_ORG 				43
77#define OID_OSINET             				OID_ISO_IDENTIFIED_ORG, 4
78#define OID_GOSIP              				OID_ISO_IDENTIFIED_ORG, 5
79#define OID_DOD                				OID_ISO_IDENTIFIED_ORG, 6
80#define OID_OIW                				OID_ISO_IDENTIFIED_ORG, 14
81
82#define OID_ITU_RFCDATA_MEMBER_LENGTH		1
83#define OID_ITU_RFCDATA						9
84
85/* From the PKCS Standards */
86#define OID_ISO_MEMBER_LENGTH 				1
87#define OID_US_LENGTH         				OID_ISO_MEMBER_LENGTH + 2
88#define OID_RSA               				OID_US, 134, 247, 13
89#define OID_RSA_LENGTH        				OID_US_LENGTH + 3
90#define OID_RSA_HASH          				OID_RSA, 2
91#define OID_RSA_HASH_LENGTH   				OID_RSA_LENGTH + 1
92#define OID_RSA_ENCRYPT       				OID_RSA, 3
93#define OID_RSA_ENCRYPT_LENGTH	 			OID_RSA_LENGTH + 1
94#define OID_PKCS             				OID_RSA, 1
95#define OID_PKCS_LENGTH       				OID_RSA_LENGTH +1
96#define OID_PKCS_1          				OID_PKCS, 1
97#define OID_PKCS_1_LENGTH   				OID_PKCS_LENGTH +1
98#define OID_PKCS_2          				OID_PKCS, 2
99#define OID_PKCS_3          				OID_PKCS, 3
100#define OID_PKCS_3_LENGTH   				OID_PKCS_LENGTH +1
101#define OID_PKCS_4          				OID_PKCS, 4
102#define OID_PKCS_5          				OID_PKCS, 5
103#define OID_PKCS_5_LENGTH   				OID_PKCS_LENGTH +1
104#define OID_PKCS_6          				OID_PKCS, 6
105#define OID_PKCS_7          				OID_PKCS, 7
106#define OID_PKCS_7_LENGTH   				OID_PKCS_LENGTH +1
107#define OID_PKCS_8          				OID_PKCS, 8
108#define OID_PKCS_9          				OID_PKCS, 9
109#define OID_PKCS_9_LENGTH   				OID_PKCS_LENGTH +1
110#define OID_PKCS_10         				OID_PKCS, 10
111#define OID_PKCS_11          				OID_PKCS, 11
112#define OID_PKCS_11_LENGTH   				OID_PKCS_LENGTH +1
113#define OID_PKCS_12          				OID_PKCS, 12
114#define OID_PKCS_12_LENGTH   				OID_PKCS_LENGTH +1
115
116/* ANSI X9.42 */
117#define OID_ANSI_X9_42						OID_US, 206, 62, 2
118#define OID_ANSI_X9_42_LEN					OID_US_LENGTH + 3
119#define OID_ANSI_X9_42_SCHEME				OID_ANSI_X9_42, 3
120#define OID_ANSI_X9_42_SCHEME_LEN			OID_ANSI_X9_42_LEN + 1
121#define OID_ANSI_X9_42_NAMED_SCHEME			OID_ANSI_X9_42, 4
122#define OID_ANSI_X9_42_NAMED_SCHEME_LEN		OID_ANSI_X9_42_LEN + 1
123
124/* ANSI X9.62 (1 2 840 10045) */
125#define OID_ANSI_X9_62						0x2A, 0x86, 0x48, 0xCE, 0x3D
126#define OID_ANSI_X9_62_LEN					5
127#define OID_ANSI_X9_62_FIELD_TYPE			OID_ANSI_X9_62, 1
128#define OID_ANSI_X9_62_PUBKEY_TYPE			OID_ANSI_X9_62, 2
129#define OID_ANSI_X9_62_ELL_CURVE			OID_ANSI_X9_62, 3
130#define OID_ANSI_X9_62_ELL_CURVE_LEN		OID_ANSI_X9_62_LEN+1
131#define OID_ANSI_X9_62_C_TWO_CURVE			OID_ANSI_X9_62_ELL_CURVE, 0
132#define OID_ANSI_X9_62_PRIME_CURVE			OID_ANSI_X9_62_ELL_CURVE, 1
133#define OID_ANSI_X9_62_SIG_TYPE				OID_ANSI_X9_62, 4
134#define OID_ANSI_X9_62_SIG_TYPE_LEN			OID_ANSI_X9_62_LEN+1
135
136/* PKIX */
137#define OID_PKIX							OID_DOD, 1, 5, 5, 7
138#define OID_PKIX_LENGTH						6
139#define OID_PE								OID_PKIX, 1
140#define OID_PE_LENGTH						OID_PKIX_LENGTH + 1
141#define OID_QT								OID_PKIX, 2
142#define OID_QT_LENGTH						OID_PKIX_LENGTH + 1
143#define OID_KP								OID_PKIX, 3
144#define OID_KP_LENGTH						OID_PKIX_LENGTH + 1
145#define OID_OTHER_NAME						OID_PKIX, 8
146#define OID_OTHER_NAME_LENGTH				OID_PKIX_LENGTH + 1
147#define OID_PDA								OID_PKIX, 9
148#define OID_PDA_LENGTH						OID_PKIX_LENGTH + 1
149#define OID_QCS								OID_PKIX, 11
150#define OID_QCS_LENGTH						OID_PKIX_LENGTH + 1
151#define OID_AD								OID_PKIX, 48
152#define OID_AD_LENGTH						OID_PKIX_LENGTH + 1
153#define OID_AD_OCSP							OID_AD, 1
154#define OID_AD_OCSP_LENGTH					OID_AD_LENGTH + 1
155
156/* ETSI */
157#define OID_ETSI							0x04, 0x00
158#define OID_ETSI_LENGTH						2
159#define OID_ETSI_QCS						0x04, 0x00, 0x8E, 0x46, 0x01
160#define OID_ETSI_QCS_LENGTH					5
161
162#define OID_OIW_SECSIG        				OID_OIW, 3
163#define OID_OIW_LENGTH       				2
164#define OID_OIW_SECSIG_LENGTH 				OID_OIW_LENGTH +1
165
166#define OID_OIW_ALGORITHM    				OID_OIW_SECSIG, 2
167#define OID_OIW_ALGORITHM_LENGTH   			OID_OIW_SECSIG_LENGTH +1
168
169/* NIST defined digest algorithm arc (2, 16, 840, 1, 101, 3, 4, 2) */
170#define OID_NIST_HASHALG					0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02
171#define OID_NIST_HASHALG_LENGTH				8
172
173/* Kerberos PKINIT */
174#define OID_KERBv5							0x2b, 6, 1, 5, 2
175#define OID_KERBv5_LEN						5
176#define OID_KERBv5_PKINIT					OID_KERBv5, 3
177#define OID_KERBv5_PKINIT_LEN				OID_KERBv5_LEN + 1
178
179/* Certicom (1 3 132) */
180#define OID_CERTICOM						0x2B, 0x81, 0x04
181#define OID_CERTICOM_LEN					3
182#define OID_CERTICOM_ELL_CURVE				OID_CERTICOM, 0
183#define OID_CERTICOM_ELL_CURVE_LEN			OID_CERTICOM_LEN+1
184
185/*
186 * Apple-specific OID bases
187 */
188
189/*
190 * apple OBJECT IDENTIFIER ::=
191 * 	{ iso(1) member-body(2) US(840) 113635 }
192 *
193 * BER = 06 06 2A 86 48 86 F7 63
194 */
195#define APPLE_OID				OID_US, 0x86, 0xf7, 0x63
196#define APPLE_OID_LENGTH		OID_US_LENGTH + 3
197
198/* appleDataSecurity OBJECT IDENTIFIER ::=
199 *		{ apple 100 }
200 *      { 1 2 840 113635 100 }
201 *
202 * BER = 06 07 2A 86 48 86 F7 63 64
203 */
204#define APPLE_ADS_OID			APPLE_OID, 0x64
205#define APPLE_ADS_OID_LENGTH	APPLE_OID_LENGTH + 1
206
207/*
208 * appleTrustPolicy OBJECT IDENTIFIER ::=
209 *		{ appleDataSecurity 1 }
210 *      { 1 2 840 113635 100 1 }
211 *
212 * BER = 06 08 2A 86 48 86 F7 63 64 01
213 */
214#define APPLE_TP_OID			APPLE_ADS_OID, 1
215#define APPLE_TP_OID_LENGTH		APPLE_ADS_OID_LENGTH + 1
216
217/*
218 *	appleSecurityAlgorithm OBJECT IDENTIFIER ::=
219 *		{ appleDataSecurity 2 }
220 *      { 1 2 840 113635 100 2 }
221 *
222 * BER = 06 08 2A 86 48 86 F7 63 64 02
223 */
224#define APPLE_ALG_OID			APPLE_ADS_OID, 2
225#define APPLE_ALG_OID_LENGTH	APPLE_ADS_OID_LENGTH + 1
226
227/*
228 * appleDotMacCertificate OBJECT IDENTIFIER ::=
229 *		{ appleDataSecurity 3 }
230 *      { 1 2 840 113635 100 3 }
231 */
232#define APPLE_DOTMAC_CERT_OID			APPLE_ADS_OID, 3
233#define APPLE_DOTMAC_CERT_OID_LENGTH	APPLE_ADS_OID_LENGTH + 1
234
235/*
236 * Basis of Policy OIDs for .mac TP requests
237 *
238 * dotMacCertificateRequest OBJECT IDENTIFIER ::=
239 *		{ appleDotMacCertificate 1 }
240 *      { 1 2 840 113635 100 3 1 }
241 */
242#define APPLE_DOTMAC_CERT_REQ_OID			APPLE_DOTMAC_CERT_OID, 1
243#define APPLE_DOTMAC_CERT_REQ_OID_LENGTH	APPLE_DOTMAC_CERT_OID_LENGTH + 1
244
245/*
246 * Basis of .mac Certificate Extensions
247 *
248 * dotMacCertificateExtension OBJECT IDENTIFIER ::=
249 *		{ appleDotMacCertificate 2 }
250 *      { 1 2 840 113635 100 3 2 }
251 */
252#define APPLE_DOTMAC_CERT_EXTEN_OID			APPLE_DOTMAC_CERT_OID, 2
253#define APPLE_DOTMAC_CERT_EXTEN_OID_LENGTH  APPLE_DOTMAC_CERT_OID_LENGTH + 1
254
255/*
256 * Basis of .mac Certificate request OID/value identifiers
257 *
258 * dotMacCertificateRequestValues OBJECT IDENTIFIER ::=
259 *		{ appleDotMacCertificate 3 }
260 *      { 1 2 840 113635 100 3 3 }
261 */
262#define APPLE_DOTMAC_CERT_REQ_VALUE_OID			APPLE_DOTMAC_CERT_OID, 3
263#define APPLE_DOTMAC_CERT_REQ_VALUE_OID_LENGTH  APPLE_DOTMAC_CERT_OID_LENGTH + 1
264
265/*
266 * Basis of Apple-specific extended key usages
267 *
268 * appleExtendedKeyUsage OBJECT IDENTIFIER ::=
269 *		{ appleDataSecurity 4 }
270 *      { 1 2 840 113635 100 4 }
271 */
272#define APPLE_EKU_OID					APPLE_ADS_OID, 4
273#define APPLE_EKU_OID_LENGTH			APPLE_ADS_OID_LENGTH + 1
274
275/*
276 * Basis of Apple Code Signing extended key usages
277 * appleCodeSigning  OBJECT IDENTIFIER ::=
278 *		{ appleExtendedKeyUsage 1 }
279 *      { 1 2 840 113635 100 4 1 }
280 */
281#define APPLE_EKU_CODE_SIGNING			APPLE_EKU_OID, 1
282#define APPLE_EKU_CODE_SIGNING_LENGTH	APPLE_EKU_OID_LENGTH + 1
283
284/*
285 * Basis of Apple-specific Certificate Policy identifiers
286 * appleCertificatePolicies OBJECT IDENTIFIER ::=
287 *		{ appleDataSecurity 5 }
288 *		{ 1 2 840 113635 100 5 }
289 */
290#define APPLE_CERT_POLICIES				APPLE_ADS_OID, 5
291#define APPLE_CERT_POLICIES_LENGTH		APPLE_ADS_OID_LENGTH + 1
292
293/*
294 * Basis of Apple-specific certificate extensions
295 * appleCertificateExtensions OBJECT IDENTIFIER ::=
296 *		{ appleDataSecurity 6 }
297 *		{ 1 2 840 113635 100 6 }
298 */
299#define APPLE_EXTENSION_OID				APPLE_ADS_OID, 6
300#define APPLE_EXTENSION_OID_LENGTH		APPLE_ADS_OID_LENGTH + 1
301
302/*
303 * Basis of Apple-specific Code Signing certificate extensions
304 * appleCertificateExtensionCodeSigning OBJECT IDENTIFIER ::=
305 *		{ appleCertificateExtensions 1 }
306 *		{ 1 2 840 113635 100 6 1 }
307 */
308#define APPLE_EXTENSION_CODE_SIGNING		APPLE_EXTENSION_OID, 1
309#define APPLE_EXTENSION_CODE_SIGNING_LENGTH	APPLE_EXTENSION_OID_LENGTH + 1
310
311/*
312 * Netscape OIDs.
313 */
314#define NETSCAPE_BASE_OID		0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x42
315#define NETSCAPE_BASE_OID_LEN   7
316
317/*
318 * Netscape cert extension.
319 *
320 *  netscape-cert-extension OBJECT IDENTIFIER ::=
321 * 		{ 2 16 840 1 113730 1 }
322 *
323 *	BER = 06 08 60 86 48 01 86 F8 42 01
324 */
325#define NETSCAPE_CERT_EXTEN			NETSCAPE_BASE_OID, 0x01
326#define NETSCAPE_CERT_EXTEN_LENGTH	NETSCAPE_BASE_OID_LEN + 1
327
328#define NETSCAPE_CERT_POLICY		NETSCAPE_BASE_OID, 0x04
329#define NETSCAPE_CERT_POLICY_LENGTH	NETSCAPE_BASE_OID_LEN + 1
330
331/*
332 * Domain Component OID
333 */
334#define OID_ITU_RFCDATA_2342 OID_ITU_RFCDATA, 0x49, 0x86
335#define OID_ITU_RFCDATA_2342_LENGTH OID_ITU_RFCDATA_MEMBER_LENGTH + 2
336
337#define OID_ITU_RFCDATA_2342_UCL OID_ITU_RFCDATA_2342, 0x49, 0x1F, 0x12, 0x8C
338#define OID_ITU_RFCDATA_2342_UCL_LENGTH OID_ITU_RFCDATA_2342_LENGTH + 4
339
340#define OID_ITU_RFCDATA_2342_UCL_DIRECTORYPILOT 	OID_ITU_RFCDATA_2342_UCL, 0xE4
341#define OID_ITU_RFCDATA_2342_UCL_DIRECTORYPILOT_LENGTH OID_ITU_RFCDATA_2342_UCL_LENGTH + 1
342
343#define OID_ITU_RFCDATA_2342_UCL_DIRECTORYPILOT_ATTRIBUTES OID_ITU_RFCDATA_2342_UCL_DIRECTORYPILOT, 0x81
344#define OID_ITU_RFCDATA_2342_UCL_DIRECTORYPILOT_ATTRIBUTES_LENGTH OID_ITU_RFCDATA_2342_UCL_DIRECTORYPILOT_LENGTH + 1
345
346#define OID_ITU_RFCDATA_2342_UCL_DIRECTORYPILOT_ATTRIBUTES_DOMAINCOMPONENT OID_ITU_RFCDATA_2342_UCL_DIRECTORYPILOT_ATTRIBUTES, 0x99
347#define OID_ITU_RFCDATA_2342_UCL_DIRECTORYPILOT_ATTRIBUTES_DOMAINCOMPONENT_LENGTH OID_ITU_RFCDATA_2342_UCL_DIRECTORYPILOT_ATTRIBUTES_LENGTH + 1
348
349#define OID_ITU_RFCDATA_2342_UCL_DIRECTORYPILOT_ATTRIBUTES_USERID OID_ITU_RFCDATA_2342_UCL_DIRECTORYPILOT_ATTRIBUTES, 0x81
350#define OID_ITU_RFCDATA_2342_UCL_DIRECTORYPILOT_ATTRIBUTES_USERID_LENGTH OID_ITU_RFCDATA_2342_UCL_DIRECTORYPILOT_ATTRIBUTES_LENGTH + 1
351
352#ifdef __cplusplus
353}
354#endif
355
356#endif /* _OIDSBASE_H_ */
357