d.smali
.class public Lcd/d;
.super Ljava/lang/Object;
.source "SecurityHelper.java"
# static fields
.field public static final a:[B
.field public static b:Ljavax/crypto/Cipher;
.field public static c:Ljavax/crypto/Cipher;
.field public static d:Ljavax/crypto/SecretKey;
# direct methods
.method public static constructor <clinit>()V
.registers 1
const-string v0, "0000000000000000"
invoke-virtual {v0}, Ljava/lang/String;->getBytes()[B
move-result-object v0
sput-object v0, Lcd/d;->a:[B
return-void
.end method
.method public static a()Ljavax/crypto/SecretKey;
.registers 6
sget-object v0, Lcd/d;->d:Ljavax/crypto/SecretKey;
if-nez v0, :cond_2d
:try_start_4
const-string v0, "AES"
invoke-static {v0}, Ljavax/crypto/KeyGenerator;->getInstance(Ljava/lang/String;)Ljavax/crypto/KeyGenerator;
move-result-object v0
new-instance v1, Ljava/security/SecureRandom;
invoke-direct {v1}, Ljava/security/SecureRandom;-><init>()V
new-instance v2, Ljava/util/Random;
invoke-direct {v2}, Ljava/util/Random;-><init>()V
const/16 v3, 0x80
invoke-virtual {v2, v3}, Ljava/util/Random;->nextInt(I)I
move-result v2
add-int/lit8 v2, v2, 0x1
int-to-long v4, v2
invoke-virtual {v1, v4, v5}, Ljava/security/SecureRandom;->setSeed(J)V
invoke-virtual {v0, v3, v1}, Ljavax/crypto/KeyGenerator;->init(ILjava/security/SecureRandom;)V
invoke-virtual {v0}, Ljavax/crypto/KeyGenerator;->generateKey()Ljavax/crypto/SecretKey;
move-result-object v0
sput-object v0, Lcd/d;->d:Ljavax/crypto/SecretKey;
:try_end_29
.catch Ljava/lang/Exception; {:try_start_4 .. :try_end_29} :catch_2a
goto :goto_2d
:catch_2a
const/4 v0, 0x0
sput-object v0, Lcd/d;->d:Ljavax/crypto/SecretKey;
:cond_2d
:goto_2d
sget-object v0, Lcd/d;->d:Ljavax/crypto/SecretKey;
return-object v0
.end method
.method public static a(Ljavax/crypto/SecretKey;[B)[B
.registers 6
const/4 v0, 0x0
new-array v0, v0, [B
new-instance v1, Ljavax/crypto/spec/IvParameterSpec;
sget-object v2, Lcd/d;->a:[B
invoke-direct {v1, v2}, Ljavax/crypto/spec/IvParameterSpec;-><init>([B)V
:try_start_a
sget-object v2, Lcd/d;->b:Ljavax/crypto/Cipher;
if-nez v2, :cond_1a
const-string v2, "AES/CBC/PKCS5PADDING"
invoke-static {v2}, Ljavax/crypto/Cipher;->getInstance(Ljava/lang/String;)Ljavax/crypto/Cipher;
move-result-object v2
sput-object v2, Lcd/d;->b:Ljavax/crypto/Cipher;
const/4 v3, 0x1
invoke-virtual {v2, v3, p0, v1}, Ljavax/crypto/Cipher;->init(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
:cond_1a
sget-object p0, Lcd/d;->b:Ljavax/crypto/Cipher;
invoke-virtual {p0, p1}, Ljavax/crypto/Cipher;->doFinal([B)[B
move-result-object v0
:try_end_20
.catch Ljava/lang/Exception; {:try_start_a .. :try_end_20} :catch_21
goto :goto_24
:catch_21
const/4 p0, 0x0
sput-object p0, Lcd/d;->b:Ljavax/crypto/Cipher;
:goto_24
return-object v0
.end method
.method public static a([B)[B
.registers 11
const/4 v0, 0x0
new-array v1, v0, [B
new-instance v2, Ljava/io/ByteArrayOutputStream;
invoke-direct {v2}, Ljava/io/ByteArrayOutputStream;-><init>()V
sget-object v3, Lcd/d;->c:Ljavax/crypto/Cipher;
const/4 v4, 0x1
const/4 v5, 0x0
if-nez v3, :cond_20
:try_start_e
const-string v3, "RSA/ECB/PKCS1Padding"
invoke-static {v3}, Ljavax/crypto/Cipher;->getInstance(Ljava/lang/String;)Ljavax/crypto/Cipher;
move-result-object v3
sput-object v3, Lcd/d;->c:Ljavax/crypto/Cipher;
invoke-static {}, Lcd/d;->b()Ljava/security/PublicKey;
move-result-object v6
invoke-virtual {v3, v4, v6}, Ljavax/crypto/Cipher;->init(ILjava/security/Key;)V
:try_end_1d
.catch Ljava/lang/Exception; {:try_start_e .. :try_end_1d} :catch_1e
goto :goto_20
:catch_1e
sput-object v5, Lcd/d;->c:Ljavax/crypto/Cipher;
:cond_20
:goto_20
:try_start_20
array-length v3, p0
const/4 v6, 0x0
const/4 v7, 0x0
:goto_23
sub-int v8, v3, v6
if-lez v8, :cond_40
const/16 v9, 0x75
if-le v8, v9, :cond_32
sget-object v8, Lcd/d;->c:Ljavax/crypto/Cipher;
invoke-virtual {v8, p0, v6, v9}, Ljavax/crypto/Cipher;->doFinal([BII)[B
move-result-object v6
goto :goto_38
:cond_32
sget-object v9, Lcd/d;->c:Ljavax/crypto/Cipher;
invoke-virtual {v9, p0, v6, v8}, Ljavax/crypto/Cipher;->doFinal([BII)[B
move-result-object v6
:goto_38
array-length v8, v6
invoke-virtual {v2, v6, v0, v8}, Ljava/io/ByteArrayOutputStream;->write([BII)V
add-int/2addr v7, v4
mul-int/lit8 v6, v7, 0x75
goto :goto_23
:cond_40
invoke-virtual {v2}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B
move-result-object v1
:try_end_44
.catch Ljava/lang/Exception; {:try_start_20 .. :try_end_44} :catch_4d
.catchall {:try_start_20 .. :try_end_44} :catchall_4b
:goto_44
:try_start_44
invoke-virtual {v2}, Ljava/io/ByteArrayOutputStream;->close()V
:try_end_47
.catch Ljava/lang/Exception; {:try_start_44 .. :try_end_47} :catch_48
goto :goto_50
:catch_48
sput-object v5, Lcd/d;->c:Ljavax/crypto/Cipher;
goto :goto_50
:catchall_4b
move-exception p0
goto :goto_51
:catch_4d
:try_start_4d
sput-object v5, Lcd/d;->c:Ljavax/crypto/Cipher;
:try_end_4f
.catchall {:try_start_4d .. :try_end_4f} :catchall_4b
goto :goto_44
:goto_50
return-object v1
:goto_51
:try_start_51
invoke-virtual {v2}, Ljava/io/ByteArrayOutputStream;->close()V
:try_end_54
.catch Ljava/lang/Exception; {:try_start_51 .. :try_end_54} :catch_55
goto :goto_57
:catch_55
sput-object v5, Lcd/d;->c:Ljavax/crypto/Cipher;
:goto_57
goto :goto_59
:goto_58
throw p0
:goto_59
goto :goto_58
.end method
.method public static b()Ljava/security/PublicKey;
.registers 2
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/security/spec/InvalidKeySpecException;,
Ljava/security/NoSuchAlgorithmException;
}
.end annotation
const-string v0, "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCsLUQ7epavzOIV23PDQYffX//p\n8kN7NVoKww/HgJgeUnn8TE4pUsOl5NPdKZvnZwFPqw1Q3kAc/nrm1rg5+0efPXu2\nxCs6O7gaVdNXx+Ct/6+P4BxstrUi1Y5pI5Rcx+1bdHdAMuyohBNLfInMtknoqo25\nSPX3LizS23HsbDt9JQIDAQAB"
invoke-static {v0}, Lcd/a;->a(Ljava/lang/String;)[B
move-result-object v0
new-instance v1, Ljava/security/spec/X509EncodedKeySpec;
invoke-direct {v1, v0}, Ljava/security/spec/X509EncodedKeySpec;-><init>([B)V
const-string v0, "RSA"
invoke-static {v0}, Ljava/security/KeyFactory;->getInstance(Ljava/lang/String;)Ljava/security/KeyFactory;
move-result-object v0
invoke-virtual {v0, v1}, Ljava/security/KeyFactory;->generatePublic(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;
move-result-object v0
return-object v0
.end method