i.smali
.class public final Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/crypto/i;
.super Ljava/lang/Object;
.source "PBKDF2SHA512.java"
# direct methods
.method private static c(Ljava/lang/String;Ljava/lang/String;I)[B
.registers 11
.prologue
const/4 v0, 0x0
const/4 v3, 0x0
.line 71
.line 74
new-instance v1, Ljavax/crypto/spec/SecretKeySpec;
const-string v2, "UTF-8"
invoke-virtual {p0, v2}, Ljava/lang/String;->getBytes(Ljava/lang/String;)[B
move-result-object v2
const-string v4, "HmacSHA512"
invoke-direct {v1, v2, v4}, Ljavax/crypto/spec/SecretKeySpec;-><init>([BLjava/lang/String;)V
.line 75
invoke-virtual {v1}, Ljavax/crypto/spec/SecretKeySpec;->getAlgorithm()Ljava/lang/String;
move-result-object v2
invoke-static {v2}, Ljavax/crypto/Mac;->getInstance(Ljava/lang/String;)Ljavax/crypto/Mac;
move-result-object v5
.line 76
invoke-virtual {v5, v1}, Ljavax/crypto/Mac;->init(Ljava/security/Key;)V
move-object v1, v0
move v4, v3
.line 78
:goto_1c
const/16 v2, 0x800
if-ge v4, v2, :cond_69
.line 79
if-nez v4, :cond_53
.line 80
const-string v0, "UTF-8"
invoke-virtual {p1, v0}, Ljava/lang/String;->getBytes(Ljava/lang/String;)[B
move-result-object v0
.line 1106
const/4 v1, 0x4
invoke-static {v1}, Ljava/nio/ByteBuffer;->allocate(I)Ljava/nio/ByteBuffer;
move-result-object v1
.line 1107
sget-object v2, Ljava/nio/ByteOrder;->BIG_ENDIAN:Ljava/nio/ByteOrder;
invoke-virtual {v1, v2}, Ljava/nio/ByteBuffer;->order(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;
.line 1108
invoke-virtual {v1, p2}, Ljava/nio/ByteBuffer;->putInt(I)Ljava/nio/ByteBuffer;
.line 1110
invoke-virtual {v1}, Ljava/nio/ByteBuffer;->array()[B
move-result-object v1
.line 82
array-length v2, v0
array-length v6, v1
add-int/2addr v2, v6
new-array v2, v2, [B
.line 84
array-length v6, v0
invoke-static {v0, v3, v2, v3, v6}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 85
array-length v0, v0
array-length v6, v1
invoke-static {v1, v3, v2, v0, v6}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 87
invoke-virtual {v5, v2}, Ljavax/crypto/Mac;->doFinal([B)[B
move-result-object v0
.line 89
invoke-virtual {v5}, Ljavax/crypto/Mac;->reset()V
move-object v1, v0
.line 78
:cond_4f
add-int/lit8 v2, v4, 0x1
move v4, v2
goto :goto_1c
.line 91
:cond_53
invoke-virtual {v5, v1}, Ljavax/crypto/Mac;->doFinal([B)[B
move-result-object v1
.line 92
invoke-virtual {v5}, Ljavax/crypto/Mac;->reset()V
move v2, v3
.line 94
:goto_5b
array-length v6, v0
if-ge v2, v6, :cond_4f
.line 95
aget-byte v6, v0, v2
aget-byte v7, v1, v2
xor-int/2addr v6, v7
int-to-byte v6, v6
aput-byte v6, v0, v2
.line 94
add-int/lit8 v2, v2, 0x1
goto :goto_5b
.line 102
:cond_69
return-object v0
.end method
.method public static q(Ljava/lang/String;Ljava/lang/String;)[B
.registers 12
.prologue
const/16 v9, 0x40
const/4 v8, 0x0
.line 44
new-instance v1, Ljava/io/ByteArrayOutputStream;
invoke-direct {v1}, Ljava/io/ByteArrayOutputStream;-><init>()V
.line 49
const-wide/high16 v2, 0x4050000000000000L # 64.0
const-wide/high16 v4, 0x4000000000000000L # 2.0
const-wide/high16 v6, 0x4040000000000000L # 32.0
:try_start_e
invoke-static {v4, v5, v6, v7}, Ljava/lang/Math;->pow(DD)D
move-result-wide v4
const-wide/high16 v6, 0x3ff0000000000000L # 1.0
sub-double/2addr v4, v6
const-wide/high16 v6, 0x4034000000000000L # 20.0
mul-double/2addr v4, v6
cmpl-double v0, v2, v4
if-lez v0, :cond_2b
.line 50
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "derived key too long"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
:try_end_24
.catch Ljava/lang/Exception; {:try_start_e .. :try_end_24} :catch_24
.line 60
:catch_24
move-exception v0
.line 61
new-instance v1, Ljava/lang/RuntimeException;
invoke-direct {v1, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V
throw v1
.line 52
:cond_2b
const-wide v2, 0x400999999999999aL # 3.2
:try_start_30
invoke-static {v2, v3}, Ljava/lang/Math;->ceil(D)D
move-result-wide v2
double-to-int v2, v2
.line 55
const/4 v0, 0x1
:goto_36
if-gt v0, v2, :cond_42
.line 56
invoke-static {p0, p1, v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/crypto/i;->c(Ljava/lang/String;Ljava/lang/String;I)[B
move-result-object v3
.line 57
invoke-virtual {v1, v3}, Ljava/io/ByteArrayOutputStream;->write([B)V
:try_end_3f
.catch Ljava/lang/Exception; {:try_start_30 .. :try_end_3f} :catch_24
.line 55
add-int/lit8 v0, v0, 0x1
goto :goto_36
.line 64
:cond_42
new-array v0, v9, [B
.line 65
invoke-virtual {v1}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B
move-result-object v1
invoke-static {v1, v8, v0, v8, v9}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 67
return-object v0
.end method