diff --git a/source/deimos/openssl/bio.di b/source/deimos/openssl/bio.di index 41f69c1..0d5e8ea 100644 --- a/source/deimos/openssl/bio.di +++ b/source/deimos/openssl/bio.di @@ -312,8 +312,10 @@ alias BIO_info_cb = bio_info_cb; struct bio_method_st { int type; const(char)* name; - ExternC!(int function(BIO*, const(char)*, int)) bwrite; - ExternC!(int function(BIO*, char*, int)) bread; + ExternC!(int function(BIO*, const(char)*, size_t, size_t*)) bwrite; + ExternC!(int function(BIO*, const(char)*, int)) bwrite_legacy; + ExternC!(int function(BIO*, char*, size_t, size_t*)) bread; + ExternC!(int function(BIO*, char*, int)) bread_legacy; ExternC!(int function(BIO*, const(char)*)) bputs; ExternC!(int function(BIO*, char*, int)) bgets; ExternC!(c_long function(BIO*, int, c_long, void*)) ctrl; @@ -323,11 +325,14 @@ struct bio_method_st { } alias bio_method_st BIO_METHOD; + struct bio_st { BIO_METHOD* method; /* bio, mode, argp, argi, argl, ret */ - ExternC!(c_long function(bio_st*,int,const(char)*,int, c_long,long)) callback; + ExternC!(c_long function(bio_st*,int,const(char)*,int, c_long,c_long)) callback; + ExternC!(c_long function(bio_st*,int,const(char)*,size_t len, int argi, + c_long argl, int ret, size_t *processed)) callback_ex; char* cb_arg; /* first argument for the callback */ int init_; @@ -339,10 +344,11 @@ struct bio_st bio_st* next_bio; /* used by filter BIOs */ bio_st* prev_bio; /* used by filter BIOs */ int references; - c_ulong num_read; - c_ulong num_write; + ulong num_read; + ulong num_write; CRYPTO_EX_DATA ex_data; + void* lock; }; /+mixin DECLARE_STACK_OF!(BIO);+/ diff --git a/source/deimos/openssl/ssl.di b/source/deimos/openssl/ssl.di index 1d5270c..8c0efae 100644 --- a/source/deimos/openssl/ssl.di +++ b/source/deimos/openssl/ssl.di @@ -559,6 +559,12 @@ version(OPENSSL_NO_SRP) {} else { } // OPENSSL_NO_SSL_INTERN +alias ALPNCallback = int function(SSL *ssl, const(char) **output, ubyte* outlen, const(char) *input, uint inlen, void *arg); +void SSL_CTX_set_alpn_select_cb(SSL_CTX *ctx, ALPNCallback cb, void *arg); +int SSL_set_alpn_protos(SSL *ssl, const char *data, uint len); +int SSL_CTX_set_alpn_protos(SSL_CTX *ctx, const char* protos, uint protos_len); +void SSL_get0_alpn_selected(const SSL *ssl, const(char)** data, uint *len); + enum SSL_OP_MICROSOFT_SESS_ID_BUG = 0x00000001; enum SSL_OP_NETSCAPE_CHALLENGE_BUG = 0x00000002; /* Allow initial connection to servers that don't support RI */ @@ -619,8 +625,10 @@ enum SSL_OP_TLS_ROLLBACK_BUG = 0x00800000; enum SSL_OP_NO_SSLv2 = 0x01000000; enum SSL_OP_NO_SSLv3 = 0x02000000; enum SSL_OP_NO_TLSv1 = 0x04000000; -enum SSL_OP_NO_TLSv1_2 = 0x08000000L; enum SSL_OP_NO_TLSv1_1 = 0x10000000L; +enum SSL_OP_NO_TLSv1_2 = 0x08000000L; +enum SSL_OP_NO_TLSv1_3 = 0x20000000L; +enum SSL_OP_ALLOW_NO_DHE_KEX = 0x00000400L; /* These next two were never actually used for anything since SSLeay * zap so we have some more flags. @@ -1778,6 +1786,9 @@ enum SSL_CTRL_CLEAR_MODE = 78; enum SSL_CTRL_GET_EXTRA_CHAIN_CERTS = 82; enum SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS = 83; +enum SSL_CTRL_SET_GROUPS_LIST = 92; +enum SSL_CTRL_SET_SIGALGS_LIST = 98; + auto DTLSv1_get_timeout()(SSL* ssl, void* arg) { pragma(inline, true); return SSL_ctrl(ssl,DTLS_CTRL_GET_TIMEOUT,0,arg); } @@ -1816,7 +1827,12 @@ auto SSL_CTX_set_tmp_dh()(SSL_CTX* ctx, void* dh) { auto SSL_CTX_set_tmp_ecdh()(SSL_CTX* ctx, void* ecdh) { pragma(inline, true); return SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_ECDH,0,ecdh); } - +auto SSL_CTX_set1_groups_list()(SSL_CTX* ctx, const(char)* groups) { + return SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS_LIST,0,cast(void*)groups); +} +auto SSL_CTX_set1_sigalgs_list()(SSL_CTX* ctx, const(char)* sigalgs) { + return SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SIGALGS_LIST,0,cast(void*)sigalgs); +} auto SSL_need_tmp_RSA()(SSL* ssl) { pragma(inline, true); return SSL_ctrl(ssl,SSL_CTRL_NEED_TMP_RSA,0,null); } @@ -2105,6 +2121,7 @@ void SSL_free(SSL* ssl); int SSL_accept(SSL* ssl); int SSL_connect(SSL* ssl); int SSL_read(SSL* ssl,void* buf,int num); +int SSL_read_ex(SSL* ssl,void* buf, size_t num, size_t *readbytes); int SSL_peek(SSL* ssl,void* buf,int num); int SSL_write(SSL* ssl,const(void)* buf,int num); c_long SSL_ctrl(SSL* ssl,int cmd, c_long larg, void* parg);