Skip to content

Commit 7604971

Browse files
authored
fix(gax-httpjson): remove unsupported and deprecated PQC named groups (#14107)
### Description Removes unsupported and deprecated named groups (`X25519Kyber768Draft00`, `SecP256r1MLKEM768`, `MLKEM768`) from `DEFAULT_CONSCRYPT_NAMED_GROUPS` in `HttpJsonConscryptUtils.java`. - `X25519Kyber768Draft00` was a pre-standardization draft Kyber-768 curve removed in newer BoringSSL versions (https://boringssl-review.googlesource.com/c/boringssl/+/99147). Conscrypt uses BoringSSL under the hood and removing it from the default groups prevents native BoringSSL `SSL_set1_groups` lookup failures and `SSLHandshakeException: Error parsing groups`. - `SecP256r1MLKEM768` and `MLKEM768` are unsupported named group strings unrecognized by Conscrypt (https://github.com/google/conscrypt/blob/master/CAPABILITIES.md#supported-named-groups). This is only used in Conscrypt and will not be used by the JDK TLS fallback.
1 parent 148c1ac commit 7604971

2 files changed

Lines changed: 19 additions & 12 deletions

File tree

sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonConscryptUtils.java

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ public class HttpJsonConscryptUtils {
4848
*
4949
* <ol>
5050
* <li><b>Standard ML-KEM algorithms</b>: Prioritized first for quantum resistance.
51-
* <li><b>Draft Kyber algorithms</b>: Retained as a fallback for legacy draft PQC deployments.
5251
* <li><b>Classical curves</b>: Fallback for endpoints without PQC support.
5352
* </ol>
5453
*
@@ -59,17 +58,8 @@ public class HttpJsonConscryptUtils {
5958
* href="https://github.com/google/conscrypt/blob/2.6.0/CAPABILITIES.md">Conscrypt
6059
* CAPABILITIES.md</a>.
6160
*/
62-
public static final String[] DEFAULT_CONSCRYPT_NAMED_GROUPS =
63-
new String[] {
64-
"X25519MLKEM768",
65-
"SecP256r1MLKEM768",
66-
"MLKEM1024",
67-
"MLKEM768",
68-
"X25519Kyber768Draft00",
69-
"X25519",
70-
"secp256r1",
71-
"secp384r1"
72-
};
61+
static final String[] DEFAULT_CONSCRYPT_NAMED_GROUPS =
62+
new String[] {"X25519MLKEM768", "MLKEM1024", "X25519", "secp256r1", "secp384r1"};
7363

7464
/**
7565
* Lazy initialization holder for Conscrypt {@link Provider}.

sdk-platform-java/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/HttpJsonConscryptUtilsTest.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131

3232
import static com.google.common.truth.Truth.assertThat;
3333

34+
import com.google.api.client.http.javanet.NetHttpTransport;
3435
import java.security.Provider;
3536
import org.junit.jupiter.api.Test;
3637

@@ -43,4 +44,20 @@ void testGetConscryptProvider_doesNotThrow() {
4344
assertThat(provider.getName()).isEqualTo("Conscrypt");
4445
}
4546
}
47+
48+
@Test
49+
void testConfigureConscryptSecurityProvider() {
50+
NetHttpTransport.Builder builder = new NetHttpTransport.Builder();
51+
NetHttpTransport.Builder configured =
52+
HttpJsonConscryptUtils.configureConscryptSecurityProvider(builder);
53+
assertThat(configured).isSameInstanceAs(builder);
54+
}
55+
56+
@Test
57+
void testDefaultConscryptNamedGroups_containsExpectedGroups() {
58+
assertThat(HttpJsonConscryptUtils.DEFAULT_CONSCRYPT_NAMED_GROUPS)
59+
.asList()
60+
.containsExactly("X25519MLKEM768", "MLKEM1024", "X25519", "secp256r1", "secp384r1")
61+
.inOrder();
62+
}
4663
}

0 commit comments

Comments
 (0)