package com.android.org.conscrypt;

import android.compat.annotation.UnsupportedAppUsage;
import java.io.FileDescriptor;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
import java.net.SocketException;
import java.nio.channels.SocketChannel;
import java.security.PrivateKey;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.net.ssl.HandshakeCompletedEvent;
import javax.net.ssl.HandshakeCompletedListener;
import javax.net.ssl.SSLException;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocket;

/* JADX INFO: loaded from: classes.dex */
abstract class AbstractConscryptSocket extends SSLSocket {
    private final boolean autoClose;
    private final List<HandshakeCompletedListener> listeners;
    private String peerHostname;
    private final PeerInfoProvider peerInfoProvider;
    private final int peerPort;
    private int readTimeoutMilliseconds;
    final Socket socket;

    AbstractConscryptSocket() throws IOException {
        this.peerInfoProvider = new PeerInfoProvider() { // from class: com.android.org.conscrypt.AbstractConscryptSocket.1
            @Override // com.android.org.conscrypt.PeerInfoProvider
            String getHostname() {
                return AbstractConscryptSocket.this.getHostname();
            }

            @Override // com.android.org.conscrypt.PeerInfoProvider
            String getHostnameOrIP() {
                return AbstractConscryptSocket.this.getHostnameOrIP();
            }

            @Override // com.android.org.conscrypt.PeerInfoProvider
            int getPort() {
                return AbstractConscryptSocket.this.getPort();
            }
        };
        this.listeners = new ArrayList(2);
        this.socket = this;
        this.peerHostname = null;
        this.peerPort = -1;
        this.autoClose = false;
    }

    private boolean isDelegating() {
        Socket socket = this.socket;
        return (socket == null || socket == this) ? false : true;
    }

    @Override // javax.net.ssl.SSLSocket
    public void addHandshakeCompletedListener(HandshakeCompletedListener handshakeCompletedListener) {
        Preconditions.checkArgument(handshakeCompletedListener != null, "Provided listener is null");
        this.listeners.add(handshakeCompletedListener);
    }

    @Override // java.net.Socket
    public void bind(SocketAddress socketAddress) throws IOException {
        if (isDelegating()) {
            this.socket.bind(socketAddress);
        } else {
            super.bind(socketAddress);
        }
    }

    final void checkOpen() throws SocketException {
        if (isClosed()) {
            throw new SocketException("Socket is closed");
        }
    }

    @Override // java.net.Socket, java.io.Closeable, java.lang.AutoCloseable
    public void close() throws IOException {
        if (!isDelegating()) {
            if (super.isClosed()) {
                return;
            }
            super.close();
        } else {
            if (!this.autoClose || this.socket.isClosed()) {
                return;
            }
            this.socket.close();
        }
    }

    @Override // java.net.Socket
    public final void connect(SocketAddress socketAddress) throws IOException {
        connect(socketAddress, 0);
    }

    abstract byte[] exportKeyingMaterial(String str, byte[] bArr, int i3) throws SSLException;

    abstract SSLSession getActiveSession();

    @UnsupportedAppUsage(maxTargetSdk = 29, publicAlternatives = "Use {@code javax.net.ssl.SSLSocket#getApplicationProtocol()}.")
    @Deprecated
    abstract byte[] getAlpnSelectedProtocol();

    @Override // javax.net.ssl.SSLSocket
    public abstract String getApplicationProtocol();

    @UnsupportedAppUsage(maxTargetSdk = 29, publicAlternatives = "Use {@code javax.net.ssl.SSLParameters#getApplicationProtocols()}.")
    abstract String[] getApplicationProtocols();

    @Override // java.net.Socket
    public SocketChannel getChannel() {
        return null;
    }

    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
    abstract byte[] getChannelId() throws SSLException;

    public FileDescriptor getFileDescriptor$() {
        return isDelegating() ? Platform.getFileDescriptor(this.socket) : Platform.getFileDescriptorFromSSLSocket(this);
    }

    @Override // javax.net.ssl.SSLSocket
    public abstract String getHandshakeApplicationProtocol();

    @Override // javax.net.ssl.SSLSocket
    public abstract SSLSession getHandshakeSession();

    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
    String getHostname() {
        return this.peerHostname;
    }

    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
    String getHostnameOrIP() {
        String str = this.peerHostname;
        if (str != null) {
            return str;
        }
        InetAddress inetAddress = getInetAddress();
        if (inetAddress != null) {
            return Platform.getOriginalHostNameFromInetAddress(inetAddress);
        }
        return null;
    }

    @Override // java.net.Socket
    public InetAddress getInetAddress() {
        return isDelegating() ? this.socket.getInetAddress() : super.getInetAddress();
    }

    @Override // java.net.Socket
    public InputStream getInputStream() throws IOException {
        return isDelegating() ? this.socket.getInputStream() : super.getInputStream();
    }

    @Override // java.net.Socket
    public boolean getKeepAlive() throws SocketException {
        return isDelegating() ? this.socket.getKeepAlive() : super.getKeepAlive();
    }

    @Override // java.net.Socket
    public InetAddress getLocalAddress() {
        return isDelegating() ? this.socket.getLocalAddress() : super.getLocalAddress();
    }

    @Override // java.net.Socket
    public int getLocalPort() {
        return isDelegating() ? this.socket.getLocalPort() : super.getLocalPort();
    }

    @Override // java.net.Socket
    public SocketAddress getLocalSocketAddress() {
        return isDelegating() ? this.socket.getLocalSocketAddress() : super.getLocalSocketAddress();
    }

    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
    @Deprecated
    byte[] getNpnSelectedProtocol() {
        return null;
    }

    @Override // java.net.Socket
    public boolean getOOBInline() throws SocketException {
        return false;
    }

    @Override // java.net.Socket
    public OutputStream getOutputStream() throws IOException {
        return isDelegating() ? this.socket.getOutputStream() : super.getOutputStream();
    }

    @Override // java.net.Socket
    public final int getPort() {
        if (isDelegating()) {
            return this.socket.getPort();
        }
        int i3 = this.peerPort;
        return i3 != -1 ? i3 : super.getPort();
    }

    @Override // java.net.Socket
    public int getReceiveBufferSize() throws SocketException {
        return isDelegating() ? this.socket.getReceiveBufferSize() : super.getReceiveBufferSize();
    }

    @Override // java.net.Socket
    public SocketAddress getRemoteSocketAddress() {
        return isDelegating() ? this.socket.getRemoteSocketAddress() : super.getRemoteSocketAddress();
    }

    @Override // java.net.Socket
    public boolean getReuseAddress() throws SocketException {
        return isDelegating() ? this.socket.getReuseAddress() : super.getReuseAddress();
    }

    @Override // java.net.Socket
    public int getSendBufferSize() throws SocketException {
        return isDelegating() ? this.socket.getSendBufferSize() : super.getSendBufferSize();
    }

    @Override // java.net.Socket
    public int getSoLinger() throws SocketException {
        return isDelegating() ? this.socket.getSoLinger() : super.getSoLinger();
    }

    @Override // java.net.Socket
    public final int getSoTimeout() throws SocketException {
        return isDelegating() ? this.socket.getSoTimeout() : this.readTimeoutMilliseconds;
    }

    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
    int getSoWriteTimeout() throws SocketException {
        return 0;
    }

    @Override // java.net.Socket
    public boolean getTcpNoDelay() throws SocketException {
        return isDelegating() ? this.socket.getTcpNoDelay() : super.getTcpNoDelay();
    }

    abstract byte[] getTlsUnique();

    @Override // java.net.Socket
    public int getTrafficClass() throws SocketException {
        return isDelegating() ? this.socket.getTrafficClass() : super.getTrafficClass();
    }

    @Override // java.net.Socket
    public boolean isBound() {
        return isDelegating() ? this.socket.isBound() : super.isBound();
    }

    @Override // java.net.Socket
    public boolean isClosed() {
        return isDelegating() ? this.socket.isClosed() : super.isClosed();
    }

    @Override // java.net.Socket
    public boolean isConnected() {
        return isDelegating() ? this.socket.isConnected() : super.isConnected();
    }

    @Override // java.net.Socket
    public boolean isInputShutdown() {
        return isDelegating() ? this.socket.isInputShutdown() : super.isInputShutdown();
    }

    @Override // java.net.Socket
    public boolean isOutputShutdown() {
        return isDelegating() ? this.socket.isOutputShutdown() : super.isOutputShutdown();
    }

    final void notifyHandshakeCompletedListeners() {
        ArrayList arrayList = new ArrayList(this.listeners);
        if (arrayList.isEmpty()) {
            return;
        }
        HandshakeCompletedEvent handshakeCompletedEvent = new HandshakeCompletedEvent(this, getActiveSession());
        Iterator it = arrayList.iterator();
        while (it.hasNext()) {
            try {
                ((HandshakeCompletedListener) it.next()).handshakeCompleted(handshakeCompletedEvent);
            } catch (RuntimeException e3) {
                Thread threadCurrentThread = Thread.currentThread();
                threadCurrentThread.getUncaughtExceptionHandler().uncaughtException(threadCurrentThread, e3);
            }
        }
    }

    final PeerInfoProvider peerInfoProvider() {
        return this.peerInfoProvider;
    }

    @Override // javax.net.ssl.SSLSocket
    public void removeHandshakeCompletedListener(HandshakeCompletedListener handshakeCompletedListener) {
        Preconditions.checkArgument(handshakeCompletedListener != null, "Provided listener is null");
        if (!this.listeners.remove(handshakeCompletedListener)) {
            throw new IllegalArgumentException("Provided listener is not registered");
        }
    }

    @Override // java.net.Socket
    public final void sendUrgentData(int i3) throws IOException {
        throw new SocketException("Method sendUrgentData() is not supported.");
    }

    @UnsupportedAppUsage(maxTargetSdk = 29, publicAlternatives = "Use {@code javax.net.ssl.SSLParameters#setApplicationProtocols(java.lang.String[])}.")
    @Deprecated
    abstract void setAlpnProtocols(byte[] bArr);

    @UnsupportedAppUsage(maxTargetSdk = 29, publicAlternatives = "Use {@code javax.net.ssl.SSLParameters#setApplicationProtocols(java.lang.String[])}.")
    @Deprecated
    abstract void setAlpnProtocols(String[] strArr);

    abstract void setApplicationProtocolSelector(ApplicationProtocolSelector applicationProtocolSelector);

    abstract void setApplicationProtocolSelector(ApplicationProtocolSelectorAdapter applicationProtocolSelectorAdapter);

    @UnsupportedAppUsage(maxTargetSdk = 29, publicAlternatives = "Use {@code javax.net.ssl.SSLParameters#setApplicationProtocols(java.lang.String[])}.")
    abstract void setApplicationProtocols(String[] strArr);

    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
    abstract void setChannelIdEnabled(boolean z2);

    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
    abstract void setChannelIdPrivateKey(PrivateKey privateKey);

    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
    void setHandshakeTimeout(int i3) throws SocketException {
        throw new SocketException("Method setHandshakeTimeout() is not supported.");
    }

    @UnsupportedAppUsage(maxTargetSdk = 29, publicAlternatives = "Use {@code javax.net.ssl.SSLParameters#setServerNames}.")
    void setHostname(String str) {
        this.peerHostname = str;
    }

    @Override // java.net.Socket
    public void setKeepAlive(boolean z2) throws SocketException {
        if (isDelegating()) {
            this.socket.setKeepAlive(z2);
        } else {
            super.setKeepAlive(z2);
        }
    }

    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
    @Deprecated
    void setNpnProtocols(byte[] bArr) {
    }

    @Override // java.net.Socket
    public final void setOOBInline(boolean z2) throws SocketException {
        throw new SocketException("Method setOOBInline() is not supported.");
    }

    @Override // java.net.Socket
    public void setPerformancePreferences(int i3, int i4, int i5) {
        if (isDelegating()) {
            this.socket.setPerformancePreferences(i3, i4, i5);
        } else {
            super.setPerformancePreferences(i3, i4, i5);
        }
    }

    @Override // java.net.Socket
    public void setReceiveBufferSize(int i3) throws SocketException {
        if (isDelegating()) {
            this.socket.setReceiveBufferSize(i3);
        } else {
            super.setReceiveBufferSize(i3);
        }
    }

    @Override // java.net.Socket
    public void setReuseAddress(boolean z2) throws SocketException {
        if (isDelegating()) {
            this.socket.setReuseAddress(z2);
        } else {
            super.setReuseAddress(z2);
        }
    }

    @Override // java.net.Socket
    public void setSendBufferSize(int i3) throws SocketException {
        if (isDelegating()) {
            this.socket.setSendBufferSize(i3);
        } else {
            super.setSendBufferSize(i3);
        }
    }

    @Override // java.net.Socket
    public void setSoLinger(boolean z2, int i3) throws SocketException {
        if (isDelegating()) {
            this.socket.setSoLinger(z2, i3);
        } else {
            super.setSoLinger(z2, i3);
        }
    }

    @Override // java.net.Socket
    public final void setSoTimeout(int i3) throws SocketException {
        if (isDelegating()) {
            this.socket.setSoTimeout(i3);
        } else {
            super.setSoTimeout(i3);
            this.readTimeoutMilliseconds = i3;
        }
    }

    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
    void setSoWriteTimeout(int i3) throws SocketException {
        throw new SocketException("Method setSoWriteTimeout() is not supported.");
    }

    @Override // java.net.Socket
    public void setTcpNoDelay(boolean z2) throws SocketException {
        if (isDelegating()) {
            this.socket.setTcpNoDelay(z2);
        } else {
            super.setTcpNoDelay(z2);
        }
    }

    @Override // java.net.Socket
    public void setTrafficClass(int i3) throws SocketException {
        if (isDelegating()) {
            this.socket.setTrafficClass(i3);
        } else {
            super.setTrafficClass(i3);
        }
    }

    @UnsupportedAppUsage(maxTargetSdk = 29, publicAlternatives = "Use {@link android.net.ssl.SSLSockets#setUseSessionTickets}.")
    abstract void setUseSessionTickets(boolean z2);

    @Override // java.net.Socket
    public void shutdownInput() throws IOException {
        if (isDelegating()) {
            this.socket.shutdownInput();
        } else {
            super.shutdownInput();
        }
    }

    @Override // java.net.Socket
    public void shutdownOutput() throws IOException {
        if (isDelegating()) {
            this.socket.shutdownOutput();
        } else {
            super.shutdownOutput();
        }
    }

    @Override // javax.net.ssl.SSLSocket, java.net.Socket
    public String toString() {
        StringBuilder sb = new StringBuilder("SSL socket over ");
        if (isDelegating()) {
            sb.append(this.socket.toString());
        } else {
            sb.append(super.toString());
        }
        return sb.toString();
    }

    @Override // java.net.Socket
    public final void connect(SocketAddress socketAddress, int i3) throws IOException {
        if (this.peerHostname == null && (socketAddress instanceof InetSocketAddress)) {
            this.peerHostname = Platform.getHostStringFromInetSocketAddress((InetSocketAddress) socketAddress);
        }
        if (isDelegating()) {
            this.socket.connect(socketAddress, i3);
        } else {
            super.connect(socketAddress, i3);
        }
    }

    AbstractConscryptSocket(String str, int i3) throws IOException {
        super(str, i3);
        this.peerInfoProvider = new PeerInfoProvider() { // from class: com.android.org.conscrypt.AbstractConscryptSocket.1
            @Override // com.android.org.conscrypt.PeerInfoProvider
            String getHostname() {
                return AbstractConscryptSocket.this.getHostname();
            }

            @Override // com.android.org.conscrypt.PeerInfoProvider
            String getHostnameOrIP() {
                return AbstractConscryptSocket.this.getHostnameOrIP();
            }

            @Override // com.android.org.conscrypt.PeerInfoProvider
            int getPort() {
                return AbstractConscryptSocket.this.getPort();
            }
        };
        this.listeners = new ArrayList(2);
        this.socket = this;
        this.peerHostname = str;
        this.peerPort = i3;
        this.autoClose = false;
    }

    AbstractConscryptSocket(InetAddress inetAddress, int i3) throws IOException {
        super(inetAddress, i3);
        this.peerInfoProvider = new PeerInfoProvider() { // from class: com.android.org.conscrypt.AbstractConscryptSocket.1
            @Override // com.android.org.conscrypt.PeerInfoProvider
            String getHostname() {
                return AbstractConscryptSocket.this.getHostname();
            }

            @Override // com.android.org.conscrypt.PeerInfoProvider
            String getHostnameOrIP() {
                return AbstractConscryptSocket.this.getHostnameOrIP();
            }

            @Override // com.android.org.conscrypt.PeerInfoProvider
            int getPort() {
                return AbstractConscryptSocket.this.getPort();
            }
        };
        this.listeners = new ArrayList(2);
        this.socket = this;
        this.peerHostname = null;
        this.peerPort = -1;
        this.autoClose = false;
    }

    AbstractConscryptSocket(String str, int i3, InetAddress inetAddress, int i4) throws IOException {
        super(str, i3, inetAddress, i4);
        this.peerInfoProvider = new PeerInfoProvider() { // from class: com.android.org.conscrypt.AbstractConscryptSocket.1
            @Override // com.android.org.conscrypt.PeerInfoProvider
            String getHostname() {
                return AbstractConscryptSocket.this.getHostname();
            }

            @Override // com.android.org.conscrypt.PeerInfoProvider
            String getHostnameOrIP() {
                return AbstractConscryptSocket.this.getHostnameOrIP();
            }

            @Override // com.android.org.conscrypt.PeerInfoProvider
            int getPort() {
                return AbstractConscryptSocket.this.getPort();
            }
        };
        this.listeners = new ArrayList(2);
        this.socket = this;
        this.peerHostname = str;
        this.peerPort = i3;
        this.autoClose = false;
    }

    AbstractConscryptSocket(InetAddress inetAddress, int i3, InetAddress inetAddress2, int i4) throws IOException {
        super(inetAddress, i3, inetAddress2, i4);
        this.peerInfoProvider = new PeerInfoProvider() { // from class: com.android.org.conscrypt.AbstractConscryptSocket.1
            @Override // com.android.org.conscrypt.PeerInfoProvider
            String getHostname() {
                return AbstractConscryptSocket.this.getHostname();
            }

            @Override // com.android.org.conscrypt.PeerInfoProvider
            String getHostnameOrIP() {
                return AbstractConscryptSocket.this.getHostnameOrIP();
            }

            @Override // com.android.org.conscrypt.PeerInfoProvider
            int getPort() {
                return AbstractConscryptSocket.this.getPort();
            }
        };
        this.listeners = new ArrayList(2);
        this.socket = this;
        this.peerHostname = null;
        this.peerPort = -1;
        this.autoClose = false;
    }

    AbstractConscryptSocket(Socket socket, String str, int i3, boolean z2) throws IOException {
        this.peerInfoProvider = new PeerInfoProvider() { // from class: com.android.org.conscrypt.AbstractConscryptSocket.1
            @Override // com.android.org.conscrypt.PeerInfoProvider
            String getHostname() {
                return AbstractConscryptSocket.this.getHostname();
            }

            @Override // com.android.org.conscrypt.PeerInfoProvider
            String getHostnameOrIP() {
                return AbstractConscryptSocket.this.getHostnameOrIP();
            }

            @Override // com.android.org.conscrypt.PeerInfoProvider
            int getPort() {
                return AbstractConscryptSocket.this.getPort();
            }
        };
        this.listeners = new ArrayList(2);
        this.socket = (Socket) Preconditions.checkNotNull(socket, "socket");
        this.peerHostname = str;
        this.peerPort = i3;
        this.autoClose = z2;
    }
}
