c.smali
.class public Lcom/huawei/updatesdk/sdk/a/b/c;
.super Ljava/lang/Object;
# interfaces
.implements Ljavax/net/ssl/X509TrustManager;
# instance fields
.field protected a:Ljava/util/ArrayList;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/ArrayList",
"<",
"Ljavax/net/ssl/X509TrustManager;",
">;"
}
.end annotation
.end field
# direct methods
.method public constructor <init>(Landroid/content/Context;)V
.registers 7
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/security/NoSuchAlgorithmException;,
Ljava/security/cert/CertificateException;,
Ljava/security/KeyStoreException;,
Ljava/lang/IllegalAccessException;
}
.end annotation
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
iput-object v0, p0, Lcom/huawei/updatesdk/sdk/a/b/c;->a:Ljava/util/ArrayList;
if-nez p1, :cond_14
new-instance v0, Ljava/lang/IllegalAccessException;
const-string v1, "context is null"
invoke-direct {v0, v1}, Ljava/lang/IllegalAccessException;-><init>(Ljava/lang/String;)V
throw v0
:cond_14
const/4 v1, 0x0
:try_start_15
const-string v0, "X509"
invoke-static {v0}, Ljavax/net/ssl/TrustManagerFactory;->getInstance(Ljava/lang/String;)Ljavax/net/ssl/TrustManagerFactory;
move-result-object v0
const-string v2, "bks"
invoke-static {v2}, Ljava/security/KeyStore;->getInstance(Ljava/lang/String;)Ljava/security/KeyStore;
move-result-object v2
invoke-virtual {p1}, Landroid/content/Context;->getAssets()Landroid/content/res/AssetManager;
move-result-object v3
const-string v4, "hmsrootcas.bks"
invoke-virtual {v3, v4}, Landroid/content/res/AssetManager;->open(Ljava/lang/String;)Ljava/io/InputStream;
move-result-object v1
invoke-virtual {v1}, Ljava/io/InputStream;->reset()V
const-string v3, ""
invoke-virtual {v3}, Ljava/lang/String;->toCharArray()[C
move-result-object v3
invoke-virtual {v2, v1, v3}, Ljava/security/KeyStore;->load(Ljava/io/InputStream;[C)V
invoke-virtual {v0, v2}, Ljavax/net/ssl/TrustManagerFactory;->init(Ljava/security/KeyStore;)V
invoke-virtual {v0}, Ljavax/net/ssl/TrustManagerFactory;->getTrustManagers()[Ljavax/net/ssl/TrustManager;
move-result-object v3
const/4 v0, 0x0
move v2, v0
:goto_40
array-length v0, v3
if-ge v2, v0, :cond_56
aget-object v0, v3, v2
instance-of v0, v0, Ljavax/net/ssl/X509TrustManager;
if-eqz v0, :cond_52
iget-object v4, p0, Lcom/huawei/updatesdk/sdk/a/b/c;->a:Ljava/util/ArrayList;
aget-object v0, v3, v2
check-cast v0, Ljavax/net/ssl/X509TrustManager;
invoke-virtual {v4, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
:cond_52
add-int/lit8 v0, v2, 0x1
move v2, v0
goto :goto_40
:cond_56
iget-object v0, p0, Lcom/huawei/updatesdk/sdk/a/b/c;->a:Ljava/util/ArrayList;
invoke-virtual {v0}, Ljava/util/ArrayList;->isEmpty()Z
move-result v0
if-eqz v0, :cond_6d
new-instance v0, Ljava/security/cert/CertificateException;
const-string v2, "X509TrustManager is empty"
invoke-direct {v0, v2}, Ljava/security/cert/CertificateException;-><init>(Ljava/lang/String;)V
throw v0
:try_end_66
.catchall {:try_start_15 .. :try_end_66} :catchall_66
:catchall_66
move-exception v0
if-eqz v1, :cond_6c
:try_start_69
invoke-virtual {v1}, Ljava/io/InputStream;->close()V
:try_end_6c
.catch Ljava/io/IOException; {:try_start_69 .. :try_end_6c} :catch_7c
:cond_6c
:goto_6c
throw v0
:cond_6d
if-eqz v1, :cond_72
:try_start_6f
invoke-virtual {v1}, Ljava/io/InputStream;->close()V
:try_end_72
.catch Ljava/io/IOException; {:try_start_6f .. :try_end_72} :catch_73
:cond_72
:goto_72
return-void
:catch_73
move-exception v0
const-string v0, "SecureX509TrustManager"
const-string v1, "close bks exception"
invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
goto :goto_72
:catch_7c
move-exception v1
const-string v1, "SecureX509TrustManager"
const-string v2, "close bks exception"
invoke-static {v1, v2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
goto :goto_6c
.end method
# virtual methods
.method public checkClientTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;)V
.registers 5
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/security/cert/CertificateException;
}
.end annotation
iget-object v0, p0, Lcom/huawei/updatesdk/sdk/a/b/c;->a:Ljava/util/ArrayList;
invoke-virtual {v0}, Ljava/util/ArrayList;->isEmpty()Z
move-result v0
if-nez v0, :cond_15
iget-object v0, p0, Lcom/huawei/updatesdk/sdk/a/b/c;->a:Ljava/util/ArrayList;
const/4 v1, 0x0
invoke-virtual {v0, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljavax/net/ssl/X509TrustManager;
invoke-interface {v0, p1, p2}, Ljavax/net/ssl/X509TrustManager;->checkClientTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;)V
return-void
:cond_15
new-instance v0, Ljava/security/cert/CertificateException;
const-string v1, "checkClientTrusted CertificateException"
invoke-direct {v0, v1}, Ljava/security/cert/CertificateException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;)V
.registers 5
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/security/cert/CertificateException;
}
.end annotation
iget-object v0, p0, Lcom/huawei/updatesdk/sdk/a/b/c;->a:Ljava/util/ArrayList;
invoke-virtual {v0}, Ljava/util/ArrayList;->isEmpty()Z
move-result v0
if-nez v0, :cond_15
iget-object v0, p0, Lcom/huawei/updatesdk/sdk/a/b/c;->a:Ljava/util/ArrayList;
const/4 v1, 0x0
invoke-virtual {v0, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljavax/net/ssl/X509TrustManager;
invoke-interface {v0, p1, p2}, Ljavax/net/ssl/X509TrustManager;->checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;)V
return-void
:cond_15
new-instance v0, Ljava/security/cert/CertificateException;
const-string v1, "checkServerTrusted CertificateException"
invoke-direct {v0, v1}, Ljava/security/cert/CertificateException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public getAcceptedIssuers()[Ljava/security/cert/X509Certificate;
.registers 4
new-instance v1, Ljava/util/ArrayList;
invoke-direct {v1}, Ljava/util/ArrayList;-><init>()V
iget-object v0, p0, Lcom/huawei/updatesdk/sdk/a/b/c;->a:Ljava/util/ArrayList;
invoke-virtual {v0}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
move-result-object v2
:goto_b
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_23
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljavax/net/ssl/X509TrustManager;
invoke-interface {v0}, Ljavax/net/ssl/X509TrustManager;->getAcceptedIssuers()[Ljava/security/cert/X509Certificate;
move-result-object v0
invoke-static {v0}, Ljava/util/Arrays;->asList([Ljava/lang/Object;)Ljava/util/List;
move-result-object v0
invoke-virtual {v1, v0}, Ljava/util/ArrayList;->addAll(Ljava/util/Collection;)Z
goto :goto_b
:cond_23
invoke-virtual {v1}, Ljava/util/ArrayList;->size()I
move-result v0
new-array v0, v0, [Ljava/security/cert/X509Certificate;
invoke-virtual {v1, v0}, Ljava/util/ArrayList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
move-result-object v0
check-cast v0, [Ljava/security/cert/X509Certificate;
return-object v0
.end method