Skip to content

Commit 81b3c73

Browse files
committed
Removed feature probe
1 parent 2c98581 commit 81b3c73

14 files changed

+108
-230
lines changed

codebuild/spec/buildspec_ktls_keyupdate.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ env:
2525
NIX_CACHE_BUCKET: "s3://s2n-tls-nixcachebucket-x86-64?region=us-west-2"
2626
NIX_INSTALLER: "https://nixos.org/nix/install"
2727
S2N_KTLS_TESTING_EXPECTED: 1
28+
S2N_KTLS_KEYUPDATE_TESTING_EXPECTED: 1
2829
phases:
2930
pre_build:
3031
commands:

tests/features/S2N_KTLS_KEYUPDATE_SUPPORTED.c

Lines changed: 0 additions & 26 deletions
This file was deleted.

tests/features/S2N_KTLS_KEYUPDATE_SUPPORTED.flags

Whitespace-only changes.

tests/testlib/s2n_ktls_test_utils.c

Lines changed: 0 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@
1515

1616
#include "testlib/s2n_ktls_test_utils.h"
1717

18-
#include "testlib/s2n_testlib.h"
19-
2018
S2N_RESULT s2n_ktls_set_control_data(struct msghdr *msg, char *buf, size_t buf_size,
2119
int cmsg_type, uint8_t record_type);
2220
S2N_RESULT s2n_ktls_get_control_data(struct msghdr *msg, int cmsg_type, uint8_t *record_type);
@@ -249,44 +247,3 @@ S2N_RESULT s2n_test_records_in_ancillary(struct s2n_test_ktls_io_stuffer *ktls_i
249247
RESULT_ENSURE_EQ(extra, 0);
250248
return S2N_RESULT_OK;
251249
}
252-
253-
int s2n_test_setsockopt_noop(int fd, int level, int optname, const void *optval, socklen_t optlen)
254-
{
255-
return S2N_SUCCESS;
256-
}
257-
258-
int s2n_test_setsockopt_aes128_tx(int fd, int level, int optname, const void *optval, socklen_t optlen)
259-
{
260-
POSIX_ENSURE_EQ(fd, S2N_TEST_SEND_FD);
261-
if (level == S2N_SOL_TLS) {
262-
POSIX_ENSURE_EQ(optname, S2N_TLS_TX);
263-
POSIX_ENSURE_EQ(optlen, sizeof(s2n_ktls_crypto_info_tls12_aes_gcm_128));
264-
} else if (level == S2N_SOL_TCP) {
265-
POSIX_ENSURE_EQ(optname, S2N_TCP_ULP);
266-
POSIX_ENSURE_EQ(optlen, S2N_TLS_ULP_NAME_SIZE);
267-
} else {
268-
POSIX_BAIL(S2N_ERR_SAFETY);
269-
}
270-
return S2N_SUCCESS;
271-
}
272-
273-
S2N_RESULT s2n_test_configure_connection_for_ktls(struct s2n_connection *conn, uint8_t version, struct s2n_cipher_suite *cipher)
274-
{
275-
RESULT_ENSURE_REF(conn);
276-
277-
RESULT_GUARD(s2n_ktls_set_setsockopt_cb(s2n_test_setsockopt_noop));
278-
279-
/* config I/O */
280-
RESULT_GUARD_POSIX(s2n_connection_set_write_fd(conn, S2N_TEST_SEND_FD));
281-
RESULT_GUARD_POSIX(s2n_connection_set_read_fd(conn, S2N_TEST_RECV_FD));
282-
conn->ktls_send_enabled = false;
283-
conn->ktls_recv_enabled = false;
284-
285-
/* set kTLS supported cipher */
286-
conn->secure->cipher_suite = cipher;
287-
conn->actual_protocol_version = version;
288-
/* configure connection so that the handshake is complete */
289-
RESULT_GUARD(s2n_skip_handshake(conn));
290-
291-
return S2N_RESULT_OK;
292-
}

tests/testlib/s2n_ktls_test_utils.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@
1818

1919
#define S2N_TEST_KTLS_MOCK_HEADER_SIZE 3
2020
#define S2N_TEST_KTLS_MOCK_HEADER_TAG_SIZE 1
21-
#define S2N_TEST_SEND_FD 66
22-
#define S2N_TEST_RECV_FD 55
2321

2422
/* The record_type is communicated via ancillary data when using kTLS. For this
2523
* reason s2n must use `send/recvmsg` syscalls rather than `send/read`. To mimic
@@ -76,6 +74,3 @@ S2N_RESULT s2n_test_validate_ancillary(struct s2n_test_ktls_io_stuffer *ktls_io,
7674
uint8_t expected_record_type, uint16_t expected_len);
7775
S2N_RESULT s2n_test_records_in_ancillary(struct s2n_test_ktls_io_stuffer *ktls_io,
7876
uint16_t expected_records);
79-
int s2n_test_setsockopt_noop(int fd, int level, int optname, const void *optval, socklen_t optlen);
80-
int s2n_test_setsockopt_aes128_tx(int fd, int level, int optname, const void *optval, socklen_t optlen);
81-
S2N_RESULT s2n_test_configure_connection_for_ktls(struct s2n_connection *conn, uint8_t version, struct s2n_cipher_suite *cipher);

tests/unit/s2n_key_update_test.c

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,9 @@
1717

1818
#include "crypto/s2n_sequence.h"
1919
#include "s2n_test.h"
20-
#include "testlib/s2n_ktls_test_utils.h"
2120
#include "testlib/s2n_testlib.h"
2221
#include "tls/s2n_cipher_suites.h"
2322
#include "tls/s2n_connection.h"
24-
#include "tls/s2n_ktls.h"
2523
#include "tls/s2n_post_handshake.h"
2624
#include "tls/s2n_quic_support.h"
2725
#include "tls/s2n_tls13_handshake.h"
@@ -150,36 +148,33 @@ int main(int argc, char **argv)
150148
EXPECT_SUCCESS(s2n_connection_free(conn));
151149
};
152150

153-
/* Key update messages not allowed with ktls unless the platform supports it */
151+
/* Key update messages not allowed with ktls by default */
154152
{
155153
DEFER_CLEANUP(struct s2n_stuffer input, s2n_stuffer_free);
156154
EXPECT_SUCCESS(s2n_stuffer_growable_alloc(&input, 0));
157155

158156
DEFER_CLEANUP(struct s2n_connection *conn = s2n_connection_new(S2N_SERVER),
159157
s2n_connection_ptr_free);
160158
EXPECT_NOT_NULL(conn);
161-
EXPECT_OK(s2n_test_configure_connection_for_ktls(conn, S2N_TLS13, &s2n_tls13_aes_128_gcm_sha256));
159+
conn->actual_protocol_version = S2N_TLS13;
160+
EXPECT_NOT_NULL(conn->secure);
161+
conn->secure->cipher_suite = &s2n_tls13_aes_256_gcm_sha384;
162162

163-
/* Only able to read ktls key updates if platform supports it */
163+
/* Fails if receiving with ktls:
164+
* Kernel key update would be required.
165+
*/
164166
conn->ktls_send_enabled = true;
165167
conn->ktls_recv_enabled = true;
166-
EXPECT_SUCCESS(s2n_stuffer_write_uint8(&input, S2N_KEY_UPDATE_NOT_REQUESTED));
167-
if (s2n_ktls_keyupdate_is_supported_on_platform()) {
168-
EXPECT_SUCCESS(s2n_key_update_recv(conn, &input));
169-
} else {
170-
EXPECT_FAILURE_WITH_ERRNO(s2n_key_update_recv(conn, &input), S2N_ERR_KTLS_KEYUPDATE);
171-
}
168+
EXPECT_FAILURE_WITH_ERRNO(s2n_key_update_recv(conn, &input), S2N_ERR_KTLS_KEYUPDATE);
172169
EXPECT_SUCCESS(s2n_stuffer_wipe(&input));
173170

174-
/* Only able to write ktls key updates if platform supports it */
171+
/* Fails if only sending with ktls, but peer requested an update:
172+
* Kernel key update would be required.
173+
*/
175174
conn->ktls_send_enabled = true;
176175
conn->ktls_recv_enabled = false;
177176
EXPECT_SUCCESS(s2n_stuffer_write_uint8(&input, S2N_KEY_UPDATE_REQUESTED));
178-
if (s2n_ktls_keyupdate_is_supported_on_platform()) {
179-
EXPECT_SUCCESS(s2n_key_update_recv(conn, &input));
180-
} else {
181-
EXPECT_FAILURE_WITH_ERRNO(s2n_key_update_recv(conn, &input), S2N_ERR_KTLS_KEYUPDATE);
182-
}
177+
EXPECT_FAILURE_WITH_ERRNO(s2n_key_update_recv(conn, &input), S2N_ERR_KTLS_KEYUPDATE);
183178
EXPECT_EQUAL(s2n_stuffer_data_available(&input), 0);
184179

185180
/* Succeeds if only sending with ktls and no update requested:

tests/unit/s2n_ktls_io_sendfile_test.c

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818

1919
#include "crypto/s2n_sequence.h"
2020
#include "s2n_test.h"
21-
#include "testlib/s2n_ktls_test_utils.h"
2221
#include "testlib/s2n_testlib.h"
2322
#include "tls/s2n_ktls.h"
2423
#include "utils/s2n_random.h"
@@ -224,7 +223,6 @@ int main(int argc, char **argv)
224223

225224
/* Test: key encryption limit tracked */
226225
{
227-
/* Create a cipher_suite with an artificially lower encryption limit */
228226
struct s2n_record_algorithm test_record_alg = *s2n_tls13_aes_128_gcm_sha256.record_alg;
229227
test_record_alg.encryption_limit = 0;
230228
struct s2n_cipher_suite test_cipher_suite = s2n_tls13_aes_128_gcm_sha256;
@@ -233,8 +231,8 @@ int main(int argc, char **argv)
233231
DEFER_CLEANUP(struct s2n_connection *conn = s2n_connection_new(S2N_SERVER),
234232
s2n_connection_ptr_free);
235233
EXPECT_NOT_NULL(conn);
236-
EXPECT_OK(s2n_test_configure_connection_for_ktls(conn, S2N_TLS13, &s2n_tls13_aes_128_gcm_sha256));
237234
conn->ktls_send_enabled = true;
235+
conn->actual_protocol_version = S2N_TLS13;
238236

239237
DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close);
240238
EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair));
@@ -256,16 +254,9 @@ int main(int argc, char **argv)
256254
/* Test: Enforce the encryption limit */
257255
EXPECT_NOT_NULL(conn->secure);
258256
conn->secure->cipher_suite = &test_cipher_suite;
259-
260-
if (s2n_ktls_keyupdate_is_supported_on_platform()) {
261-
EXPECT_SUCCESS(s2n_sendfile(conn, ro_file, 0, sizeof(test_data), &bytes_written, &blocked));
262-
EXPECT_EQUAL(conn->recv_key_updated, 0);
263-
EXPECT_EQUAL(conn->send_key_updated, 1);
264-
} else {
265-
EXPECT_FAILURE_WITH_ERRNO(
266-
s2n_sendfile(conn, ro_file, 0, sizeof(test_data), &bytes_written, &blocked),
267-
S2N_ERR_KTLS_KEY_LIMIT);
268-
}
257+
EXPECT_FAILURE_WITH_ERRNO(
258+
s2n_sendfile(conn, ro_file, 0, sizeof(test_data), &bytes_written, &blocked),
259+
S2N_ERR_KTLS_KEY_LIMIT);
269260
};
270261

271262
EXPECT_EQUAL(close(ro_file), 0);

tests/unit/s2n_ktls_io_test.c

Lines changed: 21 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1251,25 +1251,25 @@ int main(int argc, char **argv)
12511251
EXPECT_TRUE(large_test_data_records > 0);
12521252
const size_t test_encryption_limit = large_test_data_records;
12531253

1254-
/* Create a cipher_suite with an artificially lower encryption limit */
12551254
struct s2n_record_algorithm test_record_alg = *s2n_tls13_aes_128_gcm_sha256.record_alg;
12561255
test_record_alg.encryption_limit = test_encryption_limit;
12571256
struct s2n_cipher_suite test_cipher_suite = s2n_tls13_aes_128_gcm_sha256;
12581257
test_cipher_suite.record_alg = &test_record_alg;
12591258

12601259
for (s2n_mode mode = 0; mode <= 1; mode++) {
1261-
/* Test: Sequence number tracked correctly */
1260+
DEFER_CLEANUP(struct s2n_connection *conn = s2n_connection_new(mode),
1261+
s2n_connection_ptr_free);
1262+
EXPECT_NOT_NULL(conn);
1263+
EXPECT_OK(s2n_ktls_set_sendmsg_cb(conn, s2n_test_ktls_sendmsg_mark_all_sent, conn));
1264+
conn->ktls_send_enabled = true;
1265+
EXPECT_NOT_NULL(conn->secure);
1266+
conn->secure->cipher_suite = &test_cipher_suite;
1267+
conn->actual_protocol_version = S2N_TLS13;
1268+
12621269
s2n_blocked_status blocked = S2N_NOT_BLOCKED;
1263-
{
1264-
DEFER_CLEANUP(struct s2n_connection *conn = s2n_connection_new(mode),
1265-
s2n_connection_ptr_free);
1266-
EXPECT_NOT_NULL(conn);
1267-
EXPECT_OK(s2n_test_configure_connection_for_ktls(conn, S2N_TLS13, &s2n_tls13_aes_128_gcm_sha256));
1268-
EXPECT_OK(s2n_ktls_set_setsockopt_cb(s2n_test_setsockopt_aes128_tx));
1269-
EXPECT_OK(s2n_ktls_set_sendmsg_cb(conn, s2n_test_ktls_sendmsg_mark_all_sent, conn->send_io_context));
1270-
conn->ktls_send_enabled = true;
1271-
conn->secure->cipher_suite = &test_cipher_suite;
12721270

1271+
/* Test: Sequence number tracked correctly */
1272+
{
12731273
DEFER_CLEANUP(struct s2n_blob seq_num = { 0 }, s2n_blob_zero);
12741274
EXPECT_OK(s2n_connection_get_sequence_number(conn, conn->mode, &seq_num));
12751275

@@ -1301,30 +1301,14 @@ int main(int argc, char **argv)
13011301
EXPECT_OK(s2n_assert_seq_num_equal(seq_num, expected_seq_num));
13021302

13031303
/* Test: Send enough data to hit the encryption limit */
1304-
if (s2n_ktls_keyupdate_is_supported_on_platform()) {
1305-
EXPECT_SUCCESS(s2n_send(conn, large_test_data, sizeof(large_test_data), &blocked));
1306-
/* After a keyupdate, sequence number is reset to 0. Then the sequence number will
1307-
* be incremented to the number of records needed to send large_test_data. */
1308-
expected_seq_num = large_test_data_records;
1309-
} else {
1310-
EXPECT_FAILURE_WITH_ERRNO(
1311-
s2n_send(conn, large_test_data, sizeof(large_test_data), &blocked),
1312-
S2N_ERR_KTLS_KEY_LIMIT);
1313-
}
1304+
EXPECT_FAILURE_WITH_ERRNO(
1305+
s2n_send(conn, large_test_data, sizeof(large_test_data), &blocked),
1306+
S2N_ERR_KTLS_KEY_LIMIT);
13141307
EXPECT_OK(s2n_assert_seq_num_equal(seq_num, expected_seq_num));
13151308
};
13161309

13171310
/* Test: Exact encryption limit boundary */
13181311
{
1319-
DEFER_CLEANUP(struct s2n_connection *conn = s2n_connection_new(S2N_SERVER),
1320-
s2n_connection_ptr_free);
1321-
EXPECT_NOT_NULL(conn);
1322-
EXPECT_OK(s2n_test_configure_connection_for_ktls(conn, S2N_TLS13, &s2n_tls13_aes_128_gcm_sha256));
1323-
EXPECT_OK(s2n_ktls_set_setsockopt_cb(s2n_test_setsockopt_aes128_tx));
1324-
EXPECT_OK(s2n_ktls_set_sendmsg_cb(conn, s2n_test_ktls_sendmsg_mark_all_sent, conn->send_io_context));
1325-
conn->ktls_send_enabled = true;
1326-
conn->secure->cipher_suite = &test_cipher_suite;
1327-
13281312
DEFER_CLEANUP(struct s2n_blob seq_num = { 0 }, s2n_blob_zero);
13291313
EXPECT_OK(s2n_connection_get_sequence_number(conn, conn->mode, &seq_num));
13301314

@@ -1335,27 +1319,14 @@ int main(int argc, char **argv)
13351319
EXPECT_OK(s2n_assert_seq_num_equal(seq_num, test_encryption_limit));
13361320

13371321
/* One more record should exceed the encryption limit */
1338-
if (s2n_ktls_keyupdate_is_supported_on_platform()) {
1339-
EXPECT_SUCCESS(s2n_send(conn, large_test_data, sizeof(large_test_data), &blocked));
1340-
} else {
1341-
EXPECT_FAILURE_WITH_ERRNO(
1342-
s2n_send(conn, large_test_data, sizeof(large_test_data), &blocked),
1343-
S2N_ERR_KTLS_KEY_LIMIT);
1344-
}
1322+
EXPECT_FAILURE_WITH_ERRNO(
1323+
s2n_send(conn, large_test_data, sizeof(large_test_data), &blocked),
1324+
S2N_ERR_KTLS_KEY_LIMIT);
13451325
EXPECT_OK(s2n_assert_seq_num_equal(seq_num, test_encryption_limit));
13461326
};
13471327

13481328
/* Test: Limit not tracked with TLS1.2 */
13491329
{
1350-
DEFER_CLEANUP(struct s2n_connection *conn = s2n_connection_new(S2N_SERVER),
1351-
s2n_connection_ptr_free);
1352-
EXPECT_NOT_NULL(conn);
1353-
EXPECT_OK(s2n_test_configure_connection_for_ktls(conn, S2N_TLS13, &s2n_tls13_aes_128_gcm_sha256));
1354-
EXPECT_OK(s2n_ktls_set_setsockopt_cb(s2n_test_setsockopt_aes128_tx));
1355-
EXPECT_OK(s2n_ktls_set_sendmsg_cb(conn, s2n_test_ktls_sendmsg_mark_all_sent, conn->send_io_context));
1356-
conn->ktls_send_enabled = true;
1357-
conn->secure->cipher_suite = &test_cipher_suite;
1358-
13591330
DEFER_CLEANUP(struct s2n_blob seq_num = { 0 }, s2n_blob_zero);
13601331
EXPECT_OK(s2n_connection_get_sequence_number(conn, conn->mode, &seq_num));
13611332

@@ -1375,13 +1346,10 @@ int main(int argc, char **argv)
13751346

13761347
/* Passing the limit with TLS1.3 is an error if key updated is not supported */
13771348
conn->actual_protocol_version = S2N_TLS13;
1378-
if (s2n_ktls_keyupdate_is_supported_on_platform()) {
1379-
EXPECT_SUCCESS(s2n_send(conn, large_test_data, sizeof(large_test_data), &blocked));
1380-
} else {
1381-
EXPECT_FAILURE_WITH_ERRNO(
1382-
s2n_send(conn, large_test_data, sizeof(large_test_data), &blocked),
1383-
S2N_ERR_KTLS_KEY_LIMIT);
1384-
}
1349+
EXPECT_FAILURE_WITH_ERRNO(
1350+
s2n_send(conn, large_test_data, sizeof(large_test_data), &blocked),
1351+
S2N_ERR_KTLS_KEY_LIMIT);
1352+
13851353
/* Passing the limit with TLS1.2 is NOT an error */
13861354
conn->actual_protocol_version = S2N_TLS12;
13871355
EXPECT_EQUAL(s2n_send(conn, large_test_data, 1, &blocked), 1);

0 commit comments

Comments
 (0)