下面列出了javax.net.ssl.SSLEngine#getHandshakeSession ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public void checkServerTrusted(X509Certificate[] certs, String authType, SSLEngine engine)
throws CertificateException {
SSLSession session = engine.getHandshakeSession();
if (session == null) {
throw new CertificateException("Not in handshake; no session available");
}
String host = session.getPeerHost();
NetworkSecurityConfig config = mConfig.getConfigForHostname(host);
config.getTrustManager().checkServerTrusted(certs, authType, engine);
}
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType,
SSLEngine engine) throws CertificateException {
if (!option.isAuthPeer()) {
return;
}
String ip = null;
if (engine != null) {
SSLSession session = engine.getHandshakeSession();
ip = session.getPeerHost();
}
checkTrustedCustom(chain, ip);
trustManager.checkClientTrusted(chain, authType, engine);
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType,
SSLEngine engine) throws CertificateException {
if (!option.isAuthPeer()) {
return;
}
String ip = null;
if (engine != null) {
SSLSession session = engine.getHandshakeSession();
ip = session.getPeerHost();
}
checkTrustedCustom(chain, ip);
trustManager.checkServerTrusted(chain, authType, engine);
}
@Override
public String getSelectedProtocol(SSLEngine engine) {
SSLSession handshake = engine.getHandshakeSession();
if (handshake != null) {
return (String) handshake.getValue(PROTOCOL_KEY);
}
handshake = engine.getSession();
if (handshake != null) {
return (String) handshake.getValue(PROTOCOL_KEY);
}
return null;
}
private void checkIdentity(SSLEngine engine, X509Certificate cert) throws CertificateException{
if (null!=engine) {
SSLSession session = engine.getHandshakeSession();
checkIdentity(session, cert);
}
}