-
-
Save anilatx/23ac1c41a2ad8301087d78ce51ae00b9 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.method private b(Lokhttp3/internal/connection/ConnectionSpecSelector;)V | |
.locals 7 | |
.annotation system Ldalvik/annotation/Throws; | |
value = { | |
Ljava/io/IOException; | |
} | |
.end annotation | |
.line 1 | |
iget-object v0, p0, Lokhttp3/internal/connection/RealConnection;->a:Lokhttp3/Route; | |
invoke-virtual {v0}, Lokhttp3/Route;->address()Lokhttp3/Address; | |
move-result-object v0 | |
.line 2 | |
invoke-virtual {v0}, Lokhttp3/Address;->sslSocketFactory()Ljavax/net/ssl/SSLSocketFactory; | |
move-result-object v1 | |
const/4 v2, 0x0 | |
.line 3 | |
:try_start_0 | |
iget-object v3, p0, Lokhttp3/internal/connection/RealConnection;->b:Ljava/net/Socket; | |
.line 4 | |
invoke-virtual {v0}, Lokhttp3/Address;->url()Lokhttp3/HttpUrl; | |
move-result-object v4 | |
invoke-virtual {v4}, Lokhttp3/HttpUrl;->host()Ljava/lang/String; | |
move-result-object v4 | |
invoke-virtual {v0}, Lokhttp3/Address;->url()Lokhttp3/HttpUrl; | |
move-result-object v5 | |
invoke-virtual {v5}, Lokhttp3/HttpUrl;->port()I | |
move-result v5 | |
const/4 v6, 0x1 | |
.line 5 | |
invoke-virtual {v1, v3, v4, v5, v6}, Ljavax/net/ssl/SSLSocketFactory;->createSocket(Ljava/net/Socket;Ljava/lang/String;IZ)Ljava/net/Socket; | |
move-result-object v1 | |
check-cast v1, Ljavax/net/ssl/SSLSocket; | |
:try_end_0 | |
.catch Ljava/lang/AssertionError; {:try_start_0 .. :try_end_0} :catch_1 | |
.catchall {:try_start_0 .. :try_end_0} :catchall_1 | |
.line 6 | |
:try_start_1 | |
invoke-virtual {p1, v1}, Lokhttp3/internal/connection/ConnectionSpecSelector;->a(Ljavax/net/ssl/SSLSocket;)Lokhttp3/ConnectionSpec; | |
move-result-object p1 | |
.line 7 | |
invoke-virtual {p1}, Lokhttp3/ConnectionSpec;->supportsTlsExtensions()Z | |
move-result v3 | |
if-eqz v3, :cond_0 | |
.line 8 | |
invoke-static {}, Lokhttp3/internal/platform/Platform;->get()Lokhttp3/internal/platform/Platform; | |
move-result-object v3 | |
.line 9 | |
invoke-virtual {v0}, Lokhttp3/Address;->url()Lokhttp3/HttpUrl; | |
move-result-object v4 | |
invoke-virtual {v4}, Lokhttp3/HttpUrl;->host()Ljava/lang/String; | |
move-result-object v4 | |
invoke-virtual {v0}, Lokhttp3/Address;->protocols()Ljava/util/List; | |
move-result-object v5 | |
.line 10 | |
invoke-virtual {v3, v1, v4, v5}, Lokhttp3/internal/platform/Platform;->configureTlsExtensions(Ljavax/net/ssl/SSLSocket;Ljava/lang/String;Ljava/util/List;)V | |
.line 11 | |
:cond_0 | |
invoke-virtual {v1}, Ljavax/net/ssl/SSLSocket;->startHandshake()V | |
.line 12 | |
invoke-virtual {v1}, Ljavax/net/ssl/SSLSocket;->getSession()Ljavax/net/ssl/SSLSession; | |
move-result-object v3 | |
.line 13 | |
invoke-static {v3}, Lokhttp3/Handshake;->get(Ljavax/net/ssl/SSLSession;)Lokhttp3/Handshake; | |
move-result-object v4 | |
.line 14 | |
invoke-virtual {v0}, Lokhttp3/Address;->hostnameVerifier()Ljavax/net/ssl/HostnameVerifier; | |
move-result-object v5 | |
invoke-virtual {v0}, Lokhttp3/Address;->url()Lokhttp3/HttpUrl; | |
move-result-object v6 | |
invoke-virtual {v6}, Lokhttp3/HttpUrl;->host()Ljava/lang/String; | |
move-result-object v6 | |
invoke-interface {v5, v6, v3}, Ljavax/net/ssl/HostnameVerifier;->verify(Ljava/lang/String;Ljavax/net/ssl/SSLSession;)Z | |
move-result v3 | |
if-nez v3, :cond_2 | |
.line 15 | |
invoke-virtual {v4}, Lokhttp3/Handshake;->peerCertificates()Ljava/util/List; | |
move-result-object p1 | |
.line 16 | |
invoke-interface {p1}, Ljava/util/List;->isEmpty()Z | |
move-result v2 | |
:try_end_1 | |
.catch Ljava/lang/AssertionError; {:try_start_1 .. :try_end_1} :catch_0 | |
.catchall {:try_start_1 .. :try_end_1} :catchall_0 | |
const-string v3, "Hostname " | |
if-nez v2, :cond_1 | |
const/4 v2, 0x0 | |
.line 17 | |
:try_start_2 | |
invoke-interface {p1, v2}, Ljava/util/List;->get(I)Ljava/lang/Object; | |
move-result-object p1 | |
check-cast p1, Ljava/security/cert/X509Certificate; | |
.line 18 | |
new-instance v2, Ljavax/net/ssl/SSLPeerUnverifiedException; | |
new-instance v4, Ljava/lang/StringBuilder; | |
invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V | |
invoke-virtual {v4, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
.line 19 | |
invoke-virtual {v0}, Lokhttp3/Address;->url()Lokhttp3/HttpUrl; | |
move-result-object v0 | |
invoke-virtual {v0}, Lokhttp3/HttpUrl;->host()Ljava/lang/String; | |
move-result-object v0 | |
invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
const-string v0, " not verified:\n certificate: " | |
invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
.line 20 | |
invoke-static {p1}, Lokhttp3/CertificatePinner;->pin(Ljava/security/cert/Certificate;)Ljava/lang/String; | |
move-result-object v0 | |
invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
const-string v0, "\n DN: " | |
invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
.line 21 | |
invoke-virtual {p1}, Ljava/security/cert/X509Certificate;->getSubjectDN()Ljava/security/Principal; | |
move-result-object v0 | |
invoke-interface {v0}, Ljava/security/Principal;->getName()Ljava/lang/String; | |
move-result-object v0 | |
invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
const-string v0, "\n subjectAltNames: " | |
invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
.line 22 | |
invoke-static {p1}, Lokhttp3/internal/tls/OkHostnameVerifier;->allSubjectAltNames(Ljava/security/cert/X509Certificate;)Ljava/util/List; | |
move-result-object p1 | |
invoke-virtual {v4, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; | |
invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; | |
move-result-object p1 | |
invoke-direct {v2, p1}, Ljavax/net/ssl/SSLPeerUnverifiedException;-><init>(Ljava/lang/String;)V | |
throw v2 | |
.line 23 | |
:cond_1 | |
new-instance p1, Ljavax/net/ssl/SSLPeerUnverifiedException; | |
new-instance v2, Ljava/lang/StringBuilder; | |
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V | |
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
.line 24 | |
invoke-virtual {v0}, Lokhttp3/Address;->url()Lokhttp3/HttpUrl; | |
move-result-object v0 | |
invoke-virtual {v0}, Lokhttp3/HttpUrl;->host()Ljava/lang/String; | |
move-result-object v0 | |
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
const-string v0, " not verified (no certificates)" | |
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; | |
move-result-object v0 | |
invoke-direct {p1, v0}, Ljavax/net/ssl/SSLPeerUnverifiedException;-><init>(Ljava/lang/String;)V | |
throw p1 | |
.line 25 | |
:cond_2 | |
invoke-virtual {v0}, Lokhttp3/Address;->certificatePinner()Lokhttp3/CertificatePinner; | |
move-result-object v3 | |
invoke-virtual {v0}, Lokhttp3/Address;->url()Lokhttp3/HttpUrl; | |
move-result-object v0 | |
invoke-virtual {v0}, Lokhttp3/HttpUrl;->host()Ljava/lang/String; | |
move-result-object v0 | |
.line 26 | |
invoke-virtual {v4}, Lokhttp3/Handshake;->peerCertificates()Ljava/util/List; | |
move-result-object v5 | |
.line 27 | |
invoke-virtual {v3, v0, v5}, Lokhttp3/CertificatePinner;->check(Ljava/lang/String;Ljava/util/List;)V | |
.line 28 | |
invoke-virtual {p1}, Lokhttp3/ConnectionSpec;->supportsTlsExtensions()Z | |
move-result p1 | |
if-eqz p1, :cond_3 | |
.line 29 | |
invoke-static {}, Lokhttp3/internal/platform/Platform;->get()Lokhttp3/internal/platform/Platform; | |
move-result-object p1 | |
invoke-virtual {p1, v1}, Lokhttp3/internal/platform/Platform;->getSelectedProtocol(Ljavax/net/ssl/SSLSocket;)Ljava/lang/String; | |
move-result-object v2 | |
.line 30 | |
:cond_3 | |
iput-object v1, p0, Lokhttp3/internal/connection/RealConnection;->c:Ljava/net/Socket; | |
.line 31 | |
invoke-static {v1}, Lokio/Okio;->source(Ljava/net/Socket;)Lokio/Source; | |
move-result-object p1 | |
invoke-static {p1}, Lokio/Okio;->buffer(Lokio/Source;)Lokio/BufferedSource; | |
move-result-object p1 | |
iput-object p1, p0, Lokhttp3/internal/connection/RealConnection;->g:Lokio/BufferedSource; | |
.line 32 | |
iget-object p1, p0, Lokhttp3/internal/connection/RealConnection;->c:Ljava/net/Socket; | |
invoke-static {p1}, Lokio/Okio;->sink(Ljava/net/Socket;)Lokio/Sink; | |
move-result-object p1 | |
invoke-static {p1}, Lokio/Okio;->buffer(Lokio/Sink;)Lokio/BufferedSink; | |
move-result-object p1 | |
iput-object p1, p0, Lokhttp3/internal/connection/RealConnection;->h:Lokio/BufferedSink; | |
.line 33 | |
iput-object v4, p0, Lokhttp3/internal/connection/RealConnection;->d:Lokhttp3/Handshake; | |
if-eqz v2, :cond_4 | |
.line 34 | |
invoke-static {v2}, Lokhttp3/Protocol;->get(Ljava/lang/String;)Lokhttp3/Protocol; | |
move-result-object p1 | |
goto :goto_0 | |
.line 35 | |
:cond_4 | |
sget-object p1, Lokhttp3/Protocol;->HTTP_1_1:Lokhttp3/Protocol; | |
:goto_0 | |
iput-object p1, p0, Lokhttp3/internal/connection/RealConnection;->e:Lokhttp3/Protocol; | |
:try_end_2 | |
.catch Ljava/lang/AssertionError; {:try_start_2 .. :try_end_2} :catch_0 | |
.catchall {:try_start_2 .. :try_end_2} :catchall_0 | |
if-eqz v1, :cond_5 | |
.line 36 | |
invoke-static {}, Lokhttp3/internal/platform/Platform;->get()Lokhttp3/internal/platform/Platform; | |
move-result-object p1 | |
invoke-virtual {p1, v1}, Lokhttp3/internal/platform/Platform;->afterHandshake(Ljavax/net/ssl/SSLSocket;)V | |
:cond_5 | |
return-void | |
:catchall_0 | |
move-exception p1 | |
move-object v2, v1 | |
goto :goto_2 | |
:catch_0 | |
move-exception p1 | |
move-object v2, v1 | |
goto :goto_1 | |
:catchall_1 | |
move-exception p1 | |
goto :goto_2 | |
:catch_1 | |
move-exception p1 | |
.line 37 | |
:goto_1 | |
:try_start_3 | |
invoke-static {p1}, Lokhttp3/internal/Util;->isAndroidGetsocknameError(Ljava/lang/AssertionError;)Z | |
move-result v0 | |
if-eqz v0, :cond_6 | |
new-instance v0, Ljava/io/IOException; | |
invoke-direct {v0, p1}, Ljava/io/IOException;-><init>(Ljava/lang/Throwable;)V | |
throw v0 | |
.line 38 | |
:cond_6 | |
throw p1 | |
:try_end_3 | |
.catchall {:try_start_3 .. :try_end_3} :catchall_1 | |
:goto_2 | |
if-eqz v2, :cond_7 | |
.line 39 | |
invoke-static {}, Lokhttp3/internal/platform/Platform;->get()Lokhttp3/internal/platform/Platform; | |
move-result-object v0 | |
invoke-virtual {v0, v2}, Lokhttp3/internal/platform/Platform;->afterHandshake(Ljavax/net/ssl/SSLSocket;)V | |
.line 40 | |
:cond_7 | |
invoke-static {v2}, Lokhttp3/internal/Util;->closeQuietly(Ljava/net/Socket;)V | |
throw p1 | |
.end method |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment