Skip to content

Commit ecd7e3e

Browse files
committed
fix(gax-httpjson): insert Conscrypt as provider #1 in Security and preserve default SSLContext
1 parent 5c62b5b commit ecd7e3e

1 file changed

Lines changed: 23 additions & 22 deletions

File tree

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

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import com.google.api.client.http.javanet.NetHttpTransport;
3333
import com.google.api.core.InternalApi;
3434
import java.security.Provider;
35+
import java.security.Security;
3536
import java.util.logging.Level;
3637
import java.util.logging.Logger;
3738
import org.conscrypt.Conscrypt;
@@ -74,7 +75,9 @@ private static class ConscryptProviderHolder {
7475

7576
private static Provider createProvider() {
7677
try {
77-
return Conscrypt.newProvider();
78+
Provider provider = Conscrypt.newProvider();
79+
Security.insertProviderAt(provider, 1);
80+
return provider;
7881
} catch (Throwable t) {
7982
LOG.log(
8083
Level.WARNING, "Conscrypt native libraries not available. Falling back to JDK TLS.", t);
@@ -97,27 +100,25 @@ public static NetHttpTransport.Builder configureConscryptSecurityProvider(
97100
if (conscryptProvider == null) {
98101
return builder;
99102
}
100-
return builder
101-
.setSecurityProvider(conscryptProvider)
102-
.setSslSocketConfigurator(
103-
socket -> {
104-
if (!Conscrypt.isConscrypt(socket)) {
105-
return;
106-
}
107-
try {
108-
Conscrypt.setNamedGroups(socket, DEFAULT_PQC_GROUPS);
109-
} catch (Exception e) {
110-
// Native JNI linkage errors (e.g. UnsatisfiedLinkError) are caught during
111-
// ConscryptProviderHolder initialization. Catching Exception here safely
112-
// intercepts runtime socket configuration errors (e.g. unsupported groups or
113-
// closed socket) without swallowing JVM errors like OutOfMemoryError.
114-
LOG.log(
115-
Level.WARNING,
116-
"Failed to set PQC named groups on Conscrypt socket. Falling back to Conscrypt"
117-
+ " default TLS groups.",
118-
e);
119-
}
120-
});
103+
return builder.setSslSocketConfigurator(
104+
socket -> {
105+
if (!Conscrypt.isConscrypt(socket)) {
106+
return;
107+
}
108+
try {
109+
Conscrypt.setNamedGroups(socket, DEFAULT_PQC_GROUPS);
110+
} catch (Exception e) {
111+
// Native JNI linkage errors (e.g. UnsatisfiedLinkError) are caught during
112+
// ConscryptProviderHolder initialization. Catching Exception here safely
113+
// intercepts runtime socket configuration errors (e.g. unsupported groups or
114+
// closed socket) without swallowing JVM errors like OutOfMemoryError.
115+
LOG.log(
116+
Level.WARNING,
117+
"Failed to set PQC named groups on Conscrypt socket. Falling back to Conscrypt"
118+
+ " default TLS groups.",
119+
e);
120+
}
121+
});
121122
}
122123

123124
/**

0 commit comments

Comments
 (0)