.class public Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory; .super Ljava/lang/Object; .source "SSLConnectionSocketFactory.java" # interfaces .implements Lorg/apache/http/conn/socket/LayeredConnectionSocketFactory; # static fields .field public static final ALLOW_ALL_HOSTNAME_VERIFIER:Lorg/apache/http/conn/ssl/X509HostnameVerifier; .annotation runtime Ljava/lang/Deprecated; .end annotation .end field .field public static final BROWSER_COMPATIBLE_HOSTNAME_VERIFIER:Lorg/apache/http/conn/ssl/X509HostnameVerifier; .annotation runtime Ljava/lang/Deprecated; .end annotation .end field .field public static final SSL:Ljava/lang/String; = "SSL" .field public static final SSLV2:Ljava/lang/String; = "SSLv2" .field public static final STRICT_HOSTNAME_VERIFIER:Lorg/apache/http/conn/ssl/X509HostnameVerifier; .annotation runtime Ljava/lang/Deprecated; .end annotation .end field .field public static final TLS:Ljava/lang/String; = "TLS" # instance fields .field private final hostnameVerifier:Ljavax/net/ssl/HostnameVerifier; .field private final log:Lorg/apache/commons/logging/Log; .field private final socketfactory:Ljavax/net/ssl/SSLSocketFactory; .field private final supportedCipherSuites:[Ljava/lang/String; .field private final supportedProtocols:[Ljava/lang/String; # direct methods .method static constructor ()V .registers 1 .line 146 sget-object v0, Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier;->INSTANCE:Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier; sput-object v0, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->ALLOW_ALL_HOSTNAME_VERIFIER:Lorg/apache/http/conn/ssl/X509HostnameVerifier; .line 150 sget-object v0, Lorg/apache/http/conn/ssl/BrowserCompatHostnameVerifier;->INSTANCE:Lorg/apache/http/conn/ssl/BrowserCompatHostnameVerifier; sput-object v0, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->BROWSER_COMPATIBLE_HOSTNAME_VERIFIER:Lorg/apache/http/conn/ssl/X509HostnameVerifier; .line 154 sget-object v0, Lorg/apache/http/conn/ssl/StrictHostnameVerifier;->INSTANCE:Lorg/apache/http/conn/ssl/StrictHostnameVerifier; sput-object v0, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->STRICT_HOSTNAME_VERIFIER:Lorg/apache/http/conn/ssl/X509HostnameVerifier; return-void .end method .method public constructor (Ljavax/net/ssl/SSLContext;)V .registers 3 .line 206 invoke-static {}, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->getDefaultHostnameVerifier()Ljavax/net/ssl/HostnameVerifier; move-result-object v0 invoke-direct {p0, p1, v0}, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->(Ljavax/net/ssl/SSLContext;Ljavax/net/ssl/HostnameVerifier;)V return-void .end method .method public constructor (Ljavax/net/ssl/SSLContext;Ljavax/net/ssl/HostnameVerifier;)V .registers 4 .line 263 const-string v0, "SSL context" invoke-static {p1, v0}, Lorg/apache/http/util/Args;->notNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; move-result-object p1 check-cast p1, Ljavax/net/ssl/SSLContext; invoke-virtual {p1}, Ljavax/net/ssl/SSLContext;->getSocketFactory()Ljavax/net/ssl/SSLSocketFactory; move-result-object p1 const/4 v0, 0x0 invoke-direct {p0, p1, v0, v0, p2}, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->(Ljavax/net/ssl/SSLSocketFactory;[Ljava/lang/String;[Ljava/lang/String;Ljavax/net/ssl/HostnameVerifier;)V return-void .end method .method public constructor (Ljavax/net/ssl/SSLContext;Lorg/apache/http/conn/ssl/X509HostnameVerifier;)V .registers 4 .annotation runtime Ljava/lang/Deprecated; .end annotation .line 216 const-string v0, "SSL context" invoke-static {p1, v0}, Lorg/apache/http/util/Args;->notNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; move-result-object p1 check-cast p1, Ljavax/net/ssl/SSLContext; invoke-virtual {p1}, Ljavax/net/ssl/SSLContext;->getSocketFactory()Ljavax/net/ssl/SSLSocketFactory; move-result-object p1 const/4 v0, 0x0 invoke-direct {p0, p1, v0, v0, p2}, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->(Ljavax/net/ssl/SSLSocketFactory;[Ljava/lang/String;[Ljava/lang/String;Lorg/apache/http/conn/ssl/X509HostnameVerifier;)V return-void .end method .method public constructor (Ljavax/net/ssl/SSLContext;[Ljava/lang/String;[Ljava/lang/String;Ljavax/net/ssl/HostnameVerifier;)V .registers 6 .line 275 const-string v0, "SSL context" invoke-static {p1, v0}, Lorg/apache/http/util/Args;->notNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; move-result-object p1 check-cast p1, Ljavax/net/ssl/SSLContext; invoke-virtual {p1}, Ljavax/net/ssl/SSLContext;->getSocketFactory()Ljavax/net/ssl/SSLSocketFactory; move-result-object p1 invoke-direct {p0, p1, p2, p3, p4}, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->(Ljavax/net/ssl/SSLSocketFactory;[Ljava/lang/String;[Ljava/lang/String;Ljavax/net/ssl/HostnameVerifier;)V return-void .end method .method public constructor (Ljavax/net/ssl/SSLContext;[Ljava/lang/String;[Ljava/lang/String;Lorg/apache/http/conn/ssl/X509HostnameVerifier;)V .registers 6 .annotation runtime Ljava/lang/Deprecated; .end annotation .line 230 const-string v0, "SSL context" invoke-static {p1, v0}, Lorg/apache/http/util/Args;->notNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; move-result-object p1 check-cast p1, Ljavax/net/ssl/SSLContext; invoke-virtual {p1}, Ljavax/net/ssl/SSLContext;->getSocketFactory()Ljavax/net/ssl/SSLSocketFactory; move-result-object p1 invoke-direct {p0, p1, p2, p3, p4}, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->(Ljavax/net/ssl/SSLSocketFactory;[Ljava/lang/String;[Ljava/lang/String;Lorg/apache/http/conn/ssl/X509HostnameVerifier;)V return-void .end method .method public constructor (Ljavax/net/ssl/SSLSocketFactory;Ljavax/net/ssl/HostnameVerifier;)V .registers 4 const/4 v0, 0x0 .line 285 invoke-direct {p0, p1, v0, v0, p2}, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->(Ljavax/net/ssl/SSLSocketFactory;[Ljava/lang/String;[Ljava/lang/String;Ljavax/net/ssl/HostnameVerifier;)V return-void .end method .method public constructor (Ljavax/net/ssl/SSLSocketFactory;Lorg/apache/http/conn/ssl/X509HostnameVerifier;)V .registers 4 .annotation runtime Ljava/lang/Deprecated; .end annotation const/4 v0, 0x0 .line 242 invoke-direct {p0, p1, v0, v0, p2}, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->(Ljavax/net/ssl/SSLSocketFactory;[Ljava/lang/String;[Ljava/lang/String;Lorg/apache/http/conn/ssl/X509HostnameVerifier;)V return-void .end method .method public constructor (Ljavax/net/ssl/SSLSocketFactory;[Ljava/lang/String;[Ljava/lang/String;Ljavax/net/ssl/HostnameVerifier;)V .registers 6 .line 295 invoke-direct {p0}, Ljava/lang/Object;->()V .line 157 invoke-virtual {p0}, Ljava/lang/Object;->getClass()Ljava/lang/Class; move-result-object v0 invoke-static {v0}, Lorg/apache/commons/logging/LogFactory;->getLog(Ljava/lang/Class;)Lorg/apache/commons/logging/Log; move-result-object v0 iput-object v0, p0, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->log:Lorg/apache/commons/logging/Log; .line 296 const-string v0, "SSL socket factory" invoke-static {p1, v0}, Lorg/apache/http/util/Args;->notNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; move-result-object p1 check-cast p1, Ljavax/net/ssl/SSLSocketFactory; iput-object p1, p0, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->socketfactory:Ljavax/net/ssl/SSLSocketFactory; .line 297 iput-object p2, p0, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->supportedProtocols:[Ljava/lang/String; .line 298 iput-object p3, p0, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->supportedCipherSuites:[Ljava/lang/String; if-eqz p4, :cond_1e goto :goto_22 .line 299 :cond_1e invoke-static {}, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->getDefaultHostnameVerifier()Ljavax/net/ssl/HostnameVerifier; move-result-object p4 :goto_22 iput-object p4, p0, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->hostnameVerifier:Ljavax/net/ssl/HostnameVerifier; return-void .end method .method public constructor (Ljavax/net/ssl/SSLSocketFactory;[Ljava/lang/String;[Ljava/lang/String;Lorg/apache/http/conn/ssl/X509HostnameVerifier;)V .registers 5 .annotation runtime Ljava/lang/Deprecated; .end annotation .line 255 invoke-direct {p0, p1, p2, p3, p4}, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->(Ljavax/net/ssl/SSLSocketFactory;[Ljava/lang/String;[Ljava/lang/String;Ljavax/net/ssl/HostnameVerifier;)V return-void .end method .method public static getDefaultHostnameVerifier()Ljavax/net/ssl/HostnameVerifier; .registers 2 .line 163 new-instance v0, Lorg/apache/http/conn/ssl/DefaultHostnameVerifier; invoke-static {}, Lorg/apache/http/conn/util/PublicSuffixMatcherLoader;->getDefault()Lorg/apache/http/conn/util/PublicSuffixMatcher; move-result-object v1 invoke-direct {v0, v1}, Lorg/apache/http/conn/ssl/DefaultHostnameVerifier;->(Lorg/apache/http/conn/util/PublicSuffixMatcher;)V return-object v0 .end method .method public static getSocketFactory()Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory; .registers 3 .annotation system Ldalvik/annotation/Throws; value = { Lorg/apache/http/conn/ssl/SSLInitializationException; } .end annotation .line 174 new-instance v0, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory; invoke-static {}, Lorg/apache/http/ssl/SSLContexts;->createDefault()Ljavax/net/ssl/SSLContext; move-result-object v1 invoke-static {}, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->getDefaultHostnameVerifier()Ljavax/net/ssl/HostnameVerifier; move-result-object v2 invoke-direct {v0, v1, v2}, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->(Ljavax/net/ssl/SSLContext;Ljavax/net/ssl/HostnameVerifier;)V return-object v0 .end method .method public static getSystemSocketFactory()Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory; .registers 5 .annotation system Ldalvik/annotation/Throws; value = { Lorg/apache/http/conn/ssl/SSLInitializationException; } .end annotation .line 193 new-instance v0, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory; invoke-static {}, Ljavax/net/ssl/SSLSocketFactory;->getDefault()Ljavax/net/SocketFactory; move-result-object v1 check-cast v1, Ljavax/net/ssl/SSLSocketFactory; const-string v2, "https.protocols" invoke-static {v2}, Ljava/lang/System;->getProperty(Ljava/lang/String;)Ljava/lang/String; move-result-object v2 invoke-static {v2}, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->split(Ljava/lang/String;)[Ljava/lang/String; move-result-object v2 const-string v3, "https.cipherSuites" invoke-static {v3}, Ljava/lang/System;->getProperty(Ljava/lang/String;)Ljava/lang/String; move-result-object v3 invoke-static {v3}, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->split(Ljava/lang/String;)[Ljava/lang/String; move-result-object v3 invoke-static {}, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->getDefaultHostnameVerifier()Ljavax/net/ssl/HostnameVerifier; move-result-object v4 invoke-direct {v0, v1, v2, v3, v4}, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->(Ljavax/net/ssl/SSLSocketFactory;[Ljava/lang/String;[Ljava/lang/String;Ljavax/net/ssl/HostnameVerifier;)V return-object v0 .end method .method private static split(Ljava/lang/String;)[Ljava/lang/String; .registers 2 .line 178 invoke-static {p0}, Lorg/apache/http/util/TextUtils;->isBlank(Ljava/lang/CharSequence;)Z move-result v0 if-eqz v0, :cond_8 const/4 p0, 0x0 return-object p0 .line 181 :cond_8 const-string v0, " *, *" invoke-virtual {p0, v0}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String; move-result-object p0 return-object p0 .end method .method private verifyHostname(Ljavax/net/ssl/SSLSocket;Ljava/lang/String;)V .registers 11 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation const-string v0, " peer principal: " const-string v1, " negotiated cipher suite: " const-string v2, " negotiated protocol: " .line 403 :try_start_6 invoke-virtual {p1}, Ljavax/net/ssl/SSLSocket;->getSession()Ljavax/net/ssl/SSLSession; move-result-object v3 if-nez v3, :cond_20 .line 408 invoke-virtual {p1}, Ljavax/net/ssl/SSLSocket;->getInputStream()Ljava/io/InputStream; move-result-object v3 .line 409 invoke-virtual {v3}, Ljava/io/InputStream;->available()I .line 412 invoke-virtual {p1}, Ljavax/net/ssl/SSLSocket;->getSession()Ljavax/net/ssl/SSLSession; move-result-object v3 if-nez v3, :cond_20 .line 416 invoke-virtual {p1}, Ljavax/net/ssl/SSLSocket;->startHandshake()V .line 417 invoke-virtual {p1}, Ljavax/net/ssl/SSLSocket;->getSession()Ljavax/net/ssl/SSLSession; move-result-object v3 :cond_20 if-eqz v3, :cond_165 .line 424 iget-object v4, p0, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->log:Lorg/apache/commons/logging/Log; invoke-interface {v4}, Lorg/apache/commons/logging/Log;->isDebugEnabled()Z move-result v4 const/4 v5, 0x0 if-eqz v4, :cond_127 .line 425 iget-object v4, p0, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->log:Lorg/apache/commons/logging/Log; const-string v6, "Secure session established" invoke-interface {v4, v6}, Lorg/apache/commons/logging/Log;->debug(Ljava/lang/Object;)V .line 426 iget-object v4, p0, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->log:Lorg/apache/commons/logging/Log; new-instance v6, Ljava/lang/StringBuilder; invoke-direct {v6, v2}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-interface {v3}, Ljavax/net/ssl/SSLSession;->getProtocol()Ljava/lang/String; move-result-object v2 invoke-virtual {v6, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v2 invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v2 invoke-interface {v4, v2}, Lorg/apache/commons/logging/Log;->debug(Ljava/lang/Object;)V .line 427 iget-object v2, p0, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->log:Lorg/apache/commons/logging/Log; new-instance v4, Ljava/lang/StringBuilder; invoke-direct {v4, v1}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-interface {v3}, Ljavax/net/ssl/SSLSession;->getCipherSuite()Ljava/lang/String; move-result-object v1 invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v1 invoke-interface {v2, v1}, Lorg/apache/commons/logging/Log;->debug(Ljava/lang/Object;)V :try_end_5e .catch Ljava/io/IOException; {:try_start_6 .. :try_end_5e} :catch_16d .line 431 :try_start_5e invoke-interface {v3}, Ljavax/net/ssl/SSLSession;->getPeerCertificates()[Ljava/security/cert/Certificate; move-result-object v1 .line 432 aget-object v1, v1, v5 check-cast v1, Ljava/security/cert/X509Certificate; .line 433 invoke-virtual {v1}, Ljava/security/cert/X509Certificate;->getSubjectX500Principal()Ljavax/security/auth/x500/X500Principal; move-result-object v2 .line 435 iget-object v4, p0, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->log:Lorg/apache/commons/logging/Log; new-instance v6, Ljava/lang/StringBuilder; invoke-direct {v6, v0}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {v2}, Ljavax/security/auth/x500/X500Principal;->toString()Ljava/lang/String; move-result-object v0 invoke-virtual {v6, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 invoke-interface {v4, v0}, Lorg/apache/commons/logging/Log;->debug(Ljava/lang/Object;)V .line 436 invoke-virtual {v1}, Ljava/security/cert/X509Certificate;->getSubjectAlternativeNames()Ljava/util/Collection; move-result-object v0 const/4 v2, 0x1 if-eqz v0, :cond_c4 .line 438 new-instance v4, Ljava/util/ArrayList; invoke-direct {v4}, Ljava/util/ArrayList;->()V .line 439 invoke-interface {v0}, Ljava/util/Collection;->iterator()Ljava/util/Iterator; move-result-object v0 :cond_90 :goto_90 invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z move-result v6 if-eqz v6, :cond_ac invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v6 check-cast v6, Ljava/util/List; .line 440 invoke-interface {v6}, Ljava/util/List;->isEmpty()Z move-result v7 if-nez v7, :cond_90 .line 441 invoke-interface {v6, v2}, Ljava/util/List;->get(I)Ljava/lang/Object; move-result-object v6 check-cast v6, Ljava/lang/String; invoke-interface {v4, v6}, Ljava/util/List;->add(Ljava/lang/Object;)Z goto :goto_90 .line 444 :cond_ac iget-object v0, p0, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->log:Lorg/apache/commons/logging/Log; new-instance v6, Ljava/lang/StringBuilder; invoke-direct {v6}, Ljava/lang/StringBuilder;->()V const-string v7, " peer alternative names: " invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v6 invoke-virtual {v6, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; move-result-object v4 invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v4 invoke-interface {v0, v4}, Lorg/apache/commons/logging/Log;->debug(Ljava/lang/Object;)V .line 447 :cond_c4 invoke-virtual {v1}, Ljava/security/cert/X509Certificate;->getIssuerX500Principal()Ljavax/security/auth/x500/X500Principal; move-result-object v0 .line 448 iget-object v4, p0, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->log:Lorg/apache/commons/logging/Log; new-instance v6, Ljava/lang/StringBuilder; invoke-direct {v6}, Ljava/lang/StringBuilder;->()V const-string v7, " issuer principal: " invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v6 invoke-virtual {v0}, Ljavax/security/auth/x500/X500Principal;->toString()Ljava/lang/String; move-result-object v0 invoke-virtual {v6, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 invoke-interface {v4, v0}, Lorg/apache/commons/logging/Log;->debug(Ljava/lang/Object;)V .line 449 invoke-virtual {v1}, Ljava/security/cert/X509Certificate;->getIssuerAlternativeNames()Ljava/util/Collection; move-result-object v0 if-eqz v0, :cond_127 .line 451 new-instance v1, Ljava/util/ArrayList; invoke-direct {v1}, Ljava/util/ArrayList;->()V .line 452 invoke-interface {v0}, Ljava/util/Collection;->iterator()Ljava/util/Iterator; move-result-object v0 :cond_f3 :goto_f3 invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z move-result v4 if-eqz v4, :cond_10f invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v4 check-cast v4, Ljava/util/List; .line 453 invoke-interface {v4}, Ljava/util/List;->isEmpty()Z move-result v6 if-nez v6, :cond_f3 .line 454 invoke-interface {v4, v2}, Ljava/util/List;->get(I)Ljava/lang/Object; move-result-object v4 check-cast v4, Ljava/lang/String; invoke-interface {v1, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z goto :goto_f3 .line 457 :cond_10f iget-object v0, p0, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->log:Lorg/apache/commons/logging/Log; new-instance v2, Ljava/lang/StringBuilder; invoke-direct {v2}, Ljava/lang/StringBuilder;->()V const-string v4, " issuer alternative names: " invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v2 invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v1 invoke-interface {v0, v1}, Lorg/apache/commons/logging/Log;->debug(Ljava/lang/Object;)V :try_end_127 .catch Ljava/lang/Exception; {:try_start_5e .. :try_end_127} :catch_127 .catch Ljava/io/IOException; {:try_start_5e .. :try_end_127} :catch_16d .line 463 :catch_127 :cond_127 :try_start_127 iget-object v0, p0, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->hostnameVerifier:Ljavax/net/ssl/HostnameVerifier; invoke-interface {v0, p2, v3}, Ljavax/net/ssl/HostnameVerifier;->verify(Ljava/lang/String;Ljavax/net/ssl/SSLSession;)Z move-result v0 if-eqz v0, :cond_130 return-void .line 464 :cond_130 invoke-interface {v3}, Ljavax/net/ssl/SSLSession;->getPeerCertificates()[Ljava/security/cert/Certificate; move-result-object v0 .line 465 aget-object v0, v0, v5 check-cast v0, Ljava/security/cert/X509Certificate; .line 466 invoke-static {v0}, Lorg/apache/http/conn/ssl/DefaultHostnameVerifier;->getSubjectAltNames(Ljava/security/cert/X509Certificate;)Ljava/util/List; move-result-object v0 .line 467 new-instance v1, Ljavax/net/ssl/SSLPeerUnverifiedException; new-instance v2, Ljava/lang/StringBuilder; invoke-direct {v2}, Ljava/lang/StringBuilder;->()V const-string v3, "Certificate for <" invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v2 invoke-virtual {v2, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p2 const-string v2, "> doesn\'t match any " invoke-virtual {p2, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p2 const-string v2, "of the subject alternative names: " invoke-virtual {p2, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p2 invoke-virtual {p2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; move-result-object p2 invoke-virtual {p2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p2 invoke-direct {v1, p2}, Ljavax/net/ssl/SSLPeerUnverifiedException;->(Ljava/lang/String;)V throw v1 .line 421 :cond_165 new-instance p2, Ljavax/net/ssl/SSLHandshakeException; const-string v0, "SSL session not available" invoke-direct {p2, v0}, Ljavax/net/ssl/SSLHandshakeException;->(Ljava/lang/String;)V throw p2 :try_end_16d .catch Ljava/io/IOException; {:try_start_127 .. :try_end_16d} :catch_16d :catch_16d move-exception p2 .line 473 :try_start_16e invoke-virtual {p1}, Ljavax/net/ssl/SSLSocket;->close()V :try_end_171 .catch Ljava/lang/Exception; {:try_start_16e .. :try_end_171} :catch_171 .line 474 :catch_171 throw p2 .end method # virtual methods .method public connectSocket(ILjava/net/Socket;Lorg/apache/http/HttpHost;Ljava/net/InetSocketAddress;Ljava/net/InetSocketAddress;Lorg/apache/http/protocol/HttpContext;)Ljava/net/Socket; .registers 9 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation const-string v0, "Connecting socket to " .line 326 const-string v1, "HTTP host" invoke-static {p3, v1}, Lorg/apache/http/util/Args;->notNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; .line 327 const-string v1, "Remote address" invoke-static {p4, v1}, Lorg/apache/http/util/Args;->notNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; if-eqz p2, :cond_f goto :goto_13 .line 328 :cond_f invoke-virtual {p0, p6}, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->createSocket(Lorg/apache/http/protocol/HttpContext;)Ljava/net/Socket; move-result-object p2 :goto_13 if-eqz p5, :cond_18 .line 330 invoke-virtual {p2, p5}, Ljava/net/Socket;->bind(Ljava/net/SocketAddress;)V :cond_18 if-lez p1, :cond_23 .line 333 :try_start_1a invoke-virtual {p2}, Ljava/net/Socket;->getSoTimeout()I move-result p5 if-nez p5, :cond_23 .line 334 invoke-virtual {p2, p1}, Ljava/net/Socket;->setSoTimeout(I)V .line 336 :cond_23 iget-object p5, p0, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->log:Lorg/apache/commons/logging/Log; invoke-interface {p5}, Lorg/apache/commons/logging/Log;->isDebugEnabled()Z move-result p5 if-eqz p5, :cond_47 .line 337 iget-object p5, p0, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->log:Lorg/apache/commons/logging/Log; new-instance v1, Ljava/lang/StringBuilder; invoke-direct {v1, v0}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {v1, p4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; move-result-object v0 const-string v1, " with timeout " invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 invoke-interface {p5, v0}, Lorg/apache/commons/logging/Log;->debug(Ljava/lang/Object;)V .line 339 :cond_47 invoke-virtual {p2, p4, p1}, Ljava/net/Socket;->connect(Ljava/net/SocketAddress;I)V :try_end_4a .catch Ljava/io/IOException; {:try_start_1a .. :try_end_4a} :catch_70 .line 348 instance-of p1, p2, Ljavax/net/ssl/SSLSocket; if-eqz p1, :cond_63 .line 349 move-object p1, p2 check-cast p1, Ljavax/net/ssl/SSLSocket; .line 350 iget-object p4, p0, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->log:Lorg/apache/commons/logging/Log; const-string p5, "Starting handshake" invoke-interface {p4, p5}, Lorg/apache/commons/logging/Log;->debug(Ljava/lang/Object;)V .line 351 invoke-virtual {p1}, Ljavax/net/ssl/SSLSocket;->startHandshake()V .line 352 invoke-virtual {p3}, Lorg/apache/http/HttpHost;->getHostName()Ljava/lang/String; move-result-object p3 invoke-direct {p0, p1, p3}, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->verifyHostname(Ljavax/net/ssl/SSLSocket;Ljava/lang/String;)V return-object p2 .line 355 :cond_63 invoke-virtual {p3}, Lorg/apache/http/HttpHost;->getHostName()Ljava/lang/String; move-result-object p1 invoke-virtual {p4}, Ljava/net/InetSocketAddress;->getPort()I move-result p3 invoke-virtual {p0, p2, p1, p3, p6}, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->createLayeredSocket(Ljava/net/Socket;Ljava/lang/String;ILorg/apache/http/protocol/HttpContext;)Ljava/net/Socket; move-result-object p1 return-object p1 :catch_70 move-exception p1 .line 342 :try_start_71 invoke-virtual {p2}, Ljava/net/Socket;->close()V :try_end_74 .catch Ljava/io/IOException; {:try_start_71 .. :try_end_74} :catch_74 .line 345 :catch_74 throw p1 .end method .method public createLayeredSocket(Ljava/net/Socket;Ljava/lang/String;ILorg/apache/http/protocol/HttpContext;)Ljava/net/Socket; .registers 9 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 365 iget-object p4, p0, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->socketfactory:Ljavax/net/ssl/SSLSocketFactory; const/4 v0, 0x1 invoke-virtual {p4, p1, p2, p3, v0}, Ljavax/net/ssl/SSLSocketFactory;->createSocket(Ljava/net/Socket;Ljava/lang/String;IZ)Ljava/net/Socket; move-result-object p1 check-cast p1, Ljavax/net/ssl/SSLSocket; .line 370 iget-object p3, p0, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->supportedProtocols:[Ljava/lang/String; if-eqz p3, :cond_11 .line 371 invoke-virtual {p1, p3}, Ljavax/net/ssl/SSLSocket;->setEnabledProtocols([Ljava/lang/String;)V goto :goto_44 .line 374 :cond_11 invoke-virtual {p1}, Ljavax/net/ssl/SSLSocket;->getEnabledProtocols()[Ljava/lang/String; move-result-object p3 .line 375 new-instance p4, Ljava/util/ArrayList; array-length v0, p3 invoke-direct {p4, v0}, Ljava/util/ArrayList;->(I)V .line 376 array-length v0, p3 const/4 v1, 0x0 :goto_1d if-ge v1, v0, :cond_2f aget-object v2, p3, v1 .line 377 const-string v3, "SSL" invoke-virtual {v2, v3}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z move-result v3 if-nez v3, :cond_2c .line 378 invoke-interface {p4, v2}, Ljava/util/List;->add(Ljava/lang/Object;)Z :cond_2c add-int/lit8 v1, v1, 0x1 goto :goto_1d .line 381 :cond_2f invoke-interface {p4}, Ljava/util/List;->isEmpty()Z move-result p3 if-nez p3, :cond_44 .line 382 invoke-interface {p4}, Ljava/util/List;->size()I move-result p3 new-array p3, p3, [Ljava/lang/String; invoke-interface {p4, p3}, Ljava/util/List;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; move-result-object p3 check-cast p3, [Ljava/lang/String; invoke-virtual {p1, p3}, Ljavax/net/ssl/SSLSocket;->setEnabledProtocols([Ljava/lang/String;)V .line 385 :cond_44 :goto_44 iget-object p3, p0, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->supportedCipherSuites:[Ljava/lang/String; if-eqz p3, :cond_4b .line 386 invoke-virtual {p1, p3}, Ljavax/net/ssl/SSLSocket;->setEnabledCipherSuites([Ljava/lang/String;)V .line 389 :cond_4b iget-object p3, p0, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->log:Lorg/apache/commons/logging/Log; invoke-interface {p3}, Lorg/apache/commons/logging/Log;->isDebugEnabled()Z move-result p3 if-eqz p3, :cond_8b .line 390 iget-object p3, p0, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->log:Lorg/apache/commons/logging/Log; new-instance p4, Ljava/lang/StringBuilder; const-string v0, "Enabled protocols: " invoke-direct {p4, v0}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {p1}, Ljavax/net/ssl/SSLSocket;->getEnabledProtocols()[Ljava/lang/String; move-result-object v0 invoke-static {v0}, Ljava/util/Arrays;->asList([Ljava/lang/Object;)Ljava/util/List; move-result-object v0 invoke-virtual {p4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; move-result-object p4 invoke-virtual {p4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p4 invoke-interface {p3, p4}, Lorg/apache/commons/logging/Log;->debug(Ljava/lang/Object;)V .line 391 iget-object p3, p0, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->log:Lorg/apache/commons/logging/Log; new-instance p4, Ljava/lang/StringBuilder; const-string v0, "Enabled cipher suites:" invoke-direct {p4, v0}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {p1}, Ljavax/net/ssl/SSLSocket;->getEnabledCipherSuites()[Ljava/lang/String; move-result-object v0 invoke-static {v0}, Ljava/util/Arrays;->asList([Ljava/lang/Object;)Ljava/util/List; move-result-object v0 invoke-virtual {p4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; move-result-object p4 invoke-virtual {p4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p4 invoke-interface {p3, p4}, Lorg/apache/commons/logging/Log;->debug(Ljava/lang/Object;)V .line 394 :cond_8b invoke-virtual {p0, p1}, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->prepareSocket(Ljavax/net/ssl/SSLSocket;)V .line 395 iget-object p3, p0, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->log:Lorg/apache/commons/logging/Log; const-string p4, "Starting handshake" invoke-interface {p3, p4}, Lorg/apache/commons/logging/Log;->debug(Ljava/lang/Object;)V .line 396 invoke-virtual {p1}, Ljavax/net/ssl/SSLSocket;->startHandshake()V .line 397 invoke-direct {p0, p1, p2}, Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;->verifyHostname(Ljavax/net/ssl/SSLSocket;Ljava/lang/String;)V return-object p1 .end method .method public createSocket(Lorg/apache/http/protocol/HttpContext;)Ljava/net/Socket; .registers 2 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 315 invoke-static {}, Ljavax/net/SocketFactory;->getDefault()Ljavax/net/SocketFactory; move-result-object p1 invoke-virtual {p1}, Ljavax/net/SocketFactory;->createSocket()Ljava/net/Socket; move-result-object p1 return-object p1 .end method .method protected prepareSocket(Ljavax/net/ssl/SSLSocket;)V .registers 2 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation return-void .end method