a.smali
.class public final Lcom/lambdaworks/crypto/a;
.super Ljava/lang/Object;
.source "PBKDF.java"
# direct methods
.method public static a(Ljavax/crypto/Mac;[B[BI)V
.registers 15
.prologue
const/4 v10, 0x0
.line 50
invoke-virtual {p0}, Ljavax/crypto/Mac;->getMacLength()I
move-result v2
.line 52
int-to-double v0, p3
const-wide/high16 v4, 0x4000000000000000L # 2.0
const-wide/high16 v6, 0x4040000000000000L # 32.0
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
int-to-double v6, v2
mul-double/2addr v4, v6
cmpl-double v0, v0, v4
if-lez v0, :cond_1f
.line 53
new-instance v0, Ljava/security/GeneralSecurityException;
const-string v1, "Requested key length too long"
invoke-direct {v0, v1}, Ljava/security/GeneralSecurityException;-><init>(Ljava/lang/String;)V
throw v0
.line 56
:cond_1f
new-array v4, v2, [B
.line 57
new-array v5, v2, [B
.line 58
array-length v0, p1
add-int/lit8 v0, v0, 0x4
new-array v6, v0, [B
.line 60
int-to-double v0, p3
int-to-double v8, v2
div-double/2addr v0, v8
invoke-static {v0, v1}, Ljava/lang/Math;->ceil(D)D
move-result-wide v0
double-to-int v7, v0
.line 61
add-int/lit8 v0, v7, -0x1
mul-int/2addr v0, v2
sub-int v1, p3, v0
.line 63
array-length v0, p1
invoke-static {p1, v10, v6, v10, v0}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 65
const/4 v0, 0x1
move v3, v0
:goto_3b
if-gt v3, v7, :cond_71
.line 66
array-length v0, p1
shr-int/lit8 v8, v3, 0x18
aput-byte v8, v6, v0
.line 67
array-length v0, p1
add-int/lit8 v0, v0, 0x1
shr-int/lit8 v8, v3, 0x10
int-to-byte v8, v8
aput-byte v8, v6, v0
.line 68
array-length v0, p1
add-int/lit8 v0, v0, 0x2
shr-int/lit8 v8, v3, 0x8
int-to-byte v8, v8
aput-byte v8, v6, v0
.line 69
array-length v0, p1
add-int/lit8 v0, v0, 0x3
int-to-byte v8, v3
aput-byte v8, v6, v0
.line 71
invoke-virtual {p0, v6}, Ljavax/crypto/Mac;->update([B)V
.line 72
invoke-virtual {p0, v4, v10}, Ljavax/crypto/Mac;->doFinal([BI)V
.line 73
invoke-static {v4, v10, v5, v10, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 84
add-int/lit8 v0, v3, -0x1
mul-int v8, v0, v2
if-ne v3, v7, :cond_6f
move v0, v1
:goto_68
invoke-static {v5, v10, p2, v8, v0}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 65
add-int/lit8 v0, v3, 0x1
move v3, v0
goto :goto_3b
:cond_6f
move v0, v2
.line 84
goto :goto_68
.line 86
:cond_71
return-void
.end method