SymKeyUtility.smali
.class public Lcom/avast/crypto/SymKeyUtility;
.super Ljava/lang/Object;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/avast/crypto/SymKeyUtility$KeyLen;
}
.end annotation
# direct methods
.method public static a([B[BJLjavax/crypto/Mac;)[B
.registers 6
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/avast/crypto/KeyUtilityException;
}
.end annotation
array-length v0, p0
:try_start_1
invoke-static {p1, p2, p3, p4}, Lcom/avast/crypto/SymKeyUtility;->b([BJLjavax/crypto/Mac;)[B
move-result-object p1
new-array p2, v0, [B
array-length p3, p0
invoke-static {p1, p0, p3, p2}, Lcom/avast/crypto/PayloadCipher;->b([B[BI[B)I
move-result p0
new-array p1, p0, [B
const/4 p3, 0x0
invoke-static {p2, p3, p1, p3, p0}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
:try_end_12
.catch Lcom/avast/crypto/PayloadException; {:try_start_1 .. :try_end_12} :catch_13
return-object p1
:catch_13
move-exception p0
new-instance p1, Lcom/avast/crypto/KeyUtilityException;
invoke-direct {p1, p0}, Lcom/avast/crypto/KeyUtilityException;-><init>(Ljava/lang/Exception;)V
throw p1
.end method
.method public static b([BJLjavax/crypto/Mac;)[B
.registers 5
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/avast/crypto/KeyUtilityException;
}
.end annotation
new-instance v0, Lcom/avast/crypto/HKDF;
invoke-direct {v0, p3}, Lcom/avast/crypto/HKDF;-><init>(Ljavax/crypto/Mac;)V
:try_start_5
invoke-static {p1, p2}, Lcom/avast/crypto/Utility;->a(J)[B
move-result-object p1
invoke-virtual {v0, p1, p0}, Lcom/avast/crypto/HKDF;->b([B[B)[B
move-result-object p1
const-string p2, ""
invoke-virtual {p2}, Ljava/lang/String;->getBytes()[B
move-result-object p2
array-length p0, p0
invoke-virtual {v0, p1, p2, p0}, Lcom/avast/crypto/HKDF;->a([B[BI)[B
move-result-object p0
:try_end_18
.catch Ljava/io/IOException; {:try_start_5 .. :try_end_18} :catch_27
.catch Ljava/security/InvalidKeyException; {:try_start_5 .. :try_end_18} :catch_20
.catch Ljava/security/NoSuchAlgorithmException; {:try_start_5 .. :try_end_18} :catch_19
return-object p0
:catch_19
move-exception p0
new-instance p1, Lcom/avast/crypto/KeyUtilityException;
invoke-direct {p1, p0}, Lcom/avast/crypto/KeyUtilityException;-><init>(Ljava/lang/Exception;)V
throw p1
:catch_20
move-exception p0
new-instance p1, Lcom/avast/crypto/KeyUtilityException;
invoke-direct {p1, p0}, Lcom/avast/crypto/KeyUtilityException;-><init>(Ljava/lang/Exception;)V
throw p1
:catch_27
move-exception p0
new-instance p1, Lcom/avast/crypto/KeyUtilityException;
invoke-direct {p1, p0}, Lcom/avast/crypto/KeyUtilityException;-><init>(Ljava/lang/Exception;)V
throw p1
.end method
.method public static c([B[BJLjavax/crypto/Mac;)[B
.registers 5
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/avast/crypto/KeyUtilityException;
}
.end annotation
:try_start_0
invoke-static {p1, p2, p3, p4}, Lcom/avast/crypto/SymKeyUtility;->b([BJLjavax/crypto/Mac;)[B
move-result-object p1
array-length p2, p0
const/4 p3, 0x0
invoke-static {p1, p0, p2, p3}, Lcom/avast/crypto/PayloadCipher;->d([B[BI[B)I
move-result p2
new-array p2, p2, [B
array-length p3, p0
invoke-static {p1, p0, p3, p2}, Lcom/avast/crypto/PayloadCipher;->d([B[BI[B)I
:try_end_10
.catch Lcom/avast/crypto/PayloadException; {:try_start_0 .. :try_end_10} :catch_11
return-object p2
:catch_11
move-exception p0
new-instance p1, Lcom/avast/crypto/KeyUtilityException;
invoke-direct {p1, p0}, Lcom/avast/crypto/KeyUtilityException;-><init>(Ljava/lang/Exception;)V
throw p1
.end method
.method public static d()[B
.registers 2
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/avast/crypto/KeyUtilityException;
}
.end annotation
:try_start_0
sget-object v0, Lcom/avast/crypto/SymKeyUtility$KeyLen;->h:Lcom/avast/crypto/SymKeyUtility$KeyLen;
invoke-static {v0}, Lcom/avast/crypto/SymKeyUtility;->e(Lcom/avast/crypto/SymKeyUtility$KeyLen;)[B
move-result-object v0
:try_end_6
.catch Ljava/security/NoSuchAlgorithmException; {:try_start_0 .. :try_end_6} :catch_7
return-object v0
:catch_7
move-exception v0
new-instance v1, Lcom/avast/crypto/KeyUtilityException;
invoke-direct {v1, v0}, Lcom/avast/crypto/KeyUtilityException;-><init>(Ljava/lang/Exception;)V
throw v1
.end method
.method static e(Lcom/avast/crypto/SymKeyUtility$KeyLen;)[B
.registers 3
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/security/NoSuchAlgorithmException;
}
.end annotation
const-string v0, "AES"
invoke-static {v0}, Ljavax/crypto/KeyGenerator;->getInstance(Ljava/lang/String;)Ljavax/crypto/KeyGenerator;
move-result-object v0
const-string v1, "SHA1PRNG"
invoke-static {v1}, Ljava/security/SecureRandom;->getInstance(Ljava/lang/String;)Ljava/security/SecureRandom;
move-result-object v1
invoke-virtual {p0}, Lcom/avast/crypto/SymKeyUtility$KeyLen;->f()I
move-result p0
invoke-virtual {v0, p0, v1}, Ljavax/crypto/KeyGenerator;->init(ILjava/security/SecureRandom;)V
invoke-virtual {v0}, Ljavax/crypto/KeyGenerator;->generateKey()Ljavax/crypto/SecretKey;
move-result-object p0
invoke-interface {p0}, Ljavax/crypto/SecretKey;->getEncoded()[B
move-result-object p0
return-object p0
.end method