From 8844554fcadacc772b9c10664be9c39be96a0c37 Mon Sep 17 00:00:00 2001 From: Takashi Kojo Date: Tue, 8 Nov 2016 19:59:36 +0900 Subject: [PATCH] Templates BIO/SSL/SSL_CTX_ctrl --- src/bio.c | 142 ++++++++++++++++++++++++++++++++++- src/ssl.c | 171 +++++++++++++++++++++++++++++++++++++++++- wolfssl/openssl/ssl.h | 72 +++++++++++++++++- wolfssl/ssl.h | 67 +++++++++++++++-- 4 files changed, 440 insertions(+), 12 deletions(-) diff --git a/src/bio.c b/src/bio.c index a0ae5ac9c..72c68b483 100644 --- a/src/bio.c +++ b/src/bio.c @@ -1,4 +1,4 @@ -/* bio.h +/* bio.c * * Copyright (C) 2006-2016 wolfSSL Inc. * @@ -19,22 +19,162 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA */ +/*** TBD ***/ +WOLFSSL_API long wolfSSL_BIO_ctrl(WOLFSSL_BIO *bio, int cmd, long larg, void *parg) +{ + (void)bio; + (void)cmd; + (void)larg; + (void)parg; + + WOLFSSL_ENTER("BIO_ctrl"); + return 1; +} + +/*** TBD ***/ WOLFSSL_API long wolfSSL_BIO_ctrl_pending(WOLFSSL_BIO *b) { (void) b; + WOLFSSL_ENTER("BIO_ctrl_pending"); return 0; } +/*** TBD ***/ +WOLFSSL_API long wolfSSL_BIO_get_mem_ptr(WOLFSSL_BIO *b, void *m) +{ + (void) b; + (void) m; + WOLFSSL_ENTER("BIO_get_mem_ptr"); + return 0; +} + +/*** TBD ***/ WOLFSSL_API long wolfSSL_BIO_int_ctrl(WOLFSSL_BIO *bp, int cmd, long larg, int iarg) { (void) bp; (void) cmd; (void) larg; (void) iarg; + WOLFSSL_ENTER("BIO_int_ctrl"); return 0; } +/*** TBD ***/ WOLFSSL_API const WOLFSSL_BIO_METHOD *wolfSSL_BIO_s_socket(void) { + WOLFSSL_ENTER("BIO_s_socket"); return (void *)0; } + +/*** TBD ***/ +WOLFSSL_API long wolfSSL_BIO_set_write_buf_size(WOLFSSL_BIO *b, long size) +{ + (void) b; + (void) size; + WOLFSSL_ENTER("BIO_set_write_buf_size"); + return 0; +} + +/*** TBD ***/ +WOLFSSL_API long wolfSSL_BIO_make_bio_pair(WOLFSSL_BIO *b1, WOLFSSL_BIO *b2) +{ + (void) b1; + (void) b2; + WOLFSSL_ENTER("BIO_make_bio_pair"); + return 0; +} + +/*** TBD ***/ +WOLFSSL_API int wolfSSL_BIO_ctrl_reset_read_request(WOLFSSL_BIO *b) +{ + (void) b; + WOLFSSL_ENTER("BIO_ctrl_reset_read_request"); + return 0; +} + +/*** TBD ***/ +WOLFSSL_API int wolfSSL_BIO_nread0(WOLFSSL_BIO *bio, char **buf) +{ + (void) bio; + (void) buf; + WOLFSSL_ENTER("BIO_nread0"); + return 0; +} + +/*** TBD ***/ +WOLFSSL_API int wolfSSL_BIO_nread(WOLFSSL_BIO *bio, char **buf, int num) +{ + (void) bio; + (void) buf; + (void) num; + WOLFSSL_ENTER("BIO_nread"); + return 0; +} + +/*** TBD ***/ +WOLFSSL_API long wolfSSL_BIO_nwrite(WOLFSSL_BIO *bio, char **buf, int num) +{ + (void) bio; + (void) buf; + (void) num; + WOLFSSL_ENTER("BIO_nwrite"); + return 0; +} + +/*** TBD ***/ +WOLFSSL_API long wolfSSL_BIO_reset(WOLFSSL_BIO *bio) +{ + (void) bio; + WOLFSSL_ENTER("BIO_reset"); + return 0; +} + +#if 0 +#ifndef NO_FILESYSTEM +/*** TBD ***/ +WOLFSSL_API long wolfSSL_BIO_set_fp(WOLFSSL_BIO *bio, XFILE fp, int c) +{ + (void) bio; + (void) fp; + (void) c; + WOLFSSL_ENTER("BIO_set_fp"); + return 0; +} + +/*** TBD ***/ +WOLFSSL_API long wolfSSL_BIO_get_fp(WOLFSSL_BIO *bio, XFILE fp) +{ + (void) bio; + (void) fp; + WOLFSSL_ENTER("BIO_get_fp"); + return 0; +} +#endif +#endif + +/*** TBD ***/ +WOLFSSL_API long wolfSSL_BIO_seek(WOLFSSL_BIO *bio, int ofs) +{ + (void) bio; + (void) ofs; + WOLFSSL_ENTER("BIO_seek"); + return 0; +} + +/*** TBD ***/ +WOLFSSL_API long wolfSSL_BIO_write_filename(WOLFSSL_BIO *bio, char *name) +{ + (void) bio; + (void) name; + WOLFSSL_ENTER("BIO_write_filename"); + return 0; +} + +/*** TBD ***/ +WOLFSSL_API long wolfSSL_BIO_set_mem_eof_return(WOLFSSL_BIO *bio, int v) +{ + (void) bio; + (void) v; + WOLFSSL_ENTER("BIO_set_mem_eof_return"); + return 0; +} diff --git a/src/ssl.c b/src/ssl.c index a24c45465..81d8abbd6 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -13172,6 +13172,99 @@ int wolfSSL_PEM_def_callback(char* name, int num, int w, void* key) return 0; } +/*** TBD ***/ +WOLFSSL_API unsigned long wolfSSL_SSL_set_options(WOLFSSL *s, unsigned long op) +{ + (void)s; + (void)op; + return 0; +} + +/*** TBD ***/ +WOLFSSL_API unsigned long wolfSSL_SSL_get_options(const WOLFSSL *s) +{ + (void)s; + return 0; +} + +/*** TBD ***/ +WOLFSSL_API long wolfSSL_SSL_clear_num_renegotiations(WOLFSSL *s) +{ + (void)s; + return 0; +} + +/*** TBD ***/ +WOLFSSL_API long wolfSSL_SSL_total_renegotiations(WOLFSSL *s) +{ + (void)s; + return 0; +} + +/*** TBD ***/ +WOLFSSL_API long wolfSSL_SSL_set_tmp_dh(WOLFSSL *s, WOLFSSL_DH *dh) +{ + (void)s; + (void)dh; + return 0; +} + +/*** TBD ***/ +WOLFSSL_API long wolfSSL_SSL_set_tlsext_debug_arg(WOLFSSL *s, void *arg) +{ + (void)s; + (void)arg; + return 0; +} + +/*** TBD ***/ +WOLFSSL_API long wolfSSL_SSL_set_tlsext_status_type(WOLFSSL *s, int type) +{ + (void)s; + (void)type; + return 0; +} + +/*** TBD ***/ +WOLFSSL_API long wolfSSL_SSL_set_tlsext_status_exts(WOLFSSL *s, void *arg) +{ + (void)s; + (void)arg; + return 0; +} + +/*** TBD ***/ +WOLFSSL_API long wolfSSL_SSL_get_tlsext_status_ids(WOLFSSL *s, void *arg) +{ + (void)s; + (void)arg; + return 0; +} + +/*** TBD ***/ +WOLFSSL_API long wolfSSL_SSL_set_tlsext_status_ids(WOLFSSL *s, void *arg) +{ + (void)s; + (void)arg; + return 0; +} + +/*** TBD ***/ +WOLFSSL_API long wolfSSL_SSL_get_tlsext_status_ocsp_resp(WOLFSSL *s, unsigned char **resp) +{ + (void)s; + (void)resp; + return 0; +} + +/*** TBD ***/ +WOLFSSL_API long wolfSSL_SSL_set_tlsext_status_ocsp_resp(WOLFSSL *s, unsigned char *resp, int len) +{ + (void)s; + (void)resp; + (void)len; + return 0; +} long wolfSSL_CTX_sess_accept(WOLFSSL_CTX* ctx) { @@ -13179,7 +13272,6 @@ long wolfSSL_CTX_sess_accept(WOLFSSL_CTX* ctx) return 0; } - long wolfSSL_CTX_sess_connect(WOLFSSL_CTX* ctx) { (void)ctx; @@ -13256,6 +13348,83 @@ long wolfSSL_CTX_sess_number(WOLFSSL_CTX* ctx) return 0; } +/*** TBC ***/ +WOLFSSL_API long wolfSSL_SSL_CTX_need_tmp_RSA(WOLFSSL_CTX* ctx) +{ + (void)ctx; + return 0; +} + +/*** TBC ***/ +WOLFSSL_API long wolfSSL_SSL_CTX_set_tmp_rsa(WOLFSSL_CTX* ctx) +{ + (void)ctx; + return 0; +} + +/*** TBC ***/ +WOLFSSL_API long wolfSSL_SSL_CTX_set_tmp_dh(WOLFSSL_CTX* ctx) +{ + (void)ctx; + return 0; +} + +/*** TBC ***/ +WOLFSSL_API long wolfSSL_SSL_CTX_add_extra_chain_cert(WOLFSSL_CTX* ctx) +{ + (void)ctx; + return 0; +} + +/*** TBC ***/ +WOLFSSL_API long wolfSSL_SSL_CTX_sess_set_cache_size(WOLFSSL_CTX* ctx) +{ + (void)ctx; + return 0; +} + +/*** TBC ***/ +WOLFSSL_API long wolfSSL_SSL_CTX_sess_get_cache_size(WOLFSSL_CTX* ctx) +{ + (void)ctx; + return 0; +} + +/*** TBC ***/ +WOLFSSL_API long wolfSSL_SSL_CTX_get_session_cache_mode(WOLFSSL_CTX* ctx) +{ + (void)ctx; + return 0; +} + +/*** TBC ***/ +WOLFSSL_API long wolfSSL_SSL_CTX_get_read_ahead(WOLFSSL_CTX* ctx) +{ + (void)ctx; + return 0; +} + +/*** TBC ***/ +WOLFSSL_API long wolfSSL_SSL_CTX_set_read_ahead(WOLFSSL_CTX* ctx) +{ + (void)ctx; + return 0; +} + +/*** TBC ***/ +WOLFSSL_API long wolfSSL_SSL_CTX_set_tlsext_status_arg(WOLFSSL_CTX* ctx) +{ + (void)ctx; + return 0; +} + +/*** TBC ***/ +WOLFSSL_API long wolfSSL_SSL_CTX_set_tlsext_opaque_prf_input_callback_arg(WOLFSSL_CTX* ctx) +{ + (void)ctx; + return 0; +} + #ifndef NO_DES3 void wolfSSL_DES_set_key(WOLFSSL_const_DES_cblock* myDes, WOLFSSL_DES_key_schedule* key) diff --git a/wolfssl/openssl/ssl.h b/wolfssl/openssl/ssl.h index d6fd034f9..d306c3d05 100644 --- a/wolfssl/openssl/ssl.h +++ b/wolfssl/openssl/ssl.h @@ -469,11 +469,77 @@ typedef WOLFSSL_X509_NAME_ENTRY X509_NAME_ENTRY; #define BIO_new_file wolfSSL_BIO_new_file #define BIO_ctrl wolfSSL_BIO_ctrl #define BIO_ctrl_pending wolfSSL_BIO_ctrl_pending -#define BIO_get_mem_ptr(b,pp) wolfSSL_BIO_ctrl(b,BIO_C_GET_BUF_MEM_PTR,0,(char *)pp) +#define BIO_get_mem_ptr wolfSSL_BIO_get_mem_ptr #define BIO_int_ctrl wolfSSL_BIO_int_ctrl -#define BIO_reset(b) (int)wolfSSL_BIO_ctrl(b,BIO_CTRL_RESET,0,NULL) +#define BIO_reset wolfSSL_BIO_reset #define BIO_s_socket wolfSSL_BIO_s_socket -#define BIO_set_fd(b,fd,c) wolfSSL_BIO_int_ctrl(b,BIO_C_SET_FD,c,fd) +#define BIO_set_fd wolfSSL_BBIO_set_fd + +#define BIO_set_write_buf_size wolfSSL_BIO_set_write_buf_size +#define BIO_make_bio_pair wolfSSL_BIO_make_bio_pair + +#define BIO_set_fp wolfSSL_BIO_set_fp +#define BIO_get_fp wolfSSL_BIO_get_fp +#define BIO_seek wolfSSL_BIO_seek +#define BIO_write_filename wolfSSL_BIO_write_filename +#define BIO_set_mem_eof_return wolfSSL_BIO_set_mem_eof_return + +#define SSL_set_options wolfSSL_SSL_set_options +#define SSL_get_options wolfSSL_SSL_get_options +#define SSL_set_tmp_dh wolfSSL_SSL_set_tmp_dh +#define SSL_clear_num_renegotiations wolfSSL_SSL_clear_num_renegotiations +#define SSL_total_renegotiations wolfSSL_SSSL_total_renegotiations +#define SSL_set_tlsext_debug_arg wolfSSL_SSL_set_tlsext_debug_arg +#define SSL_set_tlsext_status_type wolfSSL_SSL_set_tlsext_status_type +#define SSL_set_tlsext_status_exts wolfSSL_SSL_set_tlsext_status_exts +#define SSL_get_tlsext_status_ids wolfSSL_SSL_get_tlsext_status_ids +#define SSL_set_tlsext_status_ids wolfSSL_SSL_set_tlsext_status_ids +#define SSL_get_tlsext_status_ocsp_resp wolfSSL_SSL_get_tlsext_status_ocsp_resp +#define SSL_set_tlsext_status_ocsp_resp wolfSSL_SSL_set_tlsext_status_ocsp_resp + +#define SSL_CTX_need_tmp_RSA() wolfSSL_SSL_CTX_ctrl(ctx,SSL_CTRL_NEED_TMP_RSA,0,NULL) +#define SSL_CTX_set_tmp_rsa() wolfSSL_SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_RSA,0,(char *)rsa) +#define SSL_CTX_set_tmp_dh() wolfSSL_SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_DH,0,(char *)dh) +#define SSL_CTX_add_extra_chain_cert() wolfSSL_SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char *)x509) +#define SSL_CTX_get_read_ahead() wolfSSL_SSL_CTX_ctrl(ctx,SSL_CTRL_GET_READ_AHEAD,0,NULL) +#define SSL_CTX_set_read_ahead() wolfSSL_SSL_CTX_ctrl(ctx,SSL_CTRL_SET_READ_AHEAD,m,NULL) +#define SSL_CTX_set_tlsext_status_arg() wolfSSL_SSL_CTX_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG,0, (void *)arg) +#define SSL_CTX_set_tlsext_opaque_prf_input_callback_arg() wolfSSL_SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG, 0, arg) + +#define BIO_C_SET_FILE_PTR 106 +#define BIO_C_GET_FILE_PTR 107 +#define BIO_C_SET_FILENAME 108 +#define BIO_C_FILE_SEEK 128 +#define BIO_C_SET_BUF_MEM_EOF_RETURN 130 +#define BIO_C_SET_WRITE_BUF_SIZE 136 +#define BIO_C_MAKE_BIO_PAIR 138 + +#define BIO_CTRL_RESET 1 +#define BIO_CTRL_INFO 3 +#define BIO_CTRL_FLUSH 11 +#define BIO_CLOSE 0x01 +#define BIO_FP_WRITE 0x04 + +#define SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS 11 +#define SSL_CTRL_GET_TOTAL_RENEGOTIATIONS 12 +#define SSL_CTRL_SET_TMP_DH 3 +#define SSL_CTRL_SET_TLSEXT_DEBUG_ARG 57 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE 65 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS 66 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS 67 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS 68 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS 69 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP 70 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP 71 + +#define SSL_CTRL_SET_TMP_DH 3 +#define SSL_CTRL_EXTRA_CHAIN_CERT 14 + +#define SSL_CTRL_SET_SESS_CACHE_SIZE 42 +#define SSL_CTRL_GET_READ_AHEAD 40 +#define SSL_CTRL_SET_READ_AHEAD 41 + +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG 64 #ifdef HAVE_STUNNEL #include diff --git a/wolfssl/ssl.h b/wolfssl/ssl.h index 678fefb45..fa6f73a1a 100644 --- a/wolfssl/ssl.h +++ b/wolfssl/ssl.h @@ -501,13 +501,35 @@ WOLFSSL_API int wolfSSL_BIO_get_mem_data(WOLFSSL_BIO* bio,const unsigned char** WOLFSSL_API WOLFSSL_BIO* wolfSSL_BIO_new_mem_buf(void* buf, int len); -WOLFSSL_API long wolfSSL_BIO_set_ssl(WOLFSSL_BIO*, WOLFSSL*, int flag); -WOLFSSL_API void wolfSSL_set_bio(WOLFSSL*, WOLFSSL_BIO* rd, WOLFSSL_BIO* wr); +WOLFSSL_API long wolfSSL_BIO_set_ssl(WOLFSSL_BIO*, WOLFSSL*, int flag); +WOLFSSL_API void wolfSSL_set_bio(WOLFSSL*, WOLFSSL_BIO* rd, WOLFSSL_BIO* wr); +WOLFSSL_API int wolfSSL_add_all_algorithms(void); -WOLFSSL_API long wolfSSL_BIO_ctrl(WOLFSSL_BIO *bp, int cmd, long larg, void *parg); -WOLFSSL_API long wolfSSL_BIO_ctrl_pending(WOLFSSL_BIO *b); -WOLFSSL_API int wolfSSL_add_all_algorithms(void); -WOLFSSL_API long wolfSSL_BIO_int_ctrl(WOLFSSL_BIO *bp, int cmd, long larg, int iarg); +WOLFSSL_API const WOLFSSL_BIO_METHOD *wolfSSL_BIO_s_socket(void); + +WOLFSSL_API long wolfSSL_BIO_ctrl(WOLFSSL_BIO *bp, int cmd, long larg, void *parg); +WOLFSSL_API long wolfSSL_BIO_ctrl_pending(WOLFSSL_BIO *b); +WOLFSSL_API long wolfSSL_BIO_int_ctrl(WOLFSSL_BIO *bp, int cmd, long larg, int iarg); + +WOLFSSL_API long wolfSSL_BIO_set_write_buf_size(WOLFSSL_BIO *b, long size); +WOLFSSL_API long wolfSSL_BIO_make_bio_pair(WOLFSSL_BIO *b1, WOLFSSL_BIO *b2); +WOLFSSL_API int wolfSSL_BIO_ctrl_reset_read_request(WOLFSSL_BIO *b); +WOLFSSL_API int wolfSSL_BIO_nread0(WOLFSSL_BIO *bio, char **buf); +WOLFSSL_API int wolfSSL_BIO_nread(WOLFSSL_BIO *bio, char **buf, int num); +WOLFSSL_API long wolfSSL_BIO_nwrite(WOLFSSL_BIO *bio, char **buf, int num); +WOLFSSL_API long wolfSSL_BIO_reset(WOLFSSL_BIO *bio); + +#if 0 +#ifndef NO_FILESYSTEM +WOLFSSL_API long wolfSSL_BIO_set_fp(WOLFSSL_BIO *bio, XFILE fp, int c); +WOLFSSL_API long wolfSSL_BIO_get_fp(WOLFSSL_BIO *bio, XFILE fp); +#endif +#endif + +WOLFSSL_API long wolfSSL_BIO_seek(WOLFSSL_BIO *bio, int ofs); +WOLFSSL_API long wolfSSL_BIO_write_filename(WOLFSSL_BIO *bio, char *name); +WOLFSSL_API long wolfSSL_BIO_set_mem_eof_return(WOLFSSL_BIO *bio, int v); +WOLFSSL_API long wolfSSL_BIO_get_mem_ptr(WOLFSSL_BIO *b, void *m); const WOLFSSL_BIO_METHOD *wolfSSL_BIO_s_socket(void); WOLFSSL_API void wolfSSL_RAND_screen(void); @@ -654,6 +676,32 @@ WOLFSSL_API long wolfSSL_CTX_sess_timeouts(WOLFSSL_CTX*); WOLFSSL_API long wolfSSL_CTX_sess_number(WOLFSSL_CTX*); WOLFSSL_API long wolfSSL_CTX_sess_get_cache_size(WOLFSSL_CTX*); +WOLFSSL_API long wolfSSL_SSL_CTX_need_tmp_RSA(WOLFSSL_CTX*); +WOLFSSL_API long wolfSSL_SSL_CTX_set_tmp_rsa(WOLFSSL_CTX*); +WOLFSSL_API long wolfSSL_SSL_CTX_set_tmp_dh(WOLFSSL_CTX*); +WOLFSSL_API long wolfSSL_SSL_CTX_add_extra_chain_cert(WOLFSSL_CTX*); +WOLFSSL_API long wolfSSL_SSL_CTX_sess_set_cache_size(WOLFSSL_CTX*); +WOLFSSL_API long wolfSSL_SSL_CTX_sess_get_cache_size(WOLFSSL_CTX*); + +WOLFSSL_API long wolfSSL_SSL_CTX_get_session_cache_mode(WOLFSSL_CTX*); +WOLFSSL_API long wolfSSL_SSL_CTX_get_read_ahead(WOLFSSL_CTX*); +WOLFSSL_API long wolfSSL_SSL_CTX_set_read_ahead(WOLFSSL_CTX*); +WOLFSSL_API long wolfSSL_SSL_CTX_set_tlsext_status_arg(WOLFSSL_CTX*); +WOLFSSL_API long wolfSSL_SSL_CTX_set_tlsext_opaque_prf_input_callback_arg(WOLFSSL_CTX*); + +WOLFSSL_API unsigned long wolfSSL_SSL_set_options(WOLFSSL *s, unsigned long op); +WOLFSSL_API unsigned long wolfSSL_SSL_get_options(const WOLFSSL *s); +WOLFSSL_API long wolfSSL_SSL_clear_num_renegotiations(WOLFSSL *s); +WOLFSSL_API long wolfSSL_SSL_total_renegotiations(WOLFSSL *s); +WOLFSSL_API long wolfSSL_SSL_set_tmp_dh(WOLFSSL *s, WOLFSSL_DH *dh); +WOLFSSL_API long wolfSSL_SSL_set_tlsext_debug_arg(WOLFSSL *s, void *arg); +WOLFSSL_API long wolfSSL_SSL_set_tlsext_status_type(WOLFSSL *s, int type); +WOLFSSL_API long wolfSSL_SSL_set_tlsext_status_exts(WOLFSSL *s, void *arg); +WOLFSSL_API long wolfSSL_SSL_get_tlsext_status_ids(WOLFSSL *s, void *arg); +WOLFSSL_API long wolfSSL_SSL_set_tlsext_status_ids(WOLFSSL *s, void *arg); +WOLFSSL_API long wolfSSL_SSL_get_tlsext_status_ocsp_resp(WOLFSSL *s, unsigned char **resp); +WOLFSSL_API long wolfSSL_SSL_set_tlsext_status_ocsp_resp(WOLFSSL *s, unsigned char *resp, int len); + #define WOLFSSL_DEFAULT_CIPHER_LIST "" /* default all */ #define WOLFSSL_RSA_F4 0x10001L @@ -1861,7 +1909,12 @@ WOLFSSL_API unsigned char *wolfSSL_SHA1(const unsigned char *d, size_t n, unsign WOLFSSL_API int wolfSSL_X509_check_private_key(WOLFSSL_X509*, WOLFSSL_EVP_PKEY*); WOLFSSL_API STACK_OF(WOLFSSL_X509_NAME) *wolfSSL_dup_CA_list( STACK_OF(WOLFSSL_X509_NAME) *sk ); -/* end lighttpd, mysql, have_stunnel*/ +WOLFSSL_API unsigned long wolfSSL_SSL_CTX_get_options(const WOLFSSL_CTX *ctx); +WOLFSSL_API unsigned long wolfSSL_SSL_CTX_set_options(WOLFSSL_CTX *ctx, unsigned long op); +WOLFSSL_API unsigned long wolfSSL_SSL_get_options(const WOLFSSL *s); +WOLFSSL_API unsigned long wolfSSL_SSL_set_options(WOLFSSL *s, unsigned long op); + +/* end lighttpd*/ #endif #endif