1313 * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
1414 */
1515
16- import core.stdc.config ;
17- import core.stdc.stdio ;
18- import core.sys.posix.sched ;
16+ module deimos.openssl.x509 ;
17+
18+ import core.stdc.time ;
19+
20+ import deimos.openssl._d_util;
21+ import deimos.openssl.x509v3 : stack_st_ASN1_OBJECT;
22+
23+ public import deimos.openssl.e_os2;
24+ public import deimos.openssl.ossl_typ;
25+ public import deimos.openssl.symhacks;
26+ public import deimos.openssl.buffer;
27+ public import deimos.openssl.evp;
28+ public import deimos.openssl.bio;
29+ public import deimos.openssl.stack;
30+ public import deimos.openssl.asn1;
31+ public import deimos.openssl.safestack;
32+ public import deimos.openssl.ec;
33+
34+ /* if OPENSSL_API_COMPAT < 0x10100000L */
35+ public import deimos.openssl.rsa;
36+ public import deimos.openssl.dsa;
37+ public import deimos.openssl.dh;
38+ /* endif */
39+
40+ public import deimos.openssl.sha;
1941
2042extern (C ):
43+ nothrow :
2144
2245enum X509_FILETYPE_PEM = 1 ;
2346enum X509_FILETYPE_ASN1 = 2 ;
@@ -563,14 +586,18 @@ int X509_signature_print(
563586int X509_sign (X509 * x, EVP_PKEY * pkey, const (EVP_MD )* md);
564587int X509_sign_ctx (X509 * x, EVP_MD_CTX * ctx);
565588
589+ version (OPENSSL_NO_OCSP) {} else {
566590int X509_http_nbio (OCSP_REQ_CTX * rctx, X509 ** pcert);
591+ }
567592
568593int X509_REQ_sign (X509_REQ * x, EVP_PKEY * pkey, const (EVP_MD )* md);
569594int X509_REQ_sign_ctx (X509_REQ * x, EVP_MD_CTX * ctx);
570595int X509_CRL_sign (X509_CRL * x, EVP_PKEY * pkey, const (EVP_MD )* md);
571596int X509_CRL_sign_ctx (X509_CRL * x, EVP_MD_CTX * ctx);
572597
598+ version (OPENSSL_NO_OCSP) {} else {
573599int X509_CRL_http_nbio (OCSP_REQ_CTX * rctx, X509_CRL ** pcrl);
600+ }
574601
575602int NETSCAPE_SPKI_sign (NETSCAPE_SPKI * x, EVP_PKEY * pkey, const (EVP_MD )* md);
576603
@@ -596,29 +623,36 @@ int X509_NAME_digest(
596623 ubyte * md,
597624 uint * len);
598625
626+ version (OPENSSL_NO_STDIO) {} else {
599627X509 * d2i_X509_fp (FILE * fp, X509 ** x509);
600628int i2d_X509_fp (FILE * fp, X509 * x509);
601629X509_CRL * d2i_X509_CRL_fp (FILE * fp, X509_CRL ** crl);
602630int i2d_X509_CRL_fp (FILE * fp, X509_CRL * crl);
603631X509_REQ * d2i_X509_REQ_fp (FILE * fp, X509_REQ ** req);
604632int i2d_X509_REQ_fp (FILE * fp, X509_REQ * req);
605633
634+ version (OPENSSL_NO_RSA) {} else {
606635RSA * d2i_RSAPrivateKey_fp (FILE * fp, RSA ** rsa);
607636int i2d_RSAPrivateKey_fp (FILE * fp, RSA * rsa);
608637RSA * d2i_RSAPublicKey_fp (FILE * fp, RSA ** rsa);
609638int i2d_RSAPublicKey_fp (FILE * fp, RSA * rsa);
610639RSA * d2i_RSA_PUBKEY_fp (FILE * fp, RSA ** rsa);
611640int i2d_RSA_PUBKEY_fp (FILE * fp, RSA * rsa);
641+ }
612642
643+ version (OPENSSL_NO_DSA) {} else {
613644DSA * d2i_DSA_PUBKEY_fp (FILE * fp, DSA ** dsa);
614645int i2d_DSA_PUBKEY_fp (FILE * fp, DSA * dsa);
615646DSA * d2i_DSAPrivateKey_fp (FILE * fp, DSA ** dsa);
616647int i2d_DSAPrivateKey_fp (FILE * fp, DSA * dsa);
648+ }
617649
650+ version (OPENSSL_NO_EC) {} else {
618651EC_KEY * d2i_EC_PUBKEY_fp (FILE * fp, EC_KEY ** eckey);
619652int i2d_EC_PUBKEY_fp (FILE * fp, EC_KEY * eckey);
620653EC_KEY * d2i_ECPrivateKey_fp (FILE * fp, EC_KEY ** eckey);
621654int i2d_ECPrivateKey_fp (FILE * fp, EC_KEY * eckey);
655+ }
622656
623657X509_SIG * d2i_PKCS8_fp (FILE * fp, X509_SIG ** p8);
624658int i2d_PKCS8_fp (FILE * fp, X509_SIG * p8);
@@ -631,30 +665,36 @@ int i2d_PrivateKey_fp(FILE* fp, EVP_PKEY* pkey);
631665EVP_PKEY * d2i_PrivateKey_fp (FILE * fp, EVP_PKEY ** a);
632666int i2d_PUBKEY_fp (FILE * fp, EVP_PKEY * pkey);
633667EVP_PKEY * d2i_PUBKEY_fp (FILE * fp, EVP_PKEY ** a);
634-
668+ } /+ OPENSSL_NO_STDIO +/
635669X509 * d2i_X509_bio (BIO * bp, X509 ** x509);
636670int i2d_X509_bio (BIO * bp, X509 * x509);
637671X509_CRL * d2i_X509_CRL_bio (BIO * bp, X509_CRL ** crl);
638672int i2d_X509_CRL_bio (BIO * bp, X509_CRL * crl);
639673X509_REQ * d2i_X509_REQ_bio (BIO * bp, X509_REQ ** req);
640674int i2d_X509_REQ_bio (BIO * bp, X509_REQ * req);
641675
676+ version (OPENSSL_NO_RSA) {} else {
642677RSA * d2i_RSAPrivateKey_bio (BIO * bp, RSA ** rsa);
643678int i2d_RSAPrivateKey_bio (BIO * bp, RSA * rsa);
644679RSA * d2i_RSAPublicKey_bio (BIO * bp, RSA ** rsa);
645680int i2d_RSAPublicKey_bio (BIO * bp, RSA * rsa);
646681RSA * d2i_RSA_PUBKEY_bio (BIO * bp, RSA ** rsa);
647682int i2d_RSA_PUBKEY_bio (BIO * bp, RSA * rsa);
683+ }
648684
685+ version (OPENSSL_NO_DSA) {} else {
649686DSA * d2i_DSA_PUBKEY_bio (BIO * bp, DSA ** dsa);
650687int i2d_DSA_PUBKEY_bio (BIO * bp, DSA * dsa);
651688DSA * d2i_DSAPrivateKey_bio (BIO * bp, DSA ** dsa);
652689int i2d_DSAPrivateKey_bio (BIO * bp, DSA * dsa);
690+ }
653691
692+ version (OPENSSL_NO_EC) {} else {
654693EC_KEY * d2i_EC_PUBKEY_bio (BIO * bp, EC_KEY ** eckey);
655694int i2d_EC_PUBKEY_bio (BIO * bp, EC_KEY * eckey);
656695EC_KEY * d2i_ECPrivateKey_bio (BIO * bp, EC_KEY ** eckey);
657696int i2d_ECPrivateKey_bio (BIO * bp, EC_KEY * eckey);
697+ }
658698
659699X509_SIG * d2i_PKCS8_bio (BIO * bp, X509_SIG ** p8);
660700int i2d_PKCS8_bio (BIO * bp, X509_SIG * p8);
@@ -735,14 +775,20 @@ c_long X509_get_pathlen(X509* x);
735775int i2d_PUBKEY (EVP_PKEY * a, ubyte ** pp);
736776EVP_PKEY * d2i_PUBKEY (EVP_PKEY ** a, const (ubyte * )* pp, c_long length);
737777
778+ version (OPENSSL_NO_RSA) {} else {
738779int i2d_RSA_PUBKEY (RSA * a, ubyte ** pp);
739780RSA * d2i_RSA_PUBKEY (RSA ** a, const (ubyte * )* pp, c_long length);
781+ }
740782
783+ version (OPENSSL_NO_DSA) {} else {
741784int i2d_DSA_PUBKEY (DSA * a, ubyte ** pp);
742785DSA * d2i_DSA_PUBKEY (DSA ** a, const (ubyte * )* pp, c_long length);
786+ }
743787
788+ version (OPENSSL_NO_EC) {} else {
744789int i2d_EC_PUBKEY (EC_KEY * a, ubyte ** pp);
745790EC_KEY * d2i_EC_PUBKEY (EC_KEY ** a, const (ubyte * )* pp, c_long length);
791+ }
746792
747793X509_SIG * X509_SIG_new ();
748794void X509_SIG_free (X509_SIG * a);
@@ -971,10 +1017,10 @@ int X509_set_pubkey(X509* x, EVP_PKEY* pkey);
9711017int X509_up_ref (X509 * x);
9721018int X509_get_signature_type (const (X509 )* x);
9731019
974- enum X509_get_notBefore = X509_getm_notBefore;
975- enum X509_get_notAfter = X509_getm_notAfter;
976- enum X509_set_notBefore = X509_set1_notBefore;
977- enum X509_set_notAfter = X509_set1_notAfter;
1020+ alias X509_get_notBefore = X509_getm_notBefore;
1021+ alias X509_get_notAfter = X509_getm_notAfter;
1022+ alias X509_set_notBefore = X509_set1_notBefore;
1023+ alias X509_set_notAfter = X509_set1_notAfter;
9781024
9791025/*
9801026 * This one is only used so that a binary form can output, as in
@@ -1051,8 +1097,8 @@ int X509_CRL_set1_nextUpdate(X509_CRL* x, const(ASN1_TIME)* tm);
10511097int X509_CRL_sort (X509_CRL * crl);
10521098int X509_CRL_up_ref (X509_CRL * crl);
10531099
1054- enum X509_CRL_set_lastUpdate = X509_CRL_set1_lastUpdate;
1055- enum X509_CRL_set_nextUpdate = X509_CRL_set1_nextUpdate;
1100+ alias X509_CRL_set_lastUpdate = X509_CRL_set1_lastUpdate;
1101+ alias X509_CRL_set_nextUpdate = X509_CRL_set1_nextUpdate;
10561102
10571103c_long X509_CRL_get_version (const (X509_CRL )* crl);
10581104const (ASN1_TIME )* X509_CRL_get0_lastUpdate (const (X509_CRL )* crl);
@@ -1103,8 +1149,10 @@ c_ulong X509_issuer_name_hash(X509* a);
11031149int X509_subject_name_cmp (const (X509 )* a, const (X509 )* b);
11041150c_ulong X509_subject_name_hash (X509 * x);
11051151
1152+ version (OPENSSL_NO_MD5) {} else {
11061153c_ulong X509_issuer_name_hash_old (X509 * a);
11071154c_ulong X509_subject_name_hash_old (X509 * x);
1155+ }
11081156
11091157int X509_cmp (const (X509 )* a, const (X509 )* b);
11101158int X509_NAME_cmp (const (X509_NAME )* a, const (X509_NAME )* b);
@@ -1115,6 +1163,7 @@ int X509_CRL_cmp(const(X509_CRL)* a, const(X509_CRL)* b);
11151163int X509_CRL_match (const (X509_CRL )* a, const (X509_CRL )* b);
11161164int X509_aux_print (BIO * out_, X509 * x, int indent);
11171165
1166+ version (OPENSSL_NO_STDIO) {} else {
11181167int X509_print_ex_fp (FILE * bp, X509 * x, c_ulong nmflag, c_ulong cflag);
11191168int X509_print_fp (FILE * bp, X509 * x);
11201169int X509_CRL_print_fp (FILE * bp, X509_CRL * x);
@@ -1124,6 +1173,7 @@ int X509_NAME_print_ex_fp(
11241173 const (X509_NAME )* nm,
11251174 int indent,
11261175 c_ulong flags);
1176+ }
11271177
11281178int X509_NAME_print (BIO * bp, const (X509_NAME )* name, int obase);
11291179int X509_NAME_print_ex (
@@ -1450,6 +1500,7 @@ X509_ALGOR* PKCS5_pbe2_set_iv(
14501500 ubyte * aiv,
14511501 int prf_nid);
14521502
1503+ version (OPENSSL_NO_SCRYPT) {} else {
14531504X509_ALGOR * PKCS5_pbe2_set_scrypt (
14541505 const (EVP_CIPHER )* cipher,
14551506 const (ubyte )* salt,
@@ -1458,6 +1509,7 @@ X509_ALGOR* PKCS5_pbe2_set_scrypt(
14581509 ulong N,
14591510 ulong r,
14601511 ulong p);
1512+ }
14611513
14621514X509_ALGOR * PKCS5_pbkdf2_set (
14631515 int iter,
0 commit comments