1 /* $OpenBSD: x509v3.h,v 1.5 2021/09/02 13:48:39 job Exp $ */ 2 /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 3 * project 1999. 4 */ 5 /* ==================================================================== 6 * Copyright (c) 1999-2004 The OpenSSL Project. All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions 10 * are met: 11 * 12 * 1. Redistributions of source code must retain the above copyright 13 * notice, this list of conditions and the following disclaimer. 14 * 15 * 2. Redistributions in binary form must reproduce the above copyright 16 * notice, this list of conditions and the following disclaimer in 17 * the documentation and/or other materials provided with the 18 * distribution. 19 * 20 * 3. All advertising materials mentioning features or use of this 21 * software must display the following acknowledgment: 22 * "This product includes software developed by the OpenSSL Project 23 * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 24 * 25 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to 26 * endorse or promote products derived from this software without 27 * prior written permission. For written permission, please contact 28 * licensing@OpenSSL.org. 29 * 30 * 5. Products derived from this software may not be called "OpenSSL" 31 * nor may "OpenSSL" appear in their names without prior written 32 * permission of the OpenSSL Project. 33 * 34 * 6. Redistributions of any form whatsoever must retain the following 35 * acknowledgment: 36 * "This product includes software developed by the OpenSSL Project 37 * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" 38 * 39 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY 40 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 41 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 42 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR 43 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 44 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 45 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 46 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 47 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 48 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 49 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 50 * OF THE POSSIBILITY OF SUCH DAMAGE. 51 * ==================================================================== 52 * 53 * This product includes cryptographic software written by Eric Young 54 * (eay@cryptsoft.com). This product includes software written by Tim 55 * Hudson (tjh@cryptsoft.com). 56 * 57 */ 58 module libressl_d.openssl.x509v3; 59 60 61 private static import core.stdc.config; 62 private static import libressl_d.compat.stdio; 63 private static import libressl_d.openssl.asn1; 64 private static import libressl_d.openssl.err; 65 private static import libressl_d.openssl.ossl_typ; 66 private static import libressl_d.openssl.safestack; 67 private static import libressl_d.openssl.stack; 68 public import libressl_d.openssl.bio; 69 public import libressl_d.openssl.conf; 70 public import libressl_d.openssl.opensslconf; 71 public import libressl_d.openssl.x509; 72 73 enum HEADER_X509V3_H = true; 74 75 extern (C): 76 nothrow @nogc: 77 78 /* Useful typedefs */ 79 80 alias X509V3_EXT_NEW = extern (C) nothrow @nogc void* function(); 81 alias X509V3_EXT_FREE = extern (C) nothrow @nogc void function(void*); 82 alias X509V3_EXT_D2I = extern (C) nothrow @nogc void* function(void*, const (ubyte)**, core.stdc.config.c_long); 83 alias X509V3_EXT_I2D = extern (C) nothrow @nogc int function(void*, ubyte**); 84 alias X509V3_EXT_I2V = extern (C) nothrow @nogc libressl_d.openssl.conf.stack_st_CONF_VALUE* function(const (.v3_ext_method)* method, void* ext, libressl_d.openssl.conf.stack_st_CONF_VALUE* extlist); 85 alias X509V3_EXT_V2I = extern (C) nothrow @nogc void* function(const (.v3_ext_method)* method, .v3_ext_ctx* ctx, libressl_d.openssl.conf.stack_st_CONF_VALUE* values); 86 alias X509V3_EXT_I2S = extern (C) nothrow @nogc char* function(const (.v3_ext_method)* method, void* ext); 87 alias X509V3_EXT_S2I = extern (C) nothrow @nogc void* function(const (.v3_ext_method)* method, .v3_ext_ctx* ctx, const (char)* str); 88 alias X509V3_EXT_I2R = extern (C) nothrow @nogc int function(const (.v3_ext_method)* method, void* ext, libressl_d.openssl.bio.BIO* out_, int indent); 89 alias X509V3_EXT_R2I = extern (C) nothrow @nogc void* function(const (.v3_ext_method)* method, .v3_ext_ctx* ctx, const (char)* str); 90 91 /* V3 extension structure */ 92 93 struct v3_ext_method 94 { 95 int ext_nid; 96 int ext_flags; 97 /* If this is set the following four fields are ignored */ 98 libressl_d.openssl.asn1.ASN1_ITEM_EXP* it; 99 /* Old style ASN1 calls */ 100 .X509V3_EXT_NEW ext_new; 101 .X509V3_EXT_FREE ext_free; 102 .X509V3_EXT_D2I d2i; 103 .X509V3_EXT_I2D i2d; 104 105 /* The following pair is used for string extensions */ 106 .X509V3_EXT_I2S i2s; 107 .X509V3_EXT_S2I s2i; 108 109 /* The following pair is used for multi-valued extensions */ 110 .X509V3_EXT_I2V i2v; 111 .X509V3_EXT_V2I v2i; 112 113 /* The following are used for raw extensions */ 114 .X509V3_EXT_I2R i2r; 115 .X509V3_EXT_R2I r2i; 116 117 /** 118 * Any extension specific data 119 */ 120 void* usr_data; 121 } 122 123 struct X509V3_CONF_METHOD_st 124 { 125 char* function(void* db, const (char)* section, const (char)* value) get_string; 126 libressl_d.openssl.conf.stack_st_CONF_VALUE* function(void* db, const (char)* section) get_section; 127 void function(void* db, char* string_) free_string; 128 void function(void* db, libressl_d.openssl.conf.stack_st_CONF_VALUE* section) free_section; 129 } 130 131 alias X509V3_CONF_METHOD = .X509V3_CONF_METHOD_st; 132 133 enum CTX_TEST = 0x01; 134 135 /** 136 * Context specific info 137 */ 138 struct v3_ext_ctx 139 { 140 int flags; 141 libressl_d.openssl.ossl_typ.X509* issuer_cert; 142 libressl_d.openssl.ossl_typ.X509* subject_cert; 143 libressl_d.openssl.x509.X509_REQ* subject_req; 144 libressl_d.openssl.ossl_typ.X509_CRL* crl; 145 .X509V3_CONF_METHOD* db_meth; 146 void* db; 147 /* Maybe more here */ 148 } 149 150 alias X509V3_EXT_METHOD = .v3_ext_method; 151 152 //DECLARE_STACK_OF(X509V3_EXT_METHOD) 153 struct stack_st_X509V3_EXT_METHOD 154 { 155 libressl_d.openssl.stack._STACK stack; 156 } 157 158 /* ext_flags values */ 159 enum X509V3_EXT_DYNAMIC = 0x01; 160 enum X509V3_EXT_CTX_DEP = 0x02; 161 enum X509V3_EXT_MULTILINE = 0x04; 162 163 alias ENUMERATED_NAMES = libressl_d.openssl.asn1.BIT_STRING_BITNAME; 164 165 struct BASIC_CONSTRAINTS_st 166 { 167 int ca; 168 libressl_d.openssl.ossl_typ.ASN1_INTEGER* pathlen; 169 } 170 171 alias BASIC_CONSTRAINTS = .BASIC_CONSTRAINTS_st; 172 173 struct PKEY_USAGE_PERIOD_st 174 { 175 libressl_d.openssl.ossl_typ.ASN1_GENERALIZEDTIME* notBefore; 176 libressl_d.openssl.ossl_typ.ASN1_GENERALIZEDTIME* notAfter; 177 } 178 179 alias PKEY_USAGE_PERIOD = .PKEY_USAGE_PERIOD_st; 180 181 struct otherName_st 182 { 183 libressl_d.openssl.asn1.ASN1_OBJECT* type_id; 184 libressl_d.openssl.asn1.ASN1_TYPE* value; 185 } 186 187 alias OTHERNAME = .otherName_st; 188 189 struct EDIPartyName_st 190 { 191 libressl_d.openssl.ossl_typ.ASN1_STRING* nameAssigner; 192 libressl_d.openssl.ossl_typ.ASN1_STRING* partyName; 193 } 194 195 alias EDIPARTYNAME = .EDIPartyName_st; 196 197 struct GENERAL_NAME_st 198 { 199 enum GEN_OTHERNAME = 0; 200 enum GEN_EMAIL = 1; 201 enum GEN_DNS = 2; 202 enum GEN_X400 = 3; 203 enum GEN_DIRNAME = 4; 204 enum GEN_EDIPARTY = 5; 205 enum GEN_URI = 6; 206 enum GEN_IPADD = 7; 207 enum GEN_RID = 8; 208 209 int type; 210 211 union d_ 212 { 213 char* ptr_; 214 215 /** 216 * otherName 217 */ 218 .OTHERNAME* otherName; 219 220 libressl_d.openssl.ossl_typ.ASN1_IA5STRING* rfc822Name; 221 libressl_d.openssl.ossl_typ.ASN1_IA5STRING* dNSName; 222 libressl_d.openssl.asn1.ASN1_TYPE* x400Address; 223 libressl_d.openssl.ossl_typ.X509_NAME* directoryName; 224 .EDIPARTYNAME* ediPartyName; 225 libressl_d.openssl.ossl_typ.ASN1_IA5STRING* uniformResourceIdentifier; 226 libressl_d.openssl.ossl_typ.ASN1_OCTET_STRING* iPAddress; 227 libressl_d.openssl.asn1.ASN1_OBJECT* registeredID; 228 229 /* Old names */ 230 231 /** 232 * iPAddress 233 */ 234 libressl_d.openssl.ossl_typ.ASN1_OCTET_STRING* ip; 235 236 /** 237 * dirn 238 */ 239 libressl_d.openssl.ossl_typ.X509_NAME* dirn; 240 241 /** 242 * rfc822Name, dNSName, uniformResourceIdentifier 243 */ 244 libressl_d.openssl.ossl_typ.ASN1_IA5STRING* ia5; 245 246 /** 247 * registeredID 248 */ 249 libressl_d.openssl.asn1.ASN1_OBJECT* rid; 250 251 /** 252 * x400Address 253 */ 254 libressl_d.openssl.asn1.ASN1_TYPE* other; 255 } 256 257 d_ d; 258 } 259 260 alias GENERAL_NAME = .GENERAL_NAME_st; 261 262 alias GENERAL_NAMES = .stack_st_GENERAL_NAME; 263 264 struct ACCESS_DESCRIPTION_st 265 { 266 libressl_d.openssl.asn1.ASN1_OBJECT* method; 267 .GENERAL_NAME* location; 268 } 269 270 alias ACCESS_DESCRIPTION = .ACCESS_DESCRIPTION_st; 271 272 alias AUTHORITY_INFO_ACCESS = .stack_st_ACCESS_DESCRIPTION; 273 274 alias EXTENDED_KEY_USAGE = libressl_d.openssl.asn1.stack_st_ASN1_OBJECT; 275 276 //DECLARE_STACK_OF(GENERAL_NAME) 277 struct stack_st_GENERAL_NAME 278 { 279 libressl_d.openssl.stack._STACK stack; 280 } 281 282 //DECLARE_STACK_OF(ACCESS_DESCRIPTION) 283 struct stack_st_ACCESS_DESCRIPTION 284 { 285 libressl_d.openssl.stack._STACK stack; 286 } 287 288 struct DIST_POINT_NAME_st 289 { 290 int type; 291 292 union name_ 293 { 294 .GENERAL_NAMES* fullname; 295 libressl_d.openssl.x509.stack_st_X509_NAME_ENTRY* relativename; 296 } 297 298 name_ name; 299 300 /** 301 * If relativename then this contains the full distribution point name 302 */ 303 libressl_d.openssl.ossl_typ.X509_NAME* dpname; 304 } 305 306 alias DIST_POINT_NAME = .DIST_POINT_NAME_st; 307 308 /** 309 * All existing reasons 310 */ 311 enum CRLDP_ALL_REASONS = 0x807F; 312 313 enum CRL_REASON_NONE = -1; 314 enum CRL_REASON_UNSPECIFIED = 0; 315 enum CRL_REASON_KEY_COMPROMISE = 1; 316 enum CRL_REASON_CA_COMPROMISE = 2; 317 enum CRL_REASON_AFFILIATION_CHANGED = 3; 318 enum CRL_REASON_SUPERSEDED = 4; 319 enum CRL_REASON_CESSATION_OF_OPERATION = 5; 320 enum CRL_REASON_CERTIFICATE_HOLD = 6; 321 enum CRL_REASON_REMOVE_FROM_CRL = 8; 322 enum CRL_REASON_PRIVILEGE_WITHDRAWN = 9; 323 enum CRL_REASON_AA_COMPROMISE = 10; 324 325 struct DIST_POINT_st 326 { 327 .DIST_POINT_NAME* distpoint; 328 libressl_d.openssl.ossl_typ.ASN1_BIT_STRING* reasons; 329 .GENERAL_NAMES* CRLissuer; 330 int dp_reasons; 331 } 332 333 alias CRL_DIST_POINTS = .stack_st_DIST_POINT; 334 335 //DECLARE_STACK_OF(DIST_POINT) 336 struct stack_st_DIST_POINT 337 { 338 libressl_d.openssl.stack._STACK stack; 339 } 340 341 struct AUTHORITY_KEYID_st 342 { 343 libressl_d.openssl.ossl_typ.ASN1_OCTET_STRING* keyid; 344 .GENERAL_NAMES* issuer; 345 libressl_d.openssl.ossl_typ.ASN1_INTEGER* serial; 346 } 347 348 /* Strong extranet structures */ 349 350 struct SXNET_ID_st 351 { 352 libressl_d.openssl.ossl_typ.ASN1_INTEGER* zone; 353 libressl_d.openssl.ossl_typ.ASN1_OCTET_STRING* user; 354 } 355 356 alias SXNETID = .SXNET_ID_st; 357 358 //DECLARE_STACK_OF(SXNETID) 359 struct stack_st_SXNETID 360 { 361 libressl_d.openssl.stack._STACK stack; 362 } 363 364 struct SXNET_st 365 { 366 libressl_d.openssl.ossl_typ.ASN1_INTEGER* version_; 367 .stack_st_SXNETID* ids; 368 } 369 370 alias SXNET = .SXNET_st; 371 372 struct NOTICEREF_st 373 { 374 libressl_d.openssl.ossl_typ.ASN1_STRING* organization; 375 libressl_d.openssl.asn1.stack_st_ASN1_INTEGER* noticenos; 376 } 377 378 alias NOTICEREF = .NOTICEREF_st; 379 380 struct USERNOTICE_st 381 { 382 .NOTICEREF* noticeref; 383 libressl_d.openssl.ossl_typ.ASN1_STRING* exptext; 384 } 385 386 alias USERNOTICE = .USERNOTICE_st; 387 388 struct POLICYQUALINFO_st 389 { 390 libressl_d.openssl.asn1.ASN1_OBJECT* pqualid; 391 392 union d_ 393 { 394 libressl_d.openssl.ossl_typ.ASN1_IA5STRING* cpsuri; 395 .USERNOTICE* usernotice; 396 libressl_d.openssl.asn1.ASN1_TYPE* other; 397 } 398 399 d_ d; 400 } 401 402 alias POLICYQUALINFO = .POLICYQUALINFO_st; 403 404 //DECLARE_STACK_OF(POLICYQUALINFO) 405 struct stack_st_POLICYQUALINFO 406 { 407 libressl_d.openssl.stack._STACK stack; 408 } 409 410 struct POLICYINFO_st 411 { 412 libressl_d.openssl.asn1.ASN1_OBJECT* policyid; 413 .stack_st_POLICYQUALINFO* qualifiers; 414 } 415 416 alias POLICYINFO = .POLICYINFO_st; 417 418 alias CERTIFICATEPOLICIES = .stack_st_POLICYINFO; 419 420 //DECLARE_STACK_OF(POLICYINFO) 421 struct stack_st_POLICYINFO 422 { 423 libressl_d.openssl.stack._STACK stack; 424 } 425 426 struct POLICY_MAPPING_st 427 { 428 libressl_d.openssl.asn1.ASN1_OBJECT* issuerDomainPolicy; 429 libressl_d.openssl.asn1.ASN1_OBJECT* subjectDomainPolicy; 430 } 431 432 alias POLICY_MAPPING = .POLICY_MAPPING_st; 433 434 //DECLARE_STACK_OF(POLICY_MAPPING) 435 struct stack_st_POLICY_MAPPING 436 { 437 libressl_d.openssl.stack._STACK stack; 438 } 439 440 alias POLICY_MAPPINGS = .stack_st_POLICY_MAPPING; 441 442 struct GENERAL_SUBTREE_st 443 { 444 .GENERAL_NAME* base; 445 libressl_d.openssl.ossl_typ.ASN1_INTEGER* minimum; 446 libressl_d.openssl.ossl_typ.ASN1_INTEGER* maximum; 447 } 448 449 alias GENERAL_SUBTREE = .GENERAL_SUBTREE_st; 450 451 //DECLARE_STACK_OF(GENERAL_SUBTREE) 452 struct stack_st_GENERAL_SUBTREE 453 { 454 libressl_d.openssl.stack._STACK stack; 455 } 456 457 struct NAME_CONSTRAINTS_st 458 { 459 .stack_st_GENERAL_SUBTREE* permittedSubtrees; 460 .stack_st_GENERAL_SUBTREE* excludedSubtrees; 461 } 462 463 struct POLICY_CONSTRAINTS_st 464 { 465 libressl_d.openssl.ossl_typ.ASN1_INTEGER* requireExplicitPolicy; 466 libressl_d.openssl.ossl_typ.ASN1_INTEGER* inhibitPolicyMapping; 467 } 468 469 alias POLICY_CONSTRAINTS = .POLICY_CONSTRAINTS_st; 470 471 /* Proxy certificate structures, see RFC 3820 */ 472 struct PROXY_POLICY_st 473 { 474 libressl_d.openssl.asn1.ASN1_OBJECT* policyLanguage; 475 libressl_d.openssl.ossl_typ.ASN1_OCTET_STRING* policy; 476 } 477 478 alias PROXY_POLICY = .PROXY_POLICY_st; 479 480 struct PROXY_CERT_INFO_EXTENSION_st 481 { 482 libressl_d.openssl.ossl_typ.ASN1_INTEGER* pcPathLengthConstraint; 483 .PROXY_POLICY* proxyPolicy; 484 } 485 486 alias PROXY_CERT_INFO_EXTENSION = .PROXY_CERT_INFO_EXTENSION_st; 487 488 .PROXY_POLICY* PROXY_POLICY_new(); 489 void PROXY_POLICY_free(.PROXY_POLICY* a); 490 .PROXY_POLICY* d2i_PROXY_POLICY(.PROXY_POLICY** a, const (ubyte)** in_, core.stdc.config.c_long len); 491 int i2d_PROXY_POLICY(.PROXY_POLICY* a, ubyte** out_); 492 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM PROXY_POLICY_it; 493 .PROXY_CERT_INFO_EXTENSION* PROXY_CERT_INFO_EXTENSION_new(); 494 void PROXY_CERT_INFO_EXTENSION_free(.PROXY_CERT_INFO_EXTENSION* a); 495 .PROXY_CERT_INFO_EXTENSION* d2i_PROXY_CERT_INFO_EXTENSION(.PROXY_CERT_INFO_EXTENSION** a, const (ubyte)** in_, core.stdc.config.c_long len); 496 int i2d_PROXY_CERT_INFO_EXTENSION(.PROXY_CERT_INFO_EXTENSION* a, ubyte** out_); 497 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM PROXY_CERT_INFO_EXTENSION_it; 498 499 struct ISSUING_DIST_POINT_st 500 { 501 .DIST_POINT_NAME* distpoint; 502 int onlyuser; 503 int onlyCA; 504 libressl_d.openssl.ossl_typ.ASN1_BIT_STRING* onlysomereasons; 505 int indirectCRL; 506 int onlyattr; 507 } 508 509 /* Values in idp_flags field */ 510 /** 511 * IDP present 512 */ 513 enum IDP_PRESENT = 0x01; 514 515 /** 516 * IDP values inconsistent 517 */ 518 enum IDP_INVALID = 0x02; 519 520 /** 521 * onlyuser true 522 */ 523 enum IDP_ONLYUSER = 0x04; 524 525 /** 526 * onlyCA true 527 */ 528 enum IDP_ONLYCA = 0x08; 529 530 /** 531 * onlyattr true 532 */ 533 enum IDP_ONLYATTR = 0x10; 534 535 /** 536 * indirectCRL true 537 */ 538 enum IDP_INDIRECT = 0x20; 539 540 /** 541 * onlysomereasons present 542 */ 543 enum IDP_REASONS = 0x40; 544 545 pragma(inline, true) 546 void X509V3_conf_err(libressl_d.openssl.conf.CONF_VALUE* val) 547 548 in 549 { 550 assert(val != null); 551 } 552 553 do 554 { 555 libressl_d.openssl.err.ERR_asprintf_error_data(cast(char*)(&("section:%s,name:%s,value:%s\0"[0])), val.section, val.name, val.value); 556 } 557 558 pragma(inline, true) 559 void X509V3_set_ctx_test(libressl_d.openssl.ossl_typ.X509V3_CTX* ctx) 560 561 do 562 { 563 .X509V3_set_ctx(ctx, null, null, null, null, .CTX_TEST); 564 } 565 566 pragma(inline, true) 567 pure nothrow @trusted @nogc @live 568 void X509V3_set_ctx_nodb(scope libressl_d.openssl.ossl_typ.X509V3_CTX* ctx) 569 570 in 571 { 572 assert(ctx != null); 573 } 574 575 do 576 { 577 ctx.db = null; 578 } 579 580 //#define EXT_BITSTRING(nid, table) { nid, 0, &ASN1_BIT_STRING_it, 0, 0, 0, 0, 0, 0, cast(.X509V3_EXT_I2V)(.i2v_ASN1_BIT_STRING), cast(.X509V3_EXT_V2I)(.v2i_ASN1_BIT_STRING), null, null, table } 581 582 //#define EXT_IA5STRING(nid) { nid, 0, &ASN1_IA5STRING_it, 0, 0, 0, 0, cast(.X509V3_EXT_I2S)(i2s_ASN1_IA5STRING), cast(.X509V3_EXT_S2I)(s2i_ASN1_IA5STRING), 0, 0, 0, 0, null } 583 584 //#define EXT_END { -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } 585 586 /* X509_PURPOSE stuff */ 587 588 enum EXFLAG_BCONS = 0x0001; 589 enum EXFLAG_KUSAGE = 0x0002; 590 enum EXFLAG_XKUSAGE = 0x0004; 591 enum EXFLAG_NSCERT = 0x0008; 592 593 enum EXFLAG_CA = 0x0010; 594 595 /** 596 * Self issued. 597 */ 598 enum EXFLAG_SI = 0x0020; 599 600 enum EXFLAG_V1 = 0x0040; 601 enum EXFLAG_INVALID = 0x0080; 602 enum EXFLAG_SET = 0x0100; 603 enum EXFLAG_CRITICAL = 0x0200; 604 enum EXFLAG_PROXY = 0x0400; 605 enum EXFLAG_INVALID_POLICY = 0x0800; 606 enum EXFLAG_FRESHEST = 0x1000; 607 608 /** 609 * Self signed. 610 */ 611 enum EXFLAG_SS = 0x2000; 612 613 enum KU_DIGITAL_SIGNATURE = 0x0080; 614 enum KU_NON_REPUDIATION = 0x0040; 615 enum KU_KEY_ENCIPHERMENT = 0x0020; 616 enum KU_DATA_ENCIPHERMENT = 0x0010; 617 enum KU_KEY_AGREEMENT = 0x0008; 618 enum KU_KEY_CERT_SIGN = 0x0004; 619 enum KU_CRL_SIGN = 0x0002; 620 enum KU_ENCIPHER_ONLY = 0x0001; 621 enum KU_DECIPHER_ONLY = 0x8000; 622 623 enum NS_SSL_CLIENT = 0x80; 624 enum NS_SSL_SERVER = 0x40; 625 enum NS_SMIME = 0x20; 626 enum NS_OBJSIGN = 0x10; 627 enum NS_SSL_CA = 0x04; 628 enum NS_SMIME_CA = 0x02; 629 enum NS_OBJSIGN_CA = 0x01; 630 enum NS_ANY_CA = .NS_SSL_CA | .NS_SMIME_CA | .NS_OBJSIGN_CA; 631 632 enum XKU_SSL_SERVER = 0x01; 633 enum XKU_SSL_CLIENT = 0x02; 634 enum XKU_SMIME = 0x04; 635 enum XKU_CODE_SIGN = 0x08; 636 enum XKU_SGC = 0x10; 637 enum XKU_OCSP_SIGN = 0x20; 638 enum XKU_TIMESTAMP = 0x40; 639 enum XKU_DVCS = 0x80; 640 641 enum X509_PURPOSE_DYNAMIC = 0x01; 642 enum X509_PURPOSE_DYNAMIC_NAME = 0x02; 643 644 struct x509_purpose_st 645 { 646 int purpose; 647 648 /** 649 * Default trust ID 650 */ 651 int trust; 652 653 int flags; 654 int function(const .x509_purpose_st*, const (libressl_d.openssl.ossl_typ.X509)*, int) check_purpose; 655 char* name; 656 char* sname; 657 void* usr_data; 658 } 659 660 alias X509_PURPOSE = .x509_purpose_st; 661 662 enum X509_PURPOSE_SSL_CLIENT = 1; 663 enum X509_PURPOSE_SSL_SERVER = 2; 664 enum X509_PURPOSE_NS_SSL_SERVER = 3; 665 enum X509_PURPOSE_SMIME_SIGN = 4; 666 enum X509_PURPOSE_SMIME_ENCRYPT = 5; 667 enum X509_PURPOSE_CRL_SIGN = 6; 668 enum X509_PURPOSE_ANY = 7; 669 enum X509_PURPOSE_OCSP_HELPER = 8; 670 enum X509_PURPOSE_TIMESTAMP_SIGN = 9; 671 672 enum X509_PURPOSE_MIN = 1; 673 enum X509_PURPOSE_MAX = 9; 674 675 /* Flags for X509V3_EXT_print() */ 676 677 enum X509V3_EXT_UNKNOWN_MASK = 0x0FL << 16; 678 679 /** 680 * Return error for unknown extensions 681 */ 682 enum X509V3_EXT_DEFAULT = 0; 683 684 /** 685 * Print error for unknown extensions 686 */ 687 enum X509V3_EXT_ERROR_UNKNOWN = 1L << 16; 688 689 /** 690 * ASN1 parse unknown extensions 691 */ 692 enum X509V3_EXT_PARSE_UNKNOWN = 2L << 16; 693 694 /** 695 * BIO_dump unknown extensions 696 */ 697 enum X509V3_EXT_DUMP_UNKNOWN = 3L << 16; 698 699 /* Flags for X509V3_add1_i2d */ 700 701 enum X509V3_ADD_OP_MASK = 0x0FL; 702 enum X509V3_ADD_DEFAULT = 0L; 703 enum X509V3_ADD_APPEND = 1L; 704 enum X509V3_ADD_REPLACE = 2L; 705 enum X509V3_ADD_REPLACE_EXISTING = 3L; 706 enum X509V3_ADD_KEEP_EXISTING = 4L; 707 enum X509V3_ADD_DELETE = 5L; 708 enum X509V3_ADD_SILENT = 0x10; 709 710 //DECLARE_STACK_OF(X509_PURPOSE) 711 struct stack_st_X509_PURPOSE 712 { 713 libressl_d.openssl.stack._STACK stack; 714 } 715 716 .BASIC_CONSTRAINTS* BASIC_CONSTRAINTS_new(); 717 void BASIC_CONSTRAINTS_free(.BASIC_CONSTRAINTS* a); 718 .BASIC_CONSTRAINTS* d2i_BASIC_CONSTRAINTS(.BASIC_CONSTRAINTS** a, const (ubyte)** in_, core.stdc.config.c_long len); 719 int i2d_BASIC_CONSTRAINTS(.BASIC_CONSTRAINTS* a, ubyte** out_); 720 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM BASIC_CONSTRAINTS_it; 721 722 .SXNET* SXNET_new(); 723 void SXNET_free(.SXNET* a); 724 .SXNET* d2i_SXNET(.SXNET** a, const (ubyte)** in_, core.stdc.config.c_long len); 725 int i2d_SXNET(.SXNET* a, ubyte** out_); 726 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM SXNET_it; 727 .SXNETID* SXNETID_new(); 728 void SXNETID_free(.SXNETID* a); 729 .SXNETID* d2i_SXNETID(.SXNETID** a, const (ubyte)** in_, core.stdc.config.c_long len); 730 int i2d_SXNETID(.SXNETID* a, ubyte** out_); 731 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM SXNETID_it; 732 733 int SXNET_add_id_asc(.SXNET** psx, const (char)* zone, const (char)* user, int userlen); 734 int SXNET_add_id_ulong(.SXNET** psx, core.stdc.config.c_ulong lzone, const (char)* user, int userlen); 735 int SXNET_add_id_INTEGER(.SXNET** psx, libressl_d.openssl.ossl_typ.ASN1_INTEGER* izone, const (char)* user, int userlen); 736 737 libressl_d.openssl.ossl_typ.ASN1_OCTET_STRING* SXNET_get_id_asc(.SXNET* sx, const (char)* zone); 738 libressl_d.openssl.ossl_typ.ASN1_OCTET_STRING* SXNET_get_id_ulong(.SXNET* sx, core.stdc.config.c_ulong lzone); 739 libressl_d.openssl.ossl_typ.ASN1_OCTET_STRING* SXNET_get_id_INTEGER(.SXNET* sx, libressl_d.openssl.ossl_typ.ASN1_INTEGER* zone); 740 741 libressl_d.openssl.ossl_typ.AUTHORITY_KEYID* AUTHORITY_KEYID_new(); 742 void AUTHORITY_KEYID_free(libressl_d.openssl.ossl_typ.AUTHORITY_KEYID* a); 743 libressl_d.openssl.ossl_typ.AUTHORITY_KEYID* d2i_AUTHORITY_KEYID(libressl_d.openssl.ossl_typ.AUTHORITY_KEYID** a, const (ubyte)** in_, core.stdc.config.c_long len); 744 int i2d_AUTHORITY_KEYID(libressl_d.openssl.ossl_typ.AUTHORITY_KEYID* a, ubyte** out_); 745 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM AUTHORITY_KEYID_it; 746 747 .PKEY_USAGE_PERIOD* PKEY_USAGE_PERIOD_new(); 748 void PKEY_USAGE_PERIOD_free(.PKEY_USAGE_PERIOD* a); 749 .PKEY_USAGE_PERIOD* d2i_PKEY_USAGE_PERIOD(.PKEY_USAGE_PERIOD** a, const (ubyte)** in_, core.stdc.config.c_long len); 750 int i2d_PKEY_USAGE_PERIOD(.PKEY_USAGE_PERIOD* a, ubyte** out_); 751 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM PKEY_USAGE_PERIOD_it; 752 753 .GENERAL_NAME* GENERAL_NAME_new(); 754 void GENERAL_NAME_free(.GENERAL_NAME* a); 755 .GENERAL_NAME* d2i_GENERAL_NAME(.GENERAL_NAME** a, const (ubyte)** in_, core.stdc.config.c_long len); 756 int i2d_GENERAL_NAME(.GENERAL_NAME* a, ubyte** out_); 757 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM GENERAL_NAME_it; 758 .GENERAL_NAME* GENERAL_NAME_dup(.GENERAL_NAME* a); 759 int GENERAL_NAME_cmp(.GENERAL_NAME* a, .GENERAL_NAME* b); 760 761 libressl_d.openssl.ossl_typ.ASN1_BIT_STRING* v2i_ASN1_BIT_STRING(.X509V3_EXT_METHOD* method, libressl_d.openssl.ossl_typ.X509V3_CTX* ctx, libressl_d.openssl.conf.stack_st_CONF_VALUE* nval); 762 libressl_d.openssl.conf.stack_st_CONF_VALUE* i2v_ASN1_BIT_STRING(.X509V3_EXT_METHOD* method, libressl_d.openssl.ossl_typ.ASN1_BIT_STRING* bits, libressl_d.openssl.conf.stack_st_CONF_VALUE* extlist); 763 764 libressl_d.openssl.conf.stack_st_CONF_VALUE* i2v_GENERAL_NAME(.X509V3_EXT_METHOD* method, .GENERAL_NAME* gen, libressl_d.openssl.conf.stack_st_CONF_VALUE* ret); 765 int GENERAL_NAME_print(libressl_d.openssl.bio.BIO* out_, .GENERAL_NAME* gen); 766 767 .GENERAL_NAMES* GENERAL_NAMES_new(); 768 void GENERAL_NAMES_free(.GENERAL_NAMES* a); 769 .GENERAL_NAMES* d2i_GENERAL_NAMES(.GENERAL_NAMES** a, const (ubyte)** in_, core.stdc.config.c_long len); 770 int i2d_GENERAL_NAMES(.GENERAL_NAMES* a, ubyte** out_); 771 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM GENERAL_NAMES_it; 772 773 libressl_d.openssl.conf.stack_st_CONF_VALUE* i2v_GENERAL_NAMES(.X509V3_EXT_METHOD* method, .GENERAL_NAMES* gen, libressl_d.openssl.conf.stack_st_CONF_VALUE* extlist); 774 .GENERAL_NAMES* v2i_GENERAL_NAMES(const (.X509V3_EXT_METHOD)* method, libressl_d.openssl.ossl_typ.X509V3_CTX* ctx, libressl_d.openssl.conf.stack_st_CONF_VALUE* nval); 775 776 .OTHERNAME* OTHERNAME_new(); 777 void OTHERNAME_free(.OTHERNAME* a); 778 .OTHERNAME* d2i_OTHERNAME(.OTHERNAME** a, const (ubyte)** in_, core.stdc.config.c_long len); 779 int i2d_OTHERNAME(.OTHERNAME* a, ubyte** out_); 780 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM OTHERNAME_it; 781 .EDIPARTYNAME* EDIPARTYNAME_new(); 782 void EDIPARTYNAME_free(.EDIPARTYNAME* a); 783 .EDIPARTYNAME* d2i_EDIPARTYNAME(.EDIPARTYNAME** a, const (ubyte)** in_, core.stdc.config.c_long len); 784 int i2d_EDIPARTYNAME(.EDIPARTYNAME* a, ubyte** out_); 785 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM EDIPARTYNAME_it; 786 int OTHERNAME_cmp(.OTHERNAME* a, .OTHERNAME* b); 787 void GENERAL_NAME_set0_value(.GENERAL_NAME* a, int type, void* value); 788 void* GENERAL_NAME_get0_value(.GENERAL_NAME* a, int* ptype); 789 int GENERAL_NAME_set0_othername(.GENERAL_NAME* gen, libressl_d.openssl.asn1.ASN1_OBJECT* oid, libressl_d.openssl.asn1.ASN1_TYPE* value); 790 int GENERAL_NAME_get0_otherName(.GENERAL_NAME* gen, libressl_d.openssl.asn1.ASN1_OBJECT** poid, libressl_d.openssl.asn1.ASN1_TYPE** pvalue); 791 792 char* i2s_ASN1_OCTET_STRING(.X509V3_EXT_METHOD* method, const (libressl_d.openssl.ossl_typ.ASN1_OCTET_STRING)* ia5); 793 libressl_d.openssl.ossl_typ.ASN1_OCTET_STRING* s2i_ASN1_OCTET_STRING(.X509V3_EXT_METHOD* method, libressl_d.openssl.ossl_typ.X509V3_CTX* ctx, const (char)* str); 794 795 .EXTENDED_KEY_USAGE* EXTENDED_KEY_USAGE_new(); 796 void EXTENDED_KEY_USAGE_free(.EXTENDED_KEY_USAGE* a); 797 .EXTENDED_KEY_USAGE* d2i_EXTENDED_KEY_USAGE(.EXTENDED_KEY_USAGE** a, const (ubyte)** in_, core.stdc.config.c_long len); 798 int i2d_EXTENDED_KEY_USAGE(.EXTENDED_KEY_USAGE* a, ubyte** out_); 799 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM EXTENDED_KEY_USAGE_it; 800 int i2a_ACCESS_DESCRIPTION(libressl_d.openssl.bio.BIO* bp, const (.ACCESS_DESCRIPTION)* a); 801 802 .CERTIFICATEPOLICIES* CERTIFICATEPOLICIES_new(); 803 void CERTIFICATEPOLICIES_free(.CERTIFICATEPOLICIES* a); 804 .CERTIFICATEPOLICIES* d2i_CERTIFICATEPOLICIES(.CERTIFICATEPOLICIES** a, const (ubyte)** in_, core.stdc.config.c_long len); 805 int i2d_CERTIFICATEPOLICIES(.CERTIFICATEPOLICIES* a, ubyte** out_); 806 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM CERTIFICATEPOLICIES_it; 807 .POLICYINFO* POLICYINFO_new(); 808 void POLICYINFO_free(.POLICYINFO* a); 809 .POLICYINFO* d2i_POLICYINFO(.POLICYINFO** a, const (ubyte)** in_, core.stdc.config.c_long len); 810 int i2d_POLICYINFO(.POLICYINFO* a, ubyte** out_); 811 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM POLICYINFO_it; 812 .POLICYQUALINFO* POLICYQUALINFO_new(); 813 void POLICYQUALINFO_free(.POLICYQUALINFO* a); 814 .POLICYQUALINFO* d2i_POLICYQUALINFO(.POLICYQUALINFO** a, const (ubyte)** in_, core.stdc.config.c_long len); 815 int i2d_POLICYQUALINFO(.POLICYQUALINFO* a, ubyte** out_); 816 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM POLICYQUALINFO_it; 817 .USERNOTICE* USERNOTICE_new(); 818 void USERNOTICE_free(.USERNOTICE* a); 819 .USERNOTICE* d2i_USERNOTICE(.USERNOTICE** a, const (ubyte)** in_, core.stdc.config.c_long len); 820 int i2d_USERNOTICE(.USERNOTICE* a, ubyte** out_); 821 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM USERNOTICE_it; 822 .NOTICEREF* NOTICEREF_new(); 823 void NOTICEREF_free(.NOTICEREF* a); 824 .NOTICEREF* d2i_NOTICEREF(.NOTICEREF** a, const (ubyte)** in_, core.stdc.config.c_long len); 825 int i2d_NOTICEREF(.NOTICEREF* a, ubyte** out_); 826 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM NOTICEREF_it; 827 828 .CRL_DIST_POINTS* CRL_DIST_POINTS_new(); 829 void CRL_DIST_POINTS_free(.CRL_DIST_POINTS* a); 830 .CRL_DIST_POINTS* d2i_CRL_DIST_POINTS(.CRL_DIST_POINTS** a, const (ubyte)** in_, core.stdc.config.c_long len); 831 int i2d_CRL_DIST_POINTS(.CRL_DIST_POINTS* a, ubyte** out_); 832 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM CRL_DIST_POINTS_it; 833 libressl_d.openssl.ossl_typ.DIST_POINT* DIST_POINT_new(); 834 void DIST_POINT_free(libressl_d.openssl.ossl_typ.DIST_POINT* a); 835 libressl_d.openssl.ossl_typ.DIST_POINT* d2i_DIST_POINT(libressl_d.openssl.ossl_typ.DIST_POINT** a, const (ubyte)** in_, core.stdc.config.c_long len); 836 int i2d_DIST_POINT(libressl_d.openssl.ossl_typ.DIST_POINT* a, ubyte** out_); 837 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM DIST_POINT_it; 838 .DIST_POINT_NAME* DIST_POINT_NAME_new(); 839 void DIST_POINT_NAME_free(.DIST_POINT_NAME* a); 840 .DIST_POINT_NAME* d2i_DIST_POINT_NAME(.DIST_POINT_NAME** a, const (ubyte)** in_, core.stdc.config.c_long len); 841 int i2d_DIST_POINT_NAME(.DIST_POINT_NAME* a, ubyte** out_); 842 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM DIST_POINT_NAME_it; 843 libressl_d.openssl.ossl_typ.ISSUING_DIST_POINT* ISSUING_DIST_POINT_new(); 844 void ISSUING_DIST_POINT_free(libressl_d.openssl.ossl_typ.ISSUING_DIST_POINT* a); 845 libressl_d.openssl.ossl_typ.ISSUING_DIST_POINT* d2i_ISSUING_DIST_POINT(libressl_d.openssl.ossl_typ.ISSUING_DIST_POINT** a, const (ubyte)** in_, core.stdc.config.c_long len); 846 int i2d_ISSUING_DIST_POINT(libressl_d.openssl.ossl_typ.ISSUING_DIST_POINT* a, ubyte** out_); 847 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM ISSUING_DIST_POINT_it; 848 849 int DIST_POINT_set_dpname(.DIST_POINT_NAME* dpn, libressl_d.openssl.ossl_typ.X509_NAME* iname); 850 851 int NAME_CONSTRAINTS_check(libressl_d.openssl.ossl_typ.X509* x, libressl_d.openssl.ossl_typ.NAME_CONSTRAINTS* nc); 852 853 .ACCESS_DESCRIPTION* ACCESS_DESCRIPTION_new(); 854 void ACCESS_DESCRIPTION_free(.ACCESS_DESCRIPTION* a); 855 .ACCESS_DESCRIPTION* d2i_ACCESS_DESCRIPTION(.ACCESS_DESCRIPTION** a, const (ubyte)** in_, core.stdc.config.c_long len); 856 int i2d_ACCESS_DESCRIPTION(.ACCESS_DESCRIPTION* a, ubyte** out_); 857 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM ACCESS_DESCRIPTION_it; 858 .AUTHORITY_INFO_ACCESS* AUTHORITY_INFO_ACCESS_new(); 859 void AUTHORITY_INFO_ACCESS_free(.AUTHORITY_INFO_ACCESS* a); 860 .AUTHORITY_INFO_ACCESS* d2i_AUTHORITY_INFO_ACCESS(.AUTHORITY_INFO_ACCESS** a, const (ubyte)** in_, core.stdc.config.c_long len); 861 int i2d_AUTHORITY_INFO_ACCESS(.AUTHORITY_INFO_ACCESS* a, ubyte** out_); 862 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM AUTHORITY_INFO_ACCESS_it; 863 864 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM POLICY_MAPPING_it; 865 .POLICY_MAPPING* POLICY_MAPPING_new(); 866 void POLICY_MAPPING_free(.POLICY_MAPPING* a); 867 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM POLICY_MAPPINGS_it; 868 869 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM GENERAL_SUBTREE_it; 870 .GENERAL_SUBTREE* GENERAL_SUBTREE_new(); 871 void GENERAL_SUBTREE_free(.GENERAL_SUBTREE* a); 872 873 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM NAME_CONSTRAINTS_it; 874 libressl_d.openssl.ossl_typ.NAME_CONSTRAINTS* NAME_CONSTRAINTS_new(); 875 void NAME_CONSTRAINTS_free(libressl_d.openssl.ossl_typ.NAME_CONSTRAINTS* a); 876 877 .POLICY_CONSTRAINTS* POLICY_CONSTRAINTS_new(); 878 void POLICY_CONSTRAINTS_free(.POLICY_CONSTRAINTS* a); 879 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM POLICY_CONSTRAINTS_it; 880 881 .GENERAL_NAME* a2i_GENERAL_NAME(.GENERAL_NAME* out_, const (.X509V3_EXT_METHOD)* method, libressl_d.openssl.ossl_typ.X509V3_CTX* ctx, int gen_type, const (char)* value, int is_nc); 882 883 static assert(libressl_d.openssl.conf.HEADER_CONF_H); 884 .GENERAL_NAME* v2i_GENERAL_NAME(const (.X509V3_EXT_METHOD)* method, libressl_d.openssl.ossl_typ.X509V3_CTX* ctx, libressl_d.openssl.conf.CONF_VALUE* cnf); 885 .GENERAL_NAME* v2i_GENERAL_NAME_ex(.GENERAL_NAME* out_, const (.X509V3_EXT_METHOD)* method, libressl_d.openssl.ossl_typ.X509V3_CTX* ctx, libressl_d.openssl.conf.CONF_VALUE* cnf, int is_nc); 886 void X509V3_conf_free(libressl_d.openssl.conf.CONF_VALUE* val); 887 888 libressl_d.openssl.x509.X509_EXTENSION* X509V3_EXT_nconf_nid(libressl_d.openssl.ossl_typ.CONF* conf, libressl_d.openssl.ossl_typ.X509V3_CTX* ctx, int ext_nid, const (char)* value); 889 libressl_d.openssl.x509.X509_EXTENSION* X509V3_EXT_nconf(libressl_d.openssl.ossl_typ.CONF* conf, libressl_d.openssl.ossl_typ.X509V3_CTX* ctx, const (char)* name, const (char)* value); 890 int X509V3_EXT_add_nconf_sk(libressl_d.openssl.ossl_typ.CONF* conf, libressl_d.openssl.ossl_typ.X509V3_CTX* ctx, const (char)* section, libressl_d.openssl.x509.stack_st_X509_EXTENSION** sk); 891 int X509V3_EXT_add_nconf(libressl_d.openssl.ossl_typ.CONF* conf, libressl_d.openssl.ossl_typ.X509V3_CTX* ctx, const (char)* section, libressl_d.openssl.ossl_typ.X509* cert); 892 int X509V3_EXT_REQ_add_nconf(libressl_d.openssl.ossl_typ.CONF* conf, libressl_d.openssl.ossl_typ.X509V3_CTX* ctx, const (char)* section, libressl_d.openssl.x509.X509_REQ* req); 893 int X509V3_EXT_CRL_add_nconf(libressl_d.openssl.ossl_typ.CONF* conf, libressl_d.openssl.ossl_typ.X509V3_CTX* ctx, const (char)* section, libressl_d.openssl.ossl_typ.X509_CRL* crl); 894 895 libressl_d.openssl.x509.X509_EXTENSION* X509V3_EXT_conf_nid(libressl_d.openssl.conf.lhash_st_CONF_VALUE* conf, libressl_d.openssl.ossl_typ.X509V3_CTX* ctx, int ext_nid, const (char)* value); 896 libressl_d.openssl.x509.X509_EXTENSION* X509V3_EXT_conf(libressl_d.openssl.conf.lhash_st_CONF_VALUE* conf, libressl_d.openssl.ossl_typ.X509V3_CTX* ctx, const (char)* name, const (char)* value); 897 int X509V3_EXT_add_conf(libressl_d.openssl.conf.lhash_st_CONF_VALUE* conf, libressl_d.openssl.ossl_typ.X509V3_CTX* ctx, const (char)* section, libressl_d.openssl.ossl_typ.X509* cert); 898 int X509V3_EXT_REQ_add_conf(libressl_d.openssl.conf.lhash_st_CONF_VALUE* conf, libressl_d.openssl.ossl_typ.X509V3_CTX* ctx, const (char)* section, libressl_d.openssl.x509.X509_REQ* req); 899 int X509V3_EXT_CRL_add_conf(libressl_d.openssl.conf.lhash_st_CONF_VALUE* conf, libressl_d.openssl.ossl_typ.X509V3_CTX* ctx, const (char)* section, libressl_d.openssl.ossl_typ.X509_CRL* crl); 900 901 int X509V3_add_value_bool_nf(const (char)* name, int asn1_bool, libressl_d.openssl.conf.stack_st_CONF_VALUE** extlist); 902 int X509V3_get_value_bool(const (libressl_d.openssl.conf.CONF_VALUE)* value, int* asn1_bool); 903 int X509V3_get_value_int(const (libressl_d.openssl.conf.CONF_VALUE)* value, libressl_d.openssl.ossl_typ.ASN1_INTEGER** aint); 904 void X509V3_set_nconf(libressl_d.openssl.ossl_typ.X509V3_CTX* ctx, libressl_d.openssl.ossl_typ.CONF* conf); 905 void X509V3_set_conf_lhash(libressl_d.openssl.ossl_typ.X509V3_CTX* ctx, libressl_d.openssl.conf.lhash_st_CONF_VALUE* lhash); 906 907 char* X509V3_get_string(libressl_d.openssl.ossl_typ.X509V3_CTX* ctx, const (char)* name, const (char)* section); 908 libressl_d.openssl.conf.stack_st_CONF_VALUE* X509V3_get_section(libressl_d.openssl.ossl_typ.X509V3_CTX* ctx, const (char)* section); 909 void X509V3_string_free(libressl_d.openssl.ossl_typ.X509V3_CTX* ctx, char* str); 910 void X509V3_section_free(libressl_d.openssl.ossl_typ.X509V3_CTX* ctx, libressl_d.openssl.conf.stack_st_CONF_VALUE* section); 911 void X509V3_set_ctx(libressl_d.openssl.ossl_typ.X509V3_CTX* ctx, libressl_d.openssl.ossl_typ.X509* issuer, libressl_d.openssl.ossl_typ.X509* subject, libressl_d.openssl.x509.X509_REQ* req, libressl_d.openssl.ossl_typ.X509_CRL* crl, int flags); 912 913 int X509V3_add_value(const (char)* name, const (char)* value, libressl_d.openssl.conf.stack_st_CONF_VALUE** extlist); 914 int X509V3_add_value_uchar(const (char)* name, const (ubyte)* value, libressl_d.openssl.conf.stack_st_CONF_VALUE** extlist); 915 int X509V3_add_value_bool(const (char)* name, int asn1_bool, libressl_d.openssl.conf.stack_st_CONF_VALUE** extlist); 916 int X509V3_add_value_int(const (char)* name, const (libressl_d.openssl.ossl_typ.ASN1_INTEGER)* aint, libressl_d.openssl.conf.stack_st_CONF_VALUE** extlist); 917 char* i2s_ASN1_INTEGER(.X509V3_EXT_METHOD* meth, const (libressl_d.openssl.ossl_typ.ASN1_INTEGER)* aint); 918 libressl_d.openssl.ossl_typ.ASN1_INTEGER* s2i_ASN1_INTEGER(.X509V3_EXT_METHOD* meth, const (char)* value); 919 char* i2s_ASN1_ENUMERATED(.X509V3_EXT_METHOD* meth, const (libressl_d.openssl.ossl_typ.ASN1_ENUMERATED)* aint); 920 char* i2s_ASN1_ENUMERATED_TABLE(.X509V3_EXT_METHOD* meth, const (libressl_d.openssl.ossl_typ.ASN1_ENUMERATED)* aint); 921 int X509V3_EXT_add(.X509V3_EXT_METHOD* ext); 922 int X509V3_EXT_add_list(.X509V3_EXT_METHOD* extlist); 923 int X509V3_EXT_add_alias(int nid_to, int nid_from); 924 void X509V3_EXT_cleanup(); 925 926 const (.X509V3_EXT_METHOD)* X509V3_EXT_get(libressl_d.openssl.x509.X509_EXTENSION* ext); 927 const (.X509V3_EXT_METHOD)* X509V3_EXT_get_nid(int nid); 928 int X509V3_add_standard_extensions(); 929 libressl_d.openssl.conf.stack_st_CONF_VALUE* X509V3_parse_list(const (char)* line); 930 void* X509V3_EXT_d2i(libressl_d.openssl.x509.X509_EXTENSION* ext); 931 void* X509V3_get_d2i(const (libressl_d.openssl.x509.stack_st_X509_EXTENSION)* x, int nid, int* crit, int* idx); 932 933 libressl_d.openssl.x509.X509_EXTENSION* X509V3_EXT_i2d(int ext_nid, int crit, void* ext_struc); 934 int X509V3_add1_i2d(libressl_d.openssl.x509.stack_st_X509_EXTENSION** x, int nid, void* value, int crit, core.stdc.config.c_ulong flags); 935 936 char* hex_to_string(const (ubyte)* buffer, core.stdc.config.c_long len); 937 ubyte* string_to_hex(const (char)* str, core.stdc.config.c_long* len); 938 int name_cmp(const (char)* name, const (char)* cmp); 939 940 void X509V3_EXT_val_prn(libressl_d.openssl.bio.BIO* out_, libressl_d.openssl.conf.stack_st_CONF_VALUE* val, int indent, int ml); 941 int X509V3_EXT_print(libressl_d.openssl.bio.BIO* out_, libressl_d.openssl.x509.X509_EXTENSION* ext, core.stdc.config.c_ulong flag, int indent); 942 int X509V3_EXT_print_fp(libressl_d.compat.stdio.FILE* out_, libressl_d.openssl.x509.X509_EXTENSION* ext, int flag, int indent); 943 944 int X509V3_extensions_print(libressl_d.openssl.bio.BIO* out_, const (char)* title, const (libressl_d.openssl.x509.stack_st_X509_EXTENSION)* exts, core.stdc.config.c_ulong flag, int indent); 945 946 int X509_check_ca(libressl_d.openssl.ossl_typ.X509* x); 947 int X509_check_purpose(libressl_d.openssl.ossl_typ.X509* x, int id, int ca); 948 int X509_supported_extension(libressl_d.openssl.x509.X509_EXTENSION* ex); 949 int X509_PURPOSE_set(int* p, int purpose); 950 int X509_check_issued(libressl_d.openssl.ossl_typ.X509* issuer, libressl_d.openssl.ossl_typ.X509* subject); 951 int X509_check_akid(libressl_d.openssl.ossl_typ.X509* issuer, libressl_d.openssl.ossl_typ.AUTHORITY_KEYID* akid); 952 int X509_PURPOSE_get_count(); 953 .X509_PURPOSE* X509_PURPOSE_get0(int idx); 954 int X509_PURPOSE_get_by_sname(const (char)* sname); 955 int X509_PURPOSE_get_by_id(int id); 956 int X509_PURPOSE_add(int id, int trust, int flags, int function(const (.X509_PURPOSE)*, const (libressl_d.openssl.ossl_typ.X509)*, int) ck, const (char)* name, const (char)* sname, void* arg); 957 char* X509_PURPOSE_get0_name(const (.X509_PURPOSE)* xp); 958 char* X509_PURPOSE_get0_sname(const (.X509_PURPOSE)* xp); 959 int X509_PURPOSE_get_trust(const (.X509_PURPOSE)* xp); 960 void X509_PURPOSE_cleanup(); 961 int X509_PURPOSE_get_id(const (.X509_PURPOSE)*); 962 963 libressl_d.openssl.safestack.stack_st_OPENSSL_STRING* X509_get1_email(libressl_d.openssl.ossl_typ.X509* x); 964 libressl_d.openssl.safestack.stack_st_OPENSSL_STRING* X509_REQ_get1_email(libressl_d.openssl.x509.X509_REQ* x); 965 void X509_email_free(libressl_d.openssl.safestack.stack_st_OPENSSL_STRING* sk); 966 libressl_d.openssl.safestack.stack_st_OPENSSL_STRING* X509_get1_ocsp(libressl_d.openssl.ossl_typ.X509* x); 967 968 /* Flags for X509_check_* functions */ 969 /** 970 * Always check subject name for host match even if subject alt names present 971 */ 972 enum X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT = 0x01; 973 974 /** 975 * Disable wildcard matching for dnsName fields and common name. 976 */ 977 enum X509_CHECK_FLAG_NO_WILDCARDS = 0x02; 978 979 /** 980 * Wildcards must not match a partial label. 981 */ 982 enum X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS = 0x04; 983 984 /** 985 * Allow (non-partial) wildcards to match multiple labels. 986 */ 987 enum X509_CHECK_FLAG_MULTI_LABEL_WILDCARDS = 0x08; 988 989 /** 990 * Constraint verifier subdomain patterns to match a single labels. 991 */ 992 enum X509_CHECK_FLAG_SINGLE_LABEL_SUBDOMAINS = 0x10; 993 994 /** 995 * Disable checking the CN for a hostname, to support modern validation 996 */ 997 enum X509_CHECK_FLAG_NEVER_CHECK_SUBJECT = 0x20; 998 999 /** 1000 * Match reference identifiers starting with "." to any sub-domain. 1001 * This is a non-public flag, turned on implicitly when the subject 1002 * reference identity is a DNS name. 1003 */ 1004 enum _X509_CHECK_FLAG_DOT_SUBDOMAINS = 0x8000; 1005 1006 int X509_check_host(libressl_d.openssl.ossl_typ.X509* x, const (char)* chk, size_t chklen, uint flags, char** peername); 1007 int X509_check_email(libressl_d.openssl.ossl_typ.X509* x, const (char)* chk, size_t chklen, uint flags); 1008 int X509_check_ip(libressl_d.openssl.ossl_typ.X509* x, const (ubyte)* chk, size_t chklen, uint flags); 1009 int X509_check_ip_asc(libressl_d.openssl.ossl_typ.X509* x, const (char)* ipasc, uint flags); 1010 1011 libressl_d.openssl.ossl_typ.ASN1_OCTET_STRING* a2i_IPADDRESS(const (char)* ipasc); 1012 libressl_d.openssl.ossl_typ.ASN1_OCTET_STRING* a2i_IPADDRESS_NC(const (char)* ipasc); 1013 int a2i_ipadd(ubyte* ipout, const (char)* ipasc); 1014 int X509V3_NAME_from_section(libressl_d.openssl.ossl_typ.X509_NAME* nm, libressl_d.openssl.conf.stack_st_CONF_VALUE* dn_sk, core.stdc.config.c_ulong chtype); 1015 1016 void X509_POLICY_NODE_print(libressl_d.openssl.bio.BIO* out_, libressl_d.openssl.ossl_typ.X509_POLICY_NODE* node, int indent); 1017 1018 //DECLARE_STACK_OF(X509_POLICY_NODE) 1019 struct stack_st_X509_POLICY_NODE 1020 { 1021 libressl_d.openssl.stack._STACK stack; 1022 } 1023 1024 version (LIBRESSL_INTERNAL) { 1025 version (OPENSSL_NO_RFC3779) { 1026 } else { 1027 struct ASRange_st 1028 { 1029 libressl_d.openssl.ossl_typ.ASN1_INTEGER* min; 1030 libressl_d.openssl.ossl_typ.ASN1_INTEGER* max; 1031 } 1032 1033 alias ASRange = .ASRange_st; 1034 1035 enum ASIdOrRange_id = 0; 1036 enum ASIdOrRange_range = 1; 1037 1038 struct ASIdOrRange_st 1039 { 1040 int type; 1041 1042 union u_ 1043 { 1044 libressl_d.openssl.ossl_typ.ASN1_INTEGER* id; 1045 .ASRange* range; 1046 } 1047 1048 u_ u; 1049 } 1050 1051 alias ASIdOrRange = .ASIdOrRange_st; 1052 1053 //DECLARE_STACK_OF(ASIdOrRange) 1054 struct stack_st_ASIdOrRange 1055 { 1056 libressl_d.openssl.stack._STACK stack; 1057 } 1058 1059 alias ASIdOrRanges = .stack_st_ASIdOrRange; 1060 1061 enum ASIdentifierChoice_inherit = 0; 1062 enum ASIdentifierChoice_asIdsOrRanges = 1; 1063 1064 struct ASIdentifierChoice_st 1065 { 1066 int type; 1067 1068 union u_ 1069 { 1070 libressl_d.openssl.ossl_typ.ASN1_NULL* inherit; 1071 .ASIdOrRanges* asIdsOrRanges; 1072 } 1073 1074 u_ u; 1075 } 1076 1077 alias ASIdentifierChoice = .ASIdentifierChoice_st; 1078 1079 struct ASIdentifiers_st 1080 { 1081 .ASIdentifierChoice* asnum; 1082 .ASIdentifierChoice* rdi; 1083 } 1084 1085 alias ASIdentifiers = .ASIdentifiers_st; 1086 1087 .ASRange* ASRange_new(); 1088 void ASRange_free(.ASRange* a); 1089 .ASRange* d2i_ASRange(.ASRange** a, const (ubyte)** in_, core.stdc.config.c_long len); 1090 int i2d_ASRange(.ASRange* a, ubyte** out_); 1091 extern __gshared const ASN1_ITEM ASRange_it; 1092 1093 .ASIdOrRange* ASIdOrRange_new(); 1094 void ASIdOrRange_free(.ASIdOrRange* a); 1095 .ASIdOrRange* d2i_ASIdOrRange(.ASIdOrRange** a, const (ubyte)** in_, core.stdc.config.c_long len); 1096 int i2d_ASIdOrRange(.ASIdOrRange* a, ubyte** out_); 1097 extern __gshared const ASN1_ITEM ASIdOrRange_it; 1098 1099 .ASIdentifierChoice* ASIdentifierChoice_new(); 1100 void ASIdentifierChoice_free(.ASIdentifierChoice* a); 1101 .ASIdentifierChoice* d2i_ASIdentifierChoice(.ASIdentifierChoice** a, const (ubyte)** in_, core.stdc.config.c_long len); 1102 int i2d_ASIdentifierChoice(.ASIdentifierChoice* a, ubyte** out_); 1103 extern __gshared const ASN1_ITEM ASIdentifierChoice_it; 1104 1105 .ASIdentifiers* ASIdentifiers_new(); 1106 void ASIdentifiers_free(.ASIdentifiers* a); 1107 .ASIdentifiers* d2i_ASIdentifiers(.ASIdentifiers** a, const (ubyte)** in_, core.stdc.config.c_long len); 1108 int i2d_ASIdentifiers(.ASIdentifiers* a, ubyte** out_); 1109 extern __gshared const ASN1_ITEM ASIdentifiers_it; 1110 1111 struct IPAddressRange_st 1112 { 1113 libressl_d.openssl.ossl_typ.ASN1_BIT_STRING* min; 1114 libressl_d.openssl.ossl_typ.ASN1_BIT_STRING* max; 1115 } 1116 1117 alias IPAddressRange = .IPAddressRange_st; 1118 1119 enum IPAddressOrRange_addressPrefix = 0; 1120 enum IPAddressOrRange_addressRange = 1; 1121 1122 struct IPAddressOrRange_st 1123 { 1124 int type; 1125 1126 union u_ 1127 { 1128 libressl_d.openssl.ossl_typ.ASN1_BIT_STRING* addressPrefix; 1129 .IPAddressRange* addressRange; 1130 } 1131 1132 u_ u; 1133 } 1134 1135 alias IPAddressOrRange = .IPAddressOrRange_st; 1136 1137 //DECLARE_STACK_OF(IPAddressOrRange) 1138 struct stack_st_IPAddressOrRange 1139 { 1140 libressl_d.openssl.stack._STACK stack; 1141 } 1142 1143 alias IPAddressOrRanges = .stack_st_IPAddressOrRange; 1144 1145 enum IPAddressChoice_inherit = 0; 1146 enum IPAddressChoice_addressesOrRanges = 1; 1147 1148 struct IPAddressChoice_st 1149 { 1150 int type; 1151 1152 union u_ 1153 { 1154 libressl_d.openssl.ossl_typ.ASN1_NULL* inherit; 1155 .IPAddressOrRanges* addressesOrRanges; 1156 } 1157 1158 u_ u; 1159 } 1160 1161 alias IPAddressChoice = .IPAddressChoice_st; 1162 1163 struct IPAddressFamily_st 1164 { 1165 libressl_d.openssl.ossl_typ.ASN1_OCTET_STRING* addressFamily; 1166 .IPAddressChoice* ipAddressChoice; 1167 } 1168 1169 alias IPAddressFamily = .IPAddressFamily_st; 1170 1171 //DECLARE_STACK_OF(IPAddressFamily) 1172 struct stack_st_IPAddressFamily 1173 { 1174 libressl_d.openssl.stack._STACK stack; 1175 } 1176 1177 alias IPAddrBlocks = .stack_st_IPAddressFamily; 1178 1179 .IPAddressRange* IPAddressRange_new(); 1180 void IPAddressRange_free(.IPAddressRange* a); 1181 .IPAddressRange* d2i_IPAddressRange(.IPAddressRange** a, const (ubyte)** in_, core.stdc.config.c_long len); 1182 int i2d_IPAddressRange(.IPAddressRange* a, ubyte** out_); 1183 extern __gshared const ASN1_ITEM IPAddressRange_it; 1184 1185 .IPAddressOrRange* IPAddressOrRange_new(); 1186 void IPAddressOrRange_free(.IPAddressOrRange* a); 1187 .IPAddressOrRange* d2i_IPAddressOrRange(.IPAddressOrRange** a, const (ubyte)** in_, core.stdc.config.c_long len); 1188 int i2d_IPAddressOrRange(.IPAddressOrRange* a, ubyte** out_); 1189 extern __gshared const ASN1_ITEM IPAddressOrRange_it; 1190 1191 .IPAddressChoice* IPAddressChoice_new(); 1192 void IPAddressChoice_free(.IPAddressChoice* a); 1193 .IPAddressChoice* d2i_IPAddressChoice(.IPAddressChoice** a, const (ubyte)** in_, core.stdc.config.c_long len); 1194 int i2d_IPAddressChoice(.IPAddressChoice* a, ubyte** out_); 1195 extern __gshared const ASN1_ITEM IPAddressChoice_it; 1196 1197 .IPAddressFamily* IPAddressFamily_new(); 1198 void IPAddressFamily_free(.IPAddressFamily* a); 1199 .IPAddressFamily* d2i_IPAddressFamily(.IPAddressFamily** a, const (ubyte)** in_, core.stdc.config.c_long len); 1200 int i2d_IPAddressFamily(.IPAddressFamily* a, ubyte** out_); 1201 extern __gshared const ASN1_ITEM IPAddressFamily_it; 1202 1203 /* 1204 * API tag for elements of the ASIdentifer SEQUENCE. 1205 */ 1206 enum V3_ASID_ASNUM = 0; 1207 enum V3_ASID_RDI = 1; 1208 1209 /* 1210 * AFI values, assigned by IANA. It'd be nice to make the AFI 1211 * handling code totally generic, but there are too many little things 1212 * that would need to be defined for other address families for it to 1213 * be worth the trouble. 1214 */ 1215 enum IANA_AFI_IPV4 = 1; 1216 enum IANA_AFI_IPV6 = 2; 1217 1218 /* 1219 * Utilities to construct and extract values from RFC3779 extensions, 1220 * since some of the encodings (particularly for IP address prefixes 1221 * and ranges) are a bit tedious to work with directly. 1222 */ 1223 int X509v3_asid_add_inherit(.ASIdentifiers* asid, int which); 1224 int X509v3_asid_add_id_or_range(.ASIdentifiers* asid, int which, libressl_d.openssl.ossl_typ.ASN1_INTEGER* min, libressl_d.openssl.ossl_typ.ASN1_INTEGER* max); 1225 int X509v3_addr_add_inherit(.IPAddrBlocks* addr, const uint afi, const (uint)* safi); 1226 int X509v3_addr_add_prefix(.IPAddrBlocks* addr, const uint afi, const (uint)* safi, ubyte* a, const int prefixlen); 1227 int X509v3_addr_add_range(.IPAddrBlocks* addr, const uint afi, const (uint)* safi, ubyte* min, ubyte* max); 1228 uint X509v3_addr_get_afi(const (.IPAddressFamily)* f); 1229 int X509v3_addr_get_range(.IPAddressOrRange* aor, const uint afi, ubyte* min, ubyte* max, const int length); 1230 1231 /* 1232 * Canonical forms. 1233 */ 1234 int X509v3_asid_is_canonical(.ASIdentifiers* asid); 1235 int X509v3_addr_is_canonical(.IPAddrBlocks* addr); 1236 int X509v3_asid_canonize(.ASIdentifiers* asid); 1237 int X509v3_addr_canonize(.IPAddrBlocks* addr); 1238 1239 /* 1240 * Tests for inheritance and containment. 1241 */ 1242 int X509v3_asid_inherits(.ASIdentifiers* asid); 1243 int X509v3_addr_inherits(.IPAddrBlocks* addr); 1244 int X509v3_asid_subset(.ASIdentifiers* a, .ASIdentifiers* b); 1245 int X509v3_addr_subset(.IPAddrBlocks* a, .IPAddrBlocks* b); 1246 1247 /* 1248 * Check whether RFC 3779 extensions nest properly in chains. 1249 */ 1250 int X509v3_asid_validate_path(libressl_d.openssl.ossl_typ.X509_STORE_CTX*); 1251 int X509v3_addr_validate_path(libressl_d.openssl.ossl_typ.X509_STORE_CTX*); 1252 int X509v3_asid_validate_resource_set(libressl_d.openssl.x509.stack_st_X509* chain, .ASIdentifiers* ext, int allow_inheritance); 1253 int X509v3_addr_validate_resource_set(libressl_d.openssl.x509.stack_st_X509* chain, .IPAddrBlocks* ext, int allow_inheritance); 1254 } 1255 } 1256 1257 /* BEGIN ERROR CODES */ 1258 /** 1259 * The following lines are auto generated by the script mkerr.pl. Any changes 1260 * made after this point may be overwritten when the script is next run. 1261 */ 1262 void ERR_load_X509V3_strings(); 1263 1264 /* Error codes for the X509V3 functions. */ 1265 1266 /* Function codes. */ 1267 enum X509V3_F_A2I_GENERAL_NAME = 164; 1268 enum X509V3_F_ASIDENTIFIERCHOICE_CANONIZE = 161; 1269 enum X509V3_F_ASIDENTIFIERCHOICE_IS_CANONICAL = 162; 1270 enum X509V3_F_COPY_EMAIL = 122; 1271 enum X509V3_F_COPY_ISSUER = 123; 1272 enum X509V3_F_DO_DIRNAME = 144; 1273 enum X509V3_F_DO_EXT_CONF = 124; 1274 enum X509V3_F_DO_EXT_I2D = 135; 1275 enum X509V3_F_DO_EXT_NCONF = 151; 1276 enum X509V3_F_DO_I2V_NAME_CONSTRAINTS = 148; 1277 enum X509V3_F_GNAMES_FROM_SECTNAME = 156; 1278 enum X509V3_F_HEX_TO_STRING = 111; 1279 enum X509V3_F_I2S_ASN1_ENUMERATED = 121; 1280 enum X509V3_F_I2S_ASN1_IA5STRING = 149; 1281 enum X509V3_F_I2S_ASN1_INTEGER = 120; 1282 enum X509V3_F_I2V_AUTHORITY_INFO_ACCESS = 138; 1283 enum X509V3_F_NOTICE_SECTION = 132; 1284 enum X509V3_F_NREF_NOS = 133; 1285 enum X509V3_F_POLICY_SECTION = 131; 1286 enum X509V3_F_PROCESS_PCI_VALUE = 150; 1287 enum X509V3_F_R2I_CERTPOL = 130; 1288 enum X509V3_F_R2I_PCI = 155; 1289 enum X509V3_F_S2I_ASN1_IA5STRING = 100; 1290 enum X509V3_F_S2I_ASN1_INTEGER = 108; 1291 enum X509V3_F_S2I_ASN1_OCTET_STRING = 112; 1292 enum X509V3_F_S2I_ASN1_SKEY_ID = 114; 1293 enum X509V3_F_S2I_SKEY_ID = 115; 1294 enum X509V3_F_SET_DIST_POINT_NAME = 158; 1295 enum X509V3_F_STRING_TO_HEX = 113; 1296 enum X509V3_F_SXNET_ADD_ID_ASC = 125; 1297 enum X509V3_F_SXNET_ADD_ID_INTEGER = 126; 1298 enum X509V3_F_SXNET_ADD_ID_ULONG = 127; 1299 enum X509V3_F_SXNET_GET_ID_ASC = 128; 1300 enum X509V3_F_SXNET_GET_ID_ULONG = 129; 1301 enum X509V3_F_V2I_ASIDENTIFIERS = 163; 1302 enum X509V3_F_V2I_ASN1_BIT_STRING = 101; 1303 enum X509V3_F_V2I_AUTHORITY_INFO_ACCESS = 139; 1304 enum X509V3_F_V2I_AUTHORITY_KEYID = 119; 1305 enum X509V3_F_V2I_BASIC_CONSTRAINTS = 102; 1306 enum X509V3_F_V2I_CRLD = 134; 1307 enum X509V3_F_V2I_EXTENDED_KEY_USAGE = 103; 1308 enum X509V3_F_V2I_GENERAL_NAMES = 118; 1309 enum X509V3_F_V2I_GENERAL_NAME_EX = 117; 1310 enum X509V3_F_V2I_IDP = 157; 1311 enum X509V3_F_V2I_IPADDRBLOCKS = 159; 1312 enum X509V3_F_V2I_ISSUER_ALT = 153; 1313 enum X509V3_F_V2I_NAME_CONSTRAINTS = 147; 1314 enum X509V3_F_V2I_POLICY_CONSTRAINTS = 146; 1315 enum X509V3_F_V2I_POLICY_MAPPINGS = 145; 1316 enum X509V3_F_V2I_SUBJECT_ALT = 154; 1317 enum X509V3_F_V3_ADDR_VALIDATE_PATH_INTERNAL = 160; 1318 enum X509V3_F_V3_GENERIC_EXTENSION = 116; 1319 enum X509V3_F_X509V3_ADD1_I2D = 140; 1320 enum X509V3_F_X509V3_ADD_VALUE = 105; 1321 enum X509V3_F_X509V3_EXT_ADD = 104; 1322 enum X509V3_F_X509V3_EXT_ADD_ALIAS = 106; 1323 enum X509V3_F_X509V3_EXT_CONF = 107; 1324 enum X509V3_F_X509V3_EXT_I2D = 136; 1325 enum X509V3_F_X509V3_EXT_NCONF = 152; 1326 enum X509V3_F_X509V3_GET_SECTION = 142; 1327 enum X509V3_F_X509V3_GET_STRING = 143; 1328 enum X509V3_F_X509V3_GET_VALUE_BOOL = 110; 1329 enum X509V3_F_X509V3_PARSE_LIST = 109; 1330 enum X509V3_F_X509_PURPOSE_ADD = 137; 1331 enum X509V3_F_X509_PURPOSE_SET = 141; 1332 1333 /* Reason codes. */ 1334 enum X509V3_R_BAD_IP_ADDRESS = 118; 1335 enum X509V3_R_BAD_OBJECT = 119; 1336 enum X509V3_R_BN_DEC2BN_ERROR = 100; 1337 enum X509V3_R_BN_TO_ASN1_INTEGER_ERROR = 101; 1338 enum X509V3_R_DIRNAME_ERROR = 149; 1339 enum X509V3_R_DISTPOINT_ALREADY_SET = 160; 1340 enum X509V3_R_DUPLICATE_ZONE_ID = 133; 1341 enum X509V3_R_ERROR_CONVERTING_ZONE = 131; 1342 enum X509V3_R_ERROR_CREATING_EXTENSION = 144; 1343 enum X509V3_R_ERROR_IN_EXTENSION = 128; 1344 enum X509V3_R_EXPECTED_A_SECTION_NAME = 137; 1345 enum X509V3_R_EXTENSION_EXISTS = 145; 1346 enum X509V3_R_EXTENSION_NAME_ERROR = 115; 1347 enum X509V3_R_EXTENSION_NOT_FOUND = 102; 1348 enum X509V3_R_EXTENSION_SETTING_NOT_SUPPORTED = 103; 1349 enum X509V3_R_EXTENSION_VALUE_ERROR = 116; 1350 enum X509V3_R_ILLEGAL_EMPTY_EXTENSION = 151; 1351 enum X509V3_R_ILLEGAL_HEX_DIGIT = 113; 1352 enum X509V3_R_INCORRECT_POLICY_SYNTAX_TAG = 152; 1353 enum X509V3_R_INVALID_MULTIPLE_RDNS = 161; 1354 enum X509V3_R_INVALID_ASNUMBER = 162; 1355 enum X509V3_R_INVALID_ASRANGE = 163; 1356 enum X509V3_R_INVALID_BOOLEAN_STRING = 104; 1357 enum X509V3_R_INVALID_EXTENSION_STRING = 105; 1358 enum X509V3_R_INVALID_INHERITANCE = 165; 1359 enum X509V3_R_INVALID_IPADDRESS = 166; 1360 enum X509V3_R_INVALID_NAME = 106; 1361 enum X509V3_R_INVALID_NULL_ARGUMENT = 107; 1362 enum X509V3_R_INVALID_NULL_NAME = 108; 1363 enum X509V3_R_INVALID_NULL_VALUE = 109; 1364 enum X509V3_R_INVALID_NUMBER = 140; 1365 enum X509V3_R_INVALID_NUMBERS = 141; 1366 enum X509V3_R_INVALID_OBJECT_IDENTIFIER = 110; 1367 enum X509V3_R_INVALID_OPTION = 138; 1368 enum X509V3_R_INVALID_POLICY_IDENTIFIER = 134; 1369 enum X509V3_R_INVALID_PROXY_POLICY_SETTING = 153; 1370 enum X509V3_R_INVALID_PURPOSE = 146; 1371 enum X509V3_R_INVALID_SAFI = 164; 1372 enum X509V3_R_INVALID_SECTION = 135; 1373 enum X509V3_R_INVALID_SYNTAX = 143; 1374 enum X509V3_R_ISSUER_DECODE_ERROR = 126; 1375 enum X509V3_R_MISSING_VALUE = 124; 1376 enum X509V3_R_NEED_ORGANIZATION_AND_NUMBERS = 142; 1377 enum X509V3_R_NO_CONFIG_DATABASE = 136; 1378 enum X509V3_R_NO_ISSUER_CERTIFICATE = 121; 1379 enum X509V3_R_NO_ISSUER_DETAILS = 127; 1380 enum X509V3_R_NO_POLICY_IDENTIFIER = 139; 1381 enum X509V3_R_NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED = 154; 1382 enum X509V3_R_NO_PUBLIC_KEY = 114; 1383 enum X509V3_R_NO_SUBJECT_DETAILS = 125; 1384 enum X509V3_R_ODD_NUMBER_OF_DIGITS = 112; 1385 enum X509V3_R_OPERATION_NOT_DEFINED = 148; 1386 enum X509V3_R_OTHERNAME_ERROR = 147; 1387 enum X509V3_R_POLICY_LANGUAGE_ALREADY_DEFINED = 155; 1388 enum X509V3_R_POLICY_PATH_LENGTH = 156; 1389 enum X509V3_R_POLICY_PATH_LENGTH_ALREADY_DEFINED = 157; 1390 enum X509V3_R_POLICY_SYNTAX_NOT_CURRENTLY_SUPPORTED = 158; 1391 enum X509V3_R_POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY = 159; 1392 enum X509V3_R_SECTION_NOT_FOUND = 150; 1393 enum X509V3_R_UNABLE_TO_GET_ISSUER_DETAILS = 122; 1394 enum X509V3_R_UNABLE_TO_GET_ISSUER_KEYID = 123; 1395 enum X509V3_R_UNKNOWN_BIT_STRING_ARGUMENT = 111; 1396 enum X509V3_R_UNKNOWN_EXTENSION = 129; 1397 enum X509V3_R_UNKNOWN_EXTENSION_NAME = 130; 1398 enum X509V3_R_UNKNOWN_OPTION = 120; 1399 enum X509V3_R_UNSUPPORTED_OPTION = 117; 1400 enum X509V3_R_UNSUPPORTED_TYPE = 167; 1401 enum X509V3_R_USER_TOO_LONG = 132;