@@ -59,95 +59,6 @@ static uint8_t sct_list[] = {
5959 0xff , 0xff , 0xff , 0xff , 0xff
6060};
6161
62- /* Helper function to allow us to easily repeat the PQ extension test for many scenarios.
63- * If the KEM negotiation is expected to fail (because of e.g. a client/server extension
64- * mismatch), pass in expected_kem_id = -1. The tests should always EXPECT_SUCCESS when
65- * calling this function. */
66- static int negotiate_kem (const uint8_t client_extensions [], const size_t client_extensions_len ,
67- const uint8_t client_hello_message [], const size_t client_hello_len ,
68- const char cipher_pref_version [], const int expected_kem_id , struct s2n_test_io_pair * io_pair )
69- {
70- char * cert_chain = NULL ;
71- char * private_key = NULL ;
72-
73- POSIX_GUARD_PTR (cert_chain = malloc (S2N_MAX_TEST_PEM_SIZE ));
74- POSIX_GUARD_PTR (private_key = malloc (S2N_MAX_TEST_PEM_SIZE ));
75- POSIX_GUARD (setenv ("S2N_DONT_MLOCK" , "1" , 0 ));
76-
77- struct s2n_connection * server_conn = NULL ;
78- struct s2n_config * server_config = NULL ;
79- s2n_blocked_status server_blocked ;
80- struct s2n_cert_chain_and_key * chain_and_key = NULL ;
81-
82- size_t body_len = client_hello_len + client_extensions_len ;
83- uint8_t message_header [] = {
84- /* Handshake message type CLIENT HELLO */
85- 0x01 ,
86- /* Body len */
87- (body_len >> 16 ) & 0xff ,
88- (body_len >> 8 ) & 0xff ,
89- (body_len & 0xff ),
90- };
91- size_t message_header_len = sizeof (message_header );
92- size_t message_len = message_header_len + body_len ;
93- uint8_t record_header [] = {
94- /* Record type HANDSHAKE */
95- 0x16 ,
96- /* Protocol version TLS 1.2 */
97- 0x03 ,
98- 0x03 ,
99- /* Message len */
100- (message_len >> 8 ) & 0xff ,
101- (message_len & 0xff ),
102- };
103- size_t record_header_len = sizeof (record_header );
104-
105- POSIX_GUARD_PTR (server_conn = s2n_connection_new (S2N_SERVER ));
106- POSIX_GUARD (s2n_connection_set_io_pair (server_conn , io_pair ));
107-
108- POSIX_GUARD_PTR (server_config = s2n_config_new ());
109- POSIX_GUARD (s2n_read_test_pem (S2N_DEFAULT_TEST_CERT_CHAIN , cert_chain , S2N_MAX_TEST_PEM_SIZE ));
110- POSIX_GUARD (s2n_read_test_pem (S2N_DEFAULT_TEST_PRIVATE_KEY , private_key , S2N_MAX_TEST_PEM_SIZE ));
111- POSIX_GUARD_PTR (chain_and_key = s2n_cert_chain_and_key_new ());
112- POSIX_GUARD (s2n_cert_chain_and_key_load_pem (chain_and_key , cert_chain , private_key ));
113- POSIX_GUARD (s2n_config_add_cert_chain_and_key_to_store (server_config , chain_and_key ));
114- POSIX_GUARD (s2n_config_set_cipher_preferences (server_config , cipher_pref_version ));
115- POSIX_GUARD (s2n_connection_set_config (server_conn , server_config ));
116- server_conn -> kex_params .kem_params .kem = NULL ;
117-
118- /* Send the client hello */
119- POSIX_ENSURE_EQ (write (io_pair -> client , record_header , record_header_len ), (int64_t ) record_header_len );
120- POSIX_ENSURE_EQ (write (io_pair -> client , message_header , message_header_len ), (int64_t ) message_header_len );
121- POSIX_ENSURE_EQ (write (io_pair -> client , client_hello_message , client_hello_len ), (int64_t ) client_hello_len );
122- POSIX_ENSURE_EQ (write (io_pair -> client , client_extensions , client_extensions_len ), (int64_t ) client_extensions_len );
123-
124- POSIX_GUARD (s2n_connection_set_blinding (server_conn , S2N_SELF_SERVICE_BLINDING ));
125- if (s2n_negotiate (server_conn , & server_blocked ) == 0 ) {
126- /* We expect the overall negotiation to fail and return non-zero, but it should get far enough
127- * that a KEM extension was agreed upon. */
128- return S2N_FAILURE ;
129- }
130-
131- int negotiated_kem_id = 0 ;
132-
133- if (server_conn -> kex_params .kem_params .kem != NULL ) {
134- negotiated_kem_id = server_conn -> kex_params .kem_params .kem -> kem_extension_id ;
135- } else {
136- negotiated_kem_id = -1 ;
137- }
138-
139- POSIX_GUARD (s2n_connection_free (server_conn ));
140- POSIX_GUARD (s2n_cert_chain_and_key_free (chain_and_key ));
141- POSIX_GUARD (s2n_config_free (server_config ));
142-
143- free (cert_chain );
144- free (private_key );
145-
146- POSIX_ENSURE_EQ (negotiated_kem_id , expected_kem_id );
147-
148- return 0 ;
149- }
150-
15162int main (int argc , char * * argv )
15263{
15364 char * cert_chain = NULL ;
0 commit comments