h.smali
.class public final Lcom/squareup/okhttp/h;
.super Ljava/lang/Object;
.source "CertificatePinner.java"
# static fields
.field public static final bwk:Lcom/squareup/okhttp/h;
# instance fields
.field private final bwl:Ljava/util/Map;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Map",
"<",
"Ljava/lang/String;",
"Ljava/util/Set",
"<",
"Lokio/ByteString;",
">;>;"
}
.end annotation
.end field
# direct methods
.method static constructor <clinit>()V
.registers 3
.prologue
.line 133
new-instance v0, Lcom/squareup/okhttp/i;
invoke-direct {v0}, Lcom/squareup/okhttp/i;-><init>()V
.line 2269
new-instance v1, Lcom/squareup/okhttp/h;
const/4 v2, 0x0
invoke-direct {v1, v0, v2}, Lcom/squareup/okhttp/h;-><init>(Lcom/squareup/okhttp/i;B)V
.line 133
sput-object v1, Lcom/squareup/okhttp/h;->bwk:Lcom/squareup/okhttp/h;
return-void
.end method
.method private constructor <init>(Lcom/squareup/okhttp/i;)V
.registers 3
.prologue
.line 137
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 1234
iget-object v0, p1, Lcom/squareup/okhttp/i;->bwl:Ljava/util/Map;
.line 138
invoke-static {v0}, Lcom/squareup/okhttp/internal/k;->s(Ljava/util/Map;)Ljava/util/Map;
move-result-object v0
iput-object v0, p0, Lcom/squareup/okhttp/h;->bwl:Ljava/util/Map;
.line 139
return-void
.end method
.method private synthetic constructor <init>(Lcom/squareup/okhttp/i;B)V
.registers 3
.prologue
.line 132
invoke-direct {p0, p1}, Lcom/squareup/okhttp/h;-><init>(Lcom/squareup/okhttp/i;)V
return-void
.end method
.method public static a(Ljava/security/cert/Certificate;)Ljava/lang/String;
.registers 3
.prologue
.line 223
instance-of v0, p0, Ljava/security/cert/X509Certificate;
if-nez v0, :cond_c
.line 224
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "Certificate pinning requires X509 certificates"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 226
:cond_c
new-instance v0, Ljava/lang/StringBuilder;
const-string v1, "sha1/"
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
check-cast p0, Ljava/security/cert/X509Certificate;
invoke-static {p0}, Lcom/squareup/okhttp/h;->a(Ljava/security/cert/X509Certificate;)Lokio/ByteString;
move-result-object v1
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;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
return-object v0
.end method
.method private static a(Ljava/security/cert/X509Certificate;)Lokio/ByteString;
.registers 2
.prologue
.line 230
invoke-virtual {p0}, Ljava/security/cert/X509Certificate;->getPublicKey()Ljava/security/PublicKey;
move-result-object v0
invoke-interface {v0}, Ljava/security/PublicKey;->getEncoded()[B
move-result-object v0
invoke-static {v0}, Lokio/ByteString;->of([B)Lokio/ByteString;
move-result-object v0
invoke-static {v0}, Lcom/squareup/okhttp/internal/k;->a(Lokio/ByteString;)Lokio/ByteString;
move-result-object v0
return-object v0
.end method
# virtual methods
.method public final f(Ljava/lang/String;Ljava/util/List;)V
.registers 10
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/String;",
"Ljava/util/List",
"<",
"Ljava/security/cert/Certificate;",
">;)V"
}
.end annotation
.prologue
const/4 v3, 0x0
const/16 v4, 0x2e
const/4 v2, 0x0
.line 153
.line 2189
iget-object v0, p0, Lcom/squareup/okhttp/h;->bwl:Ljava/util/Map;
invoke-interface {v0, p1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/util/Set;
.line 2192
invoke-virtual {p1, v4}, Ljava/lang/String;->indexOf(I)I
move-result v1
.line 2193
invoke-virtual {p1, v4}, Ljava/lang/String;->lastIndexOf(I)I
move-result v4
.line 2198
if-eq v1, v4, :cond_db
.line 2200
iget-object v4, p0, Lcom/squareup/okhttp/h;->bwl:Ljava/util/Map;
new-instance v5, Ljava/lang/StringBuilder;
const-string v6, "*."
invoke-direct {v5, v6}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
add-int/lit8 v1, v1, 0x1
invoke-virtual {p1, v1}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v1
invoke-virtual {v5, 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 {v4, v1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/util/Set;
move-object v4, v1
.line 2203
:goto_34
if-nez v0, :cond_3b
if-nez v4, :cond_3b
.line 155
:goto_38
if-nez v3, :cond_52
.line 159
:cond_3a
return-void
.line 2205
:cond_3b
if-eqz v0, :cond_4c
if-eqz v4, :cond_4c
.line 2206
new-instance v1, Ljava/util/LinkedHashSet;
invoke-direct {v1}, Ljava/util/LinkedHashSet;-><init>()V
.line 2207
invoke-interface {v1, v0}, Ljava/util/Set;->addAll(Ljava/util/Collection;)Z
.line 2208
invoke-interface {v1, v4}, Ljava/util/Set;->addAll(Ljava/util/Collection;)Z
move-object v3, v1
.line 2209
goto :goto_38
.line 2212
:cond_4c
if-eqz v0, :cond_50
move-object v3, v0
goto :goto_38
:cond_50
move-object v3, v4
.line 2214
goto :goto_38
.line 157
:cond_52
invoke-interface {p2}, Ljava/util/List;->size()I
move-result v4
move v1, v2
:goto_57
if-ge v1, v4, :cond_6d
.line 158
invoke-interface {p2, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/X509Certificate;
.line 159
invoke-static {v0}, Lcom/squareup/okhttp/h;->a(Ljava/security/cert/X509Certificate;)Lokio/ByteString;
move-result-object v0
invoke-interface {v3, v0}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_3a
.line 157
add-int/lit8 v0, v1, 0x1
move v1, v0
goto :goto_57
.line 163
:cond_6d
new-instance v4, Ljava/lang/StringBuilder;
const-string v0, "Certificate pinning failure!\n Peer certificate chain:"
invoke-direct {v4, v0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
.line 166
invoke-interface {p2}, Ljava/util/List;->size()I
move-result v5
move v1, v2
:goto_79
if-ge v1, v5, :cond_a4
.line 167
invoke-interface {p2, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/X509Certificate;
.line 168
const-string v2, "\n "
invoke-virtual {v4, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-static {v0}, Lcom/squareup/okhttp/h;->a(Ljava/security/cert/Certificate;)Ljava/lang/String;
move-result-object v6
invoke-virtual {v2, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
const-string v6, ": "
.line 169
invoke-virtual {v2, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v0}, 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 {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 166
add-int/lit8 v0, v1, 0x1
move v1, v0
goto :goto_79
.line 171
:cond_a4
const-string v0, "\n Pinned certificates for "
invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, ":"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 172
invoke-interface {v3}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v1
:goto_b7
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_d1
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lokio/ByteString;
.line 173
const-string v2, "\n sha1/"
invoke-virtual {v4, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v0}, Lokio/ByteString;->base64()Ljava/lang/String;
move-result-object v0
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
goto :goto_b7
.line 175
:cond_d1
new-instance v0, Ljavax/net/ssl/SSLPeerUnverifiedException;
invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Ljavax/net/ssl/SSLPeerUnverifiedException;-><init>(Ljava/lang/String;)V
throw v0
:cond_db
move-object v4, v3
goto/16 :goto_34
.end method