导航菜单

页面标题

页面副标题

Jurassic World v1.83.4 - HelpshiftSSLSocketFactory.java 源代码

正在查看: Jurassic World v1.83.4 应用的 HelpshiftSSLSocketFactory.java JAVA 源代码文件

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


package com.helpshift.network;

import com.helpshift.log.HSLogger;
import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;

public class HelpshiftSSLSocketFactory extends SSLSocketFactory {
    private static final String TAG = "hs_ssl_factory";
    private List<String> disableProtocols;
    private List<String> enableProtocols;
    private List<Socket> socketCacheList = new ArrayList();
    private SSLSocketFactory sslSocketFactory;

    public HelpshiftSSLSocketFactory(SSLSocketFactory sSLSocketFactory, List<String> list, List<String> list2) {
        this.sslSocketFactory = sSLSocketFactory;
        this.enableProtocols = list;
        this.disableProtocols = list2;
    }

    @Override
    public String[] getDefaultCipherSuites() {
        return this.sslSocketFactory.getDefaultCipherSuites();
    }

    @Override
    public String[] getSupportedCipherSuites() {
        return this.sslSocketFactory.getSupportedCipherSuites();
    }

    @Override
    public Socket createSocket(Socket socket, String str, int i, boolean z) throws IOException {
        return updateProtocols(this.sslSocketFactory.createSocket(socket, str, i, z));
    }

    @Override
    public Socket createSocket() throws IOException {
        return updateProtocols(this.sslSocketFactory.createSocket());
    }

    @Override
    public Socket createSocket(String str, int i) throws IOException {
        return updateProtocols(this.sslSocketFactory.createSocket(str, i));
    }

    @Override
    public Socket createSocket(String str, int i, InetAddress inetAddress, int i2) throws IOException {
        return updateProtocols(this.sslSocketFactory.createSocket(str, i, inetAddress, i2));
    }

    @Override
    public Socket createSocket(InetAddress inetAddress, int i) throws IOException {
        return updateProtocols(this.sslSocketFactory.createSocket(inetAddress, i));
    }

    @Override
    public Socket createSocket(InetAddress inetAddress, int i, InetAddress inetAddress2, int i2) throws IOException {
        return updateProtocols(this.sslSocketFactory.createSocket(inetAddress, i, inetAddress2, i2));
    }

    Socket updateProtocols(Socket socket) {
        this.socketCacheList.add(socket);
        if (socket != null && (socket instanceof SSLSocket)) {
            SSLSocket sSLSocket = (SSLSocket) socket;
            String[] enabledProtocols = sSLSocket.getEnabledProtocols();
            if (enabledProtocols == null) {
                return sSLSocket;
            }
            ArrayList arrayList = new ArrayList(Arrays.asList(enabledProtocols));
            String[] supportedProtocols = sSLSocket.getSupportedProtocols();
            List arrayList2 = new ArrayList();
            if (supportedProtocols != null) {
                arrayList2 = Arrays.asList(supportedProtocols);
            }
            ArrayList arrayList3 = new ArrayList();
            List<String> list = this.enableProtocols;
            if (list != null && list.size() > 0) {
                for (String str : this.enableProtocols) {
                    if (!arrayList.contains(str) && arrayList2.contains(str)) {
                        arrayList3.add(str);
                    }
                }
            }
            arrayList.addAll(arrayList3);
            List<String> list2 = this.disableProtocols;
            if (list2 != null && list2.size() > 0) {
                arrayList.removeAll(this.disableProtocols);
            }
            sSLSocket.setEnabledProtocols((String[]) arrayList.toArray(new String[0]));
        }
        return socket;
    }

    public void closeSockets() {
        try {
            try {
                for (Socket socket : this.socketCacheList) {
                    if (socket != null) {
                        socket.close();
                    }
                }
            } catch (Exception e) {
                HSLogger.e(TAG, "Exception on closing open sockets: ", e);
            }
        } finally {
            this.socketCacheList.clear();
        }
    }
}