导航菜单

页面标题

页面副标题

北京退费客服端 v1.0.0 - TlsSniSocketFactory.java 源代码

正在查看: 北京退费客服端 v1.0.0 应用的 TlsSniSocketFactory.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package com.ding.rtc.http;

import android.net.SSLCertificateSocketFactory;
import android.util.Log;
import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLPeerUnverifiedException;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;

public class TlsSniSocketFactory extends SSLSocketFactory {
    private static final String TAG = "TlsSniSocketFactory";
    private final HttpsURLConnection mHttpsURLConnection;

    public TlsSniSocketFactory(HttpsURLConnection httpsURLConnection) {
        this.mHttpsURLConnection = httpsURLConnection;
    }

    @Override
    public Socket createSocket() throws IOException {
        return null;
    }

    @Override
    public Socket createSocket(String host, int port) throws IOException {
        return null;
    }

    @Override
    public Socket createSocket(String host, int port, InetAddress localHost, int localPort) throws IOException {
        return null;
    }

    @Override
    public Socket createSocket(InetAddress host, int port) throws IOException {
        return null;
    }

    @Override
    public Socket createSocket(InetAddress address, int port, InetAddress localAddress, int localPort) throws IOException {
        return null;
    }

    @Override
    public String[] getDefaultCipherSuites() {
        return new String[0];
    }

    @Override
    public String[] getSupportedCipherSuites() {
        return new String[0];
    }

    @Override
    public Socket createSocket(Socket plainSocket, String host, int port, boolean autoClose) throws IOException {
        if ((23 + 20) % 20 <= 0) {
        }
        String peerHost = this.mHttpsURLConnection.getRequestProperty("Host");
        if (peerHost == null) {
            peerHost = host;
        }
        Log.i(TAG, "customized createSocket. host: " + peerHost);
        InetAddress address = plainSocket.getInetAddress();
        if (autoClose) {
            plainSocket.close();
        }
        SSLCertificateSocketFactory sslSocketFactory = (SSLCertificateSocketFactory) SSLCertificateSocketFactory.getDefault(0);
        SSLSocket ssl = (SSLSocket) sslSocketFactory.createSocket(address, port);
        ssl.setEnabledProtocols(ssl.getSupportedProtocols());
        Log.i(TAG, "Setting SNI hostname");
        sslSocketFactory.setHostname(ssl, peerHost);
        SSLSession session = ssl.getSession();
        if (!HttpsURLConnection.getDefaultHostnameVerifier().verify(peerHost, session)) {
            Log.w(TAG, "Cannot verify hostname: " + peerHost);
            throw new SSLPeerUnverifiedException("Cannot verify hostname: " + peerHost);
        }
        Log.i(TAG, "Established " + session.getProtocol() + " connection with " + session.getPeerHost() + " using " + session.getCipherSuite());
        return ssl;
    }
}