-
-
Save anilatx/e6fd8d166baaecb5e1a4efbf0720aecb to your computer and use it in GitHub Desktop.
okhttp3 pinning
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
.class public final Lokhttp3/CertificatePinner$Builder; | |
.super Ljava/lang/Object; | |
.source "SourceFile" | |
# annotations | |
.annotation system Ldalvik/annotation/EnclosingClass; | |
value = Lokhttp3/CertificatePinner; | |
.end annotation | |
.annotation system Ldalvik/annotation/InnerClass; | |
accessFlags = 0x19 | |
name = "Builder" | |
.end annotation | |
# instance fields | |
.field private final a:Ljava/util/List; | |
.annotation system Ldalvik/annotation/Signature; | |
value = { | |
"Ljava/util/List<", | |
"Lokhttp3/CertificatePinner$Pin;", | |
">;" | |
} | |
.end annotation | |
.end field | |
# direct methods | |
.method public constructor <init>()V | |
.locals 1 | |
.line 1 | |
invoke-direct {p0}, Ljava/lang/Object;-><init>()V | |
.line 2 | |
new-instance v0, Ljava/util/ArrayList; | |
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V | |
iput-object v0, p0, Lokhttp3/CertificatePinner$Builder;->a:Ljava/util/List; | |
return-void | |
.end method | |
# virtual methods | |
.method public varargs add(Ljava/lang/String;[Ljava/lang/String;)Lokhttp3/CertificatePinner$Builder; | |
.locals 5 | |
if-eqz p1, :cond_1 | |
.line 1 | |
array-length v0, p2 | |
const/4 v1, 0x0 | |
:goto_0 | |
if-ge v1, v0, :cond_0 | |
aget-object v2, p2, v1 | |
.line 2 | |
iget-object v3, p0, Lokhttp3/CertificatePinner$Builder;->a:Ljava/util/List; | |
new-instance v4, Lokhttp3/CertificatePinner$Pin; | |
invoke-direct {v4, p1, v2}, Lokhttp3/CertificatePinner$Pin;-><init>(Ljava/lang/String;Ljava/lang/String;)V | |
invoke-interface {v3, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z | |
add-int/lit8 v1, v1, 0x1 | |
goto :goto_0 | |
:cond_0 | |
return-object p0 | |
.line 3 | |
:cond_1 | |
new-instance p1, Ljava/lang/NullPointerException; | |
const-string p2, "pattern == null" | |
invoke-direct {p1, p2}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V | |
throw p1 | |
.end method | |
.method public build()Lokhttp3/CertificatePinner; | |
.locals 3 | |
.line 1 | |
new-instance v0, Lokhttp3/CertificatePinner; | |
new-instance v1, Ljava/util/LinkedHashSet; | |
iget-object v2, p0, Lokhttp3/CertificatePinner$Builder;->a:Ljava/util/List; | |
invoke-direct {v1, v2}, Ljava/util/LinkedHashSet;-><init>(Ljava/util/Collection;)V | |
const/4 v2, 0x0 | |
invoke-direct {v0, v1, v2}, Lokhttp3/CertificatePinner;-><init>(Ljava/util/Set;Lokhttp3/internal/tls/CertificateChainCleaner;)V | |
return-object v0 | |
.end method |
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
.class final Lokhttp3/CertificatePinner$Pin; | |
.super Ljava/lang/Object; | |
.source "SourceFile" | |
# annotations | |
.annotation system Ldalvik/annotation/EnclosingClass; | |
value = Lokhttp3/CertificatePinner; | |
.end annotation | |
.annotation system Ldalvik/annotation/InnerClass; | |
accessFlags = 0x18 | |
name = "Pin" | |
.end annotation | |
# instance fields | |
.field final a:Ljava/lang/String; | |
.field final b:Ljava/lang/String; | |
.field final c:Ljava/lang/String; | |
.field final d:Lokio/ByteString; | |
# direct methods | |
.method constructor <init>(Ljava/lang/String;Ljava/lang/String;)V | |
.locals 2 | |
.line 1 | |
invoke-direct {p0}, Ljava/lang/Object;-><init>()V | |
.line 2 | |
iput-object p1, p0, Lokhttp3/CertificatePinner$Pin;->a:Ljava/lang/String; | |
const-string v0, "*." | |
.line 3 | |
invoke-virtual {p1, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z | |
move-result v0 | |
const-string v1, "http://" | |
if-eqz v0, :cond_0 | |
.line 4 | |
new-instance v0, Ljava/lang/StringBuilder; | |
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V | |
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
const/4 v1, 0x2 | |
invoke-virtual {p1, v1}, Ljava/lang/String;->substring(I)Ljava/lang/String; | |
move-result-object p1 | |
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; | |
move-result-object p1 | |
invoke-static {p1}, Lokhttp3/HttpUrl;->get(Ljava/lang/String;)Lokhttp3/HttpUrl; | |
move-result-object p1 | |
invoke-virtual {p1}, Lokhttp3/HttpUrl;->host()Ljava/lang/String; | |
move-result-object p1 | |
goto :goto_0 | |
.line 5 | |
:cond_0 | |
new-instance v0, Ljava/lang/StringBuilder; | |
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V | |
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; | |
move-result-object p1 | |
invoke-static {p1}, Lokhttp3/HttpUrl;->get(Ljava/lang/String;)Lokhttp3/HttpUrl; | |
move-result-object p1 | |
invoke-virtual {p1}, Lokhttp3/HttpUrl;->host()Ljava/lang/String; | |
move-result-object p1 | |
:goto_0 | |
iput-object p1, p0, Lokhttp3/CertificatePinner$Pin;->b:Ljava/lang/String; | |
const-string p1, "sha1/" | |
.line 6 | |
invoke-virtual {p2, p1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z | |
move-result v0 | |
if-eqz v0, :cond_1 | |
.line 7 | |
iput-object p1, p0, Lokhttp3/CertificatePinner$Pin;->c:Ljava/lang/String; | |
const/4 p1, 0x5 | |
.line 8 | |
invoke-virtual {p2, p1}, Ljava/lang/String;->substring(I)Ljava/lang/String; | |
move-result-object p1 | |
invoke-static {p1}, Lokio/ByteString;->decodeBase64(Ljava/lang/String;)Lokio/ByteString; | |
move-result-object p1 | |
iput-object p1, p0, Lokhttp3/CertificatePinner$Pin;->d:Lokio/ByteString; | |
goto :goto_1 | |
:cond_1 | |
const-string p1, "sha256/" | |
.line 9 | |
invoke-virtual {p2, p1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z | |
move-result v0 | |
if-eqz v0, :cond_3 | |
.line 10 | |
iput-object p1, p0, Lokhttp3/CertificatePinner$Pin;->c:Ljava/lang/String; | |
const/4 p1, 0x7 | |
.line 11 | |
invoke-virtual {p2, p1}, Ljava/lang/String;->substring(I)Ljava/lang/String; | |
move-result-object p1 | |
invoke-static {p1}, Lokio/ByteString;->decodeBase64(Ljava/lang/String;)Lokio/ByteString; | |
move-result-object p1 | |
iput-object p1, p0, Lokhttp3/CertificatePinner$Pin;->d:Lokio/ByteString; | |
.line 12 | |
:goto_1 | |
iget-object p1, p0, Lokhttp3/CertificatePinner$Pin;->d:Lokio/ByteString; | |
if-eqz p1, :cond_2 | |
return-void | |
.line 13 | |
:cond_2 | |
new-instance p1, Ljava/lang/IllegalArgumentException; | |
new-instance v0, Ljava/lang/StringBuilder; | |
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V | |
const-string v1, "pins must be base64: " | |
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; | |
move-result-object p2 | |
invoke-direct {p1, p2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V | |
throw p1 | |
.line 14 | |
:cond_3 | |
new-instance p1, Ljava/lang/IllegalArgumentException; | |
new-instance v0, Ljava/lang/StringBuilder; | |
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V | |
const-string v1, "pins must start with \'sha256/\' or \'sha1/\': " | |
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; | |
move-result-object p2 | |
invoke-direct {p1, p2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V | |
throw p1 | |
.end method | |
# virtual methods | |
.method a(Ljava/lang/String;)Z | |
.locals 10 | |
.line 1 | |
iget-object v0, p0, Lokhttp3/CertificatePinner$Pin;->a:Ljava/lang/String; | |
const-string v1, "*." | |
invoke-virtual {v0, v1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z | |
move-result v0 | |
if-eqz v0, :cond_1 | |
const/16 v0, 0x2e | |
.line 2 | |
invoke-virtual {p1, v0}, Ljava/lang/String;->indexOf(I)I | |
move-result v0 | |
.line 3 | |
invoke-virtual {p1}, Ljava/lang/String;->length()I | |
move-result v1 | |
sub-int/2addr v1, v0 | |
const/4 v2, 0x1 | |
sub-int/2addr v1, v2 | |
iget-object v3, p0, Lokhttp3/CertificatePinner$Pin;->b:Ljava/lang/String; | |
invoke-virtual {v3}, Ljava/lang/String;->length()I | |
move-result v3 | |
if-ne v1, v3, :cond_0 | |
const/4 v5, 0x0 | |
add-int/lit8 v6, v0, 0x1 | |
iget-object v7, p0, Lokhttp3/CertificatePinner$Pin;->b:Ljava/lang/String; | |
const/4 v8, 0x0 | |
.line 4 | |
invoke-virtual {v7}, Ljava/lang/String;->length()I | |
move-result v9 | |
move-object v4, p1 | |
.line 5 | |
invoke-virtual/range {v4 .. v9}, Ljava/lang/String;->regionMatches(ZILjava/lang/String;II)Z | |
move-result p1 | |
if-eqz p1, :cond_0 | |
goto :goto_0 | |
:cond_0 | |
const/4 v2, 0x0 | |
:goto_0 | |
return v2 | |
.line 6 | |
:cond_1 | |
iget-object v0, p0, Lokhttp3/CertificatePinner$Pin;->b:Ljava/lang/String; | |
invoke-virtual {p1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z | |
move-result p1 | |
return p1 | |
.end method | |
.method public equals(Ljava/lang/Object;)Z | |
.locals 2 | |
.line 1 | |
instance-of v0, p1, Lokhttp3/CertificatePinner$Pin; | |
if-eqz v0, :cond_0 | |
iget-object v0, p0, Lokhttp3/CertificatePinner$Pin;->a:Ljava/lang/String; | |
check-cast p1, Lokhttp3/CertificatePinner$Pin; | |
iget-object v1, p1, Lokhttp3/CertificatePinner$Pin;->a:Ljava/lang/String; | |
.line 2 | |
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z | |
move-result v0 | |
if-eqz v0, :cond_0 | |
iget-object v0, p0, Lokhttp3/CertificatePinner$Pin;->c:Ljava/lang/String; | |
iget-object v1, p1, Lokhttp3/CertificatePinner$Pin;->c:Ljava/lang/String; | |
.line 3 | |
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z | |
move-result v0 | |
if-eqz v0, :cond_0 | |
iget-object v0, p0, Lokhttp3/CertificatePinner$Pin;->d:Lokio/ByteString; | |
iget-object p1, p1, Lokhttp3/CertificatePinner$Pin;->d:Lokio/ByteString; | |
.line 4 | |
invoke-virtual {v0, p1}, Lokio/ByteString;->equals(Ljava/lang/Object;)Z | |
move-result p1 | |
if-eqz p1, :cond_0 | |
const/4 p1, 0x1 | |
goto :goto_0 | |
:cond_0 | |
const/4 p1, 0x0 | |
:goto_0 | |
return p1 | |
.end method | |
.method public hashCode()I | |
.locals 2 | |
.line 1 | |
iget-object v0, p0, Lokhttp3/CertificatePinner$Pin;->a:Ljava/lang/String; | |
invoke-virtual {v0}, Ljava/lang/String;->hashCode()I | |
move-result v0 | |
const/16 v1, 0x20f | |
add-int/2addr v1, v0 | |
mul-int/lit8 v1, v1, 0x1f | |
.line 2 | |
iget-object v0, p0, Lokhttp3/CertificatePinner$Pin;->c:Ljava/lang/String; | |
invoke-virtual {v0}, Ljava/lang/String;->hashCode()I | |
move-result v0 | |
add-int/2addr v1, v0 | |
mul-int/lit8 v1, v1, 0x1f | |
.line 3 | |
iget-object v0, p0, Lokhttp3/CertificatePinner$Pin;->d:Lokio/ByteString; | |
invoke-virtual {v0}, Lokio/ByteString;->hashCode()I | |
move-result v0 | |
add-int/2addr v1, v0 | |
return v1 | |
.end method | |
.method public toString()Ljava/lang/String; | |
.locals 2 | |
.line 1 | |
new-instance v0, Ljava/lang/StringBuilder; | |
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V | |
iget-object v1, p0, Lokhttp3/CertificatePinner$Pin;->c:Ljava/lang/String; | |
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
iget-object v1, p0, Lokhttp3/CertificatePinner$Pin;->d:Lokio/ByteString; | |
invoke-virtual {v1}, Lokio/ByteString;->base64()Ljava/lang/String; | |
move-result-object v1 | |
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; | |
move-result-object v0 | |
return-object v0 | |
.end method |
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
.class public final Lokhttp3/CertificatePinner; | |
.super Ljava/lang/Object; | |
.source "SourceFile" | |
# annotations | |
.annotation system Ldalvik/annotation/MemberClasses; | |
value = { | |
Lokhttp3/CertificatePinner$Builder;, | |
Lokhttp3/CertificatePinner$Pin; | |
} | |
.end annotation | |
# static fields | |
.field public static final DEFAULT:Lokhttp3/CertificatePinner; | |
# instance fields | |
.field private final a:Ljava/util/Set; | |
.annotation system Ldalvik/annotation/Signature; | |
value = { | |
"Ljava/util/Set<", | |
"Lokhttp3/CertificatePinner$Pin;", | |
">;" | |
} | |
.end annotation | |
.end field | |
.field private final b:Lokhttp3/internal/tls/CertificateChainCleaner; | |
.annotation runtime Ljavax/annotation/Nullable; | |
.end annotation | |
.end field | |
# direct methods | |
.method static constructor <clinit>()V | |
.locals 1 | |
.line 1 | |
new-instance v0, Lokhttp3/CertificatePinner$Builder; | |
invoke-direct {v0}, Lokhttp3/CertificatePinner$Builder;-><init>()V | |
invoke-virtual {v0}, Lokhttp3/CertificatePinner$Builder;->build()Lokhttp3/CertificatePinner; | |
move-result-object v0 | |
sput-object v0, Lokhttp3/CertificatePinner;->DEFAULT:Lokhttp3/CertificatePinner; | |
return-void | |
.end method | |
.method constructor <init>(Ljava/util/Set;Lokhttp3/internal/tls/CertificateChainCleaner;)V | |
.locals 0 | |
.param p2 # Lokhttp3/internal/tls/CertificateChainCleaner; | |
.annotation runtime Ljavax/annotation/Nullable; | |
.end annotation | |
.end param | |
.annotation system Ldalvik/annotation/Signature; | |
value = { | |
"(", | |
"Ljava/util/Set<", | |
"Lokhttp3/CertificatePinner$Pin;", | |
">;", | |
"Lokhttp3/internal/tls/CertificateChainCleaner;", | |
")V" | |
} | |
.end annotation | |
.line 1 | |
invoke-direct {p0}, Ljava/lang/Object;-><init>()V | |
.line 2 | |
iput-object p1, p0, Lokhttp3/CertificatePinner;->a:Ljava/util/Set; | |
.line 3 | |
iput-object p2, p0, Lokhttp3/CertificatePinner;->b:Lokhttp3/internal/tls/CertificateChainCleaner; | |
return-void | |
.end method | |
.method static b(Ljava/security/cert/X509Certificate;)Lokio/ByteString; | |
.locals 0 | |
.line 1 | |
invoke-virtual {p0}, Ljava/security/cert/X509Certificate;->getPublicKey()Ljava/security/PublicKey; | |
move-result-object p0 | |
invoke-interface {p0}, Ljava/security/PublicKey;->getEncoded()[B | |
move-result-object p0 | |
invoke-static {p0}, Lokio/ByteString;->of([B)Lokio/ByteString; | |
move-result-object p0 | |
invoke-virtual {p0}, Lokio/ByteString;->sha1()Lokio/ByteString; | |
move-result-object p0 | |
return-object p0 | |
.end method | |
.method static c(Ljava/security/cert/X509Certificate;)Lokio/ByteString; | |
.locals 0 | |
.line 1 | |
invoke-virtual {p0}, Ljava/security/cert/X509Certificate;->getPublicKey()Ljava/security/PublicKey; | |
move-result-object p0 | |
invoke-interface {p0}, Ljava/security/PublicKey;->getEncoded()[B | |
move-result-object p0 | |
invoke-static {p0}, Lokio/ByteString;->of([B)Lokio/ByteString; | |
move-result-object p0 | |
invoke-virtual {p0}, Lokio/ByteString;->sha256()Lokio/ByteString; | |
move-result-object p0 | |
return-object p0 | |
.end method | |
.method public static pin(Ljava/security/cert/Certificate;)Ljava/lang/String; | |
.locals 2 | |
.line 1 | |
instance-of v0, p0, Ljava/security/cert/X509Certificate; | |
if-eqz v0, :cond_0 | |
.line 2 | |
new-instance v0, Ljava/lang/StringBuilder; | |
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V | |
const-string v1, "sha256/" | |
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
check-cast p0, Ljava/security/cert/X509Certificate; | |
invoke-static {p0}, Lokhttp3/CertificatePinner;->c(Ljava/security/cert/X509Certificate;)Lokio/ByteString; | |
move-result-object p0 | |
invoke-virtual {p0}, Lokio/ByteString;->base64()Ljava/lang/String; | |
move-result-object p0 | |
invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; | |
move-result-object p0 | |
return-object p0 | |
.line 3 | |
:cond_0 | |
new-instance p0, Ljava/lang/IllegalArgumentException; | |
const-string v0, "Certificate pinning requires X509 certificates" | |
invoke-direct {p0, v0}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V | |
throw p0 | |
.end method | |
# virtual methods | |
.method a(Ljava/lang/String;)Ljava/util/List; | |
.locals 4 | |
.annotation system Ldalvik/annotation/Signature; | |
value = { | |
"(", | |
"Ljava/lang/String;", | |
")", | |
"Ljava/util/List<", | |
"Lokhttp3/CertificatePinner$Pin;", | |
">;" | |
} | |
.end annotation | |
.line 1 | |
invoke-static {}, Ljava/util/Collections;->emptyList()Ljava/util/List; | |
move-result-object v0 | |
.line 2 | |
iget-object v1, p0, Lokhttp3/CertificatePinner;->a:Ljava/util/Set; | |
invoke-interface {v1}, Ljava/util/Set;->iterator()Ljava/util/Iterator; | |
move-result-object v1 | |
:cond_0 | |
:goto_0 | |
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z | |
move-result v2 | |
if-eqz v2, :cond_2 | |
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object; | |
move-result-object v2 | |
check-cast v2, Lokhttp3/CertificatePinner$Pin; | |
.line 3 | |
invoke-virtual {v2, p1}, Lokhttp3/CertificatePinner$Pin;->a(Ljava/lang/String;)Z | |
move-result v3 | |
if-eqz v3, :cond_0 | |
.line 4 | |
invoke-interface {v0}, Ljava/util/List;->isEmpty()Z | |
move-result v3 | |
if-eqz v3, :cond_1 | |
new-instance v0, Ljava/util/ArrayList; | |
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V | |
.line 5 | |
:cond_1 | |
invoke-interface {v0, v2}, Ljava/util/List;->add(Ljava/lang/Object;)Z | |
goto :goto_0 | |
:cond_2 | |
return-object v0 | |
.end method | |
.method public check(Ljava/lang/String;Ljava/util/List;)V | |
.locals 12 | |
.annotation system Ldalvik/annotation/Signature; | |
value = { | |
"(", | |
"Ljava/lang/String;", | |
"Ljava/util/List<", | |
"Ljava/security/cert/Certificate;", | |
">;)V" | |
} | |
.end annotation | |
.annotation system Ldalvik/annotation/Throws; | |
value = { | |
Ljavax/net/ssl/SSLPeerUnverifiedException; | |
} | |
.end annotation | |
.line 1 | |
invoke-virtual {p0, p1}, Lokhttp3/CertificatePinner;->a(Ljava/lang/String;)Ljava/util/List; | |
move-result-object v0 | |
.line 2 | |
invoke-interface {v0}, Ljava/util/List;->isEmpty()Z | |
move-result v1 | |
if-eqz v1, :cond_0 | |
return-void | |
.line 3 | |
:cond_0 | |
iget-object v1, p0, Lokhttp3/CertificatePinner;->b:Lokhttp3/internal/tls/CertificateChainCleaner; | |
if-eqz v1, :cond_1 | |
.line 4 | |
invoke-virtual {v1, p2, p1}, Lokhttp3/internal/tls/CertificateChainCleaner;->clean(Ljava/util/List;Ljava/lang/String;)Ljava/util/List; | |
move-result-object p2 | |
.line 5 | |
:cond_1 | |
invoke-interface {p2}, Ljava/util/List;->size()I | |
move-result v1 | |
const/4 v2, 0x0 | |
move v3, v2 | |
:goto_0 | |
if-ge v3, v1, :cond_8 | |
.line 6 | |
invoke-interface {p2, v3}, Ljava/util/List;->get(I)Ljava/lang/Object; | |
move-result-object v4 | |
check-cast v4, Ljava/security/cert/X509Certificate; | |
.line 7 | |
invoke-interface {v0}, Ljava/util/List;->size()I | |
move-result v5 | |
const/4 v6, 0x0 | |
move v8, v2 | |
move-object v7, v6 | |
:goto_1 | |
if-ge v8, v5, :cond_7 | |
.line 8 | |
invoke-interface {v0, v8}, Ljava/util/List;->get(I)Ljava/lang/Object; | |
move-result-object v9 | |
check-cast v9, Lokhttp3/CertificatePinner$Pin; | |
.line 9 | |
iget-object v10, v9, Lokhttp3/CertificatePinner$Pin;->c:Ljava/lang/String; | |
const-string v11, "sha256/" | |
invoke-virtual {v10, v11}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z | |
move-result v10 | |
if-eqz v10, :cond_3 | |
if-nez v6, :cond_2 | |
.line 10 | |
invoke-static {v4}, Lokhttp3/CertificatePinner;->c(Ljava/security/cert/X509Certificate;)Lokio/ByteString; | |
move-result-object v6 | |
.line 11 | |
:cond_2 | |
iget-object v9, v9, Lokhttp3/CertificatePinner$Pin;->d:Lokio/ByteString; | |
invoke-virtual {v9, v6}, Lokio/ByteString;->equals(Ljava/lang/Object;)Z | |
move-result v9 | |
if-eqz v9, :cond_5 | |
return-void | |
.line 12 | |
:cond_3 | |
iget-object v10, v9, Lokhttp3/CertificatePinner$Pin;->c:Ljava/lang/String; | |
const-string v11, "sha1/" | |
invoke-virtual {v10, v11}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z | |
move-result v10 | |
if-eqz v10, :cond_6 | |
if-nez v7, :cond_4 | |
.line 13 | |
invoke-static {v4}, Lokhttp3/CertificatePinner;->b(Ljava/security/cert/X509Certificate;)Lokio/ByteString; | |
move-result-object v7 | |
.line 14 | |
:cond_4 | |
iget-object v9, v9, Lokhttp3/CertificatePinner$Pin;->d:Lokio/ByteString; | |
invoke-virtual {v9, v7}, Lokio/ByteString;->equals(Ljava/lang/Object;)Z | |
move-result v9 | |
if-eqz v9, :cond_5 | |
return-void | |
:cond_5 | |
add-int/lit8 v8, v8, 0x1 | |
goto :goto_1 | |
.line 15 | |
:cond_6 | |
new-instance p1, Ljava/lang/AssertionError; | |
new-instance p2, Ljava/lang/StringBuilder; | |
invoke-direct {p2}, Ljava/lang/StringBuilder;-><init>()V | |
const-string v0, "unsupported hashAlgorithm: " | |
invoke-virtual {p2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
iget-object v0, v9, Lokhttp3/CertificatePinner$Pin;->c:Ljava/lang/String; | |
invoke-virtual {p2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
invoke-virtual {p2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; | |
move-result-object p2 | |
invoke-direct {p1, p2}, Ljava/lang/AssertionError;-><init>(Ljava/lang/Object;)V | |
throw p1 | |
:cond_7 | |
add-int/lit8 v3, v3, 0x1 | |
goto :goto_0 | |
.line 16 | |
:cond_8 | |
new-instance v1, Ljava/lang/StringBuilder; | |
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V | |
const-string v3, "Certificate pinning failure!" | |
.line 17 | |
invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
const-string v3, "\n Peer certificate chain:" | |
.line 18 | |
invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
.line 19 | |
invoke-interface {p2}, Ljava/util/List;->size()I | |
move-result v3 | |
move v4, v2 | |
:goto_2 | |
const-string v5, "\n " | |
if-ge v4, v3, :cond_9 | |
.line 20 | |
invoke-interface {p2, v4}, Ljava/util/List;->get(I)Ljava/lang/Object; | |
move-result-object v6 | |
check-cast v6, Ljava/security/cert/X509Certificate; | |
.line 21 | |
invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
invoke-static {v6}, Lokhttp3/CertificatePinner;->pin(Ljava/security/cert/Certificate;)Ljava/lang/String; | |
move-result-object v5 | |
invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
const-string v5, ": " | |
.line 22 | |
invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
invoke-virtual {v6}, Ljava/security/cert/X509Certificate;->getSubjectDN()Ljava/security/Principal; | |
move-result-object v5 | |
invoke-interface {v5}, Ljava/security/Principal;->getName()Ljava/lang/String; | |
move-result-object v5 | |
invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
add-int/lit8 v4, v4, 0x1 | |
goto :goto_2 | |
:cond_9 | |
const-string p2, "\n Pinned certificates for " | |
.line 23 | |
invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
const-string p1, ":" | |
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
.line 24 | |
invoke-interface {v0}, Ljava/util/List;->size()I | |
move-result p1 | |
:goto_3 | |
if-ge v2, p1, :cond_a | |
.line 25 | |
invoke-interface {v0, v2}, Ljava/util/List;->get(I)Ljava/lang/Object; | |
move-result-object p2 | |
check-cast p2, Lokhttp3/CertificatePinner$Pin; | |
.line 26 | |
invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; | |
add-int/lit8 v2, v2, 0x1 | |
goto :goto_3 | |
.line 27 | |
:cond_a | |
new-instance p1, Ljavax/net/ssl/SSLPeerUnverifiedException; | |
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; | |
move-result-object p2 | |
invoke-direct {p1, p2}, Ljavax/net/ssl/SSLPeerUnverifiedException;-><init>(Ljava/lang/String;)V | |
throw p1 | |
.end method | |
.method public varargs check(Ljava/lang/String;[Ljava/security/cert/Certificate;)V | |
.locals 0 | |
.annotation system Ldalvik/annotation/Throws; | |
value = { | |
Ljavax/net/ssl/SSLPeerUnverifiedException; | |
} | |
.end annotation | |
.line 28 | |
invoke-static {p2}, Ljava/util/Arrays;->asList([Ljava/lang/Object;)Ljava/util/List; | |
move-result-object p2 | |
invoke-virtual {p0, p1, p2}, Lokhttp3/CertificatePinner;->check(Ljava/lang/String;Ljava/util/List;)V | |
return-void | |
.end method | |
.method d(Lokhttp3/internal/tls/CertificateChainCleaner;)Lokhttp3/CertificatePinner; | |
.locals 2 | |
.param p1 # Lokhttp3/internal/tls/CertificateChainCleaner; | |
.annotation runtime Ljavax/annotation/Nullable; | |
.end annotation | |
.end param | |
.line 1 | |
iget-object v0, p0, Lokhttp3/CertificatePinner;->b:Lokhttp3/internal/tls/CertificateChainCleaner; | |
invoke-static {v0, p1}, Ljava/util/Objects;->equals(Ljava/lang/Object;Ljava/lang/Object;)Z | |
move-result v0 | |
if-eqz v0, :cond_0 | |
move-object v0, p0 | |
goto :goto_0 | |
.line 2 | |
:cond_0 | |
new-instance v0, Lokhttp3/CertificatePinner; | |
iget-object v1, p0, Lokhttp3/CertificatePinner;->a:Ljava/util/Set; | |
invoke-direct {v0, v1, p1}, Lokhttp3/CertificatePinner;-><init>(Ljava/util/Set;Lokhttp3/internal/tls/CertificateChainCleaner;)V | |
:goto_0 | |
return-object v0 | |
.end method | |
.method public equals(Ljava/lang/Object;)Z | |
.locals 3 | |
.param p1 # Ljava/lang/Object; | |
.annotation runtime Ljavax/annotation/Nullable; | |
.end annotation | |
.end param | |
const/4 v0, 0x1 | |
if-ne p1, p0, :cond_0 | |
return v0 | |
.line 1 | |
:cond_0 | |
instance-of v1, p1, Lokhttp3/CertificatePinner; | |
if-eqz v1, :cond_1 | |
iget-object v1, p0, Lokhttp3/CertificatePinner;->b:Lokhttp3/internal/tls/CertificateChainCleaner; | |
check-cast p1, Lokhttp3/CertificatePinner; | |
iget-object v2, p1, Lokhttp3/CertificatePinner;->b:Lokhttp3/internal/tls/CertificateChainCleaner; | |
.line 2 | |
invoke-static {v1, v2}, Ljava/util/Objects;->equals(Ljava/lang/Object;Ljava/lang/Object;)Z | |
move-result v1 | |
if-eqz v1, :cond_1 | |
iget-object v1, p0, Lokhttp3/CertificatePinner;->a:Ljava/util/Set; | |
iget-object p1, p1, Lokhttp3/CertificatePinner;->a:Ljava/util/Set; | |
.line 3 | |
invoke-interface {v1, p1}, Ljava/util/Set;->equals(Ljava/lang/Object;)Z | |
move-result p1 | |
if-eqz p1, :cond_1 | |
goto :goto_0 | |
:cond_1 | |
const/4 v0, 0x0 | |
:goto_0 | |
return v0 | |
.end method | |
.method public hashCode()I | |
.locals 2 | |
.line 1 | |
iget-object v0, p0, Lokhttp3/CertificatePinner;->b:Lokhttp3/internal/tls/CertificateChainCleaner; | |
invoke-static {v0}, Ljava/util/Objects;->hashCode(Ljava/lang/Object;)I | |
move-result v0 | |
mul-int/lit8 v0, v0, 0x1f | |
.line 2 | |
iget-object v1, p0, Lokhttp3/CertificatePinner;->a:Ljava/util/Set; | |
invoke-interface {v1}, Ljava/util/Set;->hashCode()I | |
move-result v1 | |
add-int/2addr v0, v1 | |
return v0 | |
.end method |
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
.class public final Lokhttp3/Handshake; | |
.super Ljava/lang/Object; | |
.source "SourceFile" | |
# instance fields | |
.field private final a:Lokhttp3/TlsVersion; | |
.field private final b:Lokhttp3/CipherSuite; | |
.field private final c:Ljava/util/List; | |
.annotation system Ldalvik/annotation/Signature; | |
value = { | |
"Ljava/util/List<", | |
"Ljava/security/cert/Certificate;", | |
">;" | |
} | |
.end annotation | |
.end field | |
.field private final d:Ljava/util/List; | |
.annotation system Ldalvik/annotation/Signature; | |
value = { | |
"Ljava/util/List<", | |
"Ljava/security/cert/Certificate;", | |
">;" | |
} | |
.end annotation | |
.end field | |
# direct methods | |
.method private constructor <init>(Lokhttp3/TlsVersion;Lokhttp3/CipherSuite;Ljava/util/List;Ljava/util/List;)V | |
.locals 0 | |
.annotation system Ldalvik/annotation/Signature; | |
value = { | |
"(", | |
"Lokhttp3/TlsVersion;", | |
"Lokhttp3/CipherSuite;", | |
"Ljava/util/List<", | |
"Ljava/security/cert/Certificate;", | |
">;", | |
"Ljava/util/List<", | |
"Ljava/security/cert/Certificate;", | |
">;)V" | |
} | |
.end annotation | |
.line 1 | |
invoke-direct {p0}, Ljava/lang/Object;-><init>()V | |
.line 2 | |
iput-object p1, p0, Lokhttp3/Handshake;->a:Lokhttp3/TlsVersion; | |
.line 3 | |
iput-object p2, p0, Lokhttp3/Handshake;->b:Lokhttp3/CipherSuite; | |
.line 4 | |
iput-object p3, p0, Lokhttp3/Handshake;->c:Ljava/util/List; | |
.line 5 | |
iput-object p4, p0, Lokhttp3/Handshake;->d:Ljava/util/List; | |
return-void | |
.end method | |
.method private a(Ljava/util/List;)Ljava/util/List; | |
.locals 3 | |
.annotation system Ldalvik/annotation/Signature; | |
value = { | |
"(", | |
"Ljava/util/List<", | |
"Ljava/security/cert/Certificate;", | |
">;)", | |
"Ljava/util/List<", | |
"Ljava/lang/String;", | |
">;" | |
} | |
.end annotation | |
.line 1 | |
new-instance v0, Ljava/util/ArrayList; | |
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V | |
.line 2 | |
invoke-interface {p1}, Ljava/util/List;->iterator()Ljava/util/Iterator; | |
move-result-object p1 | |
:goto_0 | |
invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z | |
move-result v1 | |
if-eqz v1, :cond_1 | |
invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object; | |
move-result-object v1 | |
check-cast v1, Ljava/security/cert/Certificate; | |
.line 3 | |
instance-of v2, v1, Ljava/security/cert/X509Certificate; | |
if-eqz v2, :cond_0 | |
.line 4 | |
check-cast v1, Ljava/security/cert/X509Certificate; | |
invoke-virtual {v1}, Ljava/security/cert/X509Certificate;->getSubjectDN()Ljava/security/Principal; | |
move-result-object v1 | |
invoke-static {v1}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String; | |
move-result-object v1 | |
invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z | |
goto :goto_0 | |
.line 5 | |
:cond_0 | |
invoke-virtual {v1}, Ljava/security/cert/Certificate;->getType()Ljava/lang/String; | |
move-result-object v1 | |
invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z | |
goto :goto_0 | |
:cond_1 | |
return-object v0 | |
.end method | |
.method public static get(Ljavax/net/ssl/SSLSession;)Lokhttp3/Handshake; | |
.locals 4 | |
.annotation system Ldalvik/annotation/Throws; | |
value = { | |
Ljava/io/IOException; | |
} | |
.end annotation | |
.line 1 | |
invoke-interface {p0}, Ljavax/net/ssl/SSLSession;->getCipherSuite()Ljava/lang/String; | |
move-result-object v0 | |
if-eqz v0, :cond_5 | |
const-string v1, "SSL_NULL_WITH_NULL_NULL" | |
.line 2 | |
invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z | |
move-result v1 | |
if-nez v1, :cond_4 | |
.line 3 | |
invoke-static {v0}, Lokhttp3/CipherSuite;->forJavaName(Ljava/lang/String;)Lokhttp3/CipherSuite; | |
move-result-object v0 | |
.line 4 | |
invoke-interface {p0}, Ljavax/net/ssl/SSLSession;->getProtocol()Ljava/lang/String; | |
move-result-object v1 | |
if-eqz v1, :cond_3 | |
const-string v2, "NONE" | |
.line 5 | |
invoke-virtual {v2, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z | |
move-result v2 | |
if-nez v2, :cond_2 | |
.line 6 | |
invoke-static {v1}, Lokhttp3/TlsVersion;->forJavaName(Ljava/lang/String;)Lokhttp3/TlsVersion; | |
move-result-object v1 | |
.line 7 | |
:try_start_0 | |
invoke-interface {p0}, Ljavax/net/ssl/SSLSession;->getPeerCertificates()[Ljava/security/cert/Certificate; | |
move-result-object v2 | |
:try_end_0 | |
.catch Ljavax/net/ssl/SSLPeerUnverifiedException; {:try_start_0 .. :try_end_0} :catch_0 | |
goto :goto_0 | |
:catch_0 | |
const/4 v2, 0x0 | |
:goto_0 | |
if-eqz v2, :cond_0 | |
.line 8 | |
invoke-static {v2}, Lokhttp3/internal/Util;->immutableList([Ljava/lang/Object;)Ljava/util/List; | |
move-result-object v2 | |
goto :goto_1 | |
.line 9 | |
:cond_0 | |
invoke-static {}, Ljava/util/Collections;->emptyList()Ljava/util/List; | |
move-result-object v2 | |
.line 10 | |
:goto_1 | |
invoke-interface {p0}, Ljavax/net/ssl/SSLSession;->getLocalCertificates()[Ljava/security/cert/Certificate; | |
move-result-object p0 | |
if-eqz p0, :cond_1 | |
.line 11 | |
invoke-static {p0}, Lokhttp3/internal/Util;->immutableList([Ljava/lang/Object;)Ljava/util/List; | |
move-result-object p0 | |
goto :goto_2 | |
.line 12 | |
:cond_1 | |
invoke-static {}, Ljava/util/Collections;->emptyList()Ljava/util/List; | |
move-result-object p0 | |
.line 13 | |
:goto_2 | |
new-instance v3, Lokhttp3/Handshake; | |
invoke-direct {v3, v1, v0, v2, p0}, Lokhttp3/Handshake;-><init>(Lokhttp3/TlsVersion;Lokhttp3/CipherSuite;Ljava/util/List;Ljava/util/List;)V | |
return-object v3 | |
.line 14 | |
:cond_2 | |
new-instance p0, Ljava/io/IOException; | |
const-string v0, "tlsVersion == NONE" | |
invoke-direct {p0, v0}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V | |
throw p0 | |
.line 15 | |
:cond_3 | |
new-instance p0, Ljava/lang/IllegalStateException; | |
const-string v0, "tlsVersion == null" | |
invoke-direct {p0, v0}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V | |
throw p0 | |
.line 16 | |
:cond_4 | |
new-instance p0, Ljava/io/IOException; | |
const-string v0, "cipherSuite == SSL_NULL_WITH_NULL_NULL" | |
invoke-direct {p0, v0}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V | |
throw p0 | |
.line 17 | |
:cond_5 | |
new-instance p0, Ljava/lang/IllegalStateException; | |
const-string v0, "cipherSuite == null" | |
invoke-direct {p0, v0}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V | |
throw p0 | |
.end method | |
.method public static get(Lokhttp3/TlsVersion;Lokhttp3/CipherSuite;Ljava/util/List;Ljava/util/List;)Lokhttp3/Handshake; | |
.locals 1 | |
.annotation system Ldalvik/annotation/Signature; | |
value = { | |
"(", | |
"Lokhttp3/TlsVersion;", | |
"Lokhttp3/CipherSuite;", | |
"Ljava/util/List<", | |
"Ljava/security/cert/Certificate;", | |
">;", | |
"Ljava/util/List<", | |
"Ljava/security/cert/Certificate;", | |
">;)", | |
"Lokhttp3/Handshake;" | |
} | |
.end annotation | |
if-eqz p0, :cond_1 | |
if-eqz p1, :cond_0 | |
.line 18 | |
new-instance v0, Lokhttp3/Handshake; | |
invoke-static {p2}, Lokhttp3/internal/Util;->immutableList(Ljava/util/List;)Ljava/util/List; | |
move-result-object p2 | |
.line 19 | |
invoke-static {p3}, Lokhttp3/internal/Util;->immutableList(Ljava/util/List;)Ljava/util/List; | |
move-result-object p3 | |
invoke-direct {v0, p0, p1, p2, p3}, Lokhttp3/Handshake;-><init>(Lokhttp3/TlsVersion;Lokhttp3/CipherSuite;Ljava/util/List;Ljava/util/List;)V | |
return-object v0 | |
.line 20 | |
:cond_0 | |
new-instance p0, Ljava/lang/NullPointerException; | |
const-string p1, "cipherSuite == null" | |
invoke-direct {p0, p1}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V | |
throw p0 | |
.line 21 | |
:cond_1 | |
new-instance p0, Ljava/lang/NullPointerException; | |
const-string p1, "tlsVersion == null" | |
invoke-direct {p0, p1}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V | |
throw p0 | |
.end method | |
# virtual methods | |
.method public cipherSuite()Lokhttp3/CipherSuite; | |
.locals 1 | |
.line 1 | |
iget-object v0, p0, Lokhttp3/Handshake;->b:Lokhttp3/CipherSuite; | |
return-object v0 | |
.end method | |
.method public equals(Ljava/lang/Object;)Z | |
.locals 3 | |
.param p1 # Ljava/lang/Object; | |
.annotation runtime Ljavax/annotation/Nullable; | |
.end annotation | |
.end param | |
.line 1 | |
instance-of v0, p1, Lokhttp3/Handshake; | |
const/4 v1, 0x0 | |
if-nez v0, :cond_0 | |
return v1 | |
.line 2 | |
:cond_0 | |
check-cast p1, Lokhttp3/Handshake; | |
.line 3 | |
iget-object v0, p0, Lokhttp3/Handshake;->a:Lokhttp3/TlsVersion; | |
iget-object v2, p1, Lokhttp3/Handshake;->a:Lokhttp3/TlsVersion; | |
invoke-virtual {v0, v2}, Ljava/lang/Enum;->equals(Ljava/lang/Object;)Z | |
move-result v0 | |
if-eqz v0, :cond_1 | |
iget-object v0, p0, Lokhttp3/Handshake;->b:Lokhttp3/CipherSuite; | |
iget-object v2, p1, Lokhttp3/Handshake;->b:Lokhttp3/CipherSuite; | |
.line 4 | |
invoke-virtual {v0, v2}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z | |
move-result v0 | |
if-eqz v0, :cond_1 | |
iget-object v0, p0, Lokhttp3/Handshake;->c:Ljava/util/List; | |
iget-object v2, p1, Lokhttp3/Handshake;->c:Ljava/util/List; | |
.line 5 | |
invoke-interface {v0, v2}, Ljava/util/List;->equals(Ljava/lang/Object;)Z | |
move-result v0 | |
if-eqz v0, :cond_1 | |
iget-object v0, p0, Lokhttp3/Handshake;->d:Ljava/util/List; | |
iget-object p1, p1, Lokhttp3/Handshake;->d:Ljava/util/List; | |
.line 6 | |
invoke-interface {v0, p1}, Ljava/util/List;->equals(Ljava/lang/Object;)Z | |
move-result p1 | |
if-eqz p1, :cond_1 | |
const/4 v1, 0x1 | |
:cond_1 | |
return v1 | |
.end method | |
.method public hashCode()I | |
.locals 2 | |
.line 1 | |
iget-object v0, p0, Lokhttp3/Handshake;->a:Lokhttp3/TlsVersion; | |
invoke-virtual {v0}, Ljava/lang/Enum;->hashCode()I | |
move-result v0 | |
const/16 v1, 0x20f | |
add-int/2addr v1, v0 | |
mul-int/lit8 v1, v1, 0x1f | |
.line 2 | |
iget-object v0, p0, Lokhttp3/Handshake;->b:Lokhttp3/CipherSuite; | |
invoke-virtual {v0}, Ljava/lang/Object;->hashCode()I | |
move-result v0 | |
add-int/2addr v1, v0 | |
mul-int/lit8 v1, v1, 0x1f | |
.line 3 | |
iget-object v0, p0, Lokhttp3/Handshake;->c:Ljava/util/List; | |
invoke-interface {v0}, Ljava/util/List;->hashCode()I | |
move-result v0 | |
add-int/2addr v1, v0 | |
mul-int/lit8 v1, v1, 0x1f | |
.line 4 | |
iget-object v0, p0, Lokhttp3/Handshake;->d:Ljava/util/List; | |
invoke-interface {v0}, Ljava/util/List;->hashCode()I | |
move-result v0 | |
add-int/2addr v1, v0 | |
return v1 | |
.end method | |
.method public localCertificates()Ljava/util/List; | |
.locals 1 | |
.annotation system Ldalvik/annotation/Signature; | |
value = { | |
"()", | |
"Ljava/util/List<", | |
"Ljava/security/cert/Certificate;", | |
">;" | |
} | |
.end annotation | |
.line 1 | |
iget-object v0, p0, Lokhttp3/Handshake;->d:Ljava/util/List; | |
return-object v0 | |
.end method | |
.method public localPrincipal()Ljava/security/Principal; | |
.locals 2 | |
.annotation runtime Ljavax/annotation/Nullable; | |
.end annotation | |
.line 1 | |
iget-object v0, p0, Lokhttp3/Handshake;->d:Ljava/util/List; | |
invoke-interface {v0}, Ljava/util/List;->isEmpty()Z | |
move-result v0 | |
if-nez v0, :cond_0 | |
.line 2 | |
iget-object v0, p0, Lokhttp3/Handshake;->d:Ljava/util/List; | |
const/4 v1, 0x0 | |
invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object; | |
move-result-object v0 | |
check-cast v0, Ljava/security/cert/X509Certificate; | |
invoke-virtual {v0}, Ljava/security/cert/X509Certificate;->getSubjectX500Principal()Ljavax/security/auth/x500/X500Principal; | |
move-result-object v0 | |
goto :goto_0 | |
:cond_0 | |
const/4 v0, 0x0 | |
:goto_0 | |
return-object v0 | |
.end method | |
.method public peerCertificates()Ljava/util/List; | |
.locals 1 | |
.annotation system Ldalvik/annotation/Signature; | |
value = { | |
"()", | |
"Ljava/util/List<", | |
"Ljava/security/cert/Certificate;", | |
">;" | |
} | |
.end annotation | |
.line 1 | |
iget-object v0, p0, Lokhttp3/Handshake;->c:Ljava/util/List; | |
return-object v0 | |
.end method | |
.method public peerPrincipal()Ljava/security/Principal; | |
.locals 2 | |
.annotation runtime Ljavax/annotation/Nullable; | |
.end annotation | |
.line 1 | |
iget-object v0, p0, Lokhttp3/Handshake;->c:Ljava/util/List; | |
invoke-interface {v0}, Ljava/util/List;->isEmpty()Z | |
move-result v0 | |
if-nez v0, :cond_0 | |
.line 2 | |
iget-object v0, p0, Lokhttp3/Handshake;->c:Ljava/util/List; | |
const/4 v1, 0x0 | |
invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object; | |
move-result-object v0 | |
check-cast v0, Ljava/security/cert/X509Certificate; | |
invoke-virtual {v0}, Ljava/security/cert/X509Certificate;->getSubjectX500Principal()Ljavax/security/auth/x500/X500Principal; | |
move-result-object v0 | |
goto :goto_0 | |
:cond_0 | |
const/4 v0, 0x0 | |
:goto_0 | |
return-object v0 | |
.end method | |
.method public tlsVersion()Lokhttp3/TlsVersion; | |
.locals 1 | |
.line 1 | |
iget-object v0, p0, Lokhttp3/Handshake;->a:Lokhttp3/TlsVersion; | |
return-object v0 | |
.end method | |
.method public toString()Ljava/lang/String; | |
.locals 2 | |
.line 1 | |
new-instance v0, Ljava/lang/StringBuilder; | |
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V | |
const-string v1, "Handshake{tlsVersion=" | |
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
iget-object v1, p0, Lokhttp3/Handshake;->a:Lokhttp3/TlsVersion; | |
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; | |
const-string v1, " cipherSuite=" | |
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
iget-object v1, p0, Lokhttp3/Handshake;->b:Lokhttp3/CipherSuite; | |
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; | |
const-string v1, " peerCertificates=" | |
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
iget-object v1, p0, Lokhttp3/Handshake;->c:Ljava/util/List; | |
.line 2 | |
invoke-direct {p0, v1}, Lokhttp3/Handshake;->a(Ljava/util/List;)Ljava/util/List; | |
move-result-object v1 | |
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; | |
const-string v1, " localCertificates=" | |
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
iget-object v1, p0, Lokhttp3/Handshake;->d:Ljava/util/List; | |
.line 3 | |
invoke-direct {p0, v1}, Lokhttp3/Handshake;->a(Ljava/util/List;)Ljava/util/List; | |
move-result-object v1 | |
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; | |
const/16 v1, 0x7d | |
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; | |
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; | |
move-result-object v0 | |
return-object v0 | |
.end method |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment