Update - OpenSSL 1.1.1-pre7-dev
This commit is contained in:
+32
-10
@@ -22,7 +22,7 @@
|
||||
#include "handshake_helper.h"
|
||||
#include "testutil.h"
|
||||
|
||||
HANDSHAKE_RESULT *HANDSHAKE_RESULT_new()
|
||||
HANDSHAKE_RESULT *HANDSHAKE_RESULT_new(void)
|
||||
{
|
||||
HANDSHAKE_RESULT *ret;
|
||||
|
||||
@@ -469,12 +469,24 @@ static int generate_session_ticket_cb(SSL *s, void *arg)
|
||||
return SSL_SESSION_set1_ticket_appdata(ss, app_data, strlen(app_data));
|
||||
}
|
||||
|
||||
static SSL_TICKET_RETURN decrypt_session_ticket_cb(SSL *s, SSL_SESSION *ss,
|
||||
const unsigned char *keyname,
|
||||
size_t keyname_len,
|
||||
SSL_TICKET_RETURN retv, void *arg)
|
||||
static int decrypt_session_ticket_cb(SSL *s, SSL_SESSION *ss,
|
||||
const unsigned char *keyname,
|
||||
size_t keyname_len,
|
||||
SSL_TICKET_STATUS status,
|
||||
void *arg)
|
||||
{
|
||||
return retv;
|
||||
switch (status) {
|
||||
case SSL_TICKET_EMPTY:
|
||||
case SSL_TICKET_NO_DECRYPT:
|
||||
return SSL_TICKET_RETURN_IGNORE_RENEW;
|
||||
case SSL_TICKET_SUCCESS:
|
||||
return SSL_TICKET_RETURN_USE;
|
||||
case SSL_TICKET_SUCCESS_RENEW:
|
||||
return SSL_TICKET_RETURN_USE_RENEW;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return SSL_TICKET_RETURN_ABORT;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1391,7 +1403,7 @@ static HANDSHAKE_RESULT *do_handshake_internal(
|
||||
HANDSHAKE_EX_DATA server_ex_data, client_ex_data;
|
||||
CTX_DATA client_ctx_data, server_ctx_data, server2_ctx_data;
|
||||
HANDSHAKE_RESULT *ret = HANDSHAKE_RESULT_new();
|
||||
int client_turn = 1, client_turn_count = 0;
|
||||
int client_turn = 1, client_turn_count = 0, client_wait_count = 0;
|
||||
connect_phase_t phase = HANDSHAKE;
|
||||
handshake_status_t status = HANDSHAKE_RETRY;
|
||||
const unsigned char* tick = NULL;
|
||||
@@ -1574,9 +1586,19 @@ static HANDSHAKE_RESULT *do_handshake_internal(
|
||||
ret->result = SSL_TEST_INTERNAL_ERROR;
|
||||
goto err;
|
||||
}
|
||||
|
||||
/* Continue. */
|
||||
client_turn ^= 1;
|
||||
if (client_turn && server.status == PEER_SUCCESS) {
|
||||
/*
|
||||
* The server may finish before the client because the
|
||||
* client spends some turns processing NewSessionTickets.
|
||||
*/
|
||||
if (client_wait_count++ >= 2) {
|
||||
ret->result = SSL_TEST_INTERNAL_ERROR;
|
||||
goto err;
|
||||
}
|
||||
} else {
|
||||
/* Continue. */
|
||||
client_turn ^= 1;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user