aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/restricted/aws/s2n/tls/s2n_handshake_io.c
diff options
context:
space:
mode:
authorrobot-contrib <robot-contrib@yandex-team.com>2022-12-29 11:19:28 +0300
committerrobot-contrib <robot-contrib@yandex-team.com>2022-12-29 11:19:28 +0300
commitfed8d432668e1993b6d0d429398d65aa40f3f5fe (patch)
tree5b837c62d01f3fcdafb6a31ae4914f530053c5b9 /contrib/restricted/aws/s2n/tls/s2n_handshake_io.c
parentd6e1a495bd3ea25012ef907b23327e085f36be1c (diff)
downloadydb-fed8d432668e1993b6d0d429398d65aa40f3f5fe.tar.gz
Update contrib/restricted/aws/s2n to 1.3.31
Diffstat (limited to 'contrib/restricted/aws/s2n/tls/s2n_handshake_io.c')
-rw-r--r--contrib/restricted/aws/s2n/tls/s2n_handshake_io.c78
1 files changed, 36 insertions, 42 deletions
diff --git a/contrib/restricted/aws/s2n/tls/s2n_handshake_io.c b/contrib/restricted/aws/s2n/tls/s2n_handshake_io.c
index fb7de64ae8..08656c98b1 100644
--- a/contrib/restricted/aws/s2n/tls/s2n_handshake_io.c
+++ b/contrib/restricted/aws/s2n/tls/s2n_handshake_io.c
@@ -13,34 +13,29 @@
* permissions and limitations under the License.
*/
+#include <errno.h>
#include <sys/param.h>
-#include <errno.h>
#include "api/s2n.h"
-
-#include "error/s2n_errno.h"
-
#include "crypto/s2n_fips.h"
-
+#include "error/s2n_errno.h"
+#include "stuffer/s2n_stuffer.h"
+#include "tls/s2n_alerts.h"
#include "tls/s2n_async_pkey.h"
#include "tls/s2n_cipher_suites.h"
#include "tls/s2n_connection.h"
+#include "tls/s2n_kex.h"
+#include "tls/s2n_post_handshake.h"
#include "tls/s2n_record.h"
#include "tls/s2n_resume.h"
-#include "tls/s2n_alerts.h"
#include "tls/s2n_tls.h"
#include "tls/s2n_tls13.h"
#include "tls/s2n_tls13_handshake.h"
#include "tls/s2n_tls13_key_schedule.h"
-#include "tls/s2n_kex.h"
-#include "tls/s2n_post_handshake.h"
-
-#include "stuffer/s2n_stuffer.h"
-
+#include "utils/s2n_bitmap.h"
+#include "utils/s2n_random.h"
#include "utils/s2n_safety.h"
#include "utils/s2n_socket.h"
-#include "utils/s2n_random.h"
-#include "utils/s2n_bitmap.h"
/* clang-format off */
struct s2n_handshake_action {
@@ -805,9 +800,9 @@ static message_type_t tls13_handshakes[S2N_HANDSHAKES_COUNT][S2N_MAX_HANDSHAKE_L
/* clang-format on */
#define MAX_HANDSHAKE_TYPE_LEN 142
-static char handshake_type_str[S2N_HANDSHAKES_COUNT][MAX_HANDSHAKE_TYPE_LEN] = {0};
+static char handshake_type_str[S2N_HANDSHAKES_COUNT][MAX_HANDSHAKE_TYPE_LEN] = { 0 };
-static const char* tls12_handshake_type_names[] = {
+static const char *tls12_handshake_type_names[] = {
"NEGOTIATED|",
"FULL_HANDSHAKE|",
"CLIENT_AUTH|",
@@ -818,7 +813,7 @@ static const char* tls12_handshake_type_names[] = {
"WITH_NPN|",
};
-static const char* tls13_handshake_type_names[] = {
+static const char *tls13_handshake_type_names[] = {
"NEGOTIATED|",
"FULL_HANDSHAKE|",
"CLIENT_AUTH|",
@@ -829,22 +824,24 @@ static const char* tls13_handshake_type_names[] = {
"EARLY_CLIENT_CCS|",
};
-#define IS_TLS13_HANDSHAKE( conn ) ((conn)->actual_protocol_version == S2N_TLS13)
+#define IS_TLS13_HANDSHAKE(conn) ((conn)->actual_protocol_version == S2N_TLS13)
-#define ACTIVE_STATE_MACHINE( conn ) (IS_TLS13_HANDSHAKE(conn) ? tls13_state_machine : state_machine)
-#define ACTIVE_HANDSHAKES( conn ) (IS_TLS13_HANDSHAKE(conn) ? tls13_handshakes : handshakes)
+#define ACTIVE_STATE_MACHINE(conn) (IS_TLS13_HANDSHAKE(conn) ? tls13_state_machine : state_machine)
+#define ACTIVE_HANDSHAKES(conn) (IS_TLS13_HANDSHAKE(conn) ? tls13_handshakes : handshakes)
-#define ACTIVE_MESSAGE( conn ) ACTIVE_HANDSHAKES(conn)[ (conn)->handshake.handshake_type ][ (conn)->handshake.message_number ]
+#define ACTIVE_MESSAGE(conn) ACTIVE_HANDSHAKES(conn)[(conn)->handshake.handshake_type][(conn)->handshake.message_number]
-#define ACTIVE_STATE( conn ) ACTIVE_STATE_MACHINE(conn)[ ACTIVE_MESSAGE( (conn) ) ]
-#define CCS_STATE( conn ) (((conn)->mode == S2N_CLIENT) ? ACTIVE_STATE_MACHINE(conn)[SERVER_CHANGE_CIPHER_SPEC] \
- : ACTIVE_STATE_MACHINE(conn)[CLIENT_CHANGE_CIPHER_SPEC] )
+#define ACTIVE_STATE(conn) ACTIVE_STATE_MACHINE(conn)[ACTIVE_MESSAGE((conn))]
-#define EXPECTED_RECORD_TYPE( conn ) ACTIVE_STATE( conn ).record_type
-#define EXPECTED_MESSAGE_TYPE( conn ) ACTIVE_STATE( conn ).message_type
+#define CCS_STATE(conn) (((conn)->mode == S2N_CLIENT) ? \
+ ACTIVE_STATE_MACHINE(conn)[SERVER_CHANGE_CIPHER_SPEC] : \
+ ACTIVE_STATE_MACHINE(conn)[CLIENT_CHANGE_CIPHER_SPEC])
-#define CONNECTION_WRITER( conn ) (conn->mode == S2N_CLIENT ? 'C' : 'S')
-#define CONNECTION_IS_WRITER( conn ) (ACTIVE_STATE(conn).writer == CONNECTION_WRITER(conn))
+#define EXPECTED_RECORD_TYPE(conn) ACTIVE_STATE(conn).record_type
+#define EXPECTED_MESSAGE_TYPE(conn) ACTIVE_STATE(conn).message_type
+
+#define CONNECTION_WRITER(conn) (conn->mode == S2N_CLIENT ? 'C' : 'S')
+#define CONNECTION_IS_WRITER(conn) (ACTIVE_STATE(conn).writer == CONNECTION_WRITER(conn))
/* Only used in our test cases. */
message_type_t s2n_conn_get_current_message_type(struct s2n_connection *conn)
@@ -862,9 +859,7 @@ static int s2n_advance_message(struct s2n_connection *conn)
conn->handshake.message_number++;
/* When reading and using TLS1.3, skip optional change_cipher_spec states. */
- if (ACTIVE_STATE(conn).writer != this_mode &&
- EXPECTED_RECORD_TYPE(conn) == TLS_CHANGE_CIPHER_SPEC &&
- IS_TLS13_HANDSHAKE(conn)) {
+ if (ACTIVE_STATE(conn).writer != this_mode && EXPECTED_RECORD_TYPE(conn) == TLS_CHANGE_CIPHER_SPEC && IS_TLS13_HANDSHAKE(conn)) {
conn->handshake.message_number++;
}
@@ -942,9 +937,7 @@ int s2n_set_hello_retry_required(struct s2n_connection *conn)
bool s2n_is_hello_retry_message(struct s2n_connection *conn)
{
- return (conn != NULL &&
- s2n_result_is_ok(s2n_handshake_validate(&(conn->handshake))) &&
- ACTIVE_MESSAGE(conn) == HELLO_RETRY_MSG);
+ return (conn != NULL && s2n_result_is_ok(s2n_handshake_validate(&(conn->handshake))) && ACTIVE_MESSAGE(conn) == HELLO_RETRY_MSG);
}
bool s2n_is_hello_retry_handshake(struct s2n_connection *conn)
@@ -952,7 +945,8 @@ bool s2n_is_hello_retry_handshake(struct s2n_connection *conn)
return IS_HELLO_RETRY_HANDSHAKE(conn);
}
-static S2N_RESULT s2n_conn_set_tls13_handshake_type(struct s2n_connection *conn) {
+static S2N_RESULT s2n_conn_set_tls13_handshake_type(struct s2n_connection *conn)
+{
RESULT_ENSURE_REF(conn);
/* Most handshake type flags should be reset before we calculate the handshake type,
@@ -1132,7 +1126,7 @@ const char *s2n_connection_get_handshake_type_name(struct s2n_connection *conn)
return "INITIAL";
}
- const char** handshake_type_names = tls13_handshake_type_names;
+ const char **handshake_type_names = tls13_handshake_type_names;
size_t handshake_type_names_len = s2n_array_len(tls13_handshake_type_names);
if (s2n_connection_get_protocol_version(conn) < S2N_TLS13) {
handshake_type_names = tls12_handshake_type_names;
@@ -1190,14 +1184,14 @@ static int s2n_handshake_write_io(struct s2n_connection *conn)
if (record_type == TLS_HANDSHAKE) {
POSIX_GUARD(s2n_handshake_write_header(&conn->handshake.io, ACTIVE_STATE(conn).message_type));
}
- POSIX_GUARD(ACTIVE_STATE(conn).handler[conn->mode] (conn));
+ POSIX_GUARD(ACTIVE_STATE(conn).handler[conn->mode](conn));
if (record_type == TLS_HANDSHAKE) {
POSIX_GUARD(s2n_handshake_finish_header(&conn->handshake.io));
}
}
/* Write the handshake data to records in fragment sized chunks */
- struct s2n_blob out = {0};
+ struct s2n_blob out = { 0 };
while (s2n_stuffer_data_available(&conn->handshake.io) > 0) {
uint16_t max_payload_size = 0;
POSIX_GUARD_RESULT(s2n_record_max_write_payload_size(conn, &max_payload_size));
@@ -1287,7 +1281,7 @@ static int s2n_handshake_conn_update_hashes(struct s2n_connection *conn)
POSIX_GUARD(s2n_stuffer_reread(&conn->handshake.io));
POSIX_GUARD_RESULT(s2n_handshake_parse_header(&conn->handshake.io, &message_type, &handshake_message_length));
- struct s2n_blob handshake_record = {0};
+ struct s2n_blob handshake_record = { 0 };
handshake_record.data = conn->handshake.io.blob.data;
handshake_record.size = TLS_HANDSHAKE_HEADER_LENGTH + handshake_message_length;
POSIX_ENSURE_REF(handshake_record.data);
@@ -1303,7 +1297,7 @@ static int s2n_handshake_handle_sslv2(struct s2n_connection *conn)
S2N_ERROR_IF(ACTIVE_MESSAGE(conn) != CLIENT_HELLO, S2N_ERR_BAD_MESSAGE);
/* Add the message to our handshake hashes */
- struct s2n_blob hashed = {.data = conn->header_in.blob.data + 2,.size = 3 };
+ struct s2n_blob hashed = { .data = conn->header_in.blob.data + 2, .size = 3 };
POSIX_GUARD(s2n_conn_update_handshake_hashes(conn, &hashed));
hashed.data = conn->in.blob.data;
@@ -1452,7 +1446,7 @@ static int s2n_handshake_read_io(struct s2n_connection *conn)
S2N_ERROR_IF(s2n_stuffer_data_available(&conn->in) != 1, S2N_ERR_BAD_MESSAGE);
POSIX_GUARD(s2n_stuffer_copy(&conn->in, &conn->handshake.io, s2n_stuffer_data_available(&conn->in)));
- POSIX_GUARD(CCS_STATE(conn).handler[conn->mode] (conn));
+ POSIX_GUARD(CCS_STATE(conn).handler[conn->mode](conn));
POSIX_GUARD(s2n_stuffer_wipe(&conn->handshake.io));
/* We're done with the record, wipe it */
@@ -1531,7 +1525,7 @@ static int s2n_handshake_read_io(struct s2n_connection *conn)
POSIX_ENSURE(!CONNECTION_IS_WRITER(conn), S2N_ERR_BAD_MESSAGE);
/* Call the relevant handler */
- WITH_ERROR_BLINDING(conn, POSIX_GUARD(ACTIVE_STATE(conn).handler[conn->mode] (conn)));
+ WITH_ERROR_BLINDING(conn, POSIX_GUARD(ACTIVE_STATE(conn).handler[conn->mode](conn)));
/* Advance the state machine */
POSIX_GUARD_RESULT(s2n_finish_read(conn));
@@ -1549,7 +1543,7 @@ static int s2n_handle_retry_state(struct s2n_connection *conn)
* handler right away. We aren't going to read more handshake data yet or proceed
* to the next handler because the current message has not finished processing. */
s2n_errno = S2N_ERR_OK;
- const int r = ACTIVE_STATE(conn).handler[conn->mode] (conn);
+ const int r = ACTIVE_STATE(conn).handler[conn->mode](conn);
if (r < S2N_SUCCESS && S2N_ERROR_IS_BLOCKING(s2n_errno)) {
/* If the handler is still waiting for data, return control to the caller. */