Skip to content

Commit c0538c0

Browse files
authored
test: Adds test for serializing a previously-serialized connection (#5495)
1 parent ab1cd3c commit c0538c0

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

tests/unit/s2n_connection_serialize_test.c

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -592,6 +592,39 @@ int main(int argc, char **argv)
592592
}
593593
};
594594

595+
/* Self-talk: A deserialized session can be serialized */
596+
for (size_t i = 0; i < s2n_array_len(config_array); i++) {
597+
DEFER_CLEANUP(struct s2n_connection *client_conn = s2n_connection_new(S2N_CLIENT),
598+
s2n_connection_ptr_free);
599+
EXPECT_NOT_NULL(client_conn);
600+
EXPECT_SUCCESS(s2n_connection_set_config(client_conn, config_array[i]));
601+
602+
uint8_t serialized_data[S2N_SERIALIZED_CONN_TLS12_SIZE] = { 0 };
603+
for (size_t j = 0; j < 10; j++) {
604+
DEFER_CLEANUP(struct s2n_connection *server = s2n_connection_new(S2N_SERVER),
605+
s2n_connection_ptr_free);
606+
EXPECT_NOT_NULL(server);
607+
EXPECT_SUCCESS(s2n_connection_set_config(server, config_array[i]));
608+
609+
DEFER_CLEANUP(struct s2n_test_io_stuffer_pair io_pair = { 0 }, s2n_io_stuffer_pair_free);
610+
EXPECT_OK(s2n_io_stuffer_pair_init(&io_pair));
611+
EXPECT_OK(s2n_connections_set_io_stuffer_pair(client_conn, server, &io_pair));
612+
613+
if (j == 0) {
614+
EXPECT_SUCCESS(s2n_negotiate_test_server_and_client(server, client_conn));
615+
} else {
616+
EXPECT_SUCCESS(s2n_connection_deserialize(server, serialized_data, sizeof(serialized_data)));
617+
}
618+
619+
/* Can send and receive after either negotiating or deserializing */
620+
EXPECT_OK(s2n_send_and_recv_test(server, client_conn));
621+
EXPECT_OK(s2n_send_and_recv_test(client_conn, server));
622+
623+
memset(serialized_data, 0, S2N_SERIALIZED_CONN_TLS12_SIZE);
624+
EXPECT_SUCCESS(s2n_connection_serialize(server, serialized_data, sizeof(serialized_data)));
625+
};
626+
};
627+
595628
/* Self-talk: Test interaction between TLS1.2 session resumption and serialization */
596629
{
597630
DEFER_CLEANUP(struct s2n_config *resumption_config = s2n_config_new(), s2n_config_ptr_free);

0 commit comments

Comments
 (0)