|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*/ |
|
|
|
package sun.security.ssl; |
|
|
|
import java.io.IOException; |
|
import java.security.AlgorithmConstraints; |
|
import java.security.AccessController; |
|
import sun.security.util.LegacyAlgorithmConstraints; |
|
import sun.security.action.GetLongAction; |
|
|
|
class ServerHandshakeContext extends HandshakeContext { |
|
// To prevent the TLS renegotiation issues, by setting system property |
|
// "jdk.tls.rejectClientInitiatedRenegotiation" to true, applications in |
|
// server side can disable all client initiated SSL renegotiation |
|
// regardless of the support of TLS protocols. |
|
// |
|
|
|
static final boolean rejectClientInitiatedRenego = |
|
Utilities.getBooleanProperty( |
|
"jdk.tls.rejectClientInitiatedRenegotiation", false); |
|
|
|
|
|
static final AlgorithmConstraints legacyAlgorithmConstraints = |
|
new LegacyAlgorithmConstraints( |
|
LegacyAlgorithmConstraints.PROPERTY_TLS_LEGACY_ALGS, |
|
new SSLAlgorithmDecomposer()); |
|
|
|
|
|
SSLPossession interimAuthn; |
|
|
|
StatusResponseManager.StaplingParameters stapleParams; |
|
CertificateMessage.CertificateEntry currentCertEntry; |
|
private static final long DEFAULT_STATUS_RESP_DELAY = 5000L; |
|
final long statusRespTimeout; |
|
|
|
|
|
ServerHandshakeContext(SSLContextImpl sslContext, |
|
TransportContext conContext) throws IOException { |
|
super(sslContext, conContext); |
|
long respTimeOut = AccessController.doPrivileged( |
|
new GetLongAction("jdk.tls.stapling.responseTimeout", |
|
DEFAULT_STATUS_RESP_DELAY)); |
|
statusRespTimeout = respTimeOut >= 0 ? respTimeOut : |
|
DEFAULT_STATUS_RESP_DELAY; |
|
handshakeConsumers.put( |
|
SSLHandshake.CLIENT_HELLO.id, SSLHandshake.CLIENT_HELLO); |
|
} |
|
|
|
@Override |
|
void kickstart() throws IOException { |
|
if (!conContext.isNegotiated || kickstartMessageDelivered) { |
|
return; |
|
} |
|
|
|
SSLHandshake.kickstart(this); |
|
kickstartMessageDelivered = true; |
|
} |
|
} |
|
|