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