提交 ba261f71 编写于 作者: J jfigus 提交者: Matt Caswell

Propagate tlsext_status_type from SSL_CTX to SSL

To allow OCSP stapling to work with libcurl.

Github PR #200
Reviewed-by: NRich Salz <rsalz@openssl.org>
Reviewed-by: NMatt Caswell <matt@openssl.org>
上级 b04f9479
...@@ -394,6 +394,9 @@ SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB,(void (*)(void))cb) ...@@ -394,6 +394,9 @@ SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB,(void (*)(void))cb)
# define SSL_CTX_set_tlsext_status_arg(ssl, arg) \ # define SSL_CTX_set_tlsext_status_arg(ssl, arg) \
SSL_CTX_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG,0, (void *)arg) SSL_CTX_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG,0, (void *)arg)
#define SSL_CTX_set_tlsext_status_type(ssl, type) \
SSL_CTX_ctrl(ssl, SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE, type, NULL)
# define SSL_CTX_set_tlsext_ticket_key_cb(ssl, cb) \ # define SSL_CTX_set_tlsext_ticket_key_cb(ssl, cb) \
SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB,(void (*)(void))cb) SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB,(void (*)(void))cb)
......
...@@ -3413,6 +3413,10 @@ long ssl3_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg) ...@@ -3413,6 +3413,10 @@ long ssl3_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg)
return 1; return 1;
} }
case SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE:
ctx->tlsext_status_type = larg;
break;
case SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG: case SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG:
ctx->tlsext_status_arg = parg; ctx->tlsext_status_arg = parg;
return 1; return 1;
......
...@@ -693,7 +693,7 @@ SSL *SSL_new(SSL_CTX *ctx) ...@@ -693,7 +693,7 @@ SSL *SSL_new(SSL_CTX *ctx)
s->tlsext_debug_cb = 0; s->tlsext_debug_cb = 0;
s->tlsext_debug_arg = NULL; s->tlsext_debug_arg = NULL;
s->tlsext_ticket_expected = 0; s->tlsext_ticket_expected = 0;
s->tlsext_status_type = -1; s->tlsext_status_type = ctx->tlsext_status_type;
s->tlsext_status_expected = 0; s->tlsext_status_expected = 0;
s->tlsext_ocsp_ids = NULL; s->tlsext_ocsp_ids = NULL;
s->tlsext_ocsp_exts = NULL; s->tlsext_ocsp_exts = NULL;
...@@ -2502,6 +2502,8 @@ SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth) ...@@ -2502,6 +2502,8 @@ SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth)
*/ */
ret->options |= SSL_OP_NO_COMPRESSION; ret->options |= SSL_OP_NO_COMPRESSION;
ret->tlsext_status_type = -1;
return ret; return ret;
err: err:
SSLerr(SSL_F_SSL_CTX_NEW, ERR_R_MALLOC_FAILURE); SSLerr(SSL_F_SSL_CTX_NEW, ERR_R_MALLOC_FAILURE);
......
...@@ -953,6 +953,10 @@ struct ssl_ctx_st { ...@@ -953,6 +953,10 @@ struct ssl_ctx_st {
size_t tlsext_ellipticcurvelist_length; size_t tlsext_ellipticcurvelist_length;
unsigned char *tlsext_ellipticcurvelist; unsigned char *tlsext_ellipticcurvelist;
# endif /* OPENSSL_NO_EC */ # endif /* OPENSSL_NO_EC */
/* ext status type used for CSR extension (OCSP Stapling) */
int tlsext_status_type;
CRYPTO_RWLOCK *lock; CRYPTO_RWLOCK *lock;
}; };
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册