AndroidKeyStore.smali
.class public Laegon/chrome/net/AndroidKeyStore;
.super Ljava/lang/Object;
# annotations
.annotation runtime Laegon/chrome/base/annotations/JNINamespace;
value = "net::android"
.end annotation
# static fields
.field private static final TAG:Ljava/lang/String; = "AndroidKeyStore"
# direct methods
.method public constructor <init>()V
.registers 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method private static encryptWithPrivateKey(Ljava/security/PrivateKey;Ljava/lang/String;[B)[B
.registers 9
.annotation build Laegon/chrome/base/annotations/CalledByNative;
.end annotation
const/4 v1, 0x0
const/4 v5, 0x0
:try_start_2
invoke-static {p1}, Ljavax/crypto/Cipher;->getInstance(Ljava/lang/String;)Ljavax/crypto/Cipher;
:try_end_5
.catch Ljava/security/NoSuchAlgorithmException; {:try_start_2 .. :try_end_5} :catch_f
.catch Ljavax/crypto/NoSuchPaddingException; {:try_start_2 .. :try_end_5} :catch_7d
move-result-object v0
const/4 v2, 0x1
:try_start_7
invoke-virtual {v0, v2, p0}, Ljavax/crypto/Cipher;->init(ILjava/security/Key;)V
invoke-virtual {v0, p2}, Ljavax/crypto/Cipher;->doFinal([B)[B
:try_end_d
.catch Ljava/lang/Exception; {:try_start_7 .. :try_end_d} :catch_36
move-result-object v0
:goto_e
return-object v0
:catch_f
move-exception v0
:goto_10
const-string v2, "AndroidKeyStore"
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
const-string v4, "Cipher "
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
const-string v4, " not supported: "
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
new-array v3, v5, [Ljava/lang/Object;
invoke-static {v2, v0, v3}, Laegon/chrome/base/Log;->e(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
move-object v0, v1
goto :goto_e
:catch_36
move-exception v0
const-string v2, "AndroidKeyStore"
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
const-string v4, "Exception while encrypting input with "
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
const-string v4, " and "
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-interface {p0}, Ljava/security/PrivateKey;->getAlgorithm()Ljava/lang/String;
move-result-object v4
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
const-string v4, " private key ("
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {p0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v4
invoke-virtual {v4}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v4
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
const-string v4, "): "
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
new-array v3, v5, [Ljava/lang/Object;
invoke-static {v2, v0, v3}, Laegon/chrome/base/Log;->e(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
move-object v0, v1
goto :goto_e
:catch_7d
move-exception v0
goto :goto_10
.end method
.method private static getPrivateKeyClassName(Ljava/security/PrivateKey;)Ljava/lang/String;
.registers 2
.annotation build Laegon/chrome/base/annotations/CalledByNative;
.end annotation
invoke-virtual {p0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v0
return-object v0
.end method
.method private static privateKeySupportsCipher(Ljava/security/PrivateKey;Ljava/lang/String;)Z
.registers 7
.annotation build Laegon/chrome/base/annotations/CalledByNative;
.end annotation
const/4 v0, 0x1
const/4 v1, 0x0
:try_start_2
invoke-static {p1}, Ljavax/crypto/Cipher;->getInstance(Ljava/lang/String;)Ljavax/crypto/Cipher;
move-result-object v2
const/4 v3, 0x1
invoke-virtual {v2, v3, p0}, Ljavax/crypto/Cipher;->init(ILjava/security/Key;)V
:try_end_a
.catch Ljava/security/NoSuchAlgorithmException; {:try_start_2 .. :try_end_a} :catch_b
.catch Ljavax/crypto/NoSuchPaddingException; {:try_start_2 .. :try_end_a} :catch_35
.catch Ljava/security/InvalidKeyException; {:try_start_2 .. :try_end_a} :catch_37
.catch Ljava/lang/Exception; {:try_start_2 .. :try_end_a} :catch_e
:goto_a
return v0
:catch_b
move-exception v0
:goto_c
move v0, v1
goto :goto_a
:catch_e
move-exception v0
const-string v2, "AndroidKeyStore"
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
const-string v4, "Exception while checking support for "
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
const-string v4, ": "
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
new-array v3, v1, [Ljava/lang/Object;
invoke-static {v2, v0, v3}, Laegon/chrome/base/Log;->e(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
move v0, v1
goto :goto_a
:catch_35
move-exception v0
goto :goto_c
:catch_37
move-exception v0
goto :goto_c
.end method
.method private static privateKeySupportsSignature(Ljava/security/PrivateKey;Ljava/lang/String;)Z
.registers 7
.annotation build Laegon/chrome/base/annotations/CalledByNative;
.end annotation
const/4 v0, 0x0
:try_start_1
invoke-static {p1}, Ljava/security/Signature;->getInstance(Ljava/lang/String;)Ljava/security/Signature;
move-result-object v1
invoke-virtual {v1, p0}, Ljava/security/Signature;->initSign(Ljava/security/PrivateKey;)V
:try_end_8
.catch Ljava/security/NoSuchAlgorithmException; {:try_start_1 .. :try_end_8} :catch_30
.catch Ljava/security/InvalidKeyException; {:try_start_1 .. :try_end_8} :catch_32
.catch Ljava/lang/Exception; {:try_start_1 .. :try_end_8} :catch_a
const/4 v0, 0x1
:goto_9
return v0
:catch_a
move-exception v1
const-string v2, "AndroidKeyStore"
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
const-string v4, "Exception while checking support for "
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
const-string v4, ": "
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v3, 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
new-array v3, v0, [Ljava/lang/Object;
invoke-static {v2, v1, v3}, Laegon/chrome/base/Log;->e(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
goto :goto_9
:catch_30
move-exception v1
goto :goto_9
:catch_32
move-exception v1
goto :goto_9
.end method
.method private static signWithPrivateKey(Ljava/security/PrivateKey;Ljava/lang/String;[B)[B
.registers 9
.annotation build Laegon/chrome/base/annotations/CalledByNative;
.end annotation
const/4 v0, 0x0
const/4 v5, 0x0
:try_start_2
invoke-static {p1}, Ljava/security/Signature;->getInstance(Ljava/lang/String;)Ljava/security/Signature;
:try_end_5
.catch Ljava/security/NoSuchAlgorithmException; {:try_start_2 .. :try_end_5} :catch_11
move-result-object v1
:try_start_6
invoke-virtual {v1, p0}, Ljava/security/Signature;->initSign(Ljava/security/PrivateKey;)V
invoke-virtual {v1, p2}, Ljava/security/Signature;->update([B)V
invoke-virtual {v1}, Ljava/security/Signature;->sign()[B
:try_end_f
.catch Ljava/lang/Exception; {:try_start_6 .. :try_end_f} :catch_37
move-result-object v0
:goto_10
return-object v0
:catch_11
move-exception v1
const-string v2, "AndroidKeyStore"
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
const-string v4, "Signature algorithm "
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
const-string v4, " not supported: "
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v3, 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
new-array v3, v5, [Ljava/lang/Object;
invoke-static {v2, v1, v3}, Laegon/chrome/base/Log;->e(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
goto :goto_10
:catch_37
move-exception v1
const-string v2, "AndroidKeyStore"
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
const-string v4, "Exception while signing message with "
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
const-string v4, " and "
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-interface {p0}, Ljava/security/PrivateKey;->getAlgorithm()Ljava/lang/String;
move-result-object v4
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
const-string v4, " private key ("
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {p0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v4
invoke-virtual {v4}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v4
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
const-string v4, "): "
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v3, 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
new-array v3, v5, [Ljava/lang/Object;
invoke-static {v2, v1, v3}, Laegon/chrome/base/Log;->e(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
goto :goto_10
.end method