@Override public void configureSslSocketFactory(SSLSocketFactory socketFactory) { if (Conscrypt.isConscrypt(socketFactory)) { Conscrypt.setUseEngineSocket(socketFactory, true); } } }
@Override public @Nullable String getSelectedProtocol(SSLSocket sslSocket) { if (Conscrypt.isConscrypt(sslSocket)) { return Conscrypt.getApplicationProtocol(sslSocket); } else { return super.getSelectedProtocol(sslSocket); } }
@Override public void configureSslSocketFactory(SSLSocketFactory socketFactory) { if (Conscrypt.isConscrypt(socketFactory)) { Conscrypt.setUseEngineSocket(socketFactory, true); } } }
@Override public @Nullable X509TrustManager trustManager(SSLSocketFactory sslSocketFactory) { if (!Conscrypt.isConscrypt(sslSocketFactory)) { return super.trustManager(sslSocketFactory); } try { // org.conscrypt.SSLParametersImpl Object sp = readFieldOrNull(sslSocketFactory, Object.class, "sslParameters"); if (sp != null) { return readFieldOrNull(sp, X509TrustManager.class, "x509TrustManager"); } return null; } catch (Exception e) { throw new UnsupportedOperationException( "clientBuilder.sslSocketFactory(SSLSocketFactory) not supported on Conscrypt", e); } }
@Override public @Nullable String getSelectedProtocol(SSLSocket sslSocket) { if (Conscrypt.isConscrypt(sslSocket)) { return Conscrypt.getApplicationProtocol(sslSocket); } else { return super.getSelectedProtocol(sslSocket); } }
@Override public void configureTlsExtensions( SSLSocket sslSocket, String hostname, List<Protocol> protocols) { if (Conscrypt.isConscrypt(sslSocket)) { // Enable SNI and session tickets. if (hostname != null) { Conscrypt.setUseSessionTickets(sslSocket, true); Conscrypt.setHostname(sslSocket, hostname); } // Enable ALPN. List<String> names = Platform.alpnProtocolNames(protocols); Conscrypt.setApplicationProtocols(sslSocket, names.toArray(new String[0])); } else { super.configureTlsExtensions(sslSocket, hostname, protocols); } }
@Override public @Nullable X509TrustManager trustManager(SSLSocketFactory sslSocketFactory) { if (!Conscrypt.isConscrypt(sslSocketFactory)) { return super.trustManager(sslSocketFactory); } try { // org.conscrypt.SSLParametersImpl Object sp = readFieldOrNull(sslSocketFactory, Object.class, "sslParameters"); if (sp != null) { return readFieldOrNull(sp, X509TrustManager.class, "x509TrustManager"); } return null; } catch (Exception e) { throw new UnsupportedOperationException( "clientBuilder.sslSocketFactory(SSLSocketFactory) not supported on Conscrypt", e); } }
@Override public void configureTlsExtensions( SSLSocket sslSocket, String hostname, List<Protocol> protocols) { if (Conscrypt.isConscrypt(sslSocket)) { // Enable SNI and session tickets. if (hostname != null) { Conscrypt.setUseSessionTickets(sslSocket, true); Conscrypt.setHostname(sslSocket, hostname); } // Enable ALPN. List<String> names = Platform.alpnProtocolNames(protocols); Conscrypt.setApplicationProtocols(sslSocket, names.toArray(new String[0])); } else { super.configureTlsExtensions(sslSocket, hostname, protocols); } }
private static OpenSSLSocketFactoryImpl toConscrypt(SSLSocketFactory factory) { if (!isConscrypt(factory)) { throw new IllegalArgumentException( "Not a conscrypt socket factory: " + factory.getClass().getName()); } return (OpenSSLSocketFactoryImpl) factory; }
private static OpenSSLServerSocketFactoryImpl toConscrypt(SSLServerSocketFactory factory) { if (!isConscrypt(factory)) { throw new IllegalArgumentException( "Not a conscrypt server socket factory: " + factory.getClass().getName()); } return (OpenSSLServerSocketFactoryImpl) factory; }
private static AbstractConscryptSocket toConscrypt(SSLSocket socket) { if (!isConscrypt(socket)) { throw new IllegalArgumentException( "Not a conscrypt socket: " + socket.getClass().getName()); } return (AbstractConscryptSocket) socket; }
private static OpenSSLSocketFactoryImpl toConscrypt(SSLSocketFactory factory) { if (!isConscrypt(factory)) { throw new IllegalArgumentException( "Not a conscrypt socket factory: " + factory.getClass().getName()); } return (OpenSSLSocketFactoryImpl) factory; }
private static AbstractConscryptEngine toConscrypt(SSLEngine engine) { if (!isConscrypt(engine)) { throw new IllegalArgumentException( "Not a conscrypt engine: " + engine.getClass().getName()); } return (AbstractConscryptEngine) engine; }
private static AbstractConscryptEngine toConscrypt(SSLEngine engine) { if (!isConscrypt(engine)) { throw new IllegalArgumentException( "Not a conscrypt engine: " + engine.getClass().getName()); } return (AbstractConscryptEngine) engine; }
private static OpenSSLServerSocketFactoryImpl toConscrypt(SSLServerSocketFactory factory) { if (!isConscrypt(factory)) { throw new IllegalArgumentException( "Not a conscrypt server socket factory: " + factory.getClass().getName()); } return (OpenSSLServerSocketFactoryImpl) factory; }
private static AbstractConscryptSocket toConscrypt(SSLSocket socket) { if (!isConscrypt(socket)) { throw new IllegalArgumentException( "Not a conscrypt socket: " + socket.getClass().getName()); } return (AbstractConscryptSocket) socket; }
@Override public void configureSslSocketFactory(SSLSocketFactory socketFactory) { if (Conscrypt.isConscrypt(socketFactory)) { Conscrypt.setUseEngineSocket(socketFactory, true); } } }
@Override public @Nullable String getSelectedProtocol(SSLSocket sslSocket) { if (Conscrypt.isConscrypt(sslSocket)) { return Conscrypt.getApplicationProtocol(sslSocket); } else { return super.getSelectedProtocol(sslSocket); } }
@Override TlsDetails createTlsDetails(final SSLEngine sslEngine) { if (Conscrypt.isConscrypt(sslEngine)) { return new TlsDetails(sslEngine.getSession(), Conscrypt.getApplicationProtocol(sslEngine)); } else { return null; } }
@Override void applyParameters(final SSLEngine sslEngine, final SSLParameters sslParameters, final String[] appProtocols) { if (Conscrypt.isConscrypt(sslEngine)) { sslEngine.setSSLParameters(sslParameters); Conscrypt.setApplicationProtocols(sslEngine, appProtocols); } else { H2TlsSupport.setApplicationProtocols(sslParameters, appProtocols); sslEngine.setSSLParameters(sslParameters); } }