Skip to content

Fix and add various functions related to http/2 #115

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 11 additions & 5 deletions source/deimos/openssl/bio.di
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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_;
Expand All @@ -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);+/
Expand Down
21 changes: 19 additions & 2 deletions source/deimos/openssl/ssl.di
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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);
}
Expand Down Expand Up @@ -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);
}
Expand Down Expand Up @@ -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);
Expand Down