提交 d31fb0b5 编写于 作者: R Rich Salz 提交者: Rich Salz

Refactor into clear_ciphers; RT3588

While closing RT3588 (Remove obsolete comment) Kurt and I saw that a
few lines to completely clear the SSL cipher state could be moved into
a common function.
Reviewed-by: NKurt Roeckx <kurt@openssl.org>
上级 29eca1c0
...@@ -186,6 +186,14 @@ SSL3_ENC_METHOD ssl3_undef_enc_method = { ...@@ -186,6 +186,14 @@ SSL3_ENC_METHOD ssl3_undef_enc_method = {
int use_context))ssl_undefined_function, int use_context))ssl_undefined_function,
}; };
static void clear_ciphers(SSL *s)
{
/* clear the current cipher */
ssl_clear_cipher_ctx(s);
ssl_clear_hash_ctx(&s->read_hash);
ssl_clear_hash_ctx(&s->write_hash);
}
int SSL_clear(SSL *s) int SSL_clear(SSL *s)
{ {
if (s->method == NULL) { if (s->method == NULL) {
...@@ -217,9 +225,7 @@ int SSL_clear(SSL *s) ...@@ -217,9 +225,7 @@ int SSL_clear(SSL *s)
BUF_MEM_free(s->init_buf); BUF_MEM_free(s->init_buf);
s->init_buf = NULL; s->init_buf = NULL;
ssl_clear_cipher_ctx(s); clear_ciphers(s);
ssl_clear_hash_ctx(&s->read_hash);
ssl_clear_hash_ctx(&s->write_hash);
s->first_packet = 0; s->first_packet = 0;
/* /*
...@@ -548,9 +554,7 @@ void SSL_free(SSL *s) ...@@ -548,9 +554,7 @@ void SSL_free(SSL *s)
SSL_SESSION_free(s->session); SSL_SESSION_free(s->session);
} }
ssl_clear_cipher_ctx(s); clear_ciphers(s);
ssl_clear_hash_ctx(&s->read_hash);
ssl_clear_hash_ctx(&s->write_hash);
ssl_cert_free(s->cert); ssl_cert_free(s->cert);
/* Free up if allocated */ /* Free up if allocated */
...@@ -2450,20 +2454,13 @@ int SSL_do_handshake(SSL *s) ...@@ -2450,20 +2454,13 @@ int SSL_do_handshake(SSL *s)
return (ret); return (ret);
} }
/*
* For the next 2 functions, SSL_clear() sets shutdown and so one of these
* calls will reset it
*/
void SSL_set_accept_state(SSL *s) void SSL_set_accept_state(SSL *s)
{ {
s->server = 1; s->server = 1;
s->shutdown = 0; s->shutdown = 0;
s->state = SSL_ST_ACCEPT | SSL_ST_BEFORE; s->state = SSL_ST_ACCEPT | SSL_ST_BEFORE;
s->handshake_func = s->method->ssl_accept; s->handshake_func = s->method->ssl_accept;
/* clear the current cipher */ clear_ciphers(s);
ssl_clear_cipher_ctx(s);
ssl_clear_hash_ctx(&s->read_hash);
ssl_clear_hash_ctx(&s->write_hash);
} }
void SSL_set_connect_state(SSL *s) void SSL_set_connect_state(SSL *s)
...@@ -2472,10 +2469,7 @@ void SSL_set_connect_state(SSL *s) ...@@ -2472,10 +2469,7 @@ void SSL_set_connect_state(SSL *s)
s->shutdown = 0; s->shutdown = 0;
s->state = SSL_ST_CONNECT | SSL_ST_BEFORE; s->state = SSL_ST_CONNECT | SSL_ST_BEFORE;
s->handshake_func = s->method->ssl_connect; s->handshake_func = s->method->ssl_connect;
/* clear the current cipher */ clear_ciphers(s);
ssl_clear_cipher_ctx(s);
ssl_clear_hash_ctx(&s->read_hash);
ssl_clear_hash_ctx(&s->write_hash);
} }
int ssl_undefined_function(SSL *s) int ssl_undefined_function(SSL *s)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册