1 /* $OpenBSD: objects.h,v 1.12 2017/01/21 04:53:22 jsing Exp $ */
2 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3  * All rights reserved.
4  *
5  * This package is an SSL implementation written
6  * by Eric Young (eay@cryptsoft.com).
7  * The implementation was written so as to conform with Netscapes SSL.
8  *
9  * This library is free for commercial and non-commercial use as core.stdc.config.c_long as
10  * the following conditions are aheared to.  The following conditions
11  * apply to all code found in this distribution, be it the RC4, RSA,
12  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
13  * included with this distribution is covered by the same copyright terms
14  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15  *
16  * Copyright remains Eric Young's, and as such any Copyright notices in
17  * the code are not to be removed.
18  * If this package is used in a product, Eric Young should be given attribution
19  * as the author of the parts of the library used.
20  * This can be in the form of a textual message at program startup or
21  * in documentation (online or textual) provided with the package.
22  *
23  * Redistribution and use in source and binary forms, with or without
24  * modification, are permitted provided that the following conditions
25  * are met:
26  * 1. Redistributions of source code must retain the copyright
27  *    notice, this list of conditions and the following disclaimer.
28  * 2. Redistributions in binary form must reproduce the above copyright
29  *    notice, this list of conditions and the following disclaimer in the
30  *    documentation and/or other materials provided with the distribution.
31  * 3. All advertising materials mentioning features or use of this software
32  *    must display the following acknowledgement:
33  *    "This product includes cryptographic software written by
34  *     Eric Young (eay@cryptsoft.com)"
35  *    The word 'cryptographic' can be left out if the rouines from the library
36  *    being used are not cryptographic related :-).
37  * 4. If you include any Windows specific code (or a derivative thereof) from
38  *    the apps directory (application code) you must include an acknowledgement:
39  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40  *
41  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51  * SUCH DAMAGE.
52  *
53  * The licence and distribution terms for any publically available version or
54  * derivative of this code cannot be changed.  i.e. this code cannot simply be
55  * copied and put under another distribution licence
56  * [including the GNU Public Licence.]
57  */
58 module libressl_d.openssl.objects;
59 
60 
61 private static import core.stdc.config;
62 public import libressl_d.openssl.asn1;
63 public import libressl_d.openssl.bio;
64 
65 version = USE_OBJ_MAC;
66 
67 version (USE_OBJ_MAC) {
68 	public import libressl_d.openssl.obj_mac;
69 } else {
70 	enum SN_undef = "UNDEF";
71 	enum LN_undef = "undefined";
72 	enum NID_undef = 0;
73 	enum OBJ_undef = 0L;
74 
75 	enum SN_Algorithm = "Algorithm";
76 	enum LN_algorithm = "algorithm";
77 	enum NID_algorithm = 38;
78 	//#define OBJ_algorithm 1L, 3L, 14L, 3L, 2L
79 
80 	enum LN_rsadsi = "rsadsi";
81 	enum NID_rsadsi = 1;
82 	//#define OBJ_rsadsi 1L, 2L, 840L, 113549L
83 
84 	enum LN_pkcs = "pkcs";
85 	enum NID_pkcs = 2;
86 	//#define OBJ_pkcs .OBJ_rsadsi, 1L
87 
88 	enum SN_md2 = "MD2";
89 	enum LN_md2 = "md2";
90 	enum NID_md2 = 3;
91 	//#define OBJ_md2 .OBJ_rsadsi, 2L, 2L
92 
93 	enum SN_md5 = "MD5";
94 	enum LN_md5 = "md5";
95 	enum NID_md5 = 4;
96 	//#define OBJ_md5 .OBJ_rsadsi, 2L, 5L
97 
98 	enum SN_rc4 = "RC4";
99 	enum LN_rc4 = "rc4";
100 	enum NID_rc4 = 5;
101 	//#define OBJ_rc4 .OBJ_rsadsi, 3L, 4L
102 
103 	enum LN_rsaEncryption = "rsaEncryption";
104 	enum NID_rsaEncryption = 6;
105 	//#define OBJ_rsaEncryption .OBJ_pkcs, 1L, 1L
106 
107 	enum SN_md2WithRSAEncryption = "RSA-MD2";
108 	enum LN_md2WithRSAEncryption = "md2WithRSAEncryption";
109 	enum NID_md2WithRSAEncryption = 7;
110 	//#define OBJ_md2WithRSAEncryption .OBJ_pkcs, 1L, 2L
111 
112 	enum SN_md5WithRSAEncryption = "RSA-MD5";
113 	enum LN_md5WithRSAEncryption = "md5WithRSAEncryption";
114 	enum NID_md5WithRSAEncryption = 8;
115 	//#define OBJ_md5WithRSAEncryption .OBJ_pkcs, 1L, 4L
116 
117 	enum SN_pbeWithMD2AndDES_CBC = "PBE-MD2-DES";
118 	enum LN_pbeWithMD2AndDES_CBC = "pbeWithMD2AndDES-CBC";
119 	enum NID_pbeWithMD2AndDES_CBC = 9;
120 	//#define OBJ_pbeWithMD2AndDES_CBC .OBJ_pkcs, 5L, 1L
121 
122 	enum SN_pbeWithMD5AndDES_CBC = "PBE-MD5-DES";
123 	enum LN_pbeWithMD5AndDES_CBC = "pbeWithMD5AndDES-CBC";
124 	enum NID_pbeWithMD5AndDES_CBC = 10;
125 	//#define OBJ_pbeWithMD5AndDES_CBC .OBJ_pkcs, 5L, 3L
126 
127 	enum LN_X500 = "X500";
128 	enum NID_X500 = 11;
129 	//#define OBJ_X500 2L, 5L
130 
131 	enum LN_X509 = "X509";
132 	enum NID_X509 = 12;
133 	//#define OBJ_X509 .OBJ_X500, 4L
134 
135 	enum SN_commonName = "CN";
136 	enum LN_commonName = "commonName";
137 	enum NID_commonName = 13;
138 	//#define OBJ_commonName .OBJ_X509, 3L
139 
140 	enum SN_countryName = "C";
141 	enum LN_countryName = "countryName";
142 	enum NID_countryName = 14;
143 	//#define OBJ_countryName .OBJ_X509, 6L
144 
145 	enum SN_localityName = "L";
146 	enum LN_localityName = "localityName";
147 	enum NID_localityName = 15;
148 	//#define OBJ_localityName .OBJ_X509, 7L
149 
150 	/* Postal Address? PA */
151 
152 	/* should be "ST" (rfc1327) but MS uses 'S' */
153 	enum SN_stateOrProvinceName = "ST";
154 	enum LN_stateOrProvinceName = "stateOrProvinceName";
155 	enum NID_stateOrProvinceName = 16;
156 	//#define OBJ_stateOrProvinceName .OBJ_X509, 8L
157 
158 	enum SN_organizationName = "O";
159 	enum LN_organizationName = "organizationName";
160 	enum NID_organizationName = 17;
161 	//#define OBJ_organizationName .OBJ_X509, 10L
162 
163 	enum SN_organizationalUnitName = "OU";
164 	enum LN_organizationalUnitName = "organizationalUnitName";
165 	enum NID_organizationalUnitName = 18;
166 	//#define OBJ_organizationalUnitName .OBJ_X509, 11L
167 
168 	enum SN_rsa = "RSA";
169 	enum LN_rsa = "rsa";
170 	enum NID_rsa = 19;
171 	//#define OBJ_rsa .OBJ_X500, 8L, 1L, 1L
172 
173 	enum LN_pkcs7 = "pkcs7";
174 	enum NID_pkcs7 = 20;
175 	//#define OBJ_pkcs7 .OBJ_pkcs, 7L
176 
177 	enum LN_pkcs7_data = "pkcs7-data";
178 	enum NID_pkcs7_data = 21;
179 	//#define OBJ_pkcs7_data .OBJ_pkcs7, 1L
180 
181 	enum LN_pkcs7_signed = "pkcs7-signedData";
182 	enum NID_pkcs7_signed = 22;
183 	//#define OBJ_pkcs7_signed .OBJ_pkcs7, 2L
184 
185 	enum LN_pkcs7_enveloped = "pkcs7-envelopedData";
186 	enum NID_pkcs7_enveloped = 23;
187 	//#define OBJ_pkcs7_enveloped .OBJ_pkcs7, 3L
188 
189 	enum LN_pkcs7_signedAndEnveloped = "pkcs7-signedAndEnvelopedData";
190 	enum NID_pkcs7_signedAndEnveloped = 24;
191 	//#define OBJ_pkcs7_signedAndEnveloped .OBJ_pkcs7, 4L
192 
193 	enum LN_pkcs7_digest = "pkcs7-digestData";
194 	enum NID_pkcs7_digest = 25;
195 	//#define OBJ_pkcs7_digest .OBJ_pkcs7, 5L
196 
197 	enum LN_pkcs7_encrypted = "pkcs7-encryptedData";
198 	enum NID_pkcs7_encrypted = 26;
199 	//#define OBJ_pkcs7_encrypted .OBJ_pkcs7, 6L
200 
201 	enum LN_pkcs3 = "pkcs3";
202 	enum NID_pkcs3 = 27;
203 	//#define OBJ_pkcs3 .OBJ_pkcs, 3L
204 
205 	enum LN_dhKeyAgreement = "dhKeyAgreement";
206 	enum NID_dhKeyAgreement = 28;
207 	//#define OBJ_dhKeyAgreement .OBJ_pkcs3, 1L
208 
209 	enum SN_des_ecb = "DES-ECB";
210 	enum LN_des_ecb = "des-ecb";
211 	enum NID_des_ecb = 29;
212 	//#define OBJ_des_ecb .OBJ_algorithm, 6L
213 
214 	enum SN_des_cfb64 = "DES-CFB";
215 	enum LN_des_cfb64 = "des-cfb";
216 	enum NID_des_cfb64 = 30;
217 	/* IV + num */
218 	//#define OBJ_des_cfb64 .OBJ_algorithm, 9L
219 
220 	enum SN_des_cbc = "DES-CBC";
221 	enum LN_des_cbc = "des-cbc";
222 	enum NID_des_cbc = 31;
223 	/* IV */
224 	//#define OBJ_des_cbc .OBJ_algorithm, 7L
225 
226 	enum SN_des_ede = "DES-EDE";
227 	enum LN_des_ede = "des-ede";
228 	enum NID_des_ede = 32;
229 	/* ?? */
230 	//#define OBJ_des_ede .OBJ_algorithm, 17L
231 
232 	enum SN_des_ede3 = "DES-EDE3";
233 	enum LN_des_ede3 = "des-ede3";
234 	enum NID_des_ede3 = 33;
235 
236 	enum SN_idea_cbc = "IDEA-CBC";
237 	enum LN_idea_cbc = "idea-cbc";
238 	enum NID_idea_cbc = 34;
239 	//#define OBJ_idea_cbc 1L, 3L, 6L, 1L, 4L, 1L, 188L, 7L, 1L, 1L, 2L
240 
241 	enum SN_idea_cfb64 = "IDEA-CFB";
242 	enum LN_idea_cfb64 = "idea-cfb";
243 	enum NID_idea_cfb64 = 35;
244 
245 	enum SN_idea_ecb = "IDEA-ECB";
246 	enum LN_idea_ecb = "idea-ecb";
247 	enum NID_idea_ecb = 36;
248 
249 	enum SN_rc2_cbc = "RC2-CBC";
250 	enum LN_rc2_cbc = "rc2-cbc";
251 	enum NID_rc2_cbc = 37;
252 	//#define OBJ_rc2_cbc .OBJ_rsadsi, 3L, 2L
253 
254 	enum SN_rc2_ecb = "RC2-ECB";
255 	enum LN_rc2_ecb = "rc2-ecb";
256 	enum NID_rc2_ecb = 38;
257 
258 	enum SN_rc2_cfb64 = "RC2-CFB";
259 	enum LN_rc2_cfb64 = "rc2-cfb";
260 	enum NID_rc2_cfb64 = 39;
261 
262 	enum SN_rc2_ofb64 = "RC2-OFB";
263 	enum LN_rc2_ofb64 = "rc2-ofb";
264 	enum NID_rc2_ofb64 = 40;
265 
266 	enum SN_sha = "SHA";
267 	enum LN_sha = "sha";
268 	enum NID_sha = 41;
269 	//#define OBJ_sha .OBJ_algorithm, 18L
270 
271 	enum SN_shaWithRSAEncryption = "RSA-SHA";
272 	enum LN_shaWithRSAEncryption = "shaWithRSAEncryption";
273 	enum NID_shaWithRSAEncryption = 42;
274 	//#define OBJ_shaWithRSAEncryption .OBJ_algorithm, 15L
275 
276 	enum SN_des_ede_cbc = "DES-EDE-CBC";
277 	enum LN_des_ede_cbc = "des-ede-cbc";
278 	enum NID_des_ede_cbc = 43;
279 
280 	enum SN_des_ede3_cbc = "DES-EDE3-CBC";
281 	enum LN_des_ede3_cbc = "des-ede3-cbc";
282 	enum NID_des_ede3_cbc = 44;
283 	//#define OBJ_des_ede3_cbc .OBJ_rsadsi, 3L, 7L
284 
285 	enum SN_des_ofb64 = "DES-OFB";
286 	enum LN_des_ofb64 = "des-ofb";
287 	enum NID_des_ofb64 = 45;
288 	//#define OBJ_des_ofb64 .OBJ_algorithm, 8L
289 
290 	enum SN_idea_ofb64 = "IDEA-OFB";
291 	enum LN_idea_ofb64 = "idea-ofb";
292 	enum NID_idea_ofb64 = 46;
293 
294 	enum LN_pkcs9 = "pkcs9";
295 	enum NID_pkcs9 = 47;
296 	//#define OBJ_pkcs9 .OBJ_pkcs, 9L
297 
298 	enum SN_pkcs9_emailAddress = "Email";
299 	enum LN_pkcs9_emailAddress = "emailAddress";
300 	enum NID_pkcs9_emailAddress = 48;
301 	//#define OBJ_pkcs9_emailAddress .OBJ_pkcs9, 1L
302 
303 	enum LN_pkcs9_unstructuredName = "unstructuredName";
304 	enum NID_pkcs9_unstructuredName = 49;
305 	//#define OBJ_pkcs9_unstructuredName .OBJ_pkcs9, 2L
306 
307 	enum LN_pkcs9_contentType = "contentType";
308 	enum NID_pkcs9_contentType = 50;
309 	//#define OBJ_pkcs9_contentType .OBJ_pkcs9, 3L
310 
311 	enum LN_pkcs9_messageDigest = "messageDigest";
312 	enum NID_pkcs9_messageDigest = 51;
313 	//#define OBJ_pkcs9_messageDigest .OBJ_pkcs9, 4L
314 
315 	enum LN_pkcs9_signingTime = "signingTime";
316 	enum NID_pkcs9_signingTime = 52;
317 	//#define OBJ_pkcs9_signingTime .OBJ_pkcs9, 5L
318 
319 	enum LN_pkcs9_countersignature = "countersignature";
320 	enum NID_pkcs9_countersignature = 53;
321 	//#define OBJ_pkcs9_countersignature .OBJ_pkcs9, 6L
322 
323 	enum LN_pkcs9_challengePassword = "challengePassword";
324 	enum NID_pkcs9_challengePassword = 54;
325 	//#define OBJ_pkcs9_challengePassword .OBJ_pkcs9, 7L
326 
327 	enum LN_pkcs9_unstructuredAddress = "unstructuredAddress";
328 	enum NID_pkcs9_unstructuredAddress = 55;
329 	//#define OBJ_pkcs9_unstructuredAddress .OBJ_pkcs9, 8L
330 
331 	enum LN_pkcs9_extCertAttributes = "extendedCertificateAttributes";
332 	enum NID_pkcs9_extCertAttributes = 56;
333 	//#define OBJ_pkcs9_extCertAttributes .OBJ_pkcs9, 9L
334 
335 	enum SN_netscape = "Netscape";
336 	enum LN_netscape = "Netscape Communications Corp.";
337 	enum NID_netscape = 57;
338 	//#define OBJ_netscape 2L, 16L, 840L, 1L, 113730L
339 
340 	enum SN_netscape_cert_extension = "nsCertExt";
341 	enum LN_netscape_cert_extension = "Netscape Certificate Extension";
342 	enum NID_netscape_cert_extension = 58;
343 	//#define OBJ_netscape_cert_extension .OBJ_netscape, 1L
344 
345 	enum SN_netscape_data_type = "nsDataType";
346 	enum LN_netscape_data_type = "Netscape Data Type";
347 	enum NID_netscape_data_type = 59;
348 	//#define OBJ_netscape_data_type .OBJ_netscape, 2L
349 
350 	enum SN_des_ede_cfb64 = "DES-EDE-CFB";
351 	enum LN_des_ede_cfb64 = "des-ede-cfb";
352 	enum NID_des_ede_cfb64 = 60;
353 
354 	enum SN_des_ede3_cfb64 = "DES-EDE3-CFB";
355 	enum LN_des_ede3_cfb64 = "des-ede3-cfb";
356 	enum NID_des_ede3_cfb64 = 61;
357 
358 	enum SN_des_ede_ofb64 = "DES-EDE-OFB";
359 	enum LN_des_ede_ofb64 = "des-ede-ofb";
360 	enum NID_des_ede_ofb64 = 62;
361 
362 	enum SN_des_ede3_ofb64 = "DES-EDE3-OFB";
363 	enum LN_des_ede3_ofb64 = "des-ede3-ofb";
364 	enum NID_des_ede3_ofb64 = 63;
365 
366 	/* I'm not sure about the object ID */
367 	enum SN_sha1 = "SHA1";
368 	enum LN_sha1 = "sha1";
369 	enum NID_sha1 = 64;
370 	//#define OBJ_sha1 .OBJ_algorithm, 26L
371 	/* 28 Jun 1996 - eay */
372 	/* #define OBJ_sha1			1L,3L,14L,2L,26L,05L <- wrong */
373 
374 	enum SN_sha1WithRSAEncryption = "RSA-SHA1";
375 	enum LN_sha1WithRSAEncryption = "sha1WithRSAEncryption";
376 	enum NID_sha1WithRSAEncryption = 65;
377 	//#define OBJ_sha1WithRSAEncryption .OBJ_pkcs, 1L, 5L
378 
379 	enum SN_dsaWithSHA = "DSA-SHA";
380 	enum LN_dsaWithSHA = "dsaWithSHA";
381 	enum NID_dsaWithSHA = 66;
382 	//#define OBJ_dsaWithSHA .OBJ_algorithm, 13L
383 
384 	enum SN_dsa_2 = "DSA-old";
385 	enum LN_dsa_2 = "dsaEncryption-old";
386 	enum NID_dsa_2 = 67;
387 	//#define OBJ_dsa_2 .OBJ_algorithm, 12L
388 
389 	/* proposed by microsoft to RSA */
390 	enum SN_pbeWithSHA1AndRC2_CBC = "PBE-SHA1-RC2-64";
391 	enum LN_pbeWithSHA1AndRC2_CBC = "pbeWithSHA1AndRC2-CBC";
392 	enum NID_pbeWithSHA1AndRC2_CBC = 68;
393 	//#define OBJ_pbeWithSHA1AndRC2_CBC .OBJ_pkcs, 5L, 11L
394 
395 	/*
396 	 * proposed by microsoft to RSA as pbeWithSHA1AndRC4: it is now
397 	 * defined explicitly in PKCS#5 v2.0 as id-PBKDF2 which is something
398 	 * completely different.
399 	 */
400 	enum LN_id_pbkdf2 = "PBKDF2";
401 	enum NID_id_pbkdf2 = 69;
402 	//#define OBJ_id_pbkdf2 .OBJ_pkcs, 5L, 12L
403 
404 	enum SN_dsaWithSHA1_2 = "DSA-SHA1-old";
405 	enum LN_dsaWithSHA1_2 = "dsaWithSHA1-old";
406 	enum NID_dsaWithSHA1_2 = 70;
407 	/* Got this one from 'sdn706r20.pdf' which is actually an NSA document :-) */
408 	//#define OBJ_dsaWithSHA1_2 .OBJ_algorithm, 27L
409 
410 	enum SN_netscape_cert_type = "nsCertType";
411 	enum LN_netscape_cert_type = "Netscape Cert Type";
412 	enum NID_netscape_cert_type = 71;
413 	//#define OBJ_netscape_cert_type .OBJ_netscape_cert_extension, 1L
414 
415 	enum SN_netscape_base_url = "nsBaseUrl";
416 	enum LN_netscape_base_url = "Netscape Base Url";
417 	enum NID_netscape_base_url = 72;
418 	//#define OBJ_netscape_base_url .OBJ_netscape_cert_extension, 2L
419 
420 	enum SN_netscape_revocation_url = "nsRevocationUrl";
421 	enum LN_netscape_revocation_url = "Netscape Revocation Url";
422 	enum NID_netscape_revocation_url = 73;
423 	//#define OBJ_netscape_revocation_url .OBJ_netscape_cert_extension, 3L
424 
425 	enum SN_netscape_ca_revocation_url = "nsCaRevocationUrl";
426 	enum LN_netscape_ca_revocation_url = "Netscape CA Revocation Url";
427 	enum NID_netscape_ca_revocation_url = 74;
428 	//#define OBJ_netscape_ca_revocation_url .OBJ_netscape_cert_extension, 4L
429 
430 	enum SN_netscape_renewal_url = "nsRenewalUrl";
431 	enum LN_netscape_renewal_url = "Netscape Renewal Url";
432 	enum NID_netscape_renewal_url = 75;
433 	//#define OBJ_netscape_renewal_url .OBJ_netscape_cert_extension, 7L
434 
435 	enum SN_netscape_ca_policy_url = "nsCaPolicyUrl";
436 	enum LN_netscape_ca_policy_url = "Netscape CA Policy Url";
437 	enum NID_netscape_ca_policy_url = 76;
438 	//#define OBJ_netscape_ca_policy_url .OBJ_netscape_cert_extension, 8L
439 
440 	enum SN_netscape_ssl_server_name = "nsSslServerName";
441 	enum LN_netscape_ssl_server_name = "Netscape SSL Server Name";
442 	enum NID_netscape_ssl_server_name = 77;
443 	//#define OBJ_netscape_ssl_server_name .OBJ_netscape_cert_extension, 12L
444 
445 	enum SN_netscape_comment = "nsComment";
446 	enum LN_netscape_comment = "Netscape Comment";
447 	enum NID_netscape_comment = 78;
448 	//#define OBJ_netscape_comment .OBJ_netscape_cert_extension, 13L
449 
450 	enum SN_netscape_cert_sequence = "nsCertSequence";
451 	enum LN_netscape_cert_sequence = "Netscape Certificate Sequence";
452 	enum NID_netscape_cert_sequence = 79;
453 	//#define OBJ_netscape_cert_sequence .OBJ_netscape_data_type, 5L
454 
455 	enum SN_desx_cbc = "DESX-CBC";
456 	enum LN_desx_cbc = "desx-cbc";
457 	enum NID_desx_cbc = 80;
458 
459 	enum SN_id_ce = "id-ce";
460 	enum NID_id_ce = 81;
461 	//#define OBJ_id_ce 2L, 5L, 29L
462 
463 	enum SN_subject_key_identifier = "subjectKeyIdentifier";
464 	enum LN_subject_key_identifier = "X509v3 Subject Key Identifier";
465 	enum NID_subject_key_identifier = 82;
466 	//#define OBJ_subject_key_identifier .OBJ_id_ce, 14L
467 
468 	enum SN_key_usage = "keyUsage";
469 	enum LN_key_usage = "X509v3 Key Usage";
470 	enum NID_key_usage = 83;
471 	//#define OBJ_key_usage .OBJ_id_ce, 15L
472 
473 	enum SN_private_key_usage_period = "privateKeyUsagePeriod";
474 	enum LN_private_key_usage_period = "X509v3 Private Key Usage Period";
475 	enum NID_private_key_usage_period = 84;
476 	//#define OBJ_private_key_usage_period .OBJ_id_ce, 16L
477 
478 	enum SN_subject_alt_name = "subjectAltName";
479 	enum LN_subject_alt_name = "X509v3 Subject Alternative Name";
480 	enum NID_subject_alt_name = 85;
481 	//#define OBJ_subject_alt_name .OBJ_id_ce, 17L
482 
483 	enum SN_issuer_alt_name = "issuerAltName";
484 	enum LN_issuer_alt_name = "X509v3 Issuer Alternative Name";
485 	enum NID_issuer_alt_name = 86;
486 	//#define OBJ_issuer_alt_name .OBJ_id_ce, 18L
487 
488 	enum SN_basic_constraints = "basicConstraints";
489 	enum LN_basic_constraints = "X509v3 Basic Constraints";
490 	enum NID_basic_constraints = 87;
491 	//#define OBJ_basic_constraints .OBJ_id_ce, 19L
492 
493 	enum SN_crl_number = "crlNumber";
494 	enum LN_crl_number = "X509v3 CRL Number";
495 	enum NID_crl_number = 88;
496 	//#define OBJ_crl_number .OBJ_id_ce, 20L
497 
498 	enum SN_certificate_policies = "certificatePolicies";
499 	enum LN_certificate_policies = "X509v3 Certificate Policies";
500 	enum NID_certificate_policies = 89;
501 	//#define OBJ_certificate_policies .OBJ_id_ce, 32L
502 
503 	enum SN_authority_key_identifier = "authorityKeyIdentifier";
504 	enum LN_authority_key_identifier = "X509v3 Authority Key Identifier";
505 	enum NID_authority_key_identifier = 90;
506 	//#define OBJ_authority_key_identifier .OBJ_id_ce, 35L
507 
508 	enum SN_bf_cbc = "BF-CBC";
509 	enum LN_bf_cbc = "bf-cbc";
510 	enum NID_bf_cbc = 91;
511 	//#define OBJ_bf_cbc 1L, 3L, 6L, 1L, 4L, 1L, 3029L, 1L, 2L
512 
513 	enum SN_bf_ecb = "BF-ECB";
514 	enum LN_bf_ecb = "bf-ecb";
515 	enum NID_bf_ecb = 92;
516 
517 	enum SN_bf_cfb64 = "BF-CFB";
518 	enum LN_bf_cfb64 = "bf-cfb";
519 	enum NID_bf_cfb64 = 93;
520 
521 	enum SN_bf_ofb64 = "BF-OFB";
522 	enum LN_bf_ofb64 = "bf-ofb";
523 	enum NID_bf_ofb64 = 94;
524 
525 	enum SN_mdc2 = "MDC2";
526 	enum LN_mdc2 = "mdc2";
527 	enum NID_mdc2 = 95;
528 	//#define OBJ_mdc2 2L, 5L, 8L, 3L, 101L
529 	/* An alternative?			1L,3L,14L,3L,2L,19L */
530 
531 	enum SN_mdc2WithRSA = "RSA-MDC2";
532 	enum LN_mdc2WithRSA = "mdc2withRSA";
533 	enum NID_mdc2WithRSA = 96;
534 	//#define OBJ_mdc2WithRSA 2L, 5L, 8L, 3L, 100L
535 
536 	enum SN_rc4_40 = "RC4-40";
537 	enum LN_rc4_40 = "rc4-40";
538 	enum NID_rc4_40 = 97;
539 
540 	enum SN_rc2_40_cbc = "RC2-40-CBC";
541 	enum LN_rc2_40_cbc = "rc2-40-cbc";
542 	enum NID_rc2_40_cbc = 98;
543 
544 	enum SN_givenName = "G";
545 	enum LN_givenName = "givenName";
546 	enum NID_givenName = 99;
547 	//#define OBJ_givenName .OBJ_X509, 42L
548 
549 	enum SN_surname = "S";
550 	enum LN_surname = "surname";
551 	enum NID_surname = 100;
552 	//#define OBJ_surname .OBJ_X509, 4L
553 
554 	enum SN_initials = "I";
555 	enum LN_initials = "initials";
556 	enum NID_initials = 101;
557 	//#define OBJ_initials .OBJ_X509, 43L
558 
559 	enum SN_uniqueIdentifier = "UID";
560 	enum LN_uniqueIdentifier = "uniqueIdentifier";
561 	enum NID_uniqueIdentifier = 102;
562 	//#define OBJ_uniqueIdentifier .OBJ_X509, 45L
563 
564 	enum SN_crl_distribution_points = "crlDistributionPoints";
565 	enum LN_crl_distribution_points = "X509v3 CRL Distribution Points";
566 	enum NID_crl_distribution_points = 103;
567 	//#define OBJ_crl_distribution_points .OBJ_id_ce, 31L
568 
569 	enum SN_md5WithRSA = "RSA-NP-MD5";
570 	enum LN_md5WithRSA = "md5WithRSA";
571 	enum NID_md5WithRSA = 104;
572 	//#define OBJ_md5WithRSA .OBJ_algorithm, 3L
573 
574 	enum SN_serialNumber = "SN";
575 	enum LN_serialNumber = "serialNumber";
576 	enum NID_serialNumber = 105;
577 	//#define OBJ_serialNumber .OBJ_X509, 5L
578 
579 	enum SN_title = "T";
580 	enum LN_title = "title";
581 	enum NID_title = 106;
582 	//#define OBJ_title .OBJ_X509, 12L
583 
584 	enum SN_description = "D";
585 	enum LN_description = "description";
586 	enum NID_description = 107;
587 	//#define OBJ_description .OBJ_X509, 13L
588 
589 	/* CAST5 is CAST-128, I'm just sticking with the documentation */
590 	enum SN_cast5_cbc = "CAST5-CBC";
591 	enum LN_cast5_cbc = "cast5-cbc";
592 	enum NID_cast5_cbc = 108;
593 	//#define OBJ_cast5_cbc 1L, 2L, 840L, 113533L, 7L, 66L, 10L
594 
595 	enum SN_cast5_ecb = "CAST5-ECB";
596 	enum LN_cast5_ecb = "cast5-ecb";
597 	enum NID_cast5_ecb = 109;
598 
599 	enum SN_cast5_cfb64 = "CAST5-CFB";
600 	enum LN_cast5_cfb64 = "cast5-cfb";
601 	enum NID_cast5_cfb64 = 110;
602 
603 	enum SN_cast5_ofb64 = "CAST5-OFB";
604 	enum LN_cast5_ofb64 = "cast5-ofb";
605 	enum NID_cast5_ofb64 = 111;
606 
607 	enum LN_pbeWithMD5AndCast5_CBC = "pbeWithMD5AndCast5CBC";
608 	enum NID_pbeWithMD5AndCast5_CBC = 112;
609 	//#define OBJ_pbeWithMD5AndCast5_CBC 1L, 2L, 840L, 113533L, 7L, 66L, 12L
610 
611 	/*
612 	 * This is one sun will soon be using :-(
613 	 * id-dsa-with-sha1 ID  ::= {
614 	 *   iso(1) member-body(2) us(840) x9-57 (10040) x9cm(4) 3 }
615 	 */
616 	enum SN_dsaWithSHA1 = "DSA-SHA1";
617 	enum LN_dsaWithSHA1 = "dsaWithSHA1";
618 	enum NID_dsaWithSHA1 = 113;
619 	//#define OBJ_dsaWithSHA1 1L, 2L, 840L, 10040L, 4L, 3L
620 
621 	enum NID_md5_sha1 = 114;
622 	enum SN_md5_sha1 = "MD5-SHA1";
623 	enum LN_md5_sha1 = "md5-sha1";
624 
625 	enum SN_sha1WithRSA = "RSA-SHA1-2";
626 	enum LN_sha1WithRSA = "sha1WithRSA";
627 	enum NID_sha1WithRSA = 115;
628 	//#define OBJ_sha1WithRSA .OBJ_algorithm, 29L
629 
630 	enum SN_dsa = "DSA";
631 	enum LN_dsa = "dsaEncryption";
632 	enum NID_dsa = 116;
633 	//#define OBJ_dsa 1L, 2L, 840L, 10040L, 4L, 1L
634 
635 	enum SN_ripemd160 = "RIPEMD160";
636 	enum LN_ripemd160 = "ripemd160";
637 	enum NID_ripemd160 = 117;
638 	//#define OBJ_ripemd160 1L, 3L, 36L, 3L, 2L, 1L
639 
640 	/*
641 	 * The name should actually be rsaSignatureWithripemd160, but I'm going
642 	 * to continue using the convention I'm using with the other ciphers
643 	 */
644 	enum SN_ripemd160WithRSA = "RSA-RIPEMD160";
645 	enum LN_ripemd160WithRSA = "ripemd160WithRSA";
646 	enum NID_ripemd160WithRSA = 119;
647 	//#define OBJ_ripemd160WithRSA 1L, 3L, 36L, 3L, 3L, 1L, 2L
648 
649 	/*
650 	 * Taken from rfc2040
651 	 *  RC5_CBC_Parameters ::= SEQUENCE {
652 	 *     version           INTEGER (v1_0(16)),
653 	 *     rounds            INTEGER (8..127),
654 	 *     blockSizeInBits   INTEGER (64, 128),
655 	 *     iv                OCTET STRING OPTIONAL
656 	 *  }
657 	 */
658 	enum SN_rc5_cbc = "RC5-CBC";
659 	enum LN_rc5_cbc = "rc5-cbc";
660 	enum NID_rc5_cbc = 120;
661 	//#define OBJ_rc5_cbc .OBJ_rsadsi, 3L, 8L
662 
663 	enum SN_rc5_ecb = "RC5-ECB";
664 	enum LN_rc5_ecb = "rc5-ecb";
665 	enum NID_rc5_ecb = 121;
666 
667 	enum SN_rc5_cfb64 = "RC5-CFB";
668 	enum LN_rc5_cfb64 = "rc5-cfb";
669 	enum NID_rc5_cfb64 = 122;
670 
671 	enum SN_rc5_ofb64 = "RC5-OFB";
672 	enum LN_rc5_ofb64 = "rc5-ofb";
673 	enum NID_rc5_ofb64 = 123;
674 
675 	enum SN_rle_compression = "RLE";
676 	enum LN_rle_compression = "run length compression";
677 	enum NID_rle_compression = 124;
678 	//#define OBJ_rle_compression 1L, 1L, 1L, 1L, 666L, 1L
679 
680 	enum SN_zlib_compression = "ZLIB";
681 	enum LN_zlib_compression = "zlib compression";
682 	enum NID_zlib_compression = 125;
683 	//#define OBJ_zlib_compression 1L, 1L, 1L, 1L, 666L, 2L
684 
685 	enum SN_ext_key_usage = "extendedKeyUsage";
686 	enum LN_ext_key_usage = "X509v3 Extended Key Usage";
687 	enum NID_ext_key_usage = 126;
688 	//#define OBJ_ext_key_usage .OBJ_id_ce, 37
689 
690 	enum SN_id_pkix = "PKIX";
691 	enum NID_id_pkix = 127;
692 	//#define OBJ_id_pkix 1L, 3L, 6L, 1L, 5L, 5L, 7L
693 
694 	enum SN_id_kp = "id-kp";
695 	enum NID_id_kp = 128;
696 	//#define OBJ_id_kp .OBJ_id_pkix, 3L
697 
698 	/* PKIX extended key usage OIDs */
699 
700 	enum SN_server_auth = "serverAuth";
701 	enum LN_server_auth = "TLS Web Server Authentication";
702 	enum NID_server_auth = 129;
703 	//#define OBJ_server_auth .OBJ_id_kp, 1L
704 
705 	enum SN_client_auth = "clientAuth";
706 	enum LN_client_auth = "TLS Web Client Authentication";
707 	enum NID_client_auth = 130;
708 	//#define OBJ_client_auth .OBJ_id_kp, 2L
709 
710 	enum SN_code_sign = "codeSigning";
711 	enum LN_code_sign = "Code Signing";
712 	enum NID_code_sign = 131;
713 	//#define OBJ_code_sign .OBJ_id_kp, 3L
714 
715 	enum SN_email_protect = "emailProtection";
716 	enum LN_email_protect = "E-mail Protection";
717 	enum NID_email_protect = 132;
718 	//#define OBJ_email_protect .OBJ_id_kp, 4L
719 
720 	enum SN_time_stamp = "timeStamping";
721 	enum LN_time_stamp = "Time Stamping";
722 	enum NID_time_stamp = 133;
723 	//#define OBJ_time_stamp .OBJ_id_kp, 8L
724 
725 	/* Additional extended key usage OIDs: Microsoft */
726 
727 	enum SN_ms_code_ind = "msCodeInd";
728 	enum LN_ms_code_ind = "Microsoft Individual Code Signing";
729 	enum NID_ms_code_ind = 134;
730 	//#define OBJ_ms_code_ind 1L, 3L, 6L, 1L, 4L, 1L, 311L, 2L, 1L, 21L
731 
732 	enum SN_ms_code_com = "msCodeCom";
733 	enum LN_ms_code_com = "Microsoft Commercial Code Signing";
734 	enum NID_ms_code_com = 135;
735 	//#define OBJ_ms_code_com 1L, 3L, 6L, 1L, 4L, 1L, 311L, 2L, 1L, 22L
736 
737 	enum SN_ms_ctl_sign = "msCTLSign";
738 	enum LN_ms_ctl_sign = "Microsoft Trust List Signing";
739 	enum NID_ms_ctl_sign = 136;
740 	//#define OBJ_ms_ctl_sign 1L, 3L, 6L, 1L, 4L, 1L, 311L, 10L, 3L, 1L
741 
742 	enum SN_ms_sgc = "msSGC";
743 	enum LN_ms_sgc = "Microsoft Server Gated Crypto";
744 	enum NID_ms_sgc = 137;
745 	//#define OBJ_ms_sgc 1L, 3L, 6L, 1L, 4L, 1L, 311L, 10L, 3L, 3L
746 
747 	enum SN_ms_efs = "msEFS";
748 	enum LN_ms_efs = "Microsoft Encrypted File System";
749 	enum NID_ms_efs = 138;
750 	//#define OBJ_ms_efs 1L, 3L, 6L, 1L, 4L, 1L, 311L, 10L, 3L, 4L
751 
752 	/* Additional usage: Netscape */
753 
754 	enum SN_ns_sgc = "nsSGC";
755 	enum LN_ns_sgc = "Netscape Server Gated Crypto";
756 	enum NID_ns_sgc = 139;
757 	//#define OBJ_ns_sgc .OBJ_netscape, 4L, 1L
758 
759 	enum SN_delta_crl = "deltaCRL";
760 	enum LN_delta_crl = "X509v3 Delta CRL Indicator";
761 	enum NID_delta_crl = 140;
762 	//#define OBJ_delta_crl .OBJ_id_ce, 27L
763 
764 	enum SN_crl_reason = "CRLReason";
765 	enum LN_crl_reason = "CRL Reason Code";
766 	enum NID_crl_reason = 141;
767 	//#define OBJ_crl_reason .OBJ_id_ce, 21L
768 
769 	enum SN_invalidity_date = "invalidityDate";
770 	enum LN_invalidity_date = "Invalidity Date";
771 	enum NID_invalidity_date = 142;
772 	//#define OBJ_invalidity_date .OBJ_id_ce, 24L
773 
774 	enum SN_sxnet = "SXNetID";
775 	enum LN_sxnet = "Strong Extranet ID";
776 	enum NID_sxnet = 143;
777 	//#define OBJ_sxnet 1L, 3L, 101L, 1L, 4L, 1L
778 
779 	/* PKCS12 and related OBJECT IDENTIFIERS */
780 
781 	//#define OBJ_pkcs12 .OBJ_pkcs, 12L
782 	//#define OBJ_pkcs12_pbeids .OBJ_pkcs12, 1
783 
784 	enum SN_pbe_WithSHA1And128BitRC4 = "PBE-SHA1-RC4-128";
785 	enum LN_pbe_WithSHA1And128BitRC4 = "pbeWithSHA1And128BitRC4";
786 	enum NID_pbe_WithSHA1And128BitRC4 = 144;
787 	//#define OBJ_pbe_WithSHA1And128BitRC4 .OBJ_pkcs12_pbeids, 1L
788 
789 	enum SN_pbe_WithSHA1And40BitRC4 = "PBE-SHA1-RC4-40";
790 	enum LN_pbe_WithSHA1And40BitRC4 = "pbeWithSHA1And40BitRC4";
791 	enum NID_pbe_WithSHA1And40BitRC4 = 145;
792 	//#define OBJ_pbe_WithSHA1And40BitRC4 .OBJ_pkcs12_pbeids, 2L
793 
794 	enum SN_pbe_WithSHA1And3_Key_TripleDES_CBC = "PBE-SHA1-3DES";
795 	enum LN_pbe_WithSHA1And3_Key_TripleDES_CBC = "pbeWithSHA1And3-KeyTripleDES-CBC";
796 	enum NID_pbe_WithSHA1And3_Key_TripleDES_CBC = 146;
797 	//#define OBJ_pbe_WithSHA1And3_Key_TripleDES_CBC .OBJ_pkcs12_pbeids, 3L
798 
799 	enum SN_pbe_WithSHA1And2_Key_TripleDES_CBC = "PBE-SHA1-2DES";
800 	enum LN_pbe_WithSHA1And2_Key_TripleDES_CBC = "pbeWithSHA1And2-KeyTripleDES-CBC";
801 	enum NID_pbe_WithSHA1And2_Key_TripleDES_CBC = 147;
802 	//#define OBJ_pbe_WithSHA1And2_Key_TripleDES_CBC .OBJ_pkcs12_pbeids, 4L
803 
804 	enum SN_pbe_WithSHA1And128BitRC2_CBC = "PBE-SHA1-RC2-128";
805 	enum LN_pbe_WithSHA1And128BitRC2_CBC = "pbeWithSHA1And128BitRC2-CBC";
806 	enum NID_pbe_WithSHA1And128BitRC2_CBC = 148;
807 	//#define OBJ_pbe_WithSHA1And128BitRC2_CBC .OBJ_pkcs12_pbeids, 5L
808 
809 	enum SN_pbe_WithSHA1And40BitRC2_CBC = "PBE-SHA1-RC2-40";
810 	enum LN_pbe_WithSHA1And40BitRC2_CBC = "pbeWithSHA1And40BitRC2-CBC";
811 	enum NID_pbe_WithSHA1And40BitRC2_CBC = 149;
812 	//#define OBJ_pbe_WithSHA1And40BitRC2_CBC .OBJ_pkcs12_pbeids, 6L
813 
814 	//#define OBJ_pkcs12_Version1 .OBJ_pkcs12, 10L
815 
816 	//#define OBJ_pkcs12_BagIds .OBJ_pkcs12_Version1, 1L
817 
818 	enum LN_keyBag = "keyBag";
819 	enum NID_keyBag = 150;
820 	//#define OBJ_keyBag .OBJ_pkcs12_BagIds, 1L
821 
822 	enum LN_pkcs8ShroudedKeyBag = "pkcs8ShroudedKeyBag";
823 	enum NID_pkcs8ShroudedKeyBag = 151;
824 	//#define OBJ_pkcs8ShroudedKeyBag .OBJ_pkcs12_BagIds, 2L
825 
826 	enum LN_certBag = "certBag";
827 	enum NID_certBag = 152;
828 	//#define OBJ_certBag .OBJ_pkcs12_BagIds, 3L
829 
830 	enum LN_crlBag = "crlBag";
831 	enum NID_crlBag = 153;
832 	//#define OBJ_crlBag .OBJ_pkcs12_BagIds, 4L
833 
834 	enum LN_secretBag = "secretBag";
835 	enum NID_secretBag = 154;
836 	//#define OBJ_secretBag .OBJ_pkcs12_BagIds, 5L
837 
838 	enum LN_safeContentsBag = "safeContentsBag";
839 	enum NID_safeContentsBag = 155;
840 	//#define OBJ_safeContentsBag .OBJ_pkcs12_BagIds, 6L
841 
842 	enum LN_friendlyName = "friendlyName";
843 	enum NID_friendlyName = 156;
844 	//#define OBJ_friendlyName .OBJ_pkcs9, 20L
845 
846 	enum LN_localKeyID = "localKeyID";
847 	enum NID_localKeyID = 157;
848 	//#define OBJ_localKeyID .OBJ_pkcs9, 21L
849 
850 	//#define OBJ_certTypes .OBJ_pkcs9, 22L
851 
852 	enum LN_x509Certificate = "x509Certificate";
853 	enum NID_x509Certificate = 158;
854 	//#define OBJ_x509Certificate .OBJ_certTypes, 1L
855 
856 	enum LN_sdsiCertificate = "sdsiCertificate";
857 	enum NID_sdsiCertificate = 159;
858 	//#define OBJ_sdsiCertificate .OBJ_certTypes, 2L
859 
860 	//#define OBJ_crlTypes .OBJ_pkcs9, 23L
861 
862 	enum LN_x509Crl = "x509Crl";
863 	enum NID_x509Crl = 160;
864 	//#define OBJ_x509Crl .OBJ_crlTypes, 1L
865 
866 	/* PKCS#5 v2 OIDs */
867 
868 	enum LN_pbes2 = "PBES2";
869 	enum NID_pbes2 = 161;
870 	//#define OBJ_pbes2 .OBJ_pkcs, 5L, 13L
871 
872 	enum LN_pbmac1 = "PBMAC1";
873 	enum NID_pbmac1 = 162;
874 	//#define OBJ_pbmac1 .OBJ_pkcs, 5L, 14L
875 
876 	enum LN_hmacWithSHA1 = "hmacWithSHA1";
877 	enum NID_hmacWithSHA1 = 163;
878 	//#define OBJ_hmacWithSHA1 .OBJ_rsadsi, 2L, 7L
879 
880 	/* Policy Qualifier Ids */
881 
882 	enum LN_id_qt_cps = "Policy Qualifier CPS";
883 	enum SN_id_qt_cps = "id-qt-cps";
884 	enum NID_id_qt_cps = 164;
885 	//#define OBJ_id_qt_cps .OBJ_id_pkix, 2L, 1L
886 
887 	enum LN_id_qt_unotice = "Policy Qualifier User Notice";
888 	enum SN_id_qt_unotice = "id-qt-unotice";
889 	enum NID_id_qt_unotice = 165;
890 	//#define OBJ_id_qt_unotice .OBJ_id_pkix, 2L, 2L
891 
892 	enum SN_rc2_64_cbc = "RC2-64-CBC";
893 	enum LN_rc2_64_cbc = "rc2-64-cbc";
894 	enum NID_rc2_64_cbc = 166;
895 
896 	enum SN_SMIMECapabilities = "SMIME-CAPS";
897 	enum LN_SMIMECapabilities = "S/MIME Capabilities";
898 	enum NID_SMIMECapabilities = 167;
899 	//#define OBJ_SMIMECapabilities .OBJ_pkcs9, 15L
900 
901 	enum SN_pbeWithMD2AndRC2_CBC = "PBE-MD2-RC2-64";
902 	enum LN_pbeWithMD2AndRC2_CBC = "pbeWithMD2AndRC2-CBC";
903 	enum NID_pbeWithMD2AndRC2_CBC = 168;
904 	//#define OBJ_pbeWithMD2AndRC2_CBC .OBJ_pkcs, 5L, 4L
905 
906 	enum SN_pbeWithMD5AndRC2_CBC = "PBE-MD5-RC2-64";
907 	enum LN_pbeWithMD5AndRC2_CBC = "pbeWithMD5AndRC2-CBC";
908 	enum NID_pbeWithMD5AndRC2_CBC = 169;
909 	//#define OBJ_pbeWithMD5AndRC2_CBC .OBJ_pkcs, 5L, 6L
910 
911 	enum SN_pbeWithSHA1AndDES_CBC = "PBE-SHA1-DES";
912 	enum LN_pbeWithSHA1AndDES_CBC = "pbeWithSHA1AndDES-CBC";
913 	enum NID_pbeWithSHA1AndDES_CBC = 170;
914 	//#define OBJ_pbeWithSHA1AndDES_CBC .OBJ_pkcs, 5L, 10L
915 
916 	/* Extension request OIDs */
917 
918 	enum LN_ms_ext_req = "Microsoft Extension Request";
919 	enum SN_ms_ext_req = "msExtReq";
920 	enum NID_ms_ext_req = 171;
921 	//#define OBJ_ms_ext_req 1L, 3L, 6L, 1L, 4L, 1L, 311L, 2L, 1L, 14L
922 
923 	enum LN_ext_req = "Extension Request";
924 	enum SN_ext_req = "extReq";
925 	enum NID_ext_req = 172;
926 	//#define OBJ_ext_req .OBJ_pkcs9, 14L
927 
928 	enum SN_name = "name";
929 	enum LN_name = "name";
930 	enum NID_name = 173;
931 	//#define OBJ_name .OBJ_X509, 41L
932 
933 	enum SN_dnQualifier = "dnQualifier";
934 	enum LN_dnQualifier = "dnQualifier";
935 	enum NID_dnQualifier = 174;
936 	//#define OBJ_dnQualifier .OBJ_X509, 46L
937 
938 	enum SN_id_pe = "id-pe";
939 	enum NID_id_pe = 175;
940 	//#define OBJ_id_pe .OBJ_id_pkix, 1L
941 
942 	enum SN_id_ad = "id-ad";
943 	enum NID_id_ad = 176;
944 	//#define OBJ_id_ad .OBJ_id_pkix, 48L
945 
946 	enum SN_info_access = "authorityInfoAccess";
947 	enum LN_info_access = "Authority Information Access";
948 	enum NID_info_access = 177;
949 	//#define OBJ_info_access .OBJ_id_pe, 1L
950 
951 	enum SN_ad_OCSP = "OCSP";
952 	enum LN_ad_OCSP = "OCSP";
953 	enum NID_ad_OCSP = 178;
954 	//#define OBJ_ad_OCSP .OBJ_id_ad, 1L
955 
956 	enum SN_ad_ca_issuers = "caIssuers";
957 	enum LN_ad_ca_issuers = "CA Issuers";
958 	enum NID_ad_ca_issuers = 179;
959 	//#define OBJ_ad_ca_issuers .OBJ_id_ad, 2L
960 
961 	enum SN_OCSP_sign = "OCSPSigning";
962 	enum LN_OCSP_sign = "OCSP Signing";
963 	enum NID_OCSP_sign = 180;
964 	//#define OBJ_OCSP_sign .OBJ_id_kp, 9L
965 }
966 
967 enum OBJ_NAME_TYPE_UNDEF = 0x00;
968 enum OBJ_NAME_TYPE_MD_METH = 0x01;
969 enum OBJ_NAME_TYPE_CIPHER_METH = 0x02;
970 enum OBJ_NAME_TYPE_PKEY_METH = 0x03;
971 enum OBJ_NAME_TYPE_COMP_METH = 0x04;
972 enum OBJ_NAME_TYPE_NUM = 0x05;
973 
974 enum OBJ_NAME_ALIAS = 0x8000;
975 
976 enum OBJ_BSEARCH_VALUE_ON_NOMATCH = 0x01;
977 enum OBJ_BSEARCH_FIRST_VALUE_ON_MATCH = 0x02;
978 
979 extern (C):
980 nothrow @nogc:
981 
982 struct obj_name_st
983 {
984 	int type;
985 	int alias_;
986 	const (char)* name;
987 	const (char)* data;
988 }
989 
990 alias OBJ_NAME = .obj_name_st;
991 
992 alias OBJ_create_and_add_object = .OBJ_create;
993 
994 int OBJ_NAME_init();
995 int OBJ_NAME_new_index(core.stdc.config.c_ulong function(const (char)*) hash_func, int function(const (char)*, const (char)*) cmp_func, void function(const (char)*, int, const (char)*) free_func);
996 const (char)* OBJ_NAME_get(const (char)* name, int type);
997 int OBJ_NAME_add(const (char)* name, int type, const (char)* data);
998 int OBJ_NAME_remove(const (char)* name, int type);
999 
1000 /**
1001  * -1 for everything
1002  */
1003 void OBJ_NAME_cleanup(int type);
1004 
1005 void OBJ_NAME_do_all(int type, void function(const (.OBJ_NAME)*, void* arg) fn, void* arg);
1006 void OBJ_NAME_do_all_sorted(int type, void function(const (.OBJ_NAME)*, void* arg) fn, void* arg);
1007 
1008 libressl_d.openssl.asn1.ASN1_OBJECT* OBJ_dup(const (libressl_d.openssl.asn1.ASN1_OBJECT)* o);
1009 libressl_d.openssl.asn1.ASN1_OBJECT* OBJ_nid2obj(int n);
1010 const (char)* OBJ_nid2ln(int n);
1011 const (char)* OBJ_nid2sn(int n);
1012 int OBJ_obj2nid(const (libressl_d.openssl.asn1.ASN1_OBJECT)* o);
1013 libressl_d.openssl.asn1.ASN1_OBJECT* OBJ_txt2obj(const (char)* s, int no_name);
1014 int OBJ_obj2txt(char* buf, int buf_len, const (libressl_d.openssl.asn1.ASN1_OBJECT)* a, int no_name);
1015 int OBJ_txt2nid(const (char)* s);
1016 int OBJ_ln2nid(const (char)* s);
1017 int OBJ_sn2nid(const (char)* s);
1018 int OBJ_cmp(const (libressl_d.openssl.asn1.ASN1_OBJECT)* a, const (libressl_d.openssl.asn1.ASN1_OBJECT)* b);
1019 const (void)* OBJ_bsearch_(const (void)* key, const (void)* base, int num, int size, int function(const (void)*, const (void)*) cmp);
1020 const (void)* OBJ_bsearch_ex_(const (void)* key, const (void)* base, int num, int size, int function(const (void)*, const (void)*) cmp, int flags);
1021 
1022 version (LIBRESSL_INTERNAL) {
1023 } else {
1024 	//#define _DECLARE_OBJ_BSEARCH_CMP_FN(scope, type1, type2, nm) static int nm##_cmp_BSEARCH_CMP_FN(const (void)*, const (void)*); static int nm##_cmp(type1 const*, type2 const*); scope type2* OBJ_bsearch_##nm(type1* key, type2 const* base, int num)
1025 
1026 	//#define DECLARE_OBJ_BSEARCH_CMP_FN(type1, type2, cmp) ._DECLARE_OBJ_BSEARCH_CMP_FN(static, type1, type2, cmp)
1027 	//#define DECLARE_OBJ_BSEARCH_GLOBAL_CMP_FN(type1, type2, nm) type2* OBJ_bsearch_##nm(type1* key, type2 const* base, int num)
1028 
1029 	/*
1030 	 * Unsolved problem: if a type is actually a pointer type, like
1031 	 * nid_triple is, then its impossible to get a const where you need
1032 	 * it. Consider:
1033 	 *
1034 	 * typedef int nid_triple[3];
1035 	 * const (void)* a_;
1036 	 * const nid_triple const *a = a_;
1037 	 *
1038 	 * The assignement discards a const because what you really want is:
1039 	 *
1040 	 * const int const * const *a = a_;
1041 	 *
1042 	 * But if you do that, you lose the fact that a is an array of 3 ints,
1043 	 * which breaks comparison functions.
1044 	 *
1045 	 * Thus we end up having to cast, sadly, or unpack the
1046 	 * declarations. Or, as I finally did in this case, delcare nid_triple
1047 	 * to be a struct, which it should have been in the first place.
1048 	 *
1049 	 * Ben, August 2008.
1050 	 *
1051 	 * Also, strictly speaking not all types need be const, but handling
1052 	 * the non-constness means a lot of complication, and in practice
1053 	 * comparison routines do always not touch their arguments.
1054 	 */
1055 
1056 	//#define IMPLEMENT_OBJ_BSEARCH_CMP_FN(type1, type2, nm) static int nm##_cmp_BSEARCH_CMP_FN(const (void)* a_, const (void)* b_) { type1 const* a = a_; type2 const* b = b_; return nm##_cmp(a, b); } static type2* OBJ_bsearch_##nm(type1* key, type2 const* base, int num) { return (type2*) .OBJ_bsearch_(key, base, num, type2.sizeof, nm##_cmp_BSEARCH_CMP_FN); } extern void dummy_prototype(void)
1057 
1058 	//#define IMPLEMENT_OBJ_BSEARCH_GLOBAL_CMP_FN(type1, type2, nm) static int nm##_cmp_BSEARCH_CMP_FN(const (void)* a_, const (void)* b_) { type1 const* a = a_; type2 const* b = b_; return nm##_cmp(a, b); } type2* OBJ_bsearch_##nm(type1* key, type2 const* base, int num) { return (type2*) .OBJ_bsearch_(key, base, num, type2.sizeof, nm##_cmp_BSEARCH_CMP_FN); } extern void dummy_prototype(void)
1059 
1060 	//#define OBJ_bsearch(type1, key, type2, base, num, cmp) ((type2*) .OBJ_bsearch_(libressl_d.openssl.asn1.CHECKED_PTR_OF(type1, key), libressl_d.openssl.asn1.CHECKED_PTR_OF(type2, base), num, type2.sizeof, ((void) libressl_d.openssl.asn1.CHECKED_PTR_OF(type1, cmp##_type_1), (void) libressl_d.openssl.asn1.CHECKED_PTR_OF(type2, cmp##_type_2), cmp##_BSEARCH_CMP_FN)))
1061 
1062 	//#define OBJ_bsearch_ex(type1, key, type2, base, num, cmp, flags) ((type2*) .OBJ_bsearch_ex_(libressl_d.openssl.asn1.CHECKED_PTR_OF(type1, key), libressl_d.openssl.asn1.CHECKED_PTR_OF(type2, base), num, type2.sizeof, ((void) libressl_d.openssl.asn1.CHECKED_PTR_OF(type1, cmp##_type_1), (void) type_2 = libressl_d.openssl.asn1.CHECKED_PTR_OF(type2, cmp##_type_2), cmp##_BSEARCH_CMP_FN)), flags)
1063 }
1064 
1065 int OBJ_new_nid(int num);
1066 int OBJ_add_object(const (libressl_d.openssl.asn1.ASN1_OBJECT)* obj);
1067 int OBJ_create(const (char)* oid, const (char)* sn, const (char)* ln);
1068 void OBJ_cleanup();
1069 int OBJ_create_objects(libressl_d.openssl.bio.BIO* in_);
1070 
1071 int OBJ_find_sigid_algs(int signid, int* pdig_nid, int* ppkey_nid);
1072 int OBJ_find_sigid_by_algs(int* psignid, int dig_nid, int pkey_nid);
1073 int OBJ_add_sigid(int signid, int dig_id, int pkey_id);
1074 void OBJ_sigid_free();
1075 
1076 extern __gshared int obj_cleanup_defer;
1077 void check_defer(int nid);
1078 
1079 /* BEGIN ERROR CODES */
1080 /*
1081  * The following lines are auto generated by the script mkerr.pl. Any changes
1082  * made after this point may be overwritten when the script is next run.
1083  */
1084 void ERR_load_OBJ_strings();
1085 
1086 /* Error codes for the OBJ functions. */
1087 
1088 /* Function codes. */
1089 enum OBJ_F_OBJ_ADD_OBJECT = 105;
1090 enum OBJ_F_OBJ_CREATE = 100;
1091 enum OBJ_F_OBJ_DUP = 101;
1092 enum OBJ_F_OBJ_NAME_NEW_INDEX = 106;
1093 enum OBJ_F_OBJ_NID2LN = 102;
1094 enum OBJ_F_OBJ_NID2OBJ = 103;
1095 enum OBJ_F_OBJ_NID2SN = 104;
1096 
1097 /* Reason codes. */
1098 enum OBJ_R_MALLOC_FAILURE = 100;
1099 enum OBJ_R_UNKNOWN_NID = 101;