KeyManagerFactoryImpl.smali
.class public Lorg/conscrypt/KeyManagerFactoryImpl;
.super Ljavax/net/ssl/KeyManagerFactorySpi;
.source ""
# instance fields
.field private keyStore:Ljava/security/KeyStore;
.field private pwd:[C
# direct methods
.method public constructor <init>()V
.registers 1
invoke-direct {p0}, Ljavax/net/ssl/KeyManagerFactorySpi;-><init>()V
return-void
.end method
# virtual methods
.method protected engineGetKeyManagers()[Ljavax/net/ssl/KeyManager;
.registers 6
iget-object v0, p0, Lorg/conscrypt/KeyManagerFactoryImpl;->keyStore:Ljava/security/KeyStore;
if-eqz v0, :cond_14
const/4 v0, 0x1
new-array v0, v0, [Ljavax/net/ssl/KeyManager;
const/4 v1, 0x0
new-instance v2, Lorg/conscrypt/KeyManagerImpl;
iget-object v3, p0, Lorg/conscrypt/KeyManagerFactoryImpl;->keyStore:Ljava/security/KeyStore;
iget-object v4, p0, Lorg/conscrypt/KeyManagerFactoryImpl;->pwd:[C
invoke-direct {v2, v3, v4}, Lorg/conscrypt/KeyManagerImpl;-><init>(Ljava/security/KeyStore;[C)V
aput-object v2, v0, v1
return-object v0
:cond_14
new-instance v0, Ljava/lang/IllegalStateException;
const-string v1, "KeyManagerFactory is not initialized"
invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method protected engineInit(Ljava/security/KeyStore;[C)V
.registers 5
if-eqz p1, :cond_16
iput-object p1, p0, Lorg/conscrypt/KeyManagerFactoryImpl;->keyStore:Ljava/security/KeyStore;
if-eqz p2, :cond_10
invoke-virtual {p2}, [C->clone()Ljava/lang/Object;
move-result-object p1
check-cast p1, [C
iput-object p1, p0, Lorg/conscrypt/KeyManagerFactoryImpl;->pwd:[C
goto/16 :goto_8c
:cond_10
sget-object p1, Lorg/conscrypt/EmptyArray;->CHAR:[C
iput-object p1, p0, Lorg/conscrypt/KeyManagerFactoryImpl;->pwd:[C
goto/16 :goto_8c
:cond_16
invoke-static {}, Ljava/security/KeyStore;->getDefaultType()Ljava/lang/String;
move-result-object p1
invoke-static {p1}, Ljava/security/KeyStore;->getInstance(Ljava/lang/String;)Ljava/security/KeyStore;
move-result-object p1
iput-object p1, p0, Lorg/conscrypt/KeyManagerFactoryImpl;->keyStore:Ljava/security/KeyStore;
const-string p1, "javax.net.ssl.keyStore"
invoke-static {p1}, Ljava/lang/System;->getProperty(Ljava/lang/String;)Ljava/lang/String;
move-result-object p1
const/4 p2, 0x0
if-eqz p1, :cond_87
const-string v0, "NONE"
invoke-virtual {p1, v0}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
move-result v0
if-nez v0, :cond_87
invoke-virtual {p1}, Ljava/lang/String;->isEmpty()Z
move-result v0
if-eqz v0, :cond_38
goto :goto_87
:cond_38
const-string v0, "javax.net.ssl.keyStorePassword"
invoke-static {v0}, Ljava/lang/System;->getProperty(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
if-nez v0, :cond_45
sget-object v0, Lorg/conscrypt/EmptyArray;->CHAR:[C
iput-object v0, p0, Lorg/conscrypt/KeyManagerFactoryImpl;->pwd:[C
goto :goto_4b
:cond_45
invoke-virtual {v0}, Ljava/lang/String;->toCharArray()[C
move-result-object v0
iput-object v0, p0, Lorg/conscrypt/KeyManagerFactoryImpl;->pwd:[C
:goto_4b
:try_start_4b
new-instance v0, Ljava/io/FileInputStream;
new-instance v1, Ljava/io/File;
invoke-direct {v1, p1}, Ljava/io/File;-><init>(Ljava/lang/String;)V
invoke-direct {v0, v1}, Ljava/io/FileInputStream;-><init>(Ljava/io/File;)V
:try_end_55
.catch Ljava/io/FileNotFoundException; {:try_start_4b .. :try_end_55} :catch_7c
.catch Ljava/io/IOException; {:try_start_4b .. :try_end_55} :catch_75
.catch Ljava/security/cert/CertificateException; {:try_start_4b .. :try_end_55} :catch_6e
.catchall {:try_start_4b .. :try_end_55} :catchall_6c
:try_start_55
iget-object p1, p0, Lorg/conscrypt/KeyManagerFactoryImpl;->keyStore:Ljava/security/KeyStore;
iget-object p2, p0, Lorg/conscrypt/KeyManagerFactoryImpl;->pwd:[C
invoke-virtual {p1, v0, p2}, Ljava/security/KeyStore;->load(Ljava/io/InputStream;[C)V
:try_end_5c
.catch Ljava/io/FileNotFoundException; {:try_start_55 .. :try_end_5c} :catch_69
.catch Ljava/io/IOException; {:try_start_55 .. :try_end_5c} :catch_66
.catch Ljava/security/cert/CertificateException; {:try_start_55 .. :try_end_5c} :catch_63
.catchall {:try_start_55 .. :try_end_5c} :catchall_60
invoke-static {v0}, Lorg/conscrypt/io/IoUtils;->closeQuietly(Ljava/io/Closeable;)V
goto :goto_8c
:catchall_60
move-exception p1
move-object p2, v0
goto :goto_83
:catch_63
move-exception p1
move-object p2, v0
goto :goto_6f
:catch_66
move-exception p1
move-object p2, v0
goto :goto_76
:catch_69
move-exception p1
move-object p2, v0
goto :goto_7d
:catchall_6c
move-exception p1
goto :goto_83
:catch_6e
move-exception p1
:goto_6f
:try_start_6f
new-instance v0, Ljava/security/KeyStoreException;
invoke-direct {v0, p1}, Ljava/security/KeyStoreException;-><init>(Ljava/lang/Throwable;)V
throw v0
:catch_75
move-exception p1
:goto_76
new-instance v0, Ljava/security/KeyStoreException;
invoke-direct {v0, p1}, Ljava/security/KeyStoreException;-><init>(Ljava/lang/Throwable;)V
throw v0
:catch_7c
move-exception p1
:goto_7d
new-instance v0, Ljava/security/KeyStoreException;
invoke-direct {v0, p1}, Ljava/security/KeyStoreException;-><init>(Ljava/lang/Throwable;)V
throw v0
:try_end_83
.catchall {:try_start_6f .. :try_end_83} :catchall_6c
:goto_83
invoke-static {p2}, Lorg/conscrypt/io/IoUtils;->closeQuietly(Ljava/io/Closeable;)V
throw p1
:cond_87
:goto_87
:try_start_87
iget-object p1, p0, Lorg/conscrypt/KeyManagerFactoryImpl;->keyStore:Ljava/security/KeyStore;
invoke-virtual {p1, p2, p2}, Ljava/security/KeyStore;->load(Ljava/io/InputStream;[C)V
:try_end_8c
.catch Ljava/io/IOException; {:try_start_87 .. :try_end_8c} :catch_94
.catch Ljava/security/cert/CertificateException; {:try_start_87 .. :try_end_8c} :catch_8d
:goto_8c
return-void
:catch_8d
move-exception p1
new-instance p2, Ljava/security/KeyStoreException;
invoke-direct {p2, p1}, Ljava/security/KeyStoreException;-><init>(Ljava/lang/Throwable;)V
throw p2
:catch_94
move-exception p1
new-instance p2, Ljava/security/KeyStoreException;
invoke-direct {p2, p1}, Ljava/security/KeyStoreException;-><init>(Ljava/lang/Throwable;)V
throw p2
.end method
.method protected engineInit(Ljavax/net/ssl/ManagerFactoryParameters;)V
.registers 3
new-instance p1, Ljava/security/InvalidAlgorithmParameterException;
const-string v0, "ManagerFactoryParameters not supported"
invoke-direct {p1, v0}, Ljava/security/InvalidAlgorithmParameterException;-><init>(Ljava/lang/String;)V
throw p1
.end method