EncryptionHelper.smali

.class public Lcom/github/kovmarci86/android/secure/preferences/encryption/EncryptionHelper;
.super Ljava/lang/Object;


# instance fields
.field private a:Lcom/github/kovmarci86/android/secure/preferences/encryption/EncryptionAlgorithm;


# direct methods
.method public constructor <init>(Lcom/github/kovmarci86/android/secure/preferences/encryption/EncryptionAlgorithm;)V
    .registers 2

    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    iput-object p1, p0, Lcom/github/kovmarci86/android/secure/preferences/encryption/EncryptionHelper;->a:Lcom/github/kovmarci86/android/secure/preferences/encryption/EncryptionAlgorithm;

    return-void
.end method

.method private a(Ljava/lang/String;)Ljava/io/ObjectInputStream;
    .registers 4
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/github/kovmarci86/android/secure/preferences/encryption/EncryptionException;
        }
    .end annotation

    const/4 v0, 0x0

    invoke-static {p1, v0}, Landroid/util/Base64;->decode(Ljava/lang/String;I)[B

    move-result-object p1

    iget-object v0, p0, Lcom/github/kovmarci86/android/secure/preferences/encryption/EncryptionHelper;->a:Lcom/github/kovmarci86/android/secure/preferences/encryption/EncryptionAlgorithm;

    invoke-interface {v0, p1}, Lcom/github/kovmarci86/android/secure/preferences/encryption/EncryptionAlgorithm;->b([B)[B

    move-result-object p1

    :try_start_b
    new-instance v0, Ljava/io/ObjectInputStream;

    new-instance v1, Ljava/io/ByteArrayInputStream;

    invoke-direct {v1, p1}, Ljava/io/ByteArrayInputStream;-><init>([B)V

    invoke-direct {v0, v1}, Ljava/io/ObjectInputStream;-><init>(Ljava/io/InputStream;)V
    :try_end_15
    .catch Ljava/io/IOException; {:try_start_b .. :try_end_15} :catch_16

    return-object v0

    :catch_16
    move-exception p1

    new-instance v0, Lcom/github/kovmarci86/android/secure/preferences/encryption/EncryptionException;

    invoke-direct {v0, p1}, Lcom/github/kovmarci86/android/secure/preferences/encryption/EncryptionException;-><init>(Ljava/lang/Throwable;)V

    throw v0
.end method

.method private d(Landroid/content/SharedPreferences;Ljava/lang/String;)Ljava/io/ObjectInputStream;
    .registers 6

    const/4 v0, 0x0

    invoke-interface {p1, p2, v0}, Landroid/content/SharedPreferences;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;

    move-result-object p1

    if-eqz p1, :cond_28

    :try_start_7
    invoke-direct {p0, p1}, Lcom/github/kovmarci86/android/secure/preferences/encryption/EncryptionHelper;->a(Ljava/lang/String;)Ljava/io/ObjectInputStream;

    move-result-object v0
    :try_end_b
    .catch Lcom/github/kovmarci86/android/secure/preferences/encryption/EncryptionException; {:try_start_7 .. :try_end_b} :catch_c

    goto :goto_28

    :catch_c
    move-exception p1

    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v2, "\"Error reading from properties. Key: {"

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string p2, "}"

    invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object p2

    const-string v1, "secure-prefs"

    invoke-static {v1, p2, p1}, Landroid/util/Log;->wtf(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I

    :cond_28
    :goto_28
    return-object v0
.end method


# virtual methods
.method public b(Ljava/lang/Object;)Ljava/lang/String;
    .registers 6
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "<T:",
            "Ljava/lang/Object;",
            ">(TT;)",
            "Ljava/lang/String;"
        }
    .end annotation

    const-string v0, "Error encoding value"

    const-string v1, "secure-prefs"

    if-eqz p1, :cond_2c

    :try_start_6
    new-instance v2, Ljava/io/ByteArrayOutputStream;

    invoke-direct {v2}, Ljava/io/ByteArrayOutputStream;-><init>()V

    new-instance v3, Ljava/io/ObjectOutputStream;

    invoke-direct {v3, v2}, Ljava/io/ObjectOutputStream;-><init>(Ljava/io/OutputStream;)V

    invoke-virtual {v3, p1}, Ljava/io/ObjectOutputStream;->writeObject(Ljava/lang/Object;)V

    invoke-virtual {v2}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B

    move-result-object p1

    iget-object v2, p0, Lcom/github/kovmarci86/android/secure/preferences/encryption/EncryptionHelper;->a:Lcom/github/kovmarci86/android/secure/preferences/encryption/EncryptionAlgorithm;

    invoke-interface {v2, p1}, Lcom/github/kovmarci86/android/secure/preferences/encryption/EncryptionAlgorithm;->a([B)[B

    move-result-object p1

    const/4 v2, 0x0

    invoke-static {p1, v2}, Landroid/util/Base64;->encodeToString([BI)Ljava/lang/String;

    move-result-object p1
    :try_end_22
    .catch Ljava/io/IOException; {:try_start_6 .. :try_end_22} :catch_28
    .catch Lcom/github/kovmarci86/android/secure/preferences/encryption/EncryptionException; {:try_start_6 .. :try_end_22} :catch_23

    goto :goto_2d

    :catch_23
    move-exception p1

    invoke-static {v1, v0, p1}, Landroid/util/Log;->wtf(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I

    goto :goto_2c

    :catch_28
    move-exception p1

    invoke-static {v1, v0, p1}, Landroid/util/Log;->wtf(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I

    :cond_2c
    :goto_2c
    const/4 p1, 0x0

    :goto_2d
    return-object p1
.end method

.method public c(Landroid/content/SharedPreferences;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
    .registers 8
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "<T:",
            "Ljava/lang/Object;",
            ">(",
            "Landroid/content/SharedPreferences;",
            "Ljava/lang/String;",
            "TT;)TT;"
        }
    .end annotation

    const-string v0, "}"

    const-string v1, "Error reading value by key: {"

    const-string v2, "secure-prefs"

    invoke-direct {p0, p1, p2}, Lcom/github/kovmarci86/android/secure/preferences/encryption/EncryptionHelper;->d(Landroid/content/SharedPreferences;Ljava/lang/String;)Ljava/io/ObjectInputStream;

    move-result-object p1

    if-eqz p1, :cond_3e

    :try_start_c
    invoke-virtual {p1}, Ljava/io/ObjectInputStream;->readObject()Ljava/lang/Object;

    move-result-object p3
    :try_end_10
    .catch Ljava/io/IOException; {:try_start_c .. :try_end_10} :catch_28
    .catch Ljava/lang/ClassNotFoundException; {:try_start_c .. :try_end_10} :catch_11

    goto :goto_3e

    :catch_11
    move-exception p1

    new-instance v3, Ljava/lang/StringBuilder;

    invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v3, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object p2

    invoke-static {v2, p2, p1}, Landroid/util/Log;->wtf(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I

    goto :goto_3e

    :catch_28
    move-exception p1

    new-instance v3, Ljava/lang/StringBuilder;

    invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v3, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object p2

    invoke-static {v2, p2, p1}, Landroid/util/Log;->wtf(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I

    :cond_3e
    :goto_3e
    return-object p3
.end method