1 /* $OpenBSD: x509.h,v 1.76 2021/09/02 12:41:44 job Exp $ */ 2 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 3 * All rights reserved. 4 * 5 * This package is an SSL implementation written 6 * by Eric Young (eay@cryptsoft.com). 7 * The implementation was written so as to conform with Netscapes SSL. 8 * 9 * This library is free for commercial and non-commercial use as core.stdc.config.c_long as 10 * the following conditions are aheared to. The following conditions 11 * apply to all code found in this distribution, be it the RC4, RSA, 12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation 13 * included with this distribution is covered by the same copyright terms 14 * except that the holder is Tim Hudson (tjh@cryptsoft.com). 15 * 16 * Copyright remains Eric Young's, and as such any Copyright notices in 17 * the code are not to be removed. 18 * If this package is used in a product, Eric Young should be given attribution 19 * as the author of the parts of the library used. 20 * This can be in the form of a textual message at program startup or 21 * in documentation (online or textual) provided with the package. 22 * 23 * Redistribution and use in source and binary forms, with or without 24 * modification, are permitted provided that the following conditions 25 * are met: 26 * 1. Redistributions of source code must retain the copyright 27 * notice, this list of conditions and the following disclaimer. 28 * 2. Redistributions in binary form must reproduce the above copyright 29 * notice, this list of conditions and the following disclaimer in the 30 * documentation and/or other materials provided with the distribution. 31 * 3. All advertising materials mentioning features or use of this software 32 * must display the following acknowledgement: 33 * "This product includes cryptographic software written by 34 * Eric Young (eay@cryptsoft.com)" 35 * The word 'cryptographic' can be left out if the rouines from the library 36 * being used are not cryptographic related :-). 37 * 4. If you include any Windows specific code (or a derivative thereof) from 38 * the apps directory (application code) you must include an acknowledgement: 39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 40 * 41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 51 * SUCH DAMAGE. 52 * 53 * The licence and distribution terms for any publically available version or 54 * derivative of this code cannot be changed. i.e. this code cannot simply be 55 * copied and put under another distribution licence 56 * [including the GNU Public Licence.] 57 */ 58 /* ==================================================================== 59 * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. 60 * ECDH support in OpenSSL originally developed by 61 * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project. 62 */ 63 module libressl_d.openssl.x509; 64 65 66 private static import core.stdc.config; 67 private static import libressl_d.compat.stdio; 68 private static import libressl_d.compat.time; 69 private static import libressl_d.openssl.x509v3; 70 public import libressl_d.openssl.asn1; 71 public import libressl_d.openssl.bio; 72 public import libressl_d.openssl.ec; 73 public import libressl_d.openssl.evp; 74 public import libressl_d.openssl.opensslconf; 75 public import libressl_d.openssl.ossl_typ; 76 public import libressl_d.openssl.pkcs7; 77 public import libressl_d.openssl.safestack; 78 public import libressl_d.openssl.sha; 79 public import libressl_d.openssl.stack; 80 public import libressl_d.openssl.x509_vfy; 81 82 enum HEADER_X509_H = true; 83 84 version (OPENSSL_NO_BUFFER) { 85 } else { 86 public import libressl_d.openssl.buffer; 87 } 88 89 version (OPENSSL_NO_EVP) { 90 } else { 91 public import libressl_d.openssl.evp; 92 } 93 94 version (OPENSSL_NO_BIO) { 95 } else { 96 public import libressl_d.openssl.bio; 97 } 98 99 version (OPENSSL_NO_EC) { 100 } else { 101 public import libressl_d.openssl.ec; 102 } 103 104 version (OPENSSL_NO_ECDSA) { 105 } else { 106 public import libressl_d.openssl.ecdsa; 107 } 108 109 version (OPENSSL_NO_ECDH) { 110 } else { 111 public import libressl_d.openssl.ecdh; 112 } 113 114 version (OPENSSL_NO_DEPRECATED) { 115 } else { 116 version (OPENSSL_NO_RSA) { 117 } else { 118 public import libressl_d.openssl.rsa; 119 } 120 121 version (OPENSSL_NO_DSA) { 122 } else { 123 public import libressl_d.openssl.dsa; 124 } 125 126 version (OPENSSL_NO_DH) { 127 } else { 128 public import libressl_d.openssl.dh; 129 } 130 } 131 132 version (OPENSSL_NO_SHA) { 133 } else { 134 public import libressl_d.openssl.sha; 135 } 136 137 extern (C): 138 nothrow @nogc: 139 140 //#if defined(_WIN32) && defined(__WINCRYPT_H__) 141 version (LIBRESSL_INTERNAL) { 142 } else { 143 //pragma(msg, "Warning, overriding WinCrypt defines"); 144 } 145 146 //#undef libressl_d.openssl.ossl_typ.X509_NAME 147 //#undef X509_CERT_PAIR 148 //#undef X509_EXTENSIONS 149 //#endif 150 151 enum X509_FILETYPE_PEM = 1; 152 enum X509_FILETYPE_ASN1 = 2; 153 enum X509_FILETYPE_DEFAULT = 3; 154 155 enum X509v3_KU_DIGITAL_SIGNATURE = 0x0080; 156 enum X509v3_KU_NON_REPUDIATION = 0x0040; 157 enum X509v3_KU_KEY_ENCIPHERMENT = 0x0020; 158 enum X509v3_KU_DATA_ENCIPHERMENT = 0x0010; 159 enum X509v3_KU_KEY_AGREEMENT = 0x0008; 160 enum X509v3_KU_KEY_CERT_SIGN = 0x0004; 161 enum X509v3_KU_CRL_SIGN = 0x0002; 162 enum X509v3_KU_ENCIPHER_ONLY = 0x0001; 163 enum X509v3_KU_DECIPHER_ONLY = 0x8000; 164 enum X509v3_KU_UNDEF = 0xFFFF; 165 166 struct X509_objects_st 167 { 168 int nid; 169 int function() a2i; 170 int function() i2a; 171 } 172 173 alias X509_OBJECTS = .X509_objects_st; 174 175 struct X509_algor_st 176 { 177 libressl_d.openssl.asn1.ASN1_OBJECT* algorithm; 178 libressl_d.openssl.asn1.ASN1_TYPE* parameter; 179 } 180 181 alias X509_ALGORS = libressl_d.openssl.asn1.stack_st_X509_ALGOR; 182 183 struct X509_val_st 184 { 185 libressl_d.openssl.ossl_typ.ASN1_TIME* notBefore; 186 libressl_d.openssl.ossl_typ.ASN1_TIME* notAfter; 187 } 188 189 alias X509_VAL = .X509_val_st; 190 191 struct X509_pubkey_st 192 { 193 libressl_d.openssl.ossl_typ.X509_ALGOR* algor; 194 libressl_d.openssl.ossl_typ.ASN1_BIT_STRING* public_key; 195 libressl_d.openssl.ossl_typ.EVP_PKEY* pkey; 196 } 197 198 struct X509_sig_st 199 { 200 libressl_d.openssl.ossl_typ.X509_ALGOR* algor; 201 libressl_d.openssl.ossl_typ.ASN1_OCTET_STRING* digest; 202 } 203 204 alias X509_SIG = .X509_sig_st; 205 206 struct X509_name_entry_st 207 { 208 libressl_d.openssl.asn1.ASN1_OBJECT* object; 209 libressl_d.openssl.ossl_typ.ASN1_STRING* value; 210 int set; 211 212 /** 213 * temp variable 214 */ 215 int size; 216 } 217 218 alias X509_NAME_ENTRY = .X509_name_entry_st; 219 220 //DECLARE_STACK_OF(X509_NAME_ENTRY) 221 struct stack_st_X509_NAME_ENTRY 222 { 223 libressl_d.openssl.stack._STACK stack; 224 } 225 226 /** 227 * we always keep X509_NAMEs in 2 forms. 228 */ 229 struct X509_name_st 230 { 231 .stack_st_X509_NAME_ENTRY* entries; 232 233 /** 234 * true if 'bytes' needs to be built 235 */ 236 int modified; 237 238 version (OPENSSL_NO_BUFFER) { 239 char* bytes; 240 } else { 241 libressl_d.openssl.ossl_typ.BUF_MEM* bytes; 242 } 243 244 /* core.stdc.config.c_ulong hash; Keep the hash around for lookups */ 245 ubyte* canon_enc; 246 int canon_enclen; 247 } 248 249 //DECLARE_STACK_OF(X509_NAME) 250 struct stack_st_X509_NAME 251 { 252 libressl_d.openssl.stack._STACK stack; 253 } 254 255 enum X509_EX_V_NETSCAPE_HACK = 0x8000; 256 enum X509_EX_V_INIT = 0x0001; 257 258 struct X509_extension_st 259 { 260 libressl_d.openssl.asn1.ASN1_OBJECT* object; 261 libressl_d.openssl.ossl_typ.ASN1_BOOLEAN critical; 262 libressl_d.openssl.ossl_typ.ASN1_OCTET_STRING* value; 263 } 264 265 alias X509_EXTENSION = .X509_extension_st; 266 267 alias X509_EXTENSIONS = .stack_st_X509_EXTENSION; 268 269 //DECLARE_STACK_OF(X509_EXTENSION) 270 struct stack_st_X509_EXTENSION 271 { 272 libressl_d.openssl.stack._STACK stack; 273 } 274 275 /** 276 * a sequence of these are used 277 */ 278 struct x509_attributes_st 279 { 280 libressl_d.openssl.asn1.ASN1_OBJECT* object; 281 282 /** 283 * 0 for a set, 1 for a single item (which is wrong) 284 */ 285 int single; 286 287 union value_ 288 { 289 char* ptr_; 290 291 /** 292 * 0 293 */ 294 libressl_d.openssl.asn1.stack_st_ASN1_TYPE* set; 295 296 /** 297 * 1 298 */ 299 libressl_d.openssl.asn1.ASN1_TYPE* single; 300 } 301 302 value_ value; 303 } 304 305 alias X509_ATTRIBUTE = .x509_attributes_st; 306 307 //DECLARE_STACK_OF(X509_ATTRIBUTE) 308 struct stack_st_X509_ATTRIBUTE 309 { 310 libressl_d.openssl.stack._STACK stack; 311 } 312 313 struct X509_req_info_st 314 { 315 libressl_d.openssl.asn1.ASN1_ENCODING enc; 316 libressl_d.openssl.ossl_typ.ASN1_INTEGER* version_; 317 libressl_d.openssl.ossl_typ.X509_NAME* subject; 318 libressl_d.openssl.ossl_typ.X509_PUBKEY* pubkey; 319 /* d=2 hl=2 l= 0 cons: cont: 00 */ 320 321 /** 322 * [ 0 ] 323 */ 324 .stack_st_X509_ATTRIBUTE* attributes; 325 } 326 327 alias X509_REQ_INFO = .X509_req_info_st; 328 329 struct X509_req_st 330 { 331 .X509_REQ_INFO* req_info; 332 libressl_d.openssl.ossl_typ.X509_ALGOR* sig_alg; 333 libressl_d.openssl.ossl_typ.ASN1_BIT_STRING* signature; 334 int references; 335 } 336 337 alias X509_REQ = .X509_req_st; 338 339 struct x509_cinf_st 340 { 341 /** 342 * [ 0 ] default of v1 343 */ 344 libressl_d.openssl.ossl_typ.ASN1_INTEGER* version_; 345 346 libressl_d.openssl.ossl_typ.ASN1_INTEGER* serialNumber; 347 libressl_d.openssl.ossl_typ.X509_ALGOR* signature; 348 libressl_d.openssl.ossl_typ.X509_NAME* issuer; 349 .X509_VAL* validity; 350 libressl_d.openssl.ossl_typ.X509_NAME* subject; 351 libressl_d.openssl.ossl_typ.X509_PUBKEY* key; 352 353 /** 354 * [ 1 ] optional in v2 355 */ 356 libressl_d.openssl.ossl_typ.ASN1_BIT_STRING* issuerUID; 357 358 /** 359 * [ 2 ] optional in v2 360 */ 361 libressl_d.openssl.ossl_typ.ASN1_BIT_STRING* subjectUID; 362 363 /** 364 * [ 3 ] optional in v3 365 */ 366 .stack_st_X509_EXTENSION* extensions; 367 368 libressl_d.openssl.asn1.ASN1_ENCODING enc; 369 } 370 371 alias X509_CINF = .x509_cinf_st; 372 373 /* 374 * This stuff is certificate "auxiliary info" 375 * it contains details which are useful in certificate 376 * stores and databases. When used this is tagged onto 377 * the end of the certificate itself 378 */ 379 380 struct x509_cert_aux_st 381 { 382 /** 383 * trusted uses 384 */ 385 libressl_d.openssl.asn1.stack_st_ASN1_OBJECT* trust; 386 387 /** 388 * rejected uses 389 */ 390 libressl_d.openssl.asn1.stack_st_ASN1_OBJECT* reject; 391 392 /** 393 * "friendly name" 394 */ 395 libressl_d.openssl.ossl_typ.ASN1_UTF8STRING* alias_; 396 397 /** 398 * key id of private key 399 */ 400 libressl_d.openssl.ossl_typ.ASN1_OCTET_STRING* keyid; 401 402 /** 403 * other unspecified info 404 */ 405 libressl_d.openssl.asn1.stack_st_X509_ALGOR* other; 406 } 407 408 alias X509_CERT_AUX = .x509_cert_aux_st; 409 410 struct x509_st 411 { 412 .X509_CINF* cert_info; 413 libressl_d.openssl.ossl_typ.X509_ALGOR* sig_alg; 414 libressl_d.openssl.ossl_typ.ASN1_BIT_STRING* signature; 415 int valid; 416 int references; 417 char* name; 418 libressl_d.openssl.ossl_typ.CRYPTO_EX_DATA ex_data; 419 /* These contain copies of various extension values */ 420 core.stdc.config.c_long ex_pathlen; 421 core.stdc.config.c_long ex_pcpathlen; 422 core.stdc.config.c_ulong ex_flags; 423 core.stdc.config.c_ulong ex_kusage; 424 core.stdc.config.c_ulong ex_xkusage; 425 core.stdc.config.c_ulong ex_nscert; 426 libressl_d.openssl.ossl_typ.ASN1_OCTET_STRING* skid; 427 libressl_d.openssl.ossl_typ.AUTHORITY_KEYID* akid; 428 libressl_d.openssl.ossl_typ.X509_POLICY_CACHE* policy_cache; 429 libressl_d.openssl.x509v3.stack_st_DIST_POINT* crldp; 430 libressl_d.openssl.x509v3.stack_st_GENERAL_NAME* altname; 431 libressl_d.openssl.ossl_typ.NAME_CONSTRAINTS* nc; 432 433 version (OPENSSL_NO_RFC3779) { 434 } else { 435 libressl_d.openssl.x509v3.stack_st_IPAddressFamily* rfc3779_addr; 436 libressl_d.openssl.x509v3.ASIdentifiers_st* rfc3779_asid; 437 } 438 439 version (OPENSSL_NO_SHA) { 440 } else { 441 ubyte[libressl_d.openssl.sha.SHA_DIGEST_LENGTH] sha1_hash; 442 } 443 444 .X509_CERT_AUX* aux; 445 } 446 447 //DECLARE_STACK_OF(X509) 448 struct stack_st_X509 449 { 450 libressl_d.openssl.stack._STACK stack; 451 } 452 453 /* This is used for a table of trust checking functions */ 454 455 struct x509_trust_st 456 { 457 int trust; 458 int flags; 459 int function(.x509_trust_st*, libressl_d.openssl.ossl_typ.X509*, int) check_trust; 460 char* name; 461 int arg1; 462 void* arg2; 463 } 464 465 alias X509_TRUST = .x509_trust_st; 466 467 //DECLARE_STACK_OF(X509_TRUST) 468 struct stack_st_X509_TRUST 469 { 470 libressl_d.openssl.stack._STACK stack; 471 } 472 473 struct x509_cert_pair_st 474 { 475 libressl_d.openssl.ossl_typ.X509* forward; 476 libressl_d.openssl.ossl_typ.X509* reverse; 477 } 478 479 alias X509_CERT_PAIR = .x509_cert_pair_st; 480 481 /* standard trust ids */ 482 483 /** 484 * Only valid in purpose settings 485 */ 486 enum X509_TRUST_DEFAULT = -1; 487 488 enum X509_TRUST_COMPAT = 1; 489 enum X509_TRUST_SSL_CLIENT = 2; 490 enum X509_TRUST_SSL_SERVER = 3; 491 enum X509_TRUST_EMAIL = 4; 492 enum X509_TRUST_OBJECT_SIGN = 5; 493 enum X509_TRUST_OCSP_SIGN = 6; 494 enum X509_TRUST_OCSP_REQUEST = 7; 495 enum X509_TRUST_TSA = 8; 496 497 /* Keep these up to date! */ 498 enum X509_TRUST_MIN = 1; 499 enum X509_TRUST_MAX = 8; 500 501 /* trust_flags values */ 502 enum X509_TRUST_DYNAMIC = 1; 503 enum X509_TRUST_DYNAMIC_NAME = 2; 504 505 /* check_trust return codes */ 506 507 enum X509_TRUST_TRUSTED = 1; 508 enum X509_TRUST_REJECTED = 2; 509 enum X509_TRUST_UNTRUSTED = 3; 510 511 /* Flags for X509_print_ex() */ 512 513 enum X509_FLAG_COMPAT = 0; 514 enum X509_FLAG_NO_HEADER = 1L; 515 enum X509_FLAG_NO_VERSION = 1L << 1; 516 enum X509_FLAG_NO_SERIAL = 1L << 2; 517 enum X509_FLAG_NO_SIGNAME = 1L << 3; 518 enum X509_FLAG_NO_ISSUER = 1L << 4; 519 enum X509_FLAG_NO_VALIDITY = 1L << 5; 520 enum X509_FLAG_NO_SUBJECT = 1L << 6; 521 enum X509_FLAG_NO_PUBKEY = 1L << 7; 522 enum X509_FLAG_NO_EXTENSIONS = 1L << 8; 523 enum X509_FLAG_NO_SIGDUMP = 1L << 9; 524 enum X509_FLAG_NO_AUX = 1L << 10; 525 enum X509_FLAG_NO_ATTRIBUTES = 1L << 11; 526 527 /* Flags specific to X509_NAME_print_ex() */ 528 529 /* The field separator information */ 530 531 enum XN_FLAG_SEP_MASK = 0x0F << 16; 532 533 /** 534 * Traditional SSLeay: use old X509_NAME_print 535 */ 536 enum XN_FLAG_COMPAT = 0; 537 538 /** 539 * RFC2253 ,+ 540 */ 541 enum XN_FLAG_SEP_COMMA_PLUS = 1 << 16; 542 543 /** 544 * ,+ spaced: more readable 545 */ 546 enum XN_FLAG_SEP_CPLUS_SPC = 2 << 16; 547 548 /** 549 * ;+ spaced 550 */ 551 enum XN_FLAG_SEP_SPLUS_SPC = 3 << 16; 552 553 /** 554 * One line per field 555 */ 556 enum XN_FLAG_SEP_MULTILINE = 4 << 16; 557 558 /** 559 * Reverse DN order 560 */ 561 enum XN_FLAG_DN_REV = 1 << 20; 562 563 /* How the field name is shown */ 564 565 enum XN_FLAG_FN_MASK = 0x03 << 21; 566 567 /** 568 * Object short name 569 */ 570 enum XN_FLAG_FN_SN = 0; 571 572 /** 573 * Object core.stdc.config.c_long name 574 */ 575 enum XN_FLAG_FN_LN = 1 << 21; 576 577 /** 578 * Always use OIDs 579 */ 580 enum XN_FLAG_FN_OID = 2 << 21; 581 582 /** 583 * No field names 584 */ 585 enum XN_FLAG_FN_NONE = 3 << 21; 586 587 /** 588 * Put spaces round '=' 589 */ 590 enum XN_FLAG_SPC_EQ = 1 << 23; 591 592 /* 593 * This determines if we dump fields we don't recognise: 594 * RFC2253 requires this. 595 */ 596 597 enum XN_FLAG_DUMP_UNKNOWN_FIELDS = 1 << 24; 598 599 /** 600 * Align field names to 20 characters 601 */ 602 enum XN_FLAG_FN_ALIGN = 1 << 25; 603 604 /* Complete set of RFC2253 flags */ 605 606 enum XN_FLAG_RFC2253 = libressl_d.openssl.asn1.ASN1_STRFLGS_RFC2253 | .XN_FLAG_SEP_COMMA_PLUS | .XN_FLAG_DN_REV | .XN_FLAG_FN_SN | .XN_FLAG_DUMP_UNKNOWN_FIELDS; 607 608 /* readable oneline form */ 609 610 enum XN_FLAG_ONELINE = libressl_d.openssl.asn1.ASN1_STRFLGS_RFC2253 | libressl_d.openssl.asn1.ASN1_STRFLGS_ESC_QUOTE | .XN_FLAG_SEP_CPLUS_SPC | .XN_FLAG_SPC_EQ | .XN_FLAG_FN_SN; 611 612 /* readable multiline form */ 613 614 enum XN_FLAG_MULTILINE = libressl_d.openssl.asn1.ASN1_STRFLGS_ESC_CTRL | libressl_d.openssl.asn1.ASN1_STRFLGS_ESC_MSB | .XN_FLAG_SEP_MULTILINE | .XN_FLAG_SPC_EQ | .XN_FLAG_FN_LN | .XN_FLAG_FN_ALIGN; 615 616 struct x509_revoked_st 617 { 618 libressl_d.openssl.ossl_typ.ASN1_INTEGER* serialNumber; 619 libressl_d.openssl.ossl_typ.ASN1_TIME* revocationDate; 620 .stack_st_X509_EXTENSION /* optional */ * extensions; 621 /* Set up if indirect CRL */ 622 libressl_d.openssl.x509v3.stack_st_GENERAL_NAME* issuer; 623 /* Revocation reason */ 624 int reason; 625 626 /** 627 * load sequence 628 */ 629 int sequence; 630 } 631 632 //DECLARE_STACK_OF(X509_REVOKED) 633 struct stack_st_X509_REVOKED 634 { 635 libressl_d.openssl.stack._STACK stack; 636 } 637 638 struct X509_crl_info_st 639 { 640 libressl_d.openssl.ossl_typ.ASN1_INTEGER* version_; 641 libressl_d.openssl.ossl_typ.X509_ALGOR* sig_alg; 642 libressl_d.openssl.ossl_typ.X509_NAME* issuer; 643 libressl_d.openssl.ossl_typ.ASN1_TIME* lastUpdate; 644 libressl_d.openssl.ossl_typ.ASN1_TIME* nextUpdate; 645 .stack_st_X509_REVOKED* revoked; 646 .stack_st_X509_EXTENSION /* [0] */ * extensions; 647 libressl_d.openssl.asn1.ASN1_ENCODING enc; 648 } 649 650 alias X509_CRL_INFO = .X509_crl_info_st; 651 652 struct stack_st_GENERAL_NAMES; 653 654 struct X509_crl_st 655 { 656 /* actual signature */ 657 .X509_CRL_INFO* crl; 658 libressl_d.openssl.ossl_typ.X509_ALGOR* sig_alg; 659 libressl_d.openssl.ossl_typ.ASN1_BIT_STRING* signature; 660 int references; 661 int flags; 662 /* Copies of various extensions */ 663 libressl_d.openssl.ossl_typ.AUTHORITY_KEYID* akid; 664 libressl_d.openssl.ossl_typ.ISSUING_DIST_POINT* idp; 665 /* Convenient breakdown of IDP */ 666 int idp_flags; 667 int idp_reasons; 668 /* CRL and base CRL numbers for delta processing */ 669 libressl_d.openssl.ossl_typ.ASN1_INTEGER* crl_number; 670 libressl_d.openssl.ossl_typ.ASN1_INTEGER* base_crl_number; 671 672 version (OPENSSL_NO_SHA) { 673 } else { 674 ubyte[libressl_d.openssl.sha.SHA_DIGEST_LENGTH] sha1_hash; 675 } 676 677 .stack_st_GENERAL_NAMES* issuers; 678 const (libressl_d.openssl.ossl_typ.X509_CRL_METHOD)* meth; 679 void* meth_data; 680 } 681 682 //DECLARE_STACK_OF(X509_CRL) 683 struct stack_st_X509_CRL 684 { 685 libressl_d.openssl.stack._STACK stack; 686 } 687 688 struct private_key_st 689 { 690 int version_; 691 /* The PKCS#8 data types */ 692 libressl_d.openssl.ossl_typ.X509_ALGOR* enc_algor; 693 694 /** 695 * encrypted pub key 696 */ 697 libressl_d.openssl.ossl_typ.ASN1_OCTET_STRING* enc_pkey; 698 699 /* When decrypted, the following will not be null */ 700 libressl_d.openssl.ossl_typ.EVP_PKEY* dec_pkey; 701 702 /* used to encrypt and decrypt */ 703 int key_length; 704 char* key_data; 705 706 /** 707 * true if we should auto free key_data 708 */ 709 int key_free; 710 711 /* expanded version of 'enc_algor' */ 712 libressl_d.openssl.evp.EVP_CIPHER_INFO cipher; 713 714 int references; 715 } 716 717 alias X509_PKEY = .private_key_st; 718 719 version (OPENSSL_NO_EVP) { 720 } else { 721 struct X509_info_st 722 { 723 libressl_d.openssl.ossl_typ.X509* x509; 724 libressl_d.openssl.ossl_typ.X509_CRL* crl; 725 .X509_PKEY* x_pkey; 726 727 libressl_d.openssl.evp.EVP_CIPHER_INFO enc_cipher; 728 int enc_len; 729 char* enc_data; 730 731 int references; 732 } 733 734 alias X509_INFO = .X509_info_st; 735 736 //DECLARE_STACK_OF(X509_INFO) 737 struct stack_st_X509_INFO 738 { 739 libressl_d.openssl.stack._STACK stack; 740 } 741 } 742 743 /** 744 * The next 2 structures and their 8 routines were sent to me by 745 * Pat Richard <patr@x509.com> and are used to manipulate 746 * Netscapes spki structures - useful if you are writing a CA web page 747 */ 748 struct Netscape_spkac_st 749 { 750 libressl_d.openssl.ossl_typ.X509_PUBKEY* pubkey; 751 752 /** 753 * challenge sent in atlas >= PR2 754 */ 755 libressl_d.openssl.ossl_typ.ASN1_IA5STRING* challenge; 756 } 757 758 alias NETSCAPE_SPKAC = .Netscape_spkac_st; 759 760 struct Netscape_spki_st 761 { 762 /** 763 * signed public key and challenge 764 */ 765 .NETSCAPE_SPKAC* spkac; 766 767 libressl_d.openssl.ossl_typ.X509_ALGOR* sig_algor; 768 libressl_d.openssl.ossl_typ.ASN1_BIT_STRING* signature; 769 } 770 771 alias NETSCAPE_SPKI = .Netscape_spki_st; 772 773 /** 774 * Netscape certificate sequence structure 775 */ 776 struct Netscape_certificate_sequence 777 { 778 libressl_d.openssl.asn1.ASN1_OBJECT* type; 779 .stack_st_X509* certs; 780 } 781 782 alias NETSCAPE_CERT_SEQUENCE = .Netscape_certificate_sequence; 783 784 /* 785 * nused (and iv length is wrong) 786 struct CBCParameter_st 787 { 788 ubyte[8] iv; 789 } 790 791 alias CBC_PARAM = .CBCParameter_st; 792 */ 793 794 /* Password based encryption structure */ 795 796 struct PBEPARAM_st 797 { 798 libressl_d.openssl.ossl_typ.ASN1_OCTET_STRING* salt; 799 libressl_d.openssl.ossl_typ.ASN1_INTEGER* iter; 800 } 801 802 alias PBEPARAM = .PBEPARAM_st; 803 804 /** 805 * Password based encryption V2 structures 806 */ 807 struct PBE2PARAM_st 808 { 809 libressl_d.openssl.ossl_typ.X509_ALGOR* keyfunc; 810 libressl_d.openssl.ossl_typ.X509_ALGOR* encryption; 811 } 812 813 alias PBE2PARAM = .PBE2PARAM_st; 814 815 struct PBKDF2PARAM_st 816 { 817 /** 818 * Usually OCTET STRING but could be anything 819 */ 820 libressl_d.openssl.asn1.ASN1_TYPE* salt; 821 822 libressl_d.openssl.ossl_typ.ASN1_INTEGER* iter; 823 libressl_d.openssl.ossl_typ.ASN1_INTEGER* keylength; 824 libressl_d.openssl.ossl_typ.X509_ALGOR* prf; 825 } 826 827 alias PBKDF2PARAM = .PBKDF2PARAM_st; 828 829 /** 830 * PKCS#8 private key info structure 831 */ 832 struct pkcs8_priv_key_info_st 833 { 834 libressl_d.openssl.ossl_typ.ASN1_INTEGER* version_; 835 libressl_d.openssl.ossl_typ.X509_ALGOR* pkeyalg; 836 libressl_d.openssl.ossl_typ.ASN1_OCTET_STRING* pkey; 837 .stack_st_X509_ATTRIBUTE* attributes; 838 } 839 840 enum X509_EXT_PACK_UNKNOWN = 1; 841 enum X509_EXT_PACK_STRING = 2; 842 843 /* ****/ 844 alias X509_extract_key = .X509_get_pubkey; 845 846 alias X509_REQ_extract_key = .X509_REQ_get_pubkey; 847 alias X509_name_cmp = .X509_NAME_cmp; 848 849 int X509_CRL_up_ref(libressl_d.openssl.ossl_typ.X509_CRL* x); 850 int X509_CRL_get_signature_nid(const (libressl_d.openssl.ossl_typ.X509_CRL)* crl); 851 852 const (.stack_st_X509_EXTENSION)* X509_CRL_get0_extensions(const (libressl_d.openssl.ossl_typ.X509_CRL)* crl); 853 core.stdc.config.c_long X509_CRL_get_version(const (libressl_d.openssl.ossl_typ.X509_CRL)* crl); 854 const (libressl_d.openssl.ossl_typ.ASN1_TIME)* X509_CRL_get0_lastUpdate(const (libressl_d.openssl.ossl_typ.X509_CRL)* crl); 855 const (libressl_d.openssl.ossl_typ.ASN1_TIME)* X509_CRL_get0_nextUpdate(const (libressl_d.openssl.ossl_typ.X509_CRL)* crl); 856 libressl_d.openssl.ossl_typ.ASN1_TIME* X509_CRL_get_lastUpdate(libressl_d.openssl.ossl_typ.X509_CRL* crl); 857 libressl_d.openssl.ossl_typ.ASN1_TIME* X509_CRL_get_nextUpdate(libressl_d.openssl.ossl_typ.X509_CRL* crl); 858 libressl_d.openssl.ossl_typ.X509_NAME* X509_CRL_get_issuer(const (libressl_d.openssl.ossl_typ.X509_CRL)* crl); 859 .stack_st_X509_REVOKED* X509_CRL_get_REVOKED(libressl_d.openssl.ossl_typ.X509_CRL* crl); 860 void X509_CRL_get0_signature(const (libressl_d.openssl.ossl_typ.X509_CRL)* crl, const (libressl_d.openssl.ossl_typ.ASN1_BIT_STRING)** psig, const (libressl_d.openssl.ossl_typ.X509_ALGOR)** palg); 861 862 int X509_REQ_get_signature_nid(const (.X509_REQ)* req); 863 864 void X509_REQ_get0_signature(const (.X509_REQ)* req, const (libressl_d.openssl.ossl_typ.ASN1_BIT_STRING)** psig, const (libressl_d.openssl.ossl_typ.X509_ALGOR)** palg); 865 866 void X509_CRL_set_default_method(const (libressl_d.openssl.ossl_typ.X509_CRL_METHOD)* meth); 867 libressl_d.openssl.ossl_typ.X509_CRL_METHOD* X509_CRL_METHOD_new(int function(libressl_d.openssl.ossl_typ.X509_CRL* crl) crl_init, int function(libressl_d.openssl.ossl_typ.X509_CRL* crl) crl_free, int function(libressl_d.openssl.ossl_typ.X509_CRL* crl, libressl_d.openssl.ossl_typ.X509_REVOKED** ret, libressl_d.openssl.ossl_typ.ASN1_INTEGER* ser, libressl_d.openssl.ossl_typ.X509_NAME* issuer) crl_lookup, int function(libressl_d.openssl.ossl_typ.X509_CRL* crl, libressl_d.openssl.ossl_typ.EVP_PKEY* pk) crl_verify); 868 void X509_CRL_METHOD_free(libressl_d.openssl.ossl_typ.X509_CRL_METHOD* m); 869 870 void X509_CRL_set_meth_data(libressl_d.openssl.ossl_typ.X509_CRL* crl, void* dat); 871 void* X509_CRL_get_meth_data(libressl_d.openssl.ossl_typ.X509_CRL* crl); 872 873 /* 874 * This one is only used so that a binary form can output, as in 875 * i2d_X509_NAME(X509_get_X509_PUBKEY(x),&buf) 876 */ 877 pragma(inline, true) 878 pure nothrow @trusted @nogc @live 879 libressl_d.openssl.ossl_typ.X509_PUBKEY* X509_get_X509_PUBKEY(return scope libressl_d.openssl.ossl_typ.X509* x) 880 881 in 882 { 883 assert(x != null); 884 assert(x.cert_info != null); 885 } 886 887 do 888 { 889 return x.cert_info.key; 890 } 891 892 const (char)* X509_verify_cert_error_string(core.stdc.config.c_long n); 893 894 version (OPENSSL_NO_EVP) { 895 } else { 896 int X509_verify(libressl_d.openssl.ossl_typ.X509* a, libressl_d.openssl.ossl_typ.EVP_PKEY* r); 897 898 int X509_REQ_verify(.X509_REQ* a, libressl_d.openssl.ossl_typ.EVP_PKEY* r); 899 int X509_CRL_verify(libressl_d.openssl.ossl_typ.X509_CRL* a, libressl_d.openssl.ossl_typ.EVP_PKEY* r); 900 int NETSCAPE_SPKI_verify(.NETSCAPE_SPKI* a, libressl_d.openssl.ossl_typ.EVP_PKEY* r); 901 902 .NETSCAPE_SPKI* NETSCAPE_SPKI_b64_decode(const (char)* str, int len); 903 char* NETSCAPE_SPKI_b64_encode(.NETSCAPE_SPKI* x); 904 libressl_d.openssl.ossl_typ.EVP_PKEY* NETSCAPE_SPKI_get_pubkey(.NETSCAPE_SPKI* x); 905 int NETSCAPE_SPKI_set_pubkey(.NETSCAPE_SPKI* x, libressl_d.openssl.ossl_typ.EVP_PKEY* pkey); 906 907 int NETSCAPE_SPKI_print(libressl_d.openssl.bio.BIO* out_, .NETSCAPE_SPKI* spki); 908 909 int X509_signature_dump(libressl_d.openssl.bio.BIO* bp, const (libressl_d.openssl.ossl_typ.ASN1_STRING)* sig, int indent); 910 int X509_signature_print(libressl_d.openssl.bio.BIO* bp, const (libressl_d.openssl.ossl_typ.X509_ALGOR)* alg, const (libressl_d.openssl.ossl_typ.ASN1_STRING)* sig); 911 912 int X509_sign(libressl_d.openssl.ossl_typ.X509* x, libressl_d.openssl.ossl_typ.EVP_PKEY* pkey, const (libressl_d.openssl.ossl_typ.EVP_MD)* md); 913 int X509_sign_ctx(libressl_d.openssl.ossl_typ.X509* x, libressl_d.openssl.ossl_typ.EVP_MD_CTX* ctx); 914 int X509_REQ_sign(.X509_REQ* x, libressl_d.openssl.ossl_typ.EVP_PKEY* pkey, const (libressl_d.openssl.ossl_typ.EVP_MD)* md); 915 int X509_REQ_sign_ctx(.X509_REQ* x, libressl_d.openssl.ossl_typ.EVP_MD_CTX* ctx); 916 int X509_CRL_sign(libressl_d.openssl.ossl_typ.X509_CRL* x, libressl_d.openssl.ossl_typ.EVP_PKEY* pkey, const (libressl_d.openssl.ossl_typ.EVP_MD)* md); 917 int X509_CRL_sign_ctx(libressl_d.openssl.ossl_typ.X509_CRL* x, libressl_d.openssl.ossl_typ.EVP_MD_CTX* ctx); 918 int NETSCAPE_SPKI_sign(.NETSCAPE_SPKI* x, libressl_d.openssl.ossl_typ.EVP_PKEY* pkey, const (libressl_d.openssl.ossl_typ.EVP_MD)* md); 919 920 int X509_pubkey_digest(const (libressl_d.openssl.ossl_typ.X509)* data, const (libressl_d.openssl.ossl_typ.EVP_MD)* type, ubyte* md, uint* len); 921 int X509_digest(const (libressl_d.openssl.ossl_typ.X509)* data, const (libressl_d.openssl.ossl_typ.EVP_MD)* type, ubyte* md, uint* len); 922 int X509_CRL_digest(const (libressl_d.openssl.ossl_typ.X509_CRL)* data, const (libressl_d.openssl.ossl_typ.EVP_MD)* type, ubyte* md, uint* len); 923 int X509_REQ_digest(const (.X509_REQ)* data, const (libressl_d.openssl.ossl_typ.EVP_MD)* type, ubyte* md, uint* len); 924 int X509_NAME_digest(const (libressl_d.openssl.ossl_typ.X509_NAME)* data, const (libressl_d.openssl.ossl_typ.EVP_MD)* type, ubyte* md, uint* len); 925 } 926 927 libressl_d.openssl.ossl_typ.X509* d2i_X509_fp(libressl_d.compat.stdio.FILE* fp, libressl_d.openssl.ossl_typ.X509** x509); 928 int i2d_X509_fp(libressl_d.compat.stdio.FILE* fp, libressl_d.openssl.ossl_typ.X509* x509); 929 libressl_d.openssl.ossl_typ.X509_CRL* d2i_X509_CRL_fp(libressl_d.compat.stdio.FILE* fp, libressl_d.openssl.ossl_typ.X509_CRL** crl); 930 int i2d_X509_CRL_fp(libressl_d.compat.stdio.FILE* fp, libressl_d.openssl.ossl_typ.X509_CRL* crl); 931 .X509_REQ* d2i_X509_REQ_fp(libressl_d.compat.stdio.FILE* fp, .X509_REQ** req); 932 int i2d_X509_REQ_fp(libressl_d.compat.stdio.FILE* fp, .X509_REQ* req); 933 934 version (OPENSSL_NO_RSA) { 935 } else { 936 libressl_d.openssl.ossl_typ.RSA* d2i_RSAPrivateKey_fp(libressl_d.compat.stdio.FILE* fp, libressl_d.openssl.ossl_typ.RSA** rsa); 937 int i2d_RSAPrivateKey_fp(libressl_d.compat.stdio.FILE* fp, libressl_d.openssl.ossl_typ.RSA* rsa); 938 libressl_d.openssl.ossl_typ.RSA* d2i_RSAPublicKey_fp(libressl_d.compat.stdio.FILE* fp, libressl_d.openssl.ossl_typ.RSA** rsa); 939 int i2d_RSAPublicKey_fp(libressl_d.compat.stdio.FILE* fp, libressl_d.openssl.ossl_typ.RSA* rsa); 940 libressl_d.openssl.ossl_typ.RSA* d2i_RSA_PUBKEY_fp(libressl_d.compat.stdio.FILE* fp, libressl_d.openssl.ossl_typ.RSA** rsa); 941 int i2d_RSA_PUBKEY_fp(libressl_d.compat.stdio.FILE* fp, libressl_d.openssl.ossl_typ.RSA* rsa); 942 } 943 944 version (OPENSSL_NO_DSA) { 945 } else { 946 libressl_d.openssl.ossl_typ.DSA* d2i_DSA_PUBKEY_fp(libressl_d.compat.stdio.FILE* fp, libressl_d.openssl.ossl_typ.DSA** dsa); 947 int i2d_DSA_PUBKEY_fp(libressl_d.compat.stdio.FILE* fp, libressl_d.openssl.ossl_typ.DSA* dsa); 948 libressl_d.openssl.ossl_typ.DSA* d2i_DSAPrivateKey_fp(libressl_d.compat.stdio.FILE* fp, libressl_d.openssl.ossl_typ.DSA** dsa); 949 int i2d_DSAPrivateKey_fp(libressl_d.compat.stdio.FILE* fp, libressl_d.openssl.ossl_typ.DSA* dsa); 950 } 951 952 version (OPENSSL_NO_EC) { 953 } else { 954 libressl_d.openssl.ec.EC_KEY* d2i_EC_PUBKEY_fp(libressl_d.compat.stdio.FILE* fp, libressl_d.openssl.ec.EC_KEY** eckey); 955 int i2d_EC_PUBKEY_fp(libressl_d.compat.stdio.FILE* fp, libressl_d.openssl.ec.EC_KEY* eckey); 956 libressl_d.openssl.ec.EC_KEY* d2i_ECPrivateKey_fp(libressl_d.compat.stdio.FILE* fp, libressl_d.openssl.ec.EC_KEY** eckey); 957 int i2d_ECPrivateKey_fp(libressl_d.compat.stdio.FILE* fp, libressl_d.openssl.ec.EC_KEY* eckey); 958 } 959 960 .X509_SIG* d2i_PKCS8_fp(libressl_d.compat.stdio.FILE* fp, .X509_SIG** p8); 961 int i2d_PKCS8_fp(libressl_d.compat.stdio.FILE* fp, .X509_SIG* p8); 962 libressl_d.openssl.ossl_typ.PKCS8_PRIV_KEY_INFO* d2i_PKCS8_PRIV_KEY_INFO_fp(libressl_d.compat.stdio.FILE* fp, libressl_d.openssl.ossl_typ.PKCS8_PRIV_KEY_INFO** p8inf); 963 int i2d_PKCS8_PRIV_KEY_INFO_fp(libressl_d.compat.stdio.FILE* fp, libressl_d.openssl.ossl_typ.PKCS8_PRIV_KEY_INFO* p8inf); 964 int i2d_PKCS8PrivateKeyInfo_fp(libressl_d.compat.stdio.FILE* fp, libressl_d.openssl.ossl_typ.EVP_PKEY* key); 965 int i2d_PrivateKey_fp(libressl_d.compat.stdio.FILE* fp, libressl_d.openssl.ossl_typ.EVP_PKEY* pkey); 966 libressl_d.openssl.ossl_typ.EVP_PKEY* d2i_PrivateKey_fp(libressl_d.compat.stdio.FILE* fp, libressl_d.openssl.ossl_typ.EVP_PKEY** a); 967 int i2d_PUBKEY_fp(libressl_d.compat.stdio.FILE* fp, libressl_d.openssl.ossl_typ.EVP_PKEY* pkey); 968 libressl_d.openssl.ossl_typ.EVP_PKEY* d2i_PUBKEY_fp(libressl_d.compat.stdio.FILE* fp, libressl_d.openssl.ossl_typ.EVP_PKEY** a); 969 970 version (OPENSSL_NO_BIO) { 971 } else { 972 libressl_d.openssl.ossl_typ.X509* d2i_X509_bio(libressl_d.openssl.bio.BIO* bp, libressl_d.openssl.ossl_typ.X509** x509); 973 int i2d_X509_bio(libressl_d.openssl.bio.BIO* bp, libressl_d.openssl.ossl_typ.X509* x509); 974 libressl_d.openssl.ossl_typ.X509_CRL* d2i_X509_CRL_bio(libressl_d.openssl.bio.BIO* bp, libressl_d.openssl.ossl_typ.X509_CRL** crl); 975 int i2d_X509_CRL_bio(libressl_d.openssl.bio.BIO* bp, libressl_d.openssl.ossl_typ.X509_CRL* crl); 976 .X509_REQ* d2i_X509_REQ_bio(libressl_d.openssl.bio.BIO* bp, .X509_REQ** req); 977 int i2d_X509_REQ_bio(libressl_d.openssl.bio.BIO* bp, .X509_REQ* req); 978 979 version (OPENSSL_NO_RSA) { 980 } else { 981 libressl_d.openssl.ossl_typ.RSA* d2i_RSAPrivateKey_bio(libressl_d.openssl.bio.BIO* bp, libressl_d.openssl.ossl_typ.RSA** rsa); 982 int i2d_RSAPrivateKey_bio(libressl_d.openssl.bio.BIO* bp, libressl_d.openssl.ossl_typ.RSA* rsa); 983 libressl_d.openssl.ossl_typ.RSA* d2i_RSAPublicKey_bio(libressl_d.openssl.bio.BIO* bp, libressl_d.openssl.ossl_typ.RSA** rsa); 984 int i2d_RSAPublicKey_bio(libressl_d.openssl.bio.BIO* bp, libressl_d.openssl.ossl_typ.RSA* rsa); 985 libressl_d.openssl.ossl_typ.RSA* d2i_RSA_PUBKEY_bio(libressl_d.openssl.bio.BIO* bp, libressl_d.openssl.ossl_typ.RSA** rsa); 986 int i2d_RSA_PUBKEY_bio(libressl_d.openssl.bio.BIO* bp, libressl_d.openssl.ossl_typ.RSA* rsa); 987 } 988 989 version (OPENSSL_NO_DSA) { 990 } else { 991 libressl_d.openssl.ossl_typ.DSA* d2i_DSA_PUBKEY_bio(libressl_d.openssl.bio.BIO* bp, libressl_d.openssl.ossl_typ.DSA** dsa); 992 int i2d_DSA_PUBKEY_bio(libressl_d.openssl.bio.BIO* bp, libressl_d.openssl.ossl_typ.DSA* dsa); 993 libressl_d.openssl.ossl_typ.DSA* d2i_DSAPrivateKey_bio(libressl_d.openssl.bio.BIO* bp, libressl_d.openssl.ossl_typ.DSA** dsa); 994 int i2d_DSAPrivateKey_bio(libressl_d.openssl.bio.BIO* bp, libressl_d.openssl.ossl_typ.DSA* dsa); 995 } 996 997 version (OPENSSL_NO_EC) { 998 } else { 999 libressl_d.openssl.ec.EC_KEY* d2i_EC_PUBKEY_bio(libressl_d.openssl.bio.BIO* bp, libressl_d.openssl.ec.EC_KEY** eckey); 1000 int i2d_EC_PUBKEY_bio(libressl_d.openssl.bio.BIO* bp, libressl_d.openssl.ec.EC_KEY* eckey); 1001 libressl_d.openssl.ec.EC_KEY* d2i_ECPrivateKey_bio(libressl_d.openssl.bio.BIO* bp, libressl_d.openssl.ec.EC_KEY** eckey); 1002 int i2d_ECPrivateKey_bio(libressl_d.openssl.bio.BIO* bp, libressl_d.openssl.ec.EC_KEY* eckey); 1003 } 1004 1005 .X509_SIG* d2i_PKCS8_bio(libressl_d.openssl.bio.BIO* bp, .X509_SIG** p8); 1006 int i2d_PKCS8_bio(libressl_d.openssl.bio.BIO* bp, .X509_SIG* p8); 1007 libressl_d.openssl.ossl_typ.PKCS8_PRIV_KEY_INFO* d2i_PKCS8_PRIV_KEY_INFO_bio(libressl_d.openssl.bio.BIO* bp, libressl_d.openssl.ossl_typ.PKCS8_PRIV_KEY_INFO** p8inf); 1008 int i2d_PKCS8_PRIV_KEY_INFO_bio(libressl_d.openssl.bio.BIO* bp, libressl_d.openssl.ossl_typ.PKCS8_PRIV_KEY_INFO* p8inf); 1009 int i2d_PKCS8PrivateKeyInfo_bio(libressl_d.openssl.bio.BIO* bp, libressl_d.openssl.ossl_typ.EVP_PKEY* key); 1010 int i2d_PrivateKey_bio(libressl_d.openssl.bio.BIO* bp, libressl_d.openssl.ossl_typ.EVP_PKEY* pkey); 1011 libressl_d.openssl.ossl_typ.EVP_PKEY* d2i_PrivateKey_bio(libressl_d.openssl.bio.BIO* bp, libressl_d.openssl.ossl_typ.EVP_PKEY** a); 1012 int i2d_PUBKEY_bio(libressl_d.openssl.bio.BIO* bp, libressl_d.openssl.ossl_typ.EVP_PKEY* pkey); 1013 libressl_d.openssl.ossl_typ.EVP_PKEY* d2i_PUBKEY_bio(libressl_d.openssl.bio.BIO* bp, libressl_d.openssl.ossl_typ.EVP_PKEY** a); 1014 } 1015 1016 libressl_d.openssl.ossl_typ.X509* X509_dup(libressl_d.openssl.ossl_typ.X509* x509); 1017 .X509_ATTRIBUTE* X509_ATTRIBUTE_dup(.X509_ATTRIBUTE* xa); 1018 .X509_EXTENSION* X509_EXTENSION_dup(.X509_EXTENSION* ex); 1019 libressl_d.openssl.ossl_typ.X509_CRL* X509_CRL_dup(libressl_d.openssl.ossl_typ.X509_CRL* crl); 1020 .X509_REQ* X509_REQ_dup(.X509_REQ* req); 1021 libressl_d.openssl.ossl_typ.X509_ALGOR* X509_ALGOR_dup(libressl_d.openssl.ossl_typ.X509_ALGOR* xn); 1022 int X509_ALGOR_set0(libressl_d.openssl.ossl_typ.X509_ALGOR* alg, libressl_d.openssl.asn1.ASN1_OBJECT* aobj, int ptype, void* pval); 1023 void X509_ALGOR_get0(const (libressl_d.openssl.asn1.ASN1_OBJECT)** paobj, int* pptype, const (void)** ppval, const (libressl_d.openssl.ossl_typ.X509_ALGOR)* algor); 1024 void X509_ALGOR_set_md(libressl_d.openssl.ossl_typ.X509_ALGOR* alg, const (libressl_d.openssl.ossl_typ.EVP_MD)* md); 1025 int X509_ALGOR_cmp(const (libressl_d.openssl.ossl_typ.X509_ALGOR)* a, const (libressl_d.openssl.ossl_typ.X509_ALGOR)* b); 1026 1027 libressl_d.openssl.ossl_typ.X509_NAME* X509_NAME_dup(libressl_d.openssl.ossl_typ.X509_NAME* xn); 1028 int X509_NAME_get0_der(libressl_d.openssl.ossl_typ.X509_NAME* nm, const (ubyte)** pder, size_t* pderlen); 1029 .X509_NAME_ENTRY* X509_NAME_ENTRY_dup(.X509_NAME_ENTRY* ne); 1030 1031 int X509_cmp_time(const (libressl_d.openssl.ossl_typ.ASN1_TIME)* s, libressl_d.compat.time.time_t* t); 1032 int X509_cmp_current_time(const (libressl_d.openssl.ossl_typ.ASN1_TIME)* s); 1033 libressl_d.openssl.ossl_typ.ASN1_TIME* X509_time_adj(libressl_d.openssl.ossl_typ.ASN1_TIME* s, core.stdc.config.c_long adj, libressl_d.compat.time.time_t* t); 1034 libressl_d.openssl.ossl_typ.ASN1_TIME* X509_time_adj_ex(libressl_d.openssl.ossl_typ.ASN1_TIME* s, int offset_day, core.stdc.config.c_long offset_sec, libressl_d.compat.time.time_t* t); 1035 libressl_d.openssl.ossl_typ.ASN1_TIME* X509_gmtime_adj(libressl_d.openssl.ossl_typ.ASN1_TIME* s, core.stdc.config.c_long adj); 1036 1037 const (char)* X509_get_default_cert_area(); 1038 const (char)* X509_get_default_cert_dir(); 1039 const (char)* X509_get_default_cert_file(); 1040 const (char)* X509_get_default_cert_dir_env(); 1041 const (char)* X509_get_default_cert_file_env(); 1042 const (char)* X509_get_default_private_dir(); 1043 1044 .X509_REQ* X509_to_X509_REQ(libressl_d.openssl.ossl_typ.X509* x, libressl_d.openssl.ossl_typ.EVP_PKEY* pkey, const (libressl_d.openssl.ossl_typ.EVP_MD)* md); 1045 libressl_d.openssl.ossl_typ.X509* X509_REQ_to_X509(.X509_REQ* r, int days, libressl_d.openssl.ossl_typ.EVP_PKEY* pkey); 1046 1047 libressl_d.openssl.ossl_typ.X509_ALGOR* X509_ALGOR_new(); 1048 void X509_ALGOR_free(libressl_d.openssl.ossl_typ.X509_ALGOR* a); 1049 libressl_d.openssl.ossl_typ.X509_ALGOR* d2i_X509_ALGOR(libressl_d.openssl.ossl_typ.X509_ALGOR** a, const (ubyte)** in_, core.stdc.config.c_long len); 1050 int i2d_X509_ALGOR(libressl_d.openssl.ossl_typ.X509_ALGOR* a, ubyte** out_); 1051 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM X509_ALGOR_it; 1052 .X509_ALGORS* d2i_X509_ALGORS(.X509_ALGORS** a, const (ubyte)** in_, core.stdc.config.c_long len); 1053 int i2d_X509_ALGORS(.X509_ALGORS* a, ubyte** out_); 1054 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM X509_ALGORS_it; 1055 .X509_VAL* X509_VAL_new(); 1056 void X509_VAL_free(.X509_VAL* a); 1057 .X509_VAL* d2i_X509_VAL(.X509_VAL** a, const (ubyte)** in_, core.stdc.config.c_long len); 1058 int i2d_X509_VAL(.X509_VAL* a, ubyte** out_); 1059 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM X509_VAL_it; 1060 1061 libressl_d.openssl.ossl_typ.X509_PUBKEY* X509_PUBKEY_new(); 1062 void X509_PUBKEY_free(libressl_d.openssl.ossl_typ.X509_PUBKEY* a); 1063 libressl_d.openssl.ossl_typ.X509_PUBKEY* d2i_X509_PUBKEY(libressl_d.openssl.ossl_typ.X509_PUBKEY** a, const (ubyte)** in_, core.stdc.config.c_long len); 1064 int i2d_X509_PUBKEY(libressl_d.openssl.ossl_typ.X509_PUBKEY* a, ubyte** out_); 1065 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM X509_PUBKEY_it; 1066 1067 int X509_PUBKEY_set(libressl_d.openssl.ossl_typ.X509_PUBKEY** x, libressl_d.openssl.ossl_typ.EVP_PKEY* pkey); 1068 libressl_d.openssl.ossl_typ.EVP_PKEY* X509_PUBKEY_get(libressl_d.openssl.ossl_typ.X509_PUBKEY* key); 1069 libressl_d.openssl.ossl_typ.EVP_PKEY* X509_PUBKEY_get0(libressl_d.openssl.ossl_typ.X509_PUBKEY* key); 1070 int X509_get_pubkey_parameters(libressl_d.openssl.ossl_typ.EVP_PKEY* pkey, .stack_st_X509 * chain); 1071 int i2d_PUBKEY(libressl_d.openssl.ossl_typ.EVP_PKEY* a, ubyte** pp); 1072 libressl_d.openssl.ossl_typ.EVP_PKEY* d2i_PUBKEY(libressl_d.openssl.ossl_typ.EVP_PKEY** a, const (ubyte)** pp, core.stdc.config.c_long length_); 1073 1074 version (OPENSSL_NO_RSA) { 1075 } else { 1076 int i2d_RSA_PUBKEY(libressl_d.openssl.ossl_typ.RSA* a, ubyte** pp); 1077 libressl_d.openssl.ossl_typ.RSA* d2i_RSA_PUBKEY(libressl_d.openssl.ossl_typ.RSA** a, const (ubyte)** pp, core.stdc.config.c_long length_); 1078 } 1079 1080 version (OPENSSL_NO_DSA) { 1081 } else { 1082 int i2d_DSA_PUBKEY(libressl_d.openssl.ossl_typ.DSA* a, ubyte** pp); 1083 libressl_d.openssl.ossl_typ.DSA* d2i_DSA_PUBKEY(libressl_d.openssl.ossl_typ.DSA** a, const (ubyte)** pp, core.stdc.config.c_long length_); 1084 } 1085 1086 version (OPENSSL_NO_EC) { 1087 } else { 1088 int i2d_EC_PUBKEY(libressl_d.openssl.ec.EC_KEY* a, ubyte** pp); 1089 libressl_d.openssl.ec.EC_KEY* d2i_EC_PUBKEY(libressl_d.openssl.ec.EC_KEY** a, const (ubyte)** pp, core.stdc.config.c_long length_); 1090 } 1091 1092 .X509_SIG* X509_SIG_new(); 1093 void X509_SIG_free(.X509_SIG* a); 1094 .X509_SIG* d2i_X509_SIG(.X509_SIG** a, const (ubyte)** in_, core.stdc.config.c_long len); 1095 int i2d_X509_SIG(.X509_SIG* a, ubyte** out_); 1096 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM X509_SIG_it; 1097 .X509_REQ_INFO* X509_REQ_INFO_new(); 1098 void X509_REQ_INFO_free(.X509_REQ_INFO* a); 1099 .X509_REQ_INFO* d2i_X509_REQ_INFO(.X509_REQ_INFO** a, const (ubyte)** in_, core.stdc.config.c_long len); 1100 int i2d_X509_REQ_INFO(.X509_REQ_INFO* a, ubyte** out_); 1101 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM X509_REQ_INFO_it; 1102 .X509_REQ* X509_REQ_new(); 1103 void X509_REQ_free(.X509_REQ* a); 1104 .X509_REQ* d2i_X509_REQ(.X509_REQ** a, const (ubyte)** in_, core.stdc.config.c_long len); 1105 int i2d_X509_REQ(.X509_REQ* a, ubyte** out_); 1106 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM X509_REQ_it; 1107 1108 .X509_ATTRIBUTE* X509_ATTRIBUTE_new(); 1109 void X509_ATTRIBUTE_free(.X509_ATTRIBUTE* a); 1110 .X509_ATTRIBUTE* d2i_X509_ATTRIBUTE(.X509_ATTRIBUTE** a, const (ubyte)** in_, core.stdc.config.c_long len); 1111 int i2d_X509_ATTRIBUTE(.X509_ATTRIBUTE* a, ubyte** out_); 1112 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM X509_ATTRIBUTE_it; 1113 .X509_ATTRIBUTE* X509_ATTRIBUTE_create(int nid, int atrtype, void* value); 1114 1115 .X509_EXTENSION* X509_EXTENSION_new(); 1116 void X509_EXTENSION_free(.X509_EXTENSION* a); 1117 .X509_EXTENSION* d2i_X509_EXTENSION(.X509_EXTENSION** a, const (ubyte)** in_, core.stdc.config.c_long len); 1118 int i2d_X509_EXTENSION(.X509_EXTENSION* a, ubyte** out_); 1119 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM X509_EXTENSION_it; 1120 X509_EXTENSIONS* d2i_X509_EXTENSIONS(X509_EXTENSIONS** a, const (ubyte)** in_, core.stdc.config.c_long len); 1121 int i2d_X509_EXTENSIONS(X509_EXTENSIONS* a, ubyte** out_); 1122 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM X509_EXTENSIONS_it; 1123 1124 .X509_NAME_ENTRY* X509_NAME_ENTRY_new(); 1125 void X509_NAME_ENTRY_free(.X509_NAME_ENTRY* a); 1126 .X509_NAME_ENTRY* d2i_X509_NAME_ENTRY(.X509_NAME_ENTRY** a, const (ubyte)** in_, core.stdc.config.c_long len); 1127 int i2d_X509_NAME_ENTRY(.X509_NAME_ENTRY* a, ubyte** out_); 1128 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM X509_NAME_ENTRY_it; 1129 1130 libressl_d.openssl.ossl_typ.X509_NAME* X509_NAME_new(); 1131 void X509_NAME_free(libressl_d.openssl.ossl_typ.X509_NAME* a); 1132 libressl_d.openssl.ossl_typ.X509_NAME* d2i_X509_NAME(libressl_d.openssl.ossl_typ.X509_NAME** a, const (ubyte)** in_, core.stdc.config.c_long len); 1133 int i2d_X509_NAME(libressl_d.openssl.ossl_typ.X509_NAME* a, ubyte** out_); 1134 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM X509_NAME_it; 1135 1136 int X509_NAME_set(libressl_d.openssl.ossl_typ.X509_NAME** xn, libressl_d.openssl.ossl_typ.X509_NAME* name); 1137 1138 .X509_CINF* X509_CINF_new(); 1139 void X509_CINF_free(.X509_CINF* a); 1140 .X509_CINF* d2i_X509_CINF(.X509_CINF** a, const (ubyte)** in_, core.stdc.config.c_long len); 1141 int i2d_X509_CINF(.X509_CINF* a, ubyte** out_); 1142 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM X509_CINF_it; 1143 1144 libressl_d.openssl.ossl_typ.X509* X509_new(); 1145 void X509_free(libressl_d.openssl.ossl_typ.X509* a); 1146 libressl_d.openssl.ossl_typ.X509* d2i_X509(libressl_d.openssl.ossl_typ.X509** a, const (ubyte)** in_, core.stdc.config.c_long len); 1147 int i2d_X509(libressl_d.openssl.ossl_typ.X509* a, ubyte** out_); 1148 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM X509_it; 1149 .X509_CERT_AUX* X509_CERT_AUX_new(); 1150 void X509_CERT_AUX_free(.X509_CERT_AUX* a); 1151 .X509_CERT_AUX* d2i_X509_CERT_AUX(.X509_CERT_AUX** a, const (ubyte)** in_, core.stdc.config.c_long len); 1152 int i2d_X509_CERT_AUX(.X509_CERT_AUX* a, ubyte** out_); 1153 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM X509_CERT_AUX_it; 1154 1155 .X509_CERT_PAIR* X509_CERT_PAIR_new(); 1156 void X509_CERT_PAIR_free(.X509_CERT_PAIR* a); 1157 .X509_CERT_PAIR* d2i_X509_CERT_PAIR(.X509_CERT_PAIR** a, const (ubyte)** in_, core.stdc.config.c_long len); 1158 int i2d_X509_CERT_PAIR(.X509_CERT_PAIR* a, ubyte** out_); 1159 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM X509_CERT_PAIR_it; 1160 1161 int X509_get_ex_new_index(core.stdc.config.c_long argl, void* argp, libressl_d.openssl.ossl_typ.CRYPTO_EX_new* new_func, libressl_d.openssl.ossl_typ.CRYPTO_EX_dup* dup_func, libressl_d.openssl.ossl_typ.CRYPTO_EX_free* free_func); 1162 int X509_set_ex_data(libressl_d.openssl.ossl_typ.X509* r, int idx, void* arg); 1163 void* X509_get_ex_data(libressl_d.openssl.ossl_typ.X509* r, int idx); 1164 int i2d_X509_AUX(libressl_d.openssl.ossl_typ.X509* a, ubyte** pp); 1165 libressl_d.openssl.ossl_typ.X509* d2i_X509_AUX(libressl_d.openssl.ossl_typ.X509** a, const (ubyte)** pp, core.stdc.config.c_long length_); 1166 void X509_get0_signature(const (libressl_d.openssl.ossl_typ.ASN1_BIT_STRING)** psig, const (libressl_d.openssl.ossl_typ.X509_ALGOR)** palg, const (libressl_d.openssl.ossl_typ.X509)* x); 1167 int X509_get_signature_nid(const (libressl_d.openssl.ossl_typ.X509)* x); 1168 1169 int X509_alias_set1(libressl_d.openssl.ossl_typ.X509* x, const (ubyte)* name, int len); 1170 int X509_keyid_set1(libressl_d.openssl.ossl_typ.X509* x, const (ubyte)* id, int len); 1171 ubyte* X509_alias_get0(libressl_d.openssl.ossl_typ.X509* x, int* len); 1172 ubyte* X509_keyid_get0(libressl_d.openssl.ossl_typ.X509* x, int* len); 1173 //int (*X509_TRUST_set_default(int function(int, libressl_d.openssl.ossl_typ.X509*, int) trust))(int, libressl_d.openssl.ossl_typ.X509*, int); 1174 int X509_TRUST_set(int* t, int trust); 1175 int X509_add1_trust_object(libressl_d.openssl.ossl_typ.X509* x, const (libressl_d.openssl.asn1.ASN1_OBJECT)* obj); 1176 int X509_add1_reject_object(libressl_d.openssl.ossl_typ.X509* x, const (libressl_d.openssl.asn1.ASN1_OBJECT)* obj); 1177 void X509_trust_clear(libressl_d.openssl.ossl_typ.X509* x); 1178 void X509_reject_clear(libressl_d.openssl.ossl_typ.X509* x); 1179 1180 libressl_d.openssl.ossl_typ.X509_REVOKED* X509_REVOKED_new(); 1181 void X509_REVOKED_free(libressl_d.openssl.ossl_typ.X509_REVOKED* a); 1182 libressl_d.openssl.ossl_typ.X509_REVOKED* X509_REVOKED_dup(libressl_d.openssl.ossl_typ.X509_REVOKED* a); 1183 libressl_d.openssl.ossl_typ.X509_REVOKED* d2i_X509_REVOKED(libressl_d.openssl.ossl_typ.X509_REVOKED** a, const (ubyte)** in_, core.stdc.config.c_long len); 1184 int i2d_X509_REVOKED(libressl_d.openssl.ossl_typ.X509_REVOKED* a, ubyte** out_); 1185 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM X509_REVOKED_it; 1186 1187 .X509_CRL_INFO* X509_CRL_INFO_new(); 1188 void X509_CRL_INFO_free(.X509_CRL_INFO* a); 1189 .X509_CRL_INFO* d2i_X509_CRL_INFO(.X509_CRL_INFO** a, const (ubyte)** in_, core.stdc.config.c_long len); 1190 int i2d_X509_CRL_INFO(.X509_CRL_INFO* a, ubyte** out_); 1191 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM X509_CRL_INFO_it; 1192 1193 libressl_d.openssl.ossl_typ.X509_CRL* X509_CRL_new(); 1194 void X509_CRL_free(libressl_d.openssl.ossl_typ.X509_CRL* a); 1195 libressl_d.openssl.ossl_typ.X509_CRL* d2i_X509_CRL(libressl_d.openssl.ossl_typ.X509_CRL** a, const (ubyte)** in_, core.stdc.config.c_long len); 1196 int i2d_X509_CRL(libressl_d.openssl.ossl_typ.X509_CRL* a, ubyte** out_); 1197 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM X509_CRL_it; 1198 1199 int X509_CRL_add0_revoked(libressl_d.openssl.ossl_typ.X509_CRL* crl, libressl_d.openssl.ossl_typ.X509_REVOKED* rev); 1200 int X509_CRL_get0_by_serial(libressl_d.openssl.ossl_typ.X509_CRL* crl, libressl_d.openssl.ossl_typ.X509_REVOKED** ret, libressl_d.openssl.ossl_typ.ASN1_INTEGER* serial); 1201 int X509_CRL_get0_by_cert(libressl_d.openssl.ossl_typ.X509_CRL* crl, libressl_d.openssl.ossl_typ.X509_REVOKED** ret, libressl_d.openssl.ossl_typ.X509* x); 1202 1203 .X509_PKEY* X509_PKEY_new(); 1204 void X509_PKEY_free(.X509_PKEY* a); 1205 1206 .NETSCAPE_SPKI* NETSCAPE_SPKI_new(); 1207 void NETSCAPE_SPKI_free(.NETSCAPE_SPKI* a); 1208 .NETSCAPE_SPKI* d2i_NETSCAPE_SPKI(.NETSCAPE_SPKI** a, const (ubyte)** in_, core.stdc.config.c_long len); 1209 int i2d_NETSCAPE_SPKI(.NETSCAPE_SPKI* a, ubyte** out_); 1210 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM NETSCAPE_SPKI_it; 1211 .NETSCAPE_SPKAC* NETSCAPE_SPKAC_new(); 1212 void NETSCAPE_SPKAC_free(.NETSCAPE_SPKAC* a); 1213 .NETSCAPE_SPKAC* d2i_NETSCAPE_SPKAC(.NETSCAPE_SPKAC** a, const (ubyte)** in_, core.stdc.config.c_long len); 1214 int i2d_NETSCAPE_SPKAC(.NETSCAPE_SPKAC* a, ubyte** out_); 1215 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM NETSCAPE_SPKAC_it; 1216 .NETSCAPE_CERT_SEQUENCE* NETSCAPE_CERT_SEQUENCE_new(); 1217 void NETSCAPE_CERT_SEQUENCE_free(.NETSCAPE_CERT_SEQUENCE* a); 1218 .NETSCAPE_CERT_SEQUENCE* d2i_NETSCAPE_CERT_SEQUENCE(.NETSCAPE_CERT_SEQUENCE** a, const (ubyte)** in_, core.stdc.config.c_long len); 1219 int i2d_NETSCAPE_CERT_SEQUENCE(.NETSCAPE_CERT_SEQUENCE* a, ubyte** out_); 1220 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM NETSCAPE_CERT_SEQUENCE_it; 1221 1222 version (OPENSSL_NO_EVP) { 1223 } else { 1224 .X509_INFO* X509_INFO_new(); 1225 void X509_INFO_free(.X509_INFO* a); 1226 char* X509_NAME_oneline(const (libressl_d.openssl.ossl_typ.X509_NAME)* a, char* buf, int size); 1227 1228 int ASN1_item_digest(const (libressl_d.openssl.ossl_typ.ASN1_ITEM)* it, const (libressl_d.openssl.ossl_typ.EVP_MD)* type, void* data, ubyte* md, uint* len); 1229 1230 int ASN1_item_verify(const (libressl_d.openssl.ossl_typ.ASN1_ITEM)* it, libressl_d.openssl.ossl_typ.X509_ALGOR* algor1, libressl_d.openssl.ossl_typ.ASN1_BIT_STRING* signature, void* data, libressl_d.openssl.ossl_typ.EVP_PKEY* pkey); 1231 1232 int ASN1_item_sign(const (libressl_d.openssl.ossl_typ.ASN1_ITEM)* it, libressl_d.openssl.ossl_typ.X509_ALGOR* algor1, libressl_d.openssl.ossl_typ.X509_ALGOR* algor2, libressl_d.openssl.ossl_typ.ASN1_BIT_STRING* signature, void* data, libressl_d.openssl.ossl_typ.EVP_PKEY* pkey, const (libressl_d.openssl.ossl_typ.EVP_MD)* type); 1233 int ASN1_item_sign_ctx(const (libressl_d.openssl.ossl_typ.ASN1_ITEM)* it, libressl_d.openssl.ossl_typ.X509_ALGOR* algor1, libressl_d.openssl.ossl_typ.X509_ALGOR* algor2, libressl_d.openssl.ossl_typ.ASN1_BIT_STRING* signature, void* asn, libressl_d.openssl.ossl_typ.EVP_MD_CTX* ctx); 1234 } 1235 1236 const (.stack_st_X509_EXTENSION)* X509_get0_extensions(const (libressl_d.openssl.ossl_typ.X509)* x); 1237 const (libressl_d.openssl.ossl_typ.X509_ALGOR)* X509_get0_tbs_sigalg(const (libressl_d.openssl.ossl_typ.X509)* x); 1238 int X509_set_version(libressl_d.openssl.ossl_typ.X509* x, core.stdc.config.c_long version_); 1239 core.stdc.config.c_long X509_get_version(const (libressl_d.openssl.ossl_typ.X509)* x); 1240 int X509_set_serialNumber(libressl_d.openssl.ossl_typ.X509* x, libressl_d.openssl.ossl_typ.ASN1_INTEGER* serial); 1241 libressl_d.openssl.ossl_typ.ASN1_INTEGER* X509_get_serialNumber(libressl_d.openssl.ossl_typ.X509* x); 1242 const (libressl_d.openssl.ossl_typ.ASN1_INTEGER)* X509_get0_serialNumber(const (libressl_d.openssl.ossl_typ.X509)* x); 1243 int X509_set_issuer_name(libressl_d.openssl.ossl_typ.X509* x, libressl_d.openssl.ossl_typ.X509_NAME* name); 1244 libressl_d.openssl.ossl_typ.X509_NAME* X509_get_issuer_name(const (libressl_d.openssl.ossl_typ.X509)* a); 1245 int X509_set_subject_name(libressl_d.openssl.ossl_typ.X509* x, libressl_d.openssl.ossl_typ.X509_NAME* name); 1246 libressl_d.openssl.ossl_typ.X509_NAME* X509_get_subject_name(const (libressl_d.openssl.ossl_typ.X509)* a); 1247 int X509_set_notBefore(libressl_d.openssl.ossl_typ.X509* x, const (libressl_d.openssl.ossl_typ.ASN1_TIME)* tm); 1248 int X509_set1_notBefore(libressl_d.openssl.ossl_typ.X509* x, const (libressl_d.openssl.ossl_typ.ASN1_TIME)* tm); 1249 int X509_set_notAfter(libressl_d.openssl.ossl_typ.X509* x, const (libressl_d.openssl.ossl_typ.ASN1_TIME)* tm); 1250 int X509_set1_notAfter(libressl_d.openssl.ossl_typ.X509* x, const (libressl_d.openssl.ossl_typ.ASN1_TIME)* tm); 1251 const (libressl_d.openssl.ossl_typ.ASN1_TIME)* X509_get0_notBefore(const (libressl_d.openssl.ossl_typ.X509)* x); 1252 libressl_d.openssl.ossl_typ.ASN1_TIME* X509_getm_notBefore(const (libressl_d.openssl.ossl_typ.X509)* x); 1253 const (libressl_d.openssl.ossl_typ.ASN1_TIME)* X509_get0_notAfter(const (libressl_d.openssl.ossl_typ.X509)* x); 1254 libressl_d.openssl.ossl_typ.ASN1_TIME* X509_getm_notAfter(const (libressl_d.openssl.ossl_typ.X509)* x); 1255 int X509_set_pubkey(libressl_d.openssl.ossl_typ.X509* x, libressl_d.openssl.ossl_typ.EVP_PKEY* pkey); 1256 libressl_d.openssl.ossl_typ.EVP_PKEY* X509_get_pubkey(libressl_d.openssl.ossl_typ.X509* x); 1257 libressl_d.openssl.ossl_typ.EVP_PKEY* X509_get0_pubkey(const (libressl_d.openssl.ossl_typ.X509)* x); 1258 libressl_d.openssl.ossl_typ.ASN1_BIT_STRING* X509_get0_pubkey_bitstr(const (libressl_d.openssl.ossl_typ.X509)* x); 1259 int X509_certificate_type(const (libressl_d.openssl.ossl_typ.X509)* x, const (libressl_d.openssl.ossl_typ.EVP_PKEY)* pubkey); 1260 int X509_get_signature_type(const (libressl_d.openssl.ossl_typ.X509)* x); 1261 1262 alias X509_get_notBefore = .X509_getm_notBefore; 1263 alias X509_get_notAfter = .X509_getm_notAfter; 1264 1265 int X509_REQ_set_version(.X509_REQ* x, core.stdc.config.c_long version_); 1266 core.stdc.config.c_long X509_REQ_get_version(const (.X509_REQ)* x); 1267 int X509_REQ_set_subject_name(.X509_REQ* req, libressl_d.openssl.ossl_typ.X509_NAME* name); 1268 libressl_d.openssl.ossl_typ.X509_NAME* X509_REQ_get_subject_name(const (.X509_REQ)* x); 1269 int X509_REQ_set_pubkey(.X509_REQ* x, libressl_d.openssl.ossl_typ.EVP_PKEY* pkey); 1270 libressl_d.openssl.ossl_typ.EVP_PKEY* X509_REQ_get_pubkey(.X509_REQ* req); 1271 int X509_REQ_extension_nid(int nid); 1272 int* X509_REQ_get_extension_nids(); 1273 void X509_REQ_set_extension_nids(int* nids); 1274 .stack_st_X509_EXTENSION* X509_REQ_get_extensions(.X509_REQ* req); 1275 int X509_REQ_add_extensions_nid(.X509_REQ* req, .stack_st_X509_EXTENSION * exts, int nid); 1276 int X509_REQ_add_extensions(.X509_REQ* req, .stack_st_X509_EXTENSION * exts); 1277 int X509_REQ_get_attr_count(const (.X509_REQ)* req); 1278 int X509_REQ_get_attr_by_NID(const (.X509_REQ)* req, int nid, int lastpos); 1279 int X509_REQ_get_attr_by_OBJ(const (.X509_REQ)* req, const (libressl_d.openssl.asn1.ASN1_OBJECT)* obj, int lastpos); 1280 .X509_ATTRIBUTE* X509_REQ_get_attr(const (.X509_REQ)* req, int loc); 1281 .X509_ATTRIBUTE* X509_REQ_delete_attr(.X509_REQ* req, int loc); 1282 int X509_REQ_add1_attr(.X509_REQ* req, .X509_ATTRIBUTE* attr); 1283 int X509_REQ_add1_attr_by_OBJ(.X509_REQ* req, const (libressl_d.openssl.asn1.ASN1_OBJECT)* obj, int type, const (ubyte)* bytes, int len); 1284 int X509_REQ_add1_attr_by_NID(.X509_REQ* req, int nid, int type, const (ubyte)* bytes, int len); 1285 int X509_REQ_add1_attr_by_txt(.X509_REQ* req, const (char)* attrname, int type, const (ubyte)* bytes, int len); 1286 1287 int X509_CRL_set_version(libressl_d.openssl.ossl_typ.X509_CRL* x, core.stdc.config.c_long version_); 1288 int X509_CRL_set_issuer_name(libressl_d.openssl.ossl_typ.X509_CRL* x, libressl_d.openssl.ossl_typ.X509_NAME* name); 1289 int X509_CRL_set_lastUpdate(libressl_d.openssl.ossl_typ.X509_CRL* x, const (libressl_d.openssl.ossl_typ.ASN1_TIME)* tm); 1290 int X509_CRL_set1_lastUpdate(libressl_d.openssl.ossl_typ.X509_CRL* x, const (libressl_d.openssl.ossl_typ.ASN1_TIME)* tm); 1291 int X509_CRL_set_nextUpdate(libressl_d.openssl.ossl_typ.X509_CRL* x, const (libressl_d.openssl.ossl_typ.ASN1_TIME)* tm); 1292 int X509_CRL_set1_nextUpdate(libressl_d.openssl.ossl_typ.X509_CRL* x, const (libressl_d.openssl.ossl_typ.ASN1_TIME)* tm); 1293 int X509_CRL_sort(libressl_d.openssl.ossl_typ.X509_CRL* crl); 1294 1295 const (.stack_st_X509_EXTENSION)* X509_REVOKED_get0_extensions(const (libressl_d.openssl.ossl_typ.X509_REVOKED)* x); 1296 const (libressl_d.openssl.ossl_typ.ASN1_TIME)* X509_REVOKED_get0_revocationDate(const (libressl_d.openssl.ossl_typ.X509_REVOKED)* x); 1297 const (libressl_d.openssl.ossl_typ.ASN1_INTEGER)* X509_REVOKED_get0_serialNumber(const (libressl_d.openssl.ossl_typ.X509_REVOKED)* x); 1298 int X509_REVOKED_set_revocationDate(libressl_d.openssl.ossl_typ.X509_REVOKED* r, libressl_d.openssl.ossl_typ.ASN1_TIME* tm); 1299 int X509_REVOKED_set_serialNumber(libressl_d.openssl.ossl_typ.X509_REVOKED* x, libressl_d.openssl.ossl_typ.ASN1_INTEGER* serial); 1300 1301 int X509_REQ_check_private_key(.X509_REQ* x509, libressl_d.openssl.ossl_typ.EVP_PKEY* pkey); 1302 1303 int X509_check_private_key(const (libressl_d.openssl.ossl_typ.X509)* x509, const (libressl_d.openssl.ossl_typ.EVP_PKEY)* pkey); 1304 1305 int X509_issuer_and_serial_cmp(const (libressl_d.openssl.ossl_typ.X509)* a, const (libressl_d.openssl.ossl_typ.X509)* b); 1306 core.stdc.config.c_ulong X509_issuer_and_serial_hash(libressl_d.openssl.ossl_typ.X509* a); 1307 1308 int X509_issuer_name_cmp(const (libressl_d.openssl.ossl_typ.X509)* a, const (libressl_d.openssl.ossl_typ.X509)* b); 1309 core.stdc.config.c_ulong X509_issuer_name_hash(libressl_d.openssl.ossl_typ.X509* a); 1310 1311 int X509_subject_name_cmp(const (libressl_d.openssl.ossl_typ.X509)* a, const (libressl_d.openssl.ossl_typ.X509)* b); 1312 core.stdc.config.c_ulong X509_subject_name_hash(libressl_d.openssl.ossl_typ.X509* x); 1313 1314 version (OPENSSL_NO_MD5) { 1315 } else { 1316 core.stdc.config.c_ulong X509_issuer_name_hash_old(libressl_d.openssl.ossl_typ.X509* a); 1317 core.stdc.config.c_ulong X509_subject_name_hash_old(libressl_d.openssl.ossl_typ.X509* x); 1318 } 1319 1320 int X509_cmp(const (libressl_d.openssl.ossl_typ.X509)* a, const (libressl_d.openssl.ossl_typ.X509)* b); 1321 int X509_NAME_cmp(const (libressl_d.openssl.ossl_typ.X509_NAME)* a, const (libressl_d.openssl.ossl_typ.X509_NAME)* b); 1322 core.stdc.config.c_ulong X509_NAME_hash(libressl_d.openssl.ossl_typ.X509_NAME* x); 1323 core.stdc.config.c_ulong X509_NAME_hash_old(libressl_d.openssl.ossl_typ.X509_NAME* x); 1324 1325 int X509_CRL_cmp(const (libressl_d.openssl.ossl_typ.X509_CRL)* a, const (libressl_d.openssl.ossl_typ.X509_CRL)* b); 1326 int X509_CRL_match(const (libressl_d.openssl.ossl_typ.X509_CRL)* a, const (libressl_d.openssl.ossl_typ.X509_CRL)* b); 1327 int X509_print_ex_fp(libressl_d.compat.stdio.FILE* bp, libressl_d.openssl.ossl_typ.X509* x, core.stdc.config.c_ulong nmflag, core.stdc.config.c_ulong cflag); 1328 int X509_print_fp(libressl_d.compat.stdio.FILE* bp, libressl_d.openssl.ossl_typ.X509* x); 1329 int X509_CRL_print_fp(libressl_d.compat.stdio.FILE* bp, libressl_d.openssl.ossl_typ.X509_CRL* x); 1330 int X509_REQ_print_fp(libressl_d.compat.stdio.FILE* bp, .X509_REQ* req); 1331 int X509_NAME_print_ex_fp(libressl_d.compat.stdio.FILE* fp, const (libressl_d.openssl.ossl_typ.X509_NAME)* nm, int indent, core.stdc.config.c_ulong flags); 1332 1333 version (OPENSSL_NO_BIO) { 1334 } else { 1335 int X509_NAME_print(libressl_d.openssl.bio.BIO* bp, const (libressl_d.openssl.ossl_typ.X509_NAME)* name, int obase); 1336 int X509_NAME_print_ex(libressl_d.openssl.bio.BIO* out_, const (libressl_d.openssl.ossl_typ.X509_NAME)* nm, int indent, core.stdc.config.c_ulong flags); 1337 int X509_print_ex(libressl_d.openssl.bio.BIO* bp, libressl_d.openssl.ossl_typ.X509* x, core.stdc.config.c_ulong nmflag, core.stdc.config.c_ulong cflag); 1338 int X509_print(libressl_d.openssl.bio.BIO* bp, libressl_d.openssl.ossl_typ.X509* x); 1339 int X509_ocspid_print(libressl_d.openssl.bio.BIO* bp, libressl_d.openssl.ossl_typ.X509* x); 1340 int X509_CERT_AUX_print(libressl_d.openssl.bio.BIO* bp, .X509_CERT_AUX* x, int indent); 1341 int X509_CRL_print(libressl_d.openssl.bio.BIO* bp, libressl_d.openssl.ossl_typ.X509_CRL* x); 1342 int X509_REQ_print_ex(libressl_d.openssl.bio.BIO* bp, .X509_REQ* x, core.stdc.config.c_ulong nmflag, core.stdc.config.c_ulong cflag); 1343 int X509_REQ_print(libressl_d.openssl.bio.BIO* bp, .X509_REQ* req); 1344 } 1345 1346 int X509_NAME_entry_count(const (libressl_d.openssl.ossl_typ.X509_NAME)* name); 1347 int X509_NAME_get_text_by_NID(libressl_d.openssl.ossl_typ.X509_NAME* name, int nid, char* buf, int len); 1348 int X509_NAME_get_text_by_OBJ(libressl_d.openssl.ossl_typ.X509_NAME* name, const (libressl_d.openssl.asn1.ASN1_OBJECT)* obj, char* buf, int len); 1349 1350 /* 1351 * NOTE: you should be passsing -1, not 0 as lastpos. The functions that use 1352 * lastpos, search after that position on. 1353 */ 1354 int X509_NAME_get_index_by_NID(const (libressl_d.openssl.ossl_typ.X509_NAME)* name, int nid, int lastpos); 1355 int X509_NAME_get_index_by_OBJ(const (libressl_d.openssl.ossl_typ.X509_NAME)* name, const (libressl_d.openssl.asn1.ASN1_OBJECT)* obj, int lastpos); 1356 .X509_NAME_ENTRY* X509_NAME_get_entry(const (libressl_d.openssl.ossl_typ.X509_NAME)* name, int loc); 1357 .X509_NAME_ENTRY* X509_NAME_delete_entry(libressl_d.openssl.ossl_typ.X509_NAME* name, int loc); 1358 int X509_NAME_add_entry(libressl_d.openssl.ossl_typ.X509_NAME* name, const (.X509_NAME_ENTRY)* ne, int loc, int set); 1359 int X509_NAME_add_entry_by_OBJ(libressl_d.openssl.ossl_typ.X509_NAME* name, const (libressl_d.openssl.asn1.ASN1_OBJECT)* obj, int type, const (ubyte)* bytes, int len, int loc, int set); 1360 int X509_NAME_add_entry_by_NID(libressl_d.openssl.ossl_typ.X509_NAME* name, int nid, int type, const (ubyte)* bytes, int len, int loc, int set); 1361 .X509_NAME_ENTRY* X509_NAME_ENTRY_create_by_txt(.X509_NAME_ENTRY** ne, const (char)* field, int type, const (ubyte)* bytes, int len); 1362 .X509_NAME_ENTRY* X509_NAME_ENTRY_create_by_NID(.X509_NAME_ENTRY** ne, int nid, int type, const (ubyte)* bytes, int len); 1363 int X509_NAME_add_entry_by_txt(libressl_d.openssl.ossl_typ.X509_NAME* name, const (char)* field, int type, const (ubyte)* bytes, int len, int loc, int set); 1364 .X509_NAME_ENTRY* X509_NAME_ENTRY_create_by_OBJ(.X509_NAME_ENTRY** ne, const (libressl_d.openssl.asn1.ASN1_OBJECT)* obj, int type, const (ubyte)* bytes, int len); 1365 int X509_NAME_ENTRY_set_object(.X509_NAME_ENTRY* ne, const (libressl_d.openssl.asn1.ASN1_OBJECT)* obj); 1366 int X509_NAME_ENTRY_set_data(.X509_NAME_ENTRY* ne, int type, const (ubyte)* bytes, int len); 1367 libressl_d.openssl.asn1.ASN1_OBJECT* X509_NAME_ENTRY_get_object(const (.X509_NAME_ENTRY)* ne); 1368 libressl_d.openssl.ossl_typ.ASN1_STRING* X509_NAME_ENTRY_get_data(const (.X509_NAME_ENTRY)* ne); 1369 int X509_NAME_ENTRY_set(const (.X509_NAME_ENTRY)* ne); 1370 1371 int X509v3_get_ext_count(const (.stack_st_X509_EXTENSION)* x); 1372 int X509v3_get_ext_by_NID(const (.stack_st_X509_EXTENSION)* x, int nid, int lastpos); 1373 int X509v3_get_ext_by_OBJ(const (.stack_st_X509_EXTENSION)* x, const (libressl_d.openssl.asn1.ASN1_OBJECT)* obj, int lastpos); 1374 int X509v3_get_ext_by_critical(const (.stack_st_X509_EXTENSION)* x, int crit, int lastpos); 1375 .X509_EXTENSION* X509v3_get_ext(const (.stack_st_X509_EXTENSION)* x, int loc); 1376 .X509_EXTENSION* X509v3_delete_ext(.stack_st_X509_EXTENSION * x, int loc); 1377 .stack_st_X509_EXTENSION* X509v3_add_ext(.stack_st_X509_EXTENSION** x, .X509_EXTENSION* ex, int loc); 1378 1379 int X509_get_ext_count(const (libressl_d.openssl.ossl_typ.X509)* x); 1380 int X509_get_ext_by_NID(const (libressl_d.openssl.ossl_typ.X509)* x, int nid, int lastpos); 1381 int X509_get_ext_by_OBJ(const (libressl_d.openssl.ossl_typ.X509)* x, const (libressl_d.openssl.asn1.ASN1_OBJECT)* obj, int lastpos); 1382 int X509_get_ext_by_critical(const (libressl_d.openssl.ossl_typ.X509)* x, int crit, int lastpos); 1383 .X509_EXTENSION* X509_get_ext(const (libressl_d.openssl.ossl_typ.X509)* x, int loc); 1384 .X509_EXTENSION* X509_delete_ext(libressl_d.openssl.ossl_typ.X509* x, int loc); 1385 int X509_add_ext(libressl_d.openssl.ossl_typ.X509* x, .X509_EXTENSION* ex, int loc); 1386 void* X509_get_ext_d2i(const (libressl_d.openssl.ossl_typ.X509)* x, int nid, int* crit, int* idx); 1387 int X509_add1_ext_i2d(libressl_d.openssl.ossl_typ.X509* x, int nid, void* value, int crit, core.stdc.config.c_ulong flags); 1388 1389 int X509_CRL_get_ext_count(const (libressl_d.openssl.ossl_typ.X509_CRL)* x); 1390 int X509_CRL_get_ext_by_NID(const (libressl_d.openssl.ossl_typ.X509_CRL)* x, int nid, int lastpos); 1391 int X509_CRL_get_ext_by_OBJ(const (libressl_d.openssl.ossl_typ.X509_CRL)* x, const (libressl_d.openssl.asn1.ASN1_OBJECT)* obj, int lastpos); 1392 int X509_CRL_get_ext_by_critical(const (libressl_d.openssl.ossl_typ.X509_CRL)* x, int crit, int lastpos); 1393 .X509_EXTENSION* X509_CRL_get_ext(const (libressl_d.openssl.ossl_typ.X509_CRL)* x, int loc); 1394 .X509_EXTENSION* X509_CRL_delete_ext(libressl_d.openssl.ossl_typ.X509_CRL* x, int loc); 1395 int X509_CRL_add_ext(libressl_d.openssl.ossl_typ.X509_CRL* x, .X509_EXTENSION* ex, int loc); 1396 void* X509_CRL_get_ext_d2i(const (libressl_d.openssl.ossl_typ.X509_CRL)* x, int nid, int* crit, int* idx); 1397 int X509_CRL_add1_ext_i2d(libressl_d.openssl.ossl_typ.X509_CRL* x, int nid, void* value, int crit, core.stdc.config.c_ulong flags); 1398 1399 int X509_REVOKED_get_ext_count(const (libressl_d.openssl.ossl_typ.X509_REVOKED)* x); 1400 int X509_REVOKED_get_ext_by_NID(const (libressl_d.openssl.ossl_typ.X509_REVOKED)* x, int nid, int lastpos); 1401 int X509_REVOKED_get_ext_by_OBJ(const (libressl_d.openssl.ossl_typ.X509_REVOKED)* x, const (libressl_d.openssl.asn1.ASN1_OBJECT)* obj, int lastpos); 1402 int X509_REVOKED_get_ext_by_critical(const (libressl_d.openssl.ossl_typ.X509_REVOKED)* x, int crit, int lastpos); 1403 .X509_EXTENSION* X509_REVOKED_get_ext(const (libressl_d.openssl.ossl_typ.X509_REVOKED)* x, int loc); 1404 .X509_EXTENSION* X509_REVOKED_delete_ext(libressl_d.openssl.ossl_typ.X509_REVOKED* x, int loc); 1405 int X509_REVOKED_add_ext(libressl_d.openssl.ossl_typ.X509_REVOKED* x, .X509_EXTENSION* ex, int loc); 1406 void* X509_REVOKED_get_ext_d2i(const (libressl_d.openssl.ossl_typ.X509_REVOKED)* x, int nid, int* crit, int* idx); 1407 int X509_REVOKED_add1_ext_i2d(libressl_d.openssl.ossl_typ.X509_REVOKED* x, int nid, void* value, int crit, core.stdc.config.c_ulong flags); 1408 1409 .X509_EXTENSION* X509_EXTENSION_create_by_NID(.X509_EXTENSION** ex, int nid, int crit, libressl_d.openssl.ossl_typ.ASN1_OCTET_STRING* data); 1410 .X509_EXTENSION* X509_EXTENSION_create_by_OBJ(.X509_EXTENSION** ex, const (libressl_d.openssl.asn1.ASN1_OBJECT)* obj, int crit, libressl_d.openssl.ossl_typ.ASN1_OCTET_STRING* data); 1411 int X509_EXTENSION_set_object(.X509_EXTENSION* ex, const (libressl_d.openssl.asn1.ASN1_OBJECT)* obj); 1412 int X509_EXTENSION_set_critical(.X509_EXTENSION* ex, int crit); 1413 int X509_EXTENSION_set_data(.X509_EXTENSION* ex, libressl_d.openssl.ossl_typ.ASN1_OCTET_STRING* data); 1414 libressl_d.openssl.asn1.ASN1_OBJECT* X509_EXTENSION_get_object(.X509_EXTENSION* ex); 1415 libressl_d.openssl.ossl_typ.ASN1_OCTET_STRING* X509_EXTENSION_get_data(.X509_EXTENSION* ne); 1416 int X509_EXTENSION_get_critical(const (.X509_EXTENSION)* ex); 1417 1418 int X509at_get_attr_count(const (.stack_st_X509_ATTRIBUTE)* x); 1419 int X509at_get_attr_by_NID(const (.stack_st_X509_ATTRIBUTE)* x, int nid, int lastpos); 1420 int X509at_get_attr_by_OBJ(const (.stack_st_X509_ATTRIBUTE)* sk, const (libressl_d.openssl.asn1.ASN1_OBJECT)* obj, int lastpos); 1421 .X509_ATTRIBUTE* X509at_get_attr(const (.stack_st_X509_ATTRIBUTE)* x, int loc); 1422 .X509_ATTRIBUTE* X509at_delete_attr(.stack_st_X509_ATTRIBUTE * x, int loc); 1423 .stack_st_X509_ATTRIBUTE* X509at_add1_attr(.stack_st_X509_ATTRIBUTE** x, .X509_ATTRIBUTE* attr); 1424 .stack_st_X509_ATTRIBUTE* X509at_add1_attr_by_OBJ(.stack_st_X509_ATTRIBUTE** x, const (libressl_d.openssl.asn1.ASN1_OBJECT)* obj, int type, const (ubyte)* bytes, int len); 1425 .stack_st_X509_ATTRIBUTE* X509at_add1_attr_by_NID(.stack_st_X509_ATTRIBUTE** x, int nid, int type, const (ubyte)* bytes, int len); 1426 .stack_st_X509_ATTRIBUTE* X509at_add1_attr_by_txt(.stack_st_X509_ATTRIBUTE** x, const (char)* attrname, int type, const (ubyte)* bytes, int len); 1427 void* X509at_get0_data_by_OBJ(.stack_st_X509_ATTRIBUTE * x, const (libressl_d.openssl.asn1.ASN1_OBJECT)* obj, int lastpos, int type); 1428 .X509_ATTRIBUTE* X509_ATTRIBUTE_create_by_NID(.X509_ATTRIBUTE** attr, int nid, int atrtype, const (void)* data, int len); 1429 .X509_ATTRIBUTE* X509_ATTRIBUTE_create_by_OBJ(.X509_ATTRIBUTE** attr, const (libressl_d.openssl.asn1.ASN1_OBJECT)* obj, int atrtype, const (void)* data, int len); 1430 .X509_ATTRIBUTE* X509_ATTRIBUTE_create_by_txt(.X509_ATTRIBUTE** attr, const (char)* atrname, int type, const (ubyte)* bytes, int len); 1431 int X509_ATTRIBUTE_set1_object(.X509_ATTRIBUTE* attr, const (libressl_d.openssl.asn1.ASN1_OBJECT)* obj); 1432 int X509_ATTRIBUTE_set1_data(.X509_ATTRIBUTE* attr, int attrtype, const (void)* data, int len); 1433 void* X509_ATTRIBUTE_get0_data(.X509_ATTRIBUTE* attr, int idx, int atrtype, void* data); 1434 int X509_ATTRIBUTE_count(const (.X509_ATTRIBUTE)* attr); 1435 libressl_d.openssl.asn1.ASN1_OBJECT* X509_ATTRIBUTE_get0_object(.X509_ATTRIBUTE* attr); 1436 libressl_d.openssl.asn1.ASN1_TYPE* X509_ATTRIBUTE_get0_type(.X509_ATTRIBUTE* attr, int idx); 1437 1438 int EVP_PKEY_get_attr_count(const (libressl_d.openssl.ossl_typ.EVP_PKEY)* key); 1439 int EVP_PKEY_get_attr_by_NID(const (libressl_d.openssl.ossl_typ.EVP_PKEY)* key, int nid, int lastpos); 1440 int EVP_PKEY_get_attr_by_OBJ(const (libressl_d.openssl.ossl_typ.EVP_PKEY)* key, const (libressl_d.openssl.asn1.ASN1_OBJECT)* obj, int lastpos); 1441 .X509_ATTRIBUTE* EVP_PKEY_get_attr(const (libressl_d.openssl.ossl_typ.EVP_PKEY)* key, int loc); 1442 .X509_ATTRIBUTE* EVP_PKEY_delete_attr(libressl_d.openssl.ossl_typ.EVP_PKEY* key, int loc); 1443 int EVP_PKEY_add1_attr(libressl_d.openssl.ossl_typ.EVP_PKEY* key, .X509_ATTRIBUTE* attr); 1444 int EVP_PKEY_add1_attr_by_OBJ(libressl_d.openssl.ossl_typ.EVP_PKEY* key, const (libressl_d.openssl.asn1.ASN1_OBJECT)* obj, int type, const (ubyte)* bytes, int len); 1445 int EVP_PKEY_add1_attr_by_NID(libressl_d.openssl.ossl_typ.EVP_PKEY* key, int nid, int type, const (ubyte)* bytes, int len); 1446 int EVP_PKEY_add1_attr_by_txt(libressl_d.openssl.ossl_typ.EVP_PKEY* key, const (char)* attrname, int type, const (ubyte)* bytes, int len); 1447 1448 int X509_verify_cert(libressl_d.openssl.ossl_typ.X509_STORE_CTX* ctx); 1449 1450 /* lookup a cert from a X509 STACK */ 1451 libressl_d.openssl.ossl_typ.X509* X509_find_by_issuer_and_serial(.stack_st_X509* sk, libressl_d.openssl.ossl_typ.X509_NAME* name, libressl_d.openssl.ossl_typ.ASN1_INTEGER* serial); 1452 libressl_d.openssl.ossl_typ.X509* X509_find_by_subject(.stack_st_X509* sk, libressl_d.openssl.ossl_typ.X509_NAME* name); 1453 1454 .PBEPARAM* PBEPARAM_new(); 1455 void PBEPARAM_free(.PBEPARAM* a); 1456 .PBEPARAM* d2i_PBEPARAM(.PBEPARAM** a, const (ubyte)** in_, core.stdc.config.c_long len); 1457 int i2d_PBEPARAM(.PBEPARAM* a, ubyte** out_); 1458 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM PBEPARAM_it; 1459 .PBE2PARAM* PBE2PARAM_new(); 1460 void PBE2PARAM_free(.PBE2PARAM* a); 1461 .PBE2PARAM* d2i_PBE2PARAM(.PBE2PARAM** a, const (ubyte)** in_, core.stdc.config.c_long len); 1462 int i2d_PBE2PARAM(.PBE2PARAM* a, ubyte** out_); 1463 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM PBE2PARAM_it; 1464 .PBKDF2PARAM* PBKDF2PARAM_new(); 1465 void PBKDF2PARAM_free(.PBKDF2PARAM* a); 1466 .PBKDF2PARAM* d2i_PBKDF2PARAM(.PBKDF2PARAM** a, const (ubyte)** in_, core.stdc.config.c_long len); 1467 int i2d_PBKDF2PARAM(.PBKDF2PARAM* a, ubyte** out_); 1468 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM PBKDF2PARAM_it; 1469 1470 int PKCS5_pbe_set0_algor(libressl_d.openssl.ossl_typ.X509_ALGOR* algor, int alg, int iter, const (ubyte)* salt, int saltlen); 1471 1472 libressl_d.openssl.ossl_typ.X509_ALGOR* PKCS5_pbe_set(int alg, int iter, const (ubyte)* salt, int saltlen); 1473 libressl_d.openssl.ossl_typ.X509_ALGOR* PKCS5_pbe2_set(const (libressl_d.openssl.ossl_typ.EVP_CIPHER)* cipher, int iter, ubyte* salt, int saltlen); 1474 libressl_d.openssl.ossl_typ.X509_ALGOR* PKCS5_pbe2_set_iv(const (libressl_d.openssl.ossl_typ.EVP_CIPHER)* cipher, int iter, ubyte* salt, int saltlen, ubyte* aiv, int prf_nid); 1475 1476 libressl_d.openssl.ossl_typ.X509_ALGOR* PKCS5_pbkdf2_set(int iter, ubyte* salt, int saltlen, int prf_nid, int keylen); 1477 1478 /* PKCS#8 utilities */ 1479 1480 libressl_d.openssl.ossl_typ.PKCS8_PRIV_KEY_INFO* PKCS8_PRIV_KEY_INFO_new(); 1481 void PKCS8_PRIV_KEY_INFO_free(libressl_d.openssl.ossl_typ.PKCS8_PRIV_KEY_INFO* a); 1482 libressl_d.openssl.ossl_typ.PKCS8_PRIV_KEY_INFO* d2i_PKCS8_PRIV_KEY_INFO(libressl_d.openssl.ossl_typ.PKCS8_PRIV_KEY_INFO** a, const (ubyte)** in_, core.stdc.config.c_long len); 1483 int i2d_PKCS8_PRIV_KEY_INFO(libressl_d.openssl.ossl_typ.PKCS8_PRIV_KEY_INFO* a, ubyte** out_); 1484 extern __gshared const libressl_d.openssl.ossl_typ.ASN1_ITEM PKCS8_PRIV_KEY_INFO_it; 1485 1486 libressl_d.openssl.ossl_typ.EVP_PKEY* EVP_PKCS82PKEY(const (libressl_d.openssl.ossl_typ.PKCS8_PRIV_KEY_INFO)* p8); 1487 libressl_d.openssl.ossl_typ.PKCS8_PRIV_KEY_INFO* EVP_PKEY2PKCS8(libressl_d.openssl.ossl_typ.EVP_PKEY* pkey); 1488 1489 int PKCS8_pkey_set0(libressl_d.openssl.ossl_typ.PKCS8_PRIV_KEY_INFO* priv, libressl_d.openssl.asn1.ASN1_OBJECT* aobj, int version_, int ptype, void* pval, ubyte* penc, int penclen); 1490 int PKCS8_pkey_get0(const (libressl_d.openssl.asn1.ASN1_OBJECT)** ppkalg, const (ubyte)** pk, int* ppklen, const (libressl_d.openssl.ossl_typ.X509_ALGOR)** pa, const (libressl_d.openssl.ossl_typ.PKCS8_PRIV_KEY_INFO)* p8); 1491 1492 const (.stack_st_X509_ATTRIBUTE)* PKCS8_pkey_get0_attrs(const (libressl_d.openssl.ossl_typ.PKCS8_PRIV_KEY_INFO)* p8); 1493 int PKCS8_pkey_add1_attr_by_NID(libressl_d.openssl.ossl_typ.PKCS8_PRIV_KEY_INFO* p8, int nid, int type, const (ubyte)* bytes, int len); 1494 1495 int X509_PUBKEY_set0_param(libressl_d.openssl.ossl_typ.X509_PUBKEY* pub, libressl_d.openssl.asn1.ASN1_OBJECT* aobj, int ptype, void* pval, ubyte* penc, int penclen); 1496 int X509_PUBKEY_get0_param(libressl_d.openssl.asn1.ASN1_OBJECT** ppkalg, const (ubyte)** pk, int* ppklen, libressl_d.openssl.ossl_typ.X509_ALGOR** pa, libressl_d.openssl.ossl_typ.X509_PUBKEY* pub); 1497 1498 int X509_check_trust(libressl_d.openssl.ossl_typ.X509* x, int id, int flags); 1499 int X509_TRUST_get_count(); 1500 .X509_TRUST* X509_TRUST_get0(int idx); 1501 int X509_TRUST_get_by_id(int id); 1502 int X509_TRUST_add(int id, int flags, int function(.X509_TRUST*, libressl_d.openssl.ossl_typ.X509*, int) ck, const (char)* name, int arg1, void* arg2); 1503 void X509_TRUST_cleanup(); 1504 int X509_TRUST_get_flags(const (.X509_TRUST)* xp); 1505 char* X509_TRUST_get0_name(const (.X509_TRUST)* xp); 1506 int X509_TRUST_get_trust(const (.X509_TRUST)* xp); 1507 1508 int X509_up_ref(libressl_d.openssl.ossl_typ.X509* x); 1509 .stack_st_X509* X509_chain_up_ref(.stack_st_X509 * chain); 1510 1511 /* BEGIN ERROR CODES */ 1512 /** 1513 * The following lines are auto generated by the script mkerr.pl. Any changes 1514 * made after this point may be overwritten when the script is next run. 1515 */ 1516 void ERR_load_X509_strings(); 1517 1518 /* Error codes for the X509 functions. */ 1519 1520 /* Function codes. */ 1521 enum X509_F_ADD_CERT_DIR = 100; 1522 enum X509_F_BY_FILE_CTRL = 101; 1523 enum X509_F_CHECK_POLICY = 145; 1524 enum X509_F_DIR_CTRL = 102; 1525 enum X509_F_GET_CERT_BY_SUBJECT = 103; 1526 enum X509_F_NETSCAPE_SPKI_B64_DECODE = 129; 1527 enum X509_F_NETSCAPE_SPKI_B64_ENCODE = 130; 1528 enum X509_F_X509AT_ADD1_ATTR = 135; 1529 enum X509_F_X509V3_ADD_EXT = 104; 1530 enum X509_F_X509_ATTRIBUTE_CREATE_BY_NID = 136; 1531 enum X509_F_X509_ATTRIBUTE_CREATE_BY_OBJ = 137; 1532 enum X509_F_X509_ATTRIBUTE_CREATE_BY_TXT = 140; 1533 enum X509_F_X509_ATTRIBUTE_GET0_DATA = 139; 1534 enum X509_F_X509_ATTRIBUTE_SET1_DATA = 138; 1535 enum X509_F_X509_CHECK_PRIVATE_KEY = 128; 1536 enum X509_F_X509_CRL_PRINT_FP = 147; 1537 enum X509_F_X509_EXTENSION_CREATE_BY_NID = 108; 1538 enum X509_F_X509_EXTENSION_CREATE_BY_OBJ = 109; 1539 enum X509_F_X509_GET_PUBKEY_PARAMETERS = 110; 1540 enum X509_F_X509_LOAD_CERT_CRL_FILE = 132; 1541 enum X509_F_X509_LOAD_CERT_FILE = 111; 1542 enum X509_F_X509_LOAD_CRL_FILE = 112; 1543 enum X509_F_X509_NAME_ADD_ENTRY = 113; 1544 enum X509_F_X509_NAME_ENTRY_CREATE_BY_NID = 114; 1545 enum X509_F_X509_NAME_ENTRY_CREATE_BY_TXT = 131; 1546 enum X509_F_X509_NAME_ENTRY_SET_OBJECT = 115; 1547 enum X509_F_X509_NAME_ONELINE = 116; 1548 enum X509_F_X509_NAME_PRINT = 117; 1549 enum X509_F_X509_PRINT_EX_FP = 118; 1550 enum X509_F_X509_PUBKEY_GET = 119; 1551 enum X509_F_X509_PUBKEY_SET = 120; 1552 enum X509_F_X509_REQ_CHECK_PRIVATE_KEY = 144; 1553 enum X509_F_X509_REQ_PRINT_EX = 121; 1554 enum X509_F_X509_REQ_PRINT_FP = 122; 1555 enum X509_F_X509_REQ_TO_X509 = 123; 1556 enum X509_F_X509_STORE_ADD_CERT = 124; 1557 enum X509_F_X509_STORE_ADD_CRL = 125; 1558 enum X509_F_X509_STORE_CTX_GET1_ISSUER = 146; 1559 enum X509_F_X509_STORE_CTX_INIT = 143; 1560 enum X509_F_X509_STORE_CTX_NEW = 142; 1561 enum X509_F_X509_STORE_CTX_PURPOSE_INHERIT = 134; 1562 enum X509_F_X509_TO_X509_REQ = 126; 1563 enum X509_F_X509_TRUST_ADD = 133; 1564 enum X509_F_X509_TRUST_SET = 141; 1565 enum X509_F_X509_VERIFY_CERT = 127; 1566 1567 /* Reason codes. */ 1568 enum X509_R_BAD_X509_FILETYPE = 100; 1569 enum X509_R_BASE64_DECODE_ERROR = 118; 1570 enum X509_R_CANT_CHECK_DH_KEY = 114; 1571 enum X509_R_CERT_ALREADY_IN_HASH_TABLE = 101; 1572 enum X509_R_ERR_ASN1_LIB = 102; 1573 enum X509_R_INVALID_DIRECTORY = 113; 1574 enum X509_R_INVALID_FIELD_NAME = 119; 1575 enum X509_R_INVALID_TRUST = 123; 1576 enum X509_R_KEY_TYPE_MISMATCH = 115; 1577 enum X509_R_KEY_VALUES_MISMATCH = 116; 1578 enum X509_R_LOADING_CERT_DIR = 103; 1579 enum X509_R_LOADING_DEFAULTS = 104; 1580 enum X509_R_METHOD_NOT_SUPPORTED = 124; 1581 enum X509_R_NO_CERT_SET_FOR_US_TO_VERIFY = 105; 1582 enum X509_R_PUBLIC_KEY_DECODE_ERROR = 125; 1583 enum X509_R_PUBLIC_KEY_ENCODE_ERROR = 126; 1584 enum X509_R_SHOULD_RETRY = 106; 1585 enum X509_R_UNABLE_TO_FIND_PARAMETERS_IN_CHAIN = 107; 1586 enum X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY = 108; 1587 enum X509_R_UNKNOWN_KEY_TYPE = 117; 1588 enum X509_R_UNKNOWN_NID = 109; 1589 enum X509_R_UNKNOWN_PURPOSE_ID = 121; 1590 enum X509_R_UNKNOWN_TRUST_ID = 120; 1591 enum X509_R_UNSUPPORTED_ALGORITHM = 111; 1592 enum X509_R_WRONG_LOOKUP_TYPE = 112; 1593 enum X509_R_WRONG_TYPE = 122;