projects
/
openssl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Change snprintf to memcpy
[openssl.git]
/
ssl
/
statem
/
statem_srvr.c
diff --git
a/ssl/statem/statem_srvr.c
b/ssl/statem/statem_srvr.c
index f0b79f037f3fb9106d46f51727be535f967a0acc..b68366cb332a8c426cbf65c6af8102f93756cfd9 100644
(file)
--- a/
ssl/statem/statem_srvr.c
+++ b/
ssl/statem/statem_srvr.c
@@
-180,9
+180,9
@@
static STACK_OF(SSL_CIPHER) *ssl_bytes_to_cipher_list(SSL *s,
* 1: Success (transition allowed)
* 0: Error (transition not allowed)
*/
* 1: Success (transition allowed)
* 0: Error (transition not allowed)
*/
-int server_read_transition(SSL *s, int mt)
+int
ossl_statem_
server_read_transition(SSL *s, int mt)
{
{
- STATEM *st = &s->statem;
+
OSSL_
STATEM *st = &s->statem;
switch(st->hand_state) {
case TLS_ST_BEFORE:
switch(st->hand_state) {
case TLS_ST_BEFORE:
@@
-232,10
+232,10
@@
int server_read_transition(SSL *s, int mt)
* received a Certificate from the client. If so then |s->session->peer|
* will be non NULL. In some instances a CertificateVerify message is
* not required even if the peer has sent a Certificate (e.g. such as in
* received a Certificate from the client. If so then |s->session->peer|
* will be non NULL. In some instances a CertificateVerify message is
* not required even if the peer has sent a Certificate (e.g. such as in
- * the case of static DH). In that case |s->no_cert_verify| should be
+ * the case of static DH). In that case |s
t
->no_cert_verify| should be
* set.
*/
* set.
*/
- if (s->session->peer == NULL || s->no_cert_verify) {
+ if (s->session->peer == NULL || s
t
->no_cert_verify) {
if (mt == SSL3_MT_CHANGE_CIPHER_SPEC) {
/*
* For the ECDH ciphersuites when the client sends its ECDH
if (mt == SSL3_MT_CHANGE_CIPHER_SPEC) {
/*
* For the ECDH ciphersuites when the client sends its ECDH
@@
-402,9
+402,9
@@
static inline int send_certificate_request(SSL *s)
* server_write_transition() works out what handshake state to move to next
* when the server is writing messages to be sent to the client.
*/
* server_write_transition() works out what handshake state to move to next
* when the server is writing messages to be sent to the client.
*/
-
enum WRITE_TRAN
server_write_transition(SSL *s)
+
WRITE_TRAN ossl_statem_
server_write_transition(SSL *s)
{
{
- STATEM *st = &s->statem;
+
OSSL_
STATEM *st = &s->statem;
switch(st->hand_state) {
case TLS_ST_BEFORE:
switch(st->hand_state) {
case TLS_ST_BEFORE:
@@
-418,7
+418,7
@@
enum WRITE_TRAN server_write_transition(SSL *s)
case TLS_ST_SW_HELLO_REQ:
st->hand_state = TLS_ST_OK;
case TLS_ST_SW_HELLO_REQ:
st->hand_state = TLS_ST_OK;
- statem_set_in_init(s, 0);
+
ossl_
statem_set_in_init(s, 0);
return WRITE_TRAN_CONTINUE;
case TLS_ST_SR_CLNT_HELLO:
return WRITE_TRAN_CONTINUE;
case TLS_ST_SR_CLNT_HELLO:
@@
-485,7
+485,7
@@
enum WRITE_TRAN server_write_transition(SSL *s)
case TLS_ST_SR_FINISHED:
if (s->hit) {
st->hand_state = TLS_ST_OK;
case TLS_ST_SR_FINISHED:
if (s->hit) {
st->hand_state = TLS_ST_OK;
- statem_set_in_init(s, 0);
+
ossl_
statem_set_in_init(s, 0);
return WRITE_TRAN_CONTINUE;
} else if (s->tlsext_ticket_expected) {
st->hand_state = TLS_ST_SW_SESSION_TICKET;
return WRITE_TRAN_CONTINUE;
} else if (s->tlsext_ticket_expected) {
st->hand_state = TLS_ST_SW_SESSION_TICKET;
@@
-507,7
+507,7
@@
enum WRITE_TRAN server_write_transition(SSL *s)
return WRITE_TRAN_FINISHED;
}
st->hand_state = TLS_ST_OK;
return WRITE_TRAN_FINISHED;
}
st->hand_state = TLS_ST_OK;
- statem_set_in_init(s, 0);
+
ossl_
statem_set_in_init(s, 0);
return WRITE_TRAN_CONTINUE;
default:
return WRITE_TRAN_CONTINUE;
default:
@@
-520,9
+520,9
@@
enum WRITE_TRAN server_write_transition(SSL *s)
* Perform any pre work that needs to be done prior to sending a message from
* the server to the client.
*/
* Perform any pre work that needs to be done prior to sending a message from
* the server to the client.
*/
-
enum WORK_STATE server_pre_work(SSL *s, enum
WORK_STATE wst)
+
WORK_STATE ossl_statem_server_pre_work(SSL *s,
WORK_STATE wst)
{
{
- STATEM *st = &s->statem;
+
OSSL_
STATEM *st = &s->statem;
switch(st->hand_state) {
case TLS_ST_SW_HELLO_REQ:
switch(st->hand_state) {
case TLS_ST_SW_HELLO_REQ:
@@
-570,7
+570,7
@@
enum WORK_STATE server_pre_work(SSL *s, enum WORK_STATE wst)
case TLS_ST_SW_CHANGE:
s->session->cipher = s->s3->tmp.new_cipher;
if (!s->method->ssl3_enc->setup_key_block(s)) {
case TLS_ST_SW_CHANGE:
s->session->cipher = s->s3->tmp.new_cipher;
if (!s->method->ssl3_enc->setup_key_block(s)) {
- statem_set_error(s);
+
ossl_
statem_set_error(s);
return WORK_ERROR;
}
if (SSL_IS_DTLS(s)) {
return WORK_ERROR;
}
if (SSL_IS_DTLS(s)) {
@@
-599,9
+599,9
@@
enum WORK_STATE server_pre_work(SSL *s, enum WORK_STATE wst)
* Perform any work that needs to be done after sending a message from the
* server to the client.
*/
* Perform any work that needs to be done after sending a message from the
* server to the client.
*/
-
enum WORK_STATE server_post_work(SSL *s, enum
WORK_STATE wst)
+
WORK_STATE ossl_statem_server_post_work(SSL *s,
WORK_STATE wst)
{
{
- STATEM *st = &s->statem;
+
OSSL_
STATEM *st = &s->statem;
s->init_num = 0;
s->init_num = 0;
@@
-635,13
+635,13
@@
enum WORK_STATE server_post_work(SSL *s, enum WORK_STATE wst)
* Add new shared key for SCTP-Auth, will be ignored if no
* SCTP used.
*/
* Add new shared key for SCTP-Auth, will be ignored if no
* SCTP used.
*/
-
snprintf((char *)labelbuffer, sizeof(DTLS1_SCTP_AUTH_LABEL)
,
-
DTLS1_SCTP_AUTH_LABEL
);
+
memcpy(labelbuffer, DTLS1_SCTP_AUTH_LABEL
,
+
sizeof(DTLS1_SCTP_AUTH_LABEL)
);
if (SSL_export_keying_material(s, sctpauthkey,
sizeof(sctpauthkey), labelbuffer,
sizeof(labelbuffer), NULL, 0, 0) <= 0) {
if (SSL_export_keying_material(s, sctpauthkey,
sizeof(sctpauthkey), labelbuffer,
sizeof(labelbuffer), NULL, 0, 0) <= 0) {
- statem_set_error(s);
+
ossl_
statem_set_error(s);
return WORK_ERROR;
}
return WORK_ERROR;
}
@@
-664,7
+664,7
@@
enum WORK_STATE server_post_work(SSL *s, enum WORK_STATE wst)
#endif
if (!s->method->ssl3_enc->change_cipher_state(s,
SSL3_CHANGE_CIPHER_SERVER_WRITE)) {
#endif
if (!s->method->ssl3_enc->change_cipher_state(s,
SSL3_CHANGE_CIPHER_SERVER_WRITE)) {
- statem_set_error(s);
+
ossl_
statem_set_error(s);
return WORK_ERROR;
}
return WORK_ERROR;
}
@@
-707,9
+707,9
@@
enum WORK_STATE server_post_work(SSL *s, enum WORK_STATE wst)
* 1: Success
* 0: Error
*/
* 1: Success
* 0: Error
*/
-int server_construct_message(SSL *s)
+int
ossl_statem_
server_construct_message(SSL *s)
{
{
- STATEM *st = &s->statem;
+
OSSL_
STATEM *st = &s->statem;
switch(st->hand_state) {
case DTLS_ST_SW_HELLO_VERIFY_REQUEST:
switch(st->hand_state) {
case DTLS_ST_SW_HELLO_VERIFY_REQUEST:
@@
-767,9
+767,9
@@
int server_construct_message(SSL *s)
* Returns the maximum allowed length for the current message that we are
* reading. Excludes the message header.
*/
* Returns the maximum allowed length for the current message that we are
* reading. Excludes the message header.
*/
-unsigned long server_max_message_size(SSL *s)
+unsigned long
ossl_statem_
server_max_message_size(SSL *s)
{
{
- STATEM *st = &s->statem;
+
OSSL_
STATEM *st = &s->statem;
switch(st->hand_state) {
case TLS_ST_SR_CLNT_HELLO:
switch(st->hand_state) {
case TLS_ST_SR_CLNT_HELLO:
@@
-806,9
+806,9
@@
unsigned long server_max_message_size(SSL *s)
/*
* Process a message that the server has received from the client.
*/
/*
* Process a message that the server has received from the client.
*/
-
enum MSG_PROCESS_RETURN
server_process_message(SSL *s, PACKET *pkt)
+
MSG_PROCESS_RETURN ossl_statem_
server_process_message(SSL *s, PACKET *pkt)
{
{
- STATEM *st = &s->statem;
+
OSSL_
STATEM *st = &s->statem;
switch(st->hand_state) {
case TLS_ST_SR_CLNT_HELLO:
switch(st->hand_state) {
case TLS_ST_SR_CLNT_HELLO:
@@
-846,9
+846,9
@@
enum MSG_PROCESS_RETURN server_process_message(SSL *s, PACKET *pkt)
* Perform any further processing required following the receipt of a message
* from the client
*/
* Perform any further processing required following the receipt of a message
* from the client
*/
-
enum WORK_STATE server_post_process_message(SSL *s, enum
WORK_STATE wst)
+
WORK_STATE ossl_statem_server_post_process_message(SSL *s,
WORK_STATE wst)
{
{
- STATEM *st = &s->statem;
+
OSSL_
STATEM *st = &s->statem;
switch(st->hand_state) {
case TLS_ST_SR_CLNT_HELLO:
switch(st->hand_state) {
case TLS_ST_SR_CLNT_HELLO:
@@
-871,7
+871,7
@@
enum WORK_STATE server_post_process_message(SSL *s, enum WORK_STATE wst)
statem_set_sctp_read_sock(s, 1);
return WORK_MORE_A;
} else {
statem_set_sctp_read_sock(s, 1);
return WORK_MORE_A;
} else {
- statem_set_sctp_read_sock(s, 0);
+
ossl_ossl_
statem_set_sctp_read_sock(s, 0);
}
#endif
return WORK_FINISHED_CONTINUE;
}
#endif
return WORK_FINISHED_CONTINUE;
@@
-918,7
+918,7
@@
int tls_construct_hello_request(SSL *s)
{
if (!ssl_set_handshake_header(s, SSL3_MT_HELLO_REQUEST, 0)) {
SSLerr(SSL_F_TLS_CONSTRUCT_HELLO_REQUEST, ERR_R_INTERNAL_ERROR);
{
if (!ssl_set_handshake_header(s, SSL3_MT_HELLO_REQUEST, 0)) {
SSLerr(SSL_F_TLS_CONSTRUCT_HELLO_REQUEST, ERR_R_INTERNAL_ERROR);
- statem_set_error(s);
+
ossl_
statem_set_error(s);
return 0;
}
return 0;
}
@@
-956,9
+956,9
@@
int dtls_construct_hello_verify_request(SSL *s)
s->ctx->app_gen_cookie_cb(s, s->d1->cookie,
&(s->d1->cookie_len)) == 0 ||
s->d1->cookie_len > 255) {
s->ctx->app_gen_cookie_cb(s, s->d1->cookie,
&(s->d1->cookie_len)) == 0 ||
s->d1->cookie_len > 255) {
- SSLerr(SSL_F_DTLS
1_SEND
_HELLO_VERIFY_REQUEST,
+ SSLerr(SSL_F_DTLS
_CONSTRUCT
_HELLO_VERIFY_REQUEST,
SSL_R_COOKIE_GEN_CALLBACK_FAILURE);
SSL_R_COOKIE_GEN_CALLBACK_FAILURE);
- statem_set_error(s);
+
ossl_
statem_set_error(s);
return 0;
}
return 0;
}
@@
-976,7
+976,7
@@
int dtls_construct_hello_verify_request(SSL *s)
return 1;
}
return 1;
}
-
enum
MSG_PROCESS_RETURN tls_process_client_hello(SSL *s, PACKET *pkt)
+MSG_PROCESS_RETURN tls_process_client_hello(SSL *s, PACKET *pkt)
{
int i, al = SSL_AD_INTERNAL_ERROR;
unsigned int j, complen = 0;
{
int i, al = SSL_AD_INTERNAL_ERROR;
unsigned int j, complen = 0;
@@
-1145,7
+1145,8
@@
enum MSG_PROCESS_RETURN tls_process_client_hello(SSL *s, PACKET *pkt)
|| !PACKET_get_sub_packet(pkt, &challenge, challenge_len)
/* No extensions. */
|| PACKET_remaining(pkt) != 0) {
|| !PACKET_get_sub_packet(pkt, &challenge, challenge_len)
/* No extensions. */
|| PACKET_remaining(pkt) != 0) {
- SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO, SSL_R_RECORD_LENGTH_MISMATCH);
+ SSLerr(SSL_F_TLS_PROCESS_CLIENT_HELLO,
+ SSL_R_RECORD_LENGTH_MISMATCH);
al = SSL_AD_DECODE_ERROR;
goto f_err;
}
al = SSL_AD_DECODE_ERROR;
goto f_err;
}
@@
-1157,7
+1158,7
@@
enum MSG_PROCESS_RETURN tls_process_client_hello(SSL *s, PACKET *pkt)
if (!PACKET_copy_bytes(&challenge,
s->s3->client_random + SSL3_RANDOM_SIZE -
challenge_len, challenge_len)) {
if (!PACKET_copy_bytes(&challenge,
s->s3->client_random + SSL3_RANDOM_SIZE -
challenge_len, challenge_len)) {
- SSLerr(SSL_F_
SSL3_GET
_CLIENT_HELLO, ERR_R_INTERNAL_ERROR);
+ SSLerr(SSL_F_
TLS_PROCESS
_CLIENT_HELLO, ERR_R_INTERNAL_ERROR);
al = SSL_AD_INTERNAL_ERROR;
goto f_err;
}
al = SSL_AD_INTERNAL_ERROR;
goto f_err;
}
@@
-1169,14
+1170,14
@@
enum MSG_PROCESS_RETURN tls_process_client_hello(SSL *s, PACKET *pkt)
if (!PACKET_copy_bytes(pkt, s->s3->client_random, SSL3_RANDOM_SIZE)
|| !PACKET_get_length_prefixed_1(pkt, &session_id)) {
al = SSL_AD_DECODE_ERROR;
if (!PACKET_copy_bytes(pkt, s->s3->client_random, SSL3_RANDOM_SIZE)
|| !PACKET_get_length_prefixed_1(pkt, &session_id)) {
al = SSL_AD_DECODE_ERROR;
- SSLerr(SSL_F_
SSL3_GET
_CLIENT_HELLO, SSL_R_LENGTH_MISMATCH);
+ SSLerr(SSL_F_
TLS_PROCESS
_CLIENT_HELLO, SSL_R_LENGTH_MISMATCH);
goto f_err;
}
if (SSL_IS_DTLS(s)) {
if (!PACKET_get_length_prefixed_1(pkt, &cookie)) {
al = SSL_AD_DECODE_ERROR;
goto f_err;
}
if (SSL_IS_DTLS(s)) {
if (!PACKET_get_length_prefixed_1(pkt, &cookie)) {
al = SSL_AD_DECODE_ERROR;
- SSLerr(SSL_F_
SSL3_GET
_CLIENT_HELLO, SSL_R_LENGTH_MISMATCH);
+ SSLerr(SSL_F_
TLS_PROCESS
_CLIENT_HELLO, SSL_R_LENGTH_MISMATCH);
goto f_err;
}
/*
goto f_err;
}
/*
@@
-1193,7
+1194,7
@@
enum MSG_PROCESS_RETURN tls_process_client_hello(SSL *s, PACKET *pkt)
if (!PACKET_get_length_prefixed_2(pkt, &cipher_suites)
|| !PACKET_get_length_prefixed_1(pkt, &compression)) {
al = SSL_AD_DECODE_ERROR;
if (!PACKET_get_length_prefixed_2(pkt, &cipher_suites)
|| !PACKET_get_length_prefixed_1(pkt, &compression)) {
al = SSL_AD_DECODE_ERROR;
- SSLerr(SSL_F_
SSL3_GET
_CLIENT_HELLO, SSL_R_LENGTH_MISMATCH);
+ SSLerr(SSL_F_
TLS_PROCESS
_CLIENT_HELLO, SSL_R_LENGTH_MISMATCH);
goto f_err;
}
/* Could be empty. */
goto f_err;
}
/* Could be empty. */
@@
-1253,7
+1254,7
@@
enum MSG_PROCESS_RETURN tls_process_client_hello(SSL *s, PACKET *pkt)
if (s->ctx->app_verify_cookie_cb(s, PACKET_data(&cookie),
PACKET_remaining(&cookie)) == 0) {
al = SSL_AD_HANDSHAKE_FAILURE;
if (s->ctx->app_verify_cookie_cb(s, PACKET_data(&cookie),
PACKET_remaining(&cookie)) == 0) {
al = SSL_AD_HANDSHAKE_FAILURE;
- SSLerr(SSL_F_
SSL3_GET
_CLIENT_HELLO,
+ SSLerr(SSL_F_
TLS_PROCESS
_CLIENT_HELLO,
SSL_R_COOKIE_MISMATCH);
goto f_err;
/* else cookie verification succeeded */
SSL_R_COOKIE_MISMATCH);
goto f_err;
/* else cookie verification succeeded */
@@
-1262,7
+1263,7
@@
enum MSG_PROCESS_RETURN tls_process_client_hello(SSL *s, PACKET *pkt)
} else if (!PACKET_equal(&cookie, s->d1->cookie,
s->d1->cookie_len)) {
al = SSL_AD_HANDSHAKE_FAILURE;
} else if (!PACKET_equal(&cookie, s->d1->cookie,
s->d1->cookie_len)) {
al = SSL_AD_HANDSHAKE_FAILURE;
- SSLerr(SSL_F_
SSL3_GET
_CLIENT_HELLO, SSL_R_COOKIE_MISMATCH);
+ SSLerr(SSL_F_
TLS_PROCESS
_CLIENT_HELLO, SSL_R_COOKIE_MISMATCH);
goto f_err;
}
s->d1->cookie_verified = 1;
goto f_err;
}
s->d1->cookie_verified = 1;
@@
-1274,7
+1275,7
@@
enum MSG_PROCESS_RETURN tls_process_client_hello(SSL *s, PACKET *pkt)
s->version = DTLS1_2_VERSION;
s->method = DTLSv1_2_server_method();
} else if (tls1_suiteb(s)) {
s->version = DTLS1_2_VERSION;
s->method = DTLSv1_2_server_method();
} else if (tls1_suiteb(s)) {
- SSLerr(SSL_F_
SSL3_GET
_CLIENT_HELLO,
+ SSLerr(SSL_F_
TLS_PROCESS
_CLIENT_HELLO,
SSL_R_ONLY_DTLS_1_2_ALLOWED_IN_SUITEB_MODE);
s->version = s->client_version;
al = SSL_AD_PROTOCOL_VERSION;
SSL_R_ONLY_DTLS_1_2_ALLOWED_IN_SUITEB_MODE);
s->version = s->client_version;
al = SSL_AD_PROTOCOL_VERSION;
@@
-1284,7
+1285,7
@@
enum MSG_PROCESS_RETURN tls_process_client_hello(SSL *s, PACKET *pkt)
s->version = DTLS1_VERSION;
s->method = DTLSv1_server_method();
} else {
s->version = DTLS1_VERSION;
s->method = DTLSv1_server_method();
} else {
- SSLerr(SSL_F_
SSL3_GET
_CLIENT_HELLO,
+ SSLerr(SSL_F_
TLS_PROCESS
_CLIENT_HELLO,
SSL_R_WRONG_VERSION_NUMBER);
s->version = s->client_version;
al = SSL_AD_PROTOCOL_VERSION;
SSL_R_WRONG_VERSION_NUMBER);
s->version = s->client_version;
al = SSL_AD_PROTOCOL_VERSION;
@@
-1325,7
+1326,7
@@
enum MSG_PROCESS_RETURN tls_process_client_hello(SSL *s, PACKET *pkt)
* to reuse it
*/
al = SSL_AD_ILLEGAL_PARAMETER;
* to reuse it
*/
al = SSL_AD_ILLEGAL_PARAMETER;
- SSLerr(SSL_F_
SSL3_GET
_CLIENT_HELLO,
+ SSLerr(SSL_F_
TLS_PROCESS
_CLIENT_HELLO,
SSL_R_REQUIRED_CIPHER_MISSING);
goto f_err;
}
SSL_R_REQUIRED_CIPHER_MISSING);
goto f_err;
}
@@
-1340,14
+1341,14
@@
enum MSG_PROCESS_RETURN tls_process_client_hello(SSL *s, PACKET *pkt)
if (j >= complen) {
/* no compress */
al = SSL_AD_DECODE_ERROR;
if (j >= complen) {
/* no compress */
al = SSL_AD_DECODE_ERROR;
- SSLerr(SSL_F_
SSL3_GET
_CLIENT_HELLO, SSL_R_NO_COMPRESSION_SPECIFIED);
+ SSLerr(SSL_F_
TLS_PROCESS
_CLIENT_HELLO, SSL_R_NO_COMPRESSION_SPECIFIED);
goto f_err;
}
/* TLS extensions */
if (s->version >= SSL3_VERSION) {
if (!ssl_parse_clienthello_tlsext(s, &extensions)) {
goto f_err;
}
/* TLS extensions */
if (s->version >= SSL3_VERSION) {
if (!ssl_parse_clienthello_tlsext(s, &extensions)) {
- SSLerr(SSL_F_
SSL3_GET
_CLIENT_HELLO, SSL_R_PARSE_TLSEXT);
+ SSLerr(SSL_F_
TLS_PROCESS
_CLIENT_HELLO, SSL_R_PARSE_TLSEXT);
goto err;
}
}
goto err;
}
}
@@
-1508,16
+1509,16
@@
enum MSG_PROCESS_RETURN tls_process_client_hello(SSL *s, PACKET *pkt)
f_err:
ssl3_send_alert(s, SSL3_AL_FATAL, al);
err:
f_err:
ssl3_send_alert(s, SSL3_AL_FATAL, al);
err:
- statem_set_error(s);
+
ossl_
statem_set_error(s);
sk_SSL_CIPHER_free(ciphers);
return MSG_PROCESS_ERROR;
}
sk_SSL_CIPHER_free(ciphers);
return MSG_PROCESS_ERROR;
}
-
enum WORK_STATE tls_post_process_client_hello(SSL *s, enum
WORK_STATE wst)
+
WORK_STATE tls_post_process_client_hello(SSL *s,
WORK_STATE wst)
{
{
- int al;
+ int al
= SSL_AD_HANDSHAKE_FAILURE
;
SSL_CIPHER *cipher;
if (wst == WORK_MORE_A) {
SSL_CIPHER *cipher;
if (wst == WORK_MORE_A) {
@@
-1539,7
+1540,6
@@
enum WORK_STATE tls_post_process_client_hello(SSL *s, enum WORK_STATE wst)
cipher = ssl3_choose_cipher(s, s->session->ciphers, SSL_get_ciphers(s));
if (cipher == NULL) {
cipher = ssl3_choose_cipher(s, s->session->ciphers, SSL_get_ciphers(s));
if (cipher == NULL) {
- al = SSL_AD_HANDSHAKE_FAILURE;
SSLerr(SSL_F_TLS_POST_PROCESS_CLIENT_HELLO, SSL_R_NO_SHARED_CIPHER);
goto f_err;
}
SSLerr(SSL_F_TLS_POST_PROCESS_CLIENT_HELLO, SSL_R_NO_SHARED_CIPHER);
goto f_err;
}
@@
-1557,8
+1557,10
@@
enum WORK_STATE tls_post_process_client_hello(SSL *s, enum WORK_STATE wst)
}
if (!SSL_USE_SIGALGS(s) || !(s->verify_mode & SSL_VERIFY_PEER)) {
}
if (!SSL_USE_SIGALGS(s) || !(s->verify_mode & SSL_VERIFY_PEER)) {
- if (!ssl3_digest_cached_records(s, 0))
+ if (!ssl3_digest_cached_records(s, 0)) {
+ al = SSL_AD_INTERNAL_ERROR;
goto f_err;
goto f_err;
+ }
}
/*-
}
/*-
@@
-1576,7
+1578,8
@@
enum WORK_STATE tls_post_process_client_hello(SSL *s, enum WORK_STATE wst)
/* Handles TLS extensions that we couldn't check earlier */
if (s->version >= SSL3_VERSION) {
if (ssl_check_clienthello_tlsext_late(s) <= 0) {
/* Handles TLS extensions that we couldn't check earlier */
if (s->version >= SSL3_VERSION) {
if (ssl_check_clienthello_tlsext_late(s) <= 0) {
- SSLerr(SSL_F_TLS_POST_PROCESS_CLIENT_HELLO, SSL_R_CLIENTHELLO_TLSEXT);
+ SSLerr(SSL_F_TLS_POST_PROCESS_CLIENT_HELLO,
+ SSL_R_CLIENTHELLO_TLSEXT);
goto f_err;
}
}
goto f_err;
}
}
@@
-1610,7
+1613,7
@@
enum WORK_STATE tls_post_process_client_hello(SSL *s, enum WORK_STATE wst)
return WORK_FINISHED_STOP;
f_err:
ssl3_send_alert(s, SSL3_AL_FATAL, al);
return WORK_FINISHED_STOP;
f_err:
ssl3_send_alert(s, SSL3_AL_FATAL, al);
- statem_set_error(s);
+
ossl_
statem_set_error(s);
return WORK_ERROR;
}
return WORK_ERROR;
}
@@
-1661,7
+1664,7
@@
int tls_construct_server_hello(SSL *s)
sl = s->session->session_id_length;
if (sl > (int)sizeof(s->session->session_id)) {
SSLerr(SSL_F_TLS_CONSTRUCT_SERVER_HELLO, ERR_R_INTERNAL_ERROR);
sl = s->session->session_id_length;
if (sl > (int)sizeof(s->session->session_id)) {
SSLerr(SSL_F_TLS_CONSTRUCT_SERVER_HELLO, ERR_R_INTERNAL_ERROR);
- statem_set_error(s);
+
ossl_
statem_set_error(s);
return 0;
}
*(p++) = sl;
return 0;
}
*(p++) = sl;
@@
-1684,7
+1687,7
@@
int tls_construct_server_hello(SSL *s)
if (ssl_prepare_serverhello_tlsext(s) <= 0) {
SSLerr(SSL_F_TLS_CONSTRUCT_SERVER_HELLO, SSL_R_SERVERHELLO_TLSEXT);
if (ssl_prepare_serverhello_tlsext(s) <= 0) {
SSLerr(SSL_F_TLS_CONSTRUCT_SERVER_HELLO, SSL_R_SERVERHELLO_TLSEXT);
- statem_set_error(s);
+
ossl_
statem_set_error(s);
return 0;
}
if ((p =
return 0;
}
if ((p =
@@
-1692,7
+1695,7
@@
int tls_construct_server_hello(SSL *s)
&al)) == NULL) {
ssl3_send_alert(s, SSL3_AL_FATAL, al);
SSLerr(SSL_F_TLS_CONSTRUCT_SERVER_HELLO, ERR_R_INTERNAL_ERROR);
&al)) == NULL) {
ssl3_send_alert(s, SSL3_AL_FATAL, al);
SSLerr(SSL_F_TLS_CONSTRUCT_SERVER_HELLO, ERR_R_INTERNAL_ERROR);
- statem_set_error(s);
+
ossl_
statem_set_error(s);
return 0;
}
return 0;
}
@@
-1700,7
+1703,7
@@
int tls_construct_server_hello(SSL *s)
l = (p - d);
if (!ssl_set_handshake_header(s, SSL3_MT_SERVER_HELLO, l)) {
SSLerr(SSL_F_TLS_CONSTRUCT_SERVER_HELLO, ERR_R_INTERNAL_ERROR);
l = (p - d);
if (!ssl_set_handshake_header(s, SSL3_MT_SERVER_HELLO, l)) {
SSLerr(SSL_F_TLS_CONSTRUCT_SERVER_HELLO, ERR_R_INTERNAL_ERROR);
- statem_set_error(s);
+
ossl_
statem_set_error(s);
return 0;
}
return 0;
}
@@
-1711,13
+1714,13
@@
int tls_construct_server_done(SSL *s)
{
if (!ssl_set_handshake_header(s, SSL3_MT_SERVER_DONE, 0)) {
SSLerr(SSL_F_TLS_CONSTRUCT_SERVER_DONE, ERR_R_INTERNAL_ERROR);
{
if (!ssl_set_handshake_header(s, SSL3_MT_SERVER_DONE, 0)) {
SSLerr(SSL_F_TLS_CONSTRUCT_SERVER_DONE, ERR_R_INTERNAL_ERROR);
- statem_set_error(s);
+
ossl_
statem_set_error(s);
return 0;
}
if (!s->s3->tmp.cert_request) {
if (!ssl3_digest_cached_records(s, 0)) {
return 0;
}
if (!s->s3->tmp.cert_request) {
if (!ssl3_digest_cached_records(s, 0)) {
- statem_set_error(s);
+
ossl_
statem_set_error(s);
}
}
}
}
@@
-2187,7
+2190,7
@@
int tls_construct_server_key_exchange(SSL *s)
BN_CTX_free(bn_ctx);
#endif
EVP_MD_CTX_cleanup(&md_ctx);
BN_CTX_free(bn_ctx);
#endif
EVP_MD_CTX_cleanup(&md_ctx);
- statem_set_error(s);
+
ossl_
statem_set_error(s);
return 0;
}
return 0;
}
@@
-2259,11
+2262,11
@@
int tls_construct_certificate_request(SSL *s)
return 1;
err:
return 1;
err:
- statem_set_error(s);
+
ossl_
statem_set_error(s);
return 0;
}
return 0;
}
-
enum
MSG_PROCESS_RETURN tls_process_client_key_exchange(SSL *s, PACKET *pkt)
+MSG_PROCESS_RETURN tls_process_client_key_exchange(SSL *s, PACKET *pkt)
{
int al;
unsigned int i;
{
int al;
unsigned int i;
@@
-2313,7
+2316,7
@@
enum MSG_PROCESS_RETURN tls_process_client_key_exchange(SSL *s, PACKET *pkt)
}
if (!PACKET_strndup(&psk_identity, &s->session->psk_identity)) {
}
if (!PACKET_strndup(&psk_identity, &s->session->psk_identity)) {
- SSLerr(SSL_F_
SSL3_GET
_CLIENT_KEY_EXCHANGE, ERR_R_INTERNAL_ERROR);
+ SSLerr(SSL_F_
TLS_PROCESS
_CLIENT_KEY_EXCHANGE, ERR_R_INTERNAL_ERROR);
al = SSL_AD_INTERNAL_ERROR;
goto f_err;
}
al = SSL_AD_INTERNAL_ERROR;
goto f_err;
}
@@
-2407,7
+2410,8
@@
enum MSG_PROCESS_RETURN tls_process_client_key_exchange(SSL *s, PACKET *pkt)
enc_premaster = orig;
} else {
al = SSL_AD_DECODE_ERROR;
enc_premaster = orig;
} else {
al = SSL_AD_DECODE_ERROR;
- SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE, SSL_R_LENGTH_MISMATCH);
+ SSLerr(SSL_F_TLS_PROCESS_CLIENT_KEY_EXCHANGE,
+ SSL_R_LENGTH_MISMATCH);
goto f_err;
}
}
goto f_err;
}
}
@@
-2421,7
+2425,7
@@
enum MSG_PROCESS_RETURN tls_process_client_key_exchange(SSL *s, PACKET *pkt)
*/
if (RSA_size(rsa) < SSL_MAX_MASTER_KEY_LENGTH) {
al = SSL_AD_INTERNAL_ERROR;
*/
if (RSA_size(rsa) < SSL_MAX_MASTER_KEY_LENGTH) {
al = SSL_AD_INTERNAL_ERROR;
- SSLerr(SSL_F_
SSL3_GET
_CLIENT_KEY_EXCHANGE,
+ SSLerr(SSL_F_
TLS_PROCESS
_CLIENT_KEY_EXCHANGE,
RSA_R_KEY_SIZE_TOO_SMALL);
goto f_err;
}
RSA_R_KEY_SIZE_TOO_SMALL);
goto f_err;
}
@@
-2429,7
+2433,7
@@
enum MSG_PROCESS_RETURN tls_process_client_key_exchange(SSL *s, PACKET *pkt)
rsa_decrypt = OPENSSL_malloc(RSA_size(rsa));
if (rsa_decrypt == NULL) {
al = SSL_AD_INTERNAL_ERROR;
rsa_decrypt = OPENSSL_malloc(RSA_size(rsa));
if (rsa_decrypt == NULL) {
al = SSL_AD_INTERNAL_ERROR;
- SSLerr(SSL_F_
SSL3_GET
_CLIENT_KEY_EXCHANGE, ERR_R_MALLOC_FAILURE);
+ SSLerr(SSL_F_
TLS_PROCESS
_CLIENT_KEY_EXCHANGE, ERR_R_MALLOC_FAILURE);
goto f_err;
}
goto f_err;
}
@@
-2619,7
+2623,7
@@
enum MSG_PROCESS_RETURN tls_process_client_key_exchange(SSL *s, PACKET *pkt)
goto f_err;
}
if (dh_clnt) {
goto f_err;
}
if (dh_clnt) {
- s->no_cert_verify = 1;
+ s->
statem.
no_cert_verify = 1;
return MSG_PROCESS_CONTINUE_PROCESSING;
}
} else
return MSG_PROCESS_CONTINUE_PROCESSING;
}
} else
@@
-2697,7
+2701,7
@@
enum MSG_PROCESS_RETURN tls_process_client_key_exchange(SSL *s, PACKET *pkt)
SSLerr(SSL_F_TLS_PROCESS_CLIENT_KEY_EXCHANGE, ERR_R_EC_LIB);
goto err;
}
SSLerr(SSL_F_TLS_PROCESS_CLIENT_KEY_EXCHANGE, ERR_R_EC_LIB);
goto err;
}
- s->no_cert_verify = 1;
+ s->
statem.
no_cert_verify = 1;
} else {
/*
* Get client's public key from encoded point in the
} else {
/*
* Get client's public key from encoded point in the
@@
-2854,7
+2858,7
@@
enum MSG_PROCESS_RETURN tls_process_client_key_exchange(SSL *s, PACKET *pkt)
/* Check if pubkey from client certificate was used */
if (EVP_PKEY_CTX_ctrl
(pkey_ctx, -1, -1, EVP_PKEY_CTRL_PEER_KEY, 2, NULL) > 0)
/* Check if pubkey from client certificate was used */
if (EVP_PKEY_CTX_ctrl
(pkey_ctx, -1, -1, EVP_PKEY_CTRL_PEER_KEY, 2, NULL) > 0)
- s->no_cert_verify = 1;
+ s->
statem.
no_cert_verify = 1;
EVP_PKEY_free(client_pub_pkey);
EVP_PKEY_CTX_free(pkey_ctx);
EVP_PKEY_free(client_pub_pkey);
EVP_PKEY_CTX_free(pkey_ctx);
@@
-2886,12
+2890,11
@@
enum MSG_PROCESS_RETURN tls_process_client_key_exchange(SSL *s, PACKET *pkt)
OPENSSL_clear_free(s->s3->tmp.psk, s->s3->tmp.psklen);
s->s3->tmp.psk = NULL;
#endif
OPENSSL_clear_free(s->s3->tmp.psk, s->s3->tmp.psklen);
s->s3->tmp.psk = NULL;
#endif
- statem_set_error(s);
+
ossl_
statem_set_error(s);
return MSG_PROCESS_ERROR;
}
return MSG_PROCESS_ERROR;
}
-enum WORK_STATE tls_post_process_client_key_exchange(SSL *s,
- enum WORK_STATE wst)
+WORK_STATE tls_post_process_client_key_exchange(SSL *s, WORK_STATE wst)
{
#ifndef OPENSSL_NO_SCTP
if (wst == WORK_MORE_A) {
{
#ifndef OPENSSL_NO_SCTP
if (wst == WORK_MORE_A) {
@@
-2902,13
+2905,13
@@
enum WORK_STATE tls_post_process_client_key_exchange(SSL *s,
* Add new shared key for SCTP-Auth, will be ignored if no SCTP
* used.
*/
* Add new shared key for SCTP-Auth, will be ignored if no SCTP
* used.
*/
-
snprintf((char *)labelbuffer, sizeof(DTLS1_SCTP_AUTH_LABEL)
,
-
DTLS1_SCTP_AUTH_LABEL
);
+
memcpy(labelbuffer, DTLS1_SCTP_AUTH_LABEL
,
+
sizeof(DTLS1_SCTP_AUTH_LABEL)
);
if (SSL_export_keying_material(s, sctpauthkey,
sizeof(sctpauthkey), labelbuffer,
sizeof(labelbuffer), NULL, 0, 0) <= 0) {
if (SSL_export_keying_material(s, sctpauthkey,
sizeof(sctpauthkey), labelbuffer,
sizeof(labelbuffer), NULL, 0, 0) <= 0) {
- statem_set_error(s);
+
ossl_
statem_set_error(s);
return WORK_ERROR;;
}
return WORK_ERROR;;
}
@@
-2924,7
+2927,7
@@
enum WORK_STATE tls_post_process_client_key_exchange(SSL *s,
/* Are we renegotiating? */
&& s->renegotiate
/* Are we going to skip the CertificateVerify? */
/* Are we renegotiating? */
&& s->renegotiate
/* Are we going to skip the CertificateVerify? */
- && (s->session->peer == NULL || s->no_cert_verify)
+ && (s->session->peer == NULL || s->
statem.
no_cert_verify)
&& BIO_dgram_sctp_msg_waiting(SSL_get_rbio(s))) {
s->s3->in_read_app_data = 2;
s->rwstate = SSL_READING;
&& BIO_dgram_sctp_msg_waiting(SSL_get_rbio(s))) {
s->s3->in_read_app_data = 2;
s->rwstate = SSL_READING;
@@
-2933,11
+2936,11
@@
enum WORK_STATE tls_post_process_client_key_exchange(SSL *s,
statem_set_sctp_read_sock(s, 1);
return WORK_MORE_B;
} else {
statem_set_sctp_read_sock(s, 1);
return WORK_MORE_B;
} else {
- statem_set_sctp_read_sock(s, 0);
+
ossl_
statem_set_sctp_read_sock(s, 0);
}
#endif
}
#endif
- if (s->no_cert_verify) {
+ if (s->
statem.
no_cert_verify) {
/* No certificate verify so we no longer need the handshake_buffer */
BIO_free(s->s3->handshake_buffer);
return WORK_FINISHED_CONTINUE;
/* No certificate verify so we no longer need the handshake_buffer */
BIO_free(s->s3->handshake_buffer);
return WORK_FINISHED_CONTINUE;
@@
-2950,7
+2953,7
@@
enum WORK_STATE tls_post_process_client_key_exchange(SSL *s,
if (!s->s3->handshake_buffer) {
SSLerr(SSL_F_TLS_POST_PROCESS_CLIENT_KEY_EXCHANGE,
ERR_R_INTERNAL_ERROR);
if (!s->s3->handshake_buffer) {
SSLerr(SSL_F_TLS_POST_PROCESS_CLIENT_KEY_EXCHANGE,
ERR_R_INTERNAL_ERROR);
- statem_set_error(s);
+
ossl_
statem_set_error(s);
return WORK_ERROR;
}
/*
return WORK_ERROR;
}
/*
@@
-2958,7
+2961,7
@@
enum WORK_STATE tls_post_process_client_key_exchange(SSL *s,
* extms we've done this already so this is a no-op
*/
if (!ssl3_digest_cached_records(s, 1)) {
* extms we've done this already so this is a no-op
*/
if (!ssl3_digest_cached_records(s, 1)) {
- statem_set_error(s);
+
ossl_
statem_set_error(s);
return WORK_ERROR;
}
} else {
return WORK_ERROR;
}
} else {
@@
-2972,7
+2975,7
@@
enum WORK_STATE tls_post_process_client_key_exchange(SSL *s,
* step
*/
if (!ssl3_digest_cached_records(s, 0)) {
* step
*/
if (!ssl3_digest_cached_records(s, 0)) {
- statem_set_error(s);
+
ossl_
statem_set_error(s);
return WORK_ERROR;
}
for (dgst_num = 0; dgst_num < SSL_MAX_DIGEST; dgst_num++) {
return WORK_ERROR;
}
for (dgst_num = 0; dgst_num < SSL_MAX_DIGEST; dgst_num++) {
@@
-2990,7
+2993,7
@@
enum WORK_STATE tls_post_process_client_key_exchange(SSL *s,
dgst_size =
EVP_MD_CTX_size(s->s3->handshake_dgst[dgst_num]);
if (dgst_size < 0) {
dgst_size =
EVP_MD_CTX_size(s->s3->handshake_dgst[dgst_num]);
if (dgst_size < 0) {
- statem_set_error(s);
+
ossl_
statem_set_error(s);
return WORK_ERROR;
}
offset += dgst_size;
return WORK_ERROR;
}
offset += dgst_size;
@@
-3001,7
+3004,7
@@
enum WORK_STATE tls_post_process_client_key_exchange(SSL *s,
return WORK_FINISHED_CONTINUE;
}
return WORK_FINISHED_CONTINUE;
}
-
enum
MSG_PROCESS_RETURN tls_process_cert_verify(SSL *s, PACKET *pkt)
+MSG_PROCESS_RETURN tls_process_cert_verify(SSL *s, PACKET *pkt)
{
EVP_PKEY *pkey = NULL;
unsigned char *sig, *data;
{
EVP_PKEY *pkey = NULL;
unsigned char *sig, *data;
@@
-3168,7
+3171,7
@@
enum MSG_PROCESS_RETURN tls_process_cert_verify(SSL *s, PACKET *pkt)
if (0) {
f_err:
ssl3_send_alert(s, SSL3_AL_FATAL, al);
if (0) {
f_err:
ssl3_send_alert(s, SSL3_AL_FATAL, al);
- statem_set_error(s);
+
ossl_
statem_set_error(s);
}
BIO_free(s->s3->handshake_buffer);
s->s3->handshake_buffer = NULL;
}
BIO_free(s->s3->handshake_buffer);
s->s3->handshake_buffer = NULL;
@@
-3177,9
+3180,9
@@
enum MSG_PROCESS_RETURN tls_process_cert_verify(SSL *s, PACKET *pkt)
return ret;
}
return ret;
}
-
enum
MSG_PROCESS_RETURN tls_process_client_certificate(SSL *s, PACKET *pkt)
+MSG_PROCESS_RETURN tls_process_client_certificate(SSL *s, PACKET *pkt)
{
{
- int i, al, ret = MSG_PROCESS_ERROR;
+ int i, al
= SSL_AD_INTERNAL_ERROR
, ret = MSG_PROCESS_ERROR;
X509 *x = NULL;
unsigned long l, llen;
const unsigned char *certstart;
X509 *x = NULL;
unsigned long l, llen;
const unsigned char *certstart;
@@
-3246,7
+3249,6
@@
enum MSG_PROCESS_RETURN tls_process_client_certificate(SSL *s, PACKET *pkt)
}
/* No client certificate so digest cached records */
if (s->s3->handshake_buffer && !ssl3_digest_cached_records(s, 0)) {
}
/* No client certificate so digest cached records */
if (s->s3->handshake_buffer && !ssl3_digest_cached_records(s, 0)) {
- al = SSL_AD_INTERNAL_ERROR;
goto f_err;
}
} else {
goto f_err;
}
} else {
@@
-3289,7
+3291,7
@@
enum MSG_PROCESS_RETURN tls_process_client_certificate(SSL *s, PACKET *pkt)
f_err:
ssl3_send_alert(s, SSL3_AL_FATAL, al);
f_err:
ssl3_send_alert(s, SSL3_AL_FATAL, al);
- statem_set_error(s);
+
ossl_
statem_set_error(s);
done:
X509_free(x);
sk_X509_pop_free(sk, X509_free);
done:
X509_free(x);
sk_X509_pop_free(sk, X509_free);
@@
-3303,13
+3305,13
@@
int tls_construct_server_certificate(SSL *s)
cpk = ssl_get_server_send_pkey(s);
if (cpk == NULL) {
SSLerr(SSL_F_TLS_CONSTRUCT_SERVER_CERTIFICATE, ERR_R_INTERNAL_ERROR);
cpk = ssl_get_server_send_pkey(s);
if (cpk == NULL) {
SSLerr(SSL_F_TLS_CONSTRUCT_SERVER_CERTIFICATE, ERR_R_INTERNAL_ERROR);
- statem_set_error(s);
+
ossl_
statem_set_error(s);
return 0;
}
if (!ssl3_output_cert_chain(s, cpk)) {
SSLerr(SSL_F_TLS_CONSTRUCT_SERVER_CERTIFICATE, ERR_R_INTERNAL_ERROR);
return 0;
}
if (!ssl3_output_cert_chain(s, cpk)) {
SSLerr(SSL_F_TLS_CONSTRUCT_SERVER_CERTIFICATE, ERR_R_INTERNAL_ERROR);
- statem_set_error(s);
+
ossl_
statem_set_error(s);
return 0;
}
return 0;
}
@@
-3337,12
+3339,12
@@
int tls_construct_new_session_ticket(SSL *s)
* long
*/
if (slen_full == 0 || slen_full > 0xFF00) {
* long
*/
if (slen_full == 0 || slen_full > 0xFF00) {
- statem_set_error(s);
+
ossl_
statem_set_error(s);
return 0;
}
senc = OPENSSL_malloc(slen_full);
if (!senc) {
return 0;
}
senc = OPENSSL_malloc(slen_full);
if (!senc) {
- statem_set_error(s);
+
ossl_
statem_set_error(s);
return 0;
}
return 0;
}
@@
-3456,7
+3458,7
@@
int tls_construct_new_session_ticket(SSL *s)
OPENSSL_free(senc);
EVP_CIPHER_CTX_cleanup(&ctx);
HMAC_CTX_cleanup(&hctx);
OPENSSL_free(senc);
EVP_CIPHER_CTX_cleanup(&ctx);
HMAC_CTX_cleanup(&hctx);
- statem_set_error(s);
+
ossl_
statem_set_error(s);
return 0;
}
return 0;
}
@@
-3470,7
+3472,7
@@
int tls_construct_cert_status(SSL *s)
* + (ocsp response)
*/
if (!BUF_MEM_grow(s->init_buf, 8 + s->tlsext_ocsp_resplen)) {
* + (ocsp response)
*/
if (!BUF_MEM_grow(s->init_buf, 8 + s->tlsext_ocsp_resplen)) {
- statem_set_error(s);
+
ossl_
statem_set_error(s);
return 0;
}
return 0;
}
@@
-3498,7
+3500,7
@@
int tls_construct_cert_status(SSL *s)
* tls_process_next_proto reads a Next Protocol Negotiation handshake message.
* It sets the next_proto member in s if found
*/
* tls_process_next_proto reads a Next Protocol Negotiation handshake message.
* It sets the next_proto member in s if found
*/
-
enum
MSG_PROCESS_RETURN tls_process_next_proto(SSL *s, PACKET *pkt)
+MSG_PROCESS_RETURN tls_process_next_proto(SSL *s, PACKET *pkt)
{
PACKET next_proto, padding;
size_t next_proto_len;
{
PACKET next_proto, padding;
size_t next_proto_len;
@@
-3527,7
+3529,7
@@
enum MSG_PROCESS_RETURN tls_process_next_proto(SSL *s, PACKET *pkt)
return MSG_PROCESS_CONTINUE_READING;
err:
return MSG_PROCESS_CONTINUE_READING;
err:
- statem_set_error(s);
+
ossl_
statem_set_error(s);
return MSG_PROCESS_ERROR;
}
#endif
return MSG_PROCESS_ERROR;
}
#endif