Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 9f5c419

Browse files
aglCQ bot account: commit-bot@chromium.org
authored andcommitted
Move the PQ-experiment signal to SSL_CTX.
In the case where I need it, it's easier for it to be on the context rather than on each connection. Change-Id: I5da2929ae6825d6b3151ccabb813cb8ad16416a1 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/36746 Commit-Queue: Adam Langley <agl@google.com> Commit-Queue: David Benjamin <davidben@google.com> Reviewed-by: David Benjamin <davidben@google.com>
1 parent b9e2b8a commit 9f5c419

File tree

5 files changed

+18
-24
lines changed

5 files changed

+18
-24
lines changed

include/openssl/ssl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3044,7 +3044,7 @@ OPENSSL_EXPORT const char *SSL_get_psk_identity(const SSL *ssl);
30443044
// signaling bit. These functions should not be used without explicit permission
30453045
// from BoringSSL-team.
30463046

3047-
OPENSSL_EXPORT int SSL_enable_pq_experiment_signal(SSL *ssl);
3047+
OPENSSL_EXPORT void SSL_CTX_enable_pq_experiment_signal(SSL_CTX *ctx);
30483048
OPENSSL_EXPORT int SSL_pq_experiment_signal_seen(const SSL *ssl);
30493049

30503050

ssl/internal.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2588,11 +2588,6 @@ struct SSL_CONFIG {
25882588
// jdk11_workaround is whether to disable TLS 1.3 for JDK 11 clients, as a
25892589
// workaround for https://bugs.openjdk.java.net/browse/JDK-8211806.
25902590
bool jdk11_workaround : 1;
2591-
2592-
// pq_experiment_signal indicates that an empty extension should be sent
2593-
// (for clients) or echoed (for servers) to indicate participation in an
2594-
// experiment of post-quantum key exchanges.
2595-
bool pq_experiment_signal : 1;
25962591
};
25972592

25982593
// From RFC 8446, used in determining PSK modes.
@@ -3193,6 +3188,11 @@ struct ssl_ctx_st {
31933188
// If enable_early_data is true, early data can be sent and accepted.
31943189
bool enable_early_data : 1;
31953190

3191+
// pq_experiment_signal indicates that an empty extension should be sent
3192+
// (for clients) or echoed (for servers) to indicate participation in an
3193+
// experiment of post-quantum key exchanges.
3194+
bool pq_experiment_signal : 1;
3195+
31963196
private:
31973197
~ssl_ctx_st();
31983198
friend void SSL_CTX_free(SSL_CTX *);

ssl/ssl_lib.cc

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -569,7 +569,8 @@ ssl_ctx_st::ssl_ctx_st(const SSL_METHOD *ssl_method)
569569
false_start_allowed_without_alpn(false),
570570
ignore_tls13_downgrade(false),
571571
handoff(false),
572-
enable_early_data(false) {
572+
enable_early_data(false),
573+
pq_experiment_signal(false) {
573574
CRYPTO_MUTEX_init(&lock);
574575
CRYPTO_new_ex_data(&ex_data);
575576
}
@@ -734,8 +735,7 @@ SSL_CONFIG::SSL_CONFIG(SSL *ssl_arg)
734735
handoff(false),
735736
shed_handshake_config(false),
736737
ignore_tls13_downgrade(false),
737-
jdk11_workaround(false),
738-
pq_experiment_signal(false) {
738+
jdk11_workaround(false) {
739739
assert(ssl);
740740
}
741741

@@ -1246,12 +1246,8 @@ int SSL_send_fatal_alert(SSL *ssl, uint8_t alert) {
12461246
return ssl_send_alert_impl(ssl, SSL3_AL_FATAL, alert);
12471247
}
12481248

1249-
int SSL_enable_pq_experiment_signal(SSL *ssl) {
1250-
if (!ssl->config) {
1251-
return 0;
1252-
}
1253-
ssl->config->pq_experiment_signal = true;
1254-
return 1;
1249+
void SSL_CTX_enable_pq_experiment_signal(SSL_CTX *ctx) {
1250+
ctx->pq_experiment_signal = true;
12551251
}
12561252

12571253
int SSL_pq_experiment_signal_seen(const SSL *ssl) {

ssl/t1_lib.cc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2894,7 +2894,7 @@ static bool cert_compression_add_serverhello(SSL_HANDSHAKE *hs, CBB *out) {
28942894

28952895
static bool ext_pq_experiment_signal_add_clienthello(SSL_HANDSHAKE *hs,
28962896
CBB *out) {
2897-
if (hs->config->pq_experiment_signal &&
2897+
if (hs->ssl->ctx->pq_experiment_signal &&
28982898
(!CBB_add_u16(out, TLSEXT_TYPE_pq_experiment_signal) ||
28992899
!CBB_add_u16(out, 0))) {
29002900
return false;
@@ -2910,7 +2910,7 @@ static bool ext_pq_experiment_signal_parse_serverhello(SSL_HANDSHAKE *hs,
29102910
return true;
29112911
}
29122912

2913-
if (!hs->config->pq_experiment_signal || CBS_len(contents) != 0) {
2913+
if (!hs->ssl->ctx->pq_experiment_signal || CBS_len(contents) != 0) {
29142914
return false;
29152915
}
29162916

@@ -2929,7 +2929,7 @@ static bool ext_pq_experiment_signal_parse_clienthello(SSL_HANDSHAKE *hs,
29292929
return false;
29302930
}
29312931

2932-
if (hs->ssl->config->pq_experiment_signal) {
2932+
if (hs->ssl->ctx->pq_experiment_signal) {
29332933
hs->ssl->s3->pq_experiment_signal_seen = true;
29342934
}
29352935

ssl/test/test_config.cc

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1346,6 +1346,10 @@ bssl::UniquePtr<SSL_CTX> TestConfig::SetupCtx(SSL_CTX *old_ctx) const {
13461346
SSL_CTX_set_options(ssl_ctx.get(), SSL_OP_CIPHER_SERVER_PREFERENCE);
13471347
}
13481348

1349+
if (enable_pq_experiment_signal) {
1350+
SSL_CTX_enable_pq_experiment_signal(ssl_ctx.get());
1351+
}
1352+
13491353
return ssl_ctx;
13501354
}
13511355

@@ -1716,11 +1720,5 @@ bssl::UniquePtr<SSL> TestConfig::NewSSL(
17161720
}
17171721
}
17181722

1719-
if (enable_pq_experiment_signal &&
1720-
!SSL_enable_pq_experiment_signal(ssl.get())) {
1721-
fprintf(stderr, "SSL_enable_pq_experiment_signal failed.\n");
1722-
return nullptr;
1723-
}
1724-
17251723
return ssl;
17261724
}

0 commit comments

Comments
 (0)