8207029: Unable to use custom SSLEngine with default TrustManagerFactory after updating to JDK 11 b21
Reviewed-by: wetmore
--- a/src/java.base/share/classes/sun/security/ssl/SSLAlgorithmConstraints.java Fri Jul 13 07:01:51 2018 -0700
+++ b/src/java.base/share/classes/sun/security/ssl/SSLAlgorithmConstraints.java Fri Jul 13 07:08:59 2018 -0700
@@ -73,12 +73,20 @@
boolean withDefaultCertPathConstraints) {
AlgorithmConstraints configuredConstraints = null;
if (socket != null) {
- HandshakeContext hc =
- ((SSLSocketImpl)socket).conContext.handshakeContext;
- if (hc != null) {
- configuredConstraints = hc.sslConfig.algorithmConstraints;
+ // Note that the KeyManager or TrustManager implementation may be
+ // not implemented in the same provider as SSLSocket/SSLEngine.
+ // Please check the instance before casting to use SSLSocketImpl.
+ if (socket instanceof SSLSocketImpl) {
+ HandshakeContext hc =
+ ((SSLSocketImpl)socket).conContext.handshakeContext;
+ if (hc != null) {
+ configuredConstraints = hc.sslConfig.algorithmConstraints;
+ } else {
+ configuredConstraints = null;
+ }
} else {
- configuredConstraints = null;
+ configuredConstraints =
+ socket.getSSLParameters().getAlgorithmConstraints();
}
}
this.userSpecifiedConstraints = configuredConstraints;
@@ -90,12 +98,20 @@
boolean withDefaultCertPathConstraints) {
AlgorithmConstraints configuredConstraints = null;
if (engine != null) {
- HandshakeContext hc =
- ((SSLEngineImpl)engine).conContext.handshakeContext;
- if (hc != null) {
- configuredConstraints = hc.sslConfig.algorithmConstraints;
+ // Note that the KeyManager or TrustManager implementation may be
+ // not implemented in the same provider as SSLSocket/SSLEngine.
+ // Please check the instance before casting to use SSLEngineImpl.
+ if (engine instanceof SSLEngineImpl) {
+ HandshakeContext hc =
+ ((SSLEngineImpl)engine).conContext.handshakeContext;
+ if (hc != null) {
+ configuredConstraints = hc.sslConfig.algorithmConstraints;
+ } else {
+ configuredConstraints = null;
+ }
} else {
- configuredConstraints = null;
+ configuredConstraints =
+ engine.getSSLParameters().getAlgorithmConstraints();
}
}
this.userSpecifiedConstraints = configuredConstraints;