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