Skip to content

Commit 0c05031

Browse files
committed
Change *_get_ex_new_index functions to macros
This change happened in v1.1.0 but was not applied to the bindings. Some macros were introduced post-1.1 and the backward-compatible definition has been introduced.
1 parent fe23868 commit 0c05031

File tree

12 files changed

+174
-42
lines changed

12 files changed

+174
-42
lines changed

source/deimos/openssl/bio.d

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -621,8 +621,19 @@ auto BIO_dgram_set_peer()(BIO* b,void* peer) { return cast(int) BIO_ctrl(b, BIO_
621621
/* void BIO_set_ex_free_func(BIO* bio,int idx,ExternC!(void function()) cb); */
622622
int BIO_set_ex_data(BIO* bio,int idx,void* data);
623623
void* BIO_get_ex_data(BIO* bio,int idx);
624-
int BIO_get_ex_new_index(c_long argl, void* argp, CRYPTO_EX_new* new_func,
625-
CRYPTO_EX_dup* dup_func, CRYPTO_EX_free* free_func);
624+
static if (OPENSSL_VERSION_BEFORE(1, 1, 0))
625+
{
626+
int BIO_get_ex_new_index(c_long argl, void* argp, CRYPTO_EX_new* new_func,
627+
CRYPTO_EX_dup* dup_func, CRYPTO_EX_free* free_func);
628+
}
629+
else
630+
{
631+
auto BIO_get_ex_new_index () (c_long l, void* p, CRYPTO_EX_new* newf,
632+
CRYPTO_EX_dup* dupf, CRYPTO_EX_free* freef)
633+
{
634+
return CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_BIO, l, p, newf, dupf, freef);
635+
}
636+
}
626637
c_ulong BIO_number_read(BIO* bio);
627638
c_ulong BIO_number_written(BIO* bio);
628639

source/deimos/openssl/crypto.d

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -156,20 +156,6 @@ enum SSLEAY_BUILT_ON = 3;
156156
enum SSLEAY_PLATFORM = 4;
157157
enum SSLEAY_DIR = 5;
158158

159-
/* Already declared in types.h */
160-
/+#if 0
161-
alias crypto_ex_data_st CRYPTO_EX_DATA;
162-
/* Called when a new object is created */
163-
typedef int CRYPTO_EX_new(void* parent, void* ptr, CRYPTO_EX_DATA* ad,
164-
int idx, c_long argl, void* argp);
165-
/* Called when an object is free()ed */
166-
typedef void CRYPTO_EX_free(void* parent, void* ptr, CRYPTO_EX_DATA* ad,
167-
int idx, c_long argl, void* argp);
168-
/* Called when we need to dup an object */
169-
typedef int CRYPTO_EX_dup(CRYPTO_EX_DATA* to, CRYPTO_EX_DATA* from, void* from_d,
170-
int idx, c_long argl, void* argp);
171-
#endif+/
172-
173159
/* A generic structure to pass assorted data in a expandable way */
174160
struct openssl_item_st {
175161
int code;
@@ -412,6 +398,11 @@ int CRYPTO_ex_data_new_class();
412398
int CRYPTO_get_ex_new_index(int class_index, c_long argl, void* argp,
413399
CRYPTO_EX_new* new_func, CRYPTO_EX_dup* dup_func,
414400
CRYPTO_EX_free* free_func);
401+
static if (OPENSSL_VERSION_AT_LEAST(1, 1, 0))
402+
{
403+
/* No longer use an index. */
404+
int CRYPTO_free_ex_index(int class_index, int idx);
405+
}
415406
/* Initialise/duplicate/free CRYPTO_EX_DATA variables corresponding to a given
416407
* class (invokes whatever per-class callbacks are applicable) */
417408
int CRYPTO_new_ex_data(int class_index, void* obj, CRYPTO_EX_DATA* ad);
@@ -599,6 +590,7 @@ enum CRYPTO_F_CRYPTO_SET_EX_DATA = 102;
599590
enum CRYPTO_F_DEF_ADD_INDEX = 104;
600591
enum CRYPTO_F_DEF_GET_CLASS = 105;
601592
enum CRYPTO_F_FIPS_MODE_SET = 109;
593+
enum CRYPTO_F_GET_AND_LOCK = 113;
602594
enum CRYPTO_F_INT_DUP_EX_DATA = 106;
603595
enum CRYPTO_F_INT_FREE_EX_DATA = 107;
604596
enum CRYPTO_F_INT_NEW_EX_DATA = 108;

source/deimos/openssl/dh.d

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -195,8 +195,20 @@ DH* DH_new();
195195
void DH_free(DH* dh);
196196
int DH_up_ref(DH* dh);
197197
int DH_size(const(DH)* dh);
198-
int DH_get_ex_new_index(c_long argl, void* argp, CRYPTO_EX_new* new_func,
199-
CRYPTO_EX_dup* dup_func, CRYPTO_EX_free* free_func);
198+
199+
static if (OPENSSL_VERSION_BEFORE(1, 1, 0))
200+
{
201+
int DH_get_ex_new_index(c_long argl, void* argp, CRYPTO_EX_new* new_func,
202+
CRYPTO_EX_dup* dup_func, CRYPTO_EX_free* free_func);
203+
}
204+
else
205+
{
206+
auto DH_get_ex_new_index () (c_long l, void* p, CRYPTO_EX_new* newf,
207+
CRYPTO_EX_dup dupf, CRYPTO_EX_free freef)
208+
{
209+
return CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_DH, l, p, newf, dupf, freef);
210+
}
211+
}
200212
int DH_set_ex_data(DH* d, int idx, void* arg);
201213
void* DH_get_ex_data(DH* d, int idx);
202214

source/deimos/openssl/dsa.d

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -218,8 +218,19 @@ int DSA_sign(int type,const(ubyte)* dgst,int dlen,
218218
ubyte* sig, uint* siglen, DSA* dsa);
219219
int DSA_verify(int type,const(ubyte)* dgst,int dgst_len,
220220
const(ubyte)* sigbuf, int siglen, DSA* dsa);
221-
int DSA_get_ex_new_index(c_long argl, void* argp, CRYPTO_EX_new* new_func,
222-
CRYPTO_EX_dup* dup_func, CRYPTO_EX_free* free_func);
221+
static if (OPENSSL_VERSION_BEFORE(1, 1, 0))
222+
{
223+
int DSA_get_ex_new_index(c_long argl, void* argp, CRYPTO_EX_new* new_func,
224+
CRYPTO_EX_dup* dup_func, CRYPTO_EX_free* free_func);
225+
}
226+
else
227+
{
228+
auto DSA_get_ex_new_index(c_long l, void* p, CRYPTO_EX_new* newf,
229+
CRYPTO_EX_dup* dupf, CRYPTO_EX_free* freef)
230+
{
231+
return CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_DSA, l, p, newf, dupf, freef);
232+
}
233+
}
223234
int DSA_set_ex_data(DSA* d, int idx, void* arg);
224235
void* DSA_get_ex_data(DSA* d, int idx);
225236

source/deimos/openssl/ecdh.d

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,19 @@ int ECDH_set_method(EC_KEY*, const(ECDH_METHOD)*);
9494
int ECDH_compute_key(void* out_, size_t outlen, const(EC_POINT)* pub_key, EC_KEY* ecdh,
9595
ExternC!(void* function(const(void)* in_, size_t inlen, void* out_, size_t* outlen)) KDF);
9696

97-
int ECDH_get_ex_new_index(c_long argl, void* argp, CRYPTO_EX_new
98-
*new_func, CRYPTO_EX_dup* dup_func, CRYPTO_EX_free* free_func);
97+
static if (OPENSSL_VERSION_BEFORE(1, 1, 0))
98+
{
99+
int ECDH_get_ex_new_index(c_long argl, void* argp, CRYPTO_EX_new* new_func,
100+
CRYPTO_EX_dup* dup_func, CRYPTO_EX_free* free_func);
101+
}
102+
else
103+
{
104+
auto ECDH_get_ex_new_index () (c_long l, void* p, CRYPTO_EX_new* newf,
105+
CRYPTO_EX_dup* dupf, CRYPTO_EX_free* freef)
106+
{
107+
return CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_ECDH, l, p, newf, dupf, freef);
108+
}
109+
}
99110
int ECDH_set_ex_data(EC_KEY* d, int idx, void* arg);
100111
void* ECDH_get_ex_data(EC_KEY* d, int idx);
101112

source/deimos/openssl/ecdsa.d

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -223,8 +223,19 @@ int ECDSA_verify(int type, const(ubyte)* dgst, int dgstlen,
223223
const(ubyte)* sig, int siglen, EC_KEY* eckey);
224224

225225
/* the standard ex_data functions */
226-
int ECDSA_get_ex_new_index(c_long argl, void* argp, CRYPTO_EX_new
227-
*new_func, CRYPTO_EX_dup* dup_func, CRYPTO_EX_free* free_func);
226+
static if (OPENSSL_VERSION_BEFORE(1, 1, 0))
227+
{
228+
int ECDSA_get_ex_new_index(c_long argl, void* argp, CRYPTO_EX_new* new_func,
229+
CRYPTO_EX_dup* dup_func, CRYPTO_EX_free* free_func);
230+
}
231+
else
232+
{
233+
auto ECDSA_get_ex_new_index () (c_long l, void* p, CRYPTO_EX_new* newf,
234+
CRYPTO_EX_dup* dupf, CRYPTO_EX_free* freef)
235+
{
236+
return CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_ECDSA, l, p, newf, dupf, freef);
237+
}
238+
}
228239
int ECDSA_set_ex_data(EC_KEY* d, int idx, void* arg);
229240
void* ECDSA_get_ex_data(EC_KEY* d, int idx);
230241

source/deimos/openssl/engine.d

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -497,8 +497,19 @@ int ENGINE_set_pkey_asn1_meths(ENGINE* e, ENGINE_PKEY_ASN1_METHS_PTR f);
497497
int ENGINE_set_flags(ENGINE* e, int flags);
498498
int ENGINE_set_cmd_defns(ENGINE* e, const(ENGINE_CMD_DEFN)* defns);
499499
/* These functions allow control over any per-structure ENGINE data. */
500-
int ENGINE_get_ex_new_index(c_long argl, void* argp, CRYPTO_EX_new* new_func,
500+
static if (OPENSSL_VERSION_BEFORE(1, 1, 0))
501+
{
502+
int ENGINE_get_ex_new_index(c_long argl, void* argp, CRYPTO_EX_new* new_func,
501503
CRYPTO_EX_dup* dup_func, CRYPTO_EX_free* free_func);
504+
}
505+
else
506+
{
507+
auto ENGINE_get_ex_new_index () (c_long l, void* p, CRYPTO_EX_new* newf,
508+
CRYPTO_EX_dup* dupf, CRYPTO_EX_free* freef)
509+
{
510+
return CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_ENGINE, l, p, newf, dupf, freef);
511+
}
512+
}
502513
int ENGINE_set_ex_data(ENGINE* e, int idx, void* arg);
503514
void* ENGINE_get_ex_data(const(ENGINE)* e, int idx);
504515

source/deimos/openssl/rsa.d

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -539,8 +539,19 @@ int RSA_padding_add_PKCS1_PSS_mgf1(RSA *rsa, ubyte* EM,
539539
const(ubyte)* mHash,
540540
const(EVP_MD)* Hash, const(EVP_MD)* mgf1Hash, int sLen);
541541

542-
int RSA_get_ex_new_index(c_long argl, void* argp, CRYPTO_EX_new* new_func,
543-
CRYPTO_EX_dup* dup_func, CRYPTO_EX_free* free_func);
542+
static if (OPENSSL_VERSION_BEFORE(1, 1, 0))
543+
{
544+
int RSA_get_ex_new_index(c_long argl, void* argp, CRYPTO_EX_new* new_func,
545+
CRYPTO_EX_dup* dup_func, CRYPTO_EX_free* free_func);
546+
}
547+
else
548+
{
549+
auto RSA_get_ex_new_index () (c_long l, void* p, CRYPTO_EX_new* newf,
550+
CRYPTO_EX_dup* dupf, CRYPTO_EX_free* freef)
551+
{
552+
return CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_RSA, l, p, newf, dupf, freef);
553+
}
554+
}
544555
int RSA_set_ex_data(RSA* r,int idx,void* arg);
545556
void* RSA_get_ex_data(const(RSA)* r, int idx);
546557

source/deimos/openssl/ssl.d

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2179,18 +2179,42 @@ c_long SSL_get_verify_result(const(SSL)* ssl);
21792179

21802180
int SSL_set_ex_data(SSL* ssl,int idx,void* data);
21812181
void* SSL_get_ex_data(const(SSL)* ssl,int idx);
2182-
int SSL_get_ex_new_index(c_long argl, void* argp, CRYPTO_EX_new* new_func,
2183-
CRYPTO_EX_dup* dup_func, CRYPTO_EX_free* free_func);
2182+
2183+
static if (OPENSSL_VERSION_BEFORE(1, 1, 0))
2184+
{
2185+
int SSL_get_ex_new_index(c_long argl, void* argp, CRYPTO_EX_new* new_func,
2186+
CRYPTO_EX_dup* dup_func, CRYPTO_EX_free* free_func);
2187+
int SSL_SESSION_get_ex_new_index(c_long argl, void* argp, CRYPTO_EX_new* new_func,
2188+
CRYPTO_EX_dup* dup_func, CRYPTO_EX_free* free_func);
2189+
int SSL_CTX_get_ex_new_index(c_long argl, void* argp, CRYPTO_EX_new* new_func,
2190+
CRYPTO_EX_dup* dup_func, CRYPTO_EX_free* free_func);
2191+
}
2192+
else
2193+
{
2194+
auto SSL_get_ex_new_index () (c_long l, void* p, CRYPTO_EX_new* newf,
2195+
CRYPTO_EX_dup* dupf, CRYPTO_EX_free* freef)
2196+
{
2197+
return CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL, l, p, newf, dupf, freef);
2198+
}
2199+
2200+
auto SSL_SESSION_get_ex_new_index () (c_long l, void* p, CRYPTO_EX_new* newf,
2201+
CRYPTO_EX_dup* dupf, CRYPTO_EX_free* freef)
2202+
{
2203+
return CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_SESSION, l, p, newf, dupf, freef);
2204+
}
2205+
2206+
auto SSL_CTX_get_ex_new_index () (c_long l, void* p, CRYPTO_EX_new* newf,
2207+
CRYPTO_EX_dup* dupf, CRYPTO_EX_free* freef)
2208+
{
2209+
return CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_CTX, l, p, newf, dupf, freef);
2210+
}
2211+
}
21842212

21852213
int SSL_SESSION_set_ex_data(SSL_SESSION* ss,int idx,void* data);
21862214
void* SSL_SESSION_get_ex_data(const(SSL_SESSION)* ss,int idx);
2187-
int SSL_SESSION_get_ex_new_index(c_long argl, void* argp, CRYPTO_EX_new* new_func,
2188-
CRYPTO_EX_dup* dup_func, CRYPTO_EX_free* free_func);
21892215

21902216
int SSL_CTX_set_ex_data(SSL_CTX* ssl,int idx,void* data);
21912217
void* SSL_CTX_get_ex_data(const(SSL_CTX)* ssl,int idx);
2192-
int SSL_CTX_get_ex_new_index(c_long argl, void* argp, CRYPTO_EX_new* new_func,
2193-
CRYPTO_EX_dup* dup_func, CRYPTO_EX_free* free_func);
21942218

21952219
int SSL_get_ex_data_X509_STORE_CTX_idx();
21962220

source/deimos/openssl/ui.d

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -227,8 +227,19 @@ enum UI_CTRL_IS_REDOABLE = 2;
227227
/* Some methods may use extra data */
228228
auto UI_set_app_data()(UI* s,void* arg) { return UI_set_ex_data(s,0,arg); }
229229
auto UI_get_app_data()(UI* s) { return UI_get_ex_data(s,0); }
230-
int UI_get_ex_new_index(c_long argl, void* argp, CRYPTO_EX_new* new_func,
231-
CRYPTO_EX_dup* dup_func, CRYPTO_EX_free* free_func);
230+
static if (OPENSSL_VERSION_BEFORE(1, 1, 0))
231+
{
232+
int UI_get_ex_new_index(c_long argl, void* argp, CRYPTO_EX_new* new_func,
233+
CRYPTO_EX_dup* dup_func, CRYPTO_EX_free* free_func);
234+
}
235+
else
236+
{
237+
auto UI_get_ex_new_index () (c_long l, void* p, CRYPTO_EX_new* newf,
238+
CRYPTO_EX_dup* dupf, CRYPTO_EX_free* freef)
239+
{
240+
return CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_UI, l, p, newf, dupf, freef);
241+
}
242+
}
232243
int UI_set_ex_data(UI* r,int idx,void* arg);
233244
void* UI_get_ex_data(UI* r, int idx);
234245

0 commit comments

Comments
 (0)