DESedeKeyGenerator.smali
.class public Lorg/spongycastle/crypto/generators/DESedeKeyGenerator;
.super Lorg/spongycastle/crypto/generators/DESKeyGenerator;
.source "DESedeKeyGenerator.java"
# static fields
.field private static final MAX_IT:I = 0x14
# direct methods
.method public constructor <init>()V
.registers 1
.prologue
.line 6
invoke-direct {p0}, Lorg/spongycastle/crypto/generators/DESKeyGenerator;-><init>()V
return-void
.end method
# virtual methods
.method public generateKey()[B
.registers 5
.prologue
const/4 v1, 0x0
.line 46
iget v0, p0, Lorg/spongycastle/crypto/generators/DESedeKeyGenerator;->strength:I
new-array v2, v0, [B
move v0, v1
.line 51
:cond_6
iget-object v3, p0, Lorg/spongycastle/crypto/generators/DESedeKeyGenerator;->random:Ljava/security/SecureRandom;
invoke-virtual {v3, v2}, Ljava/security/SecureRandom;->nextBytes([B)V
.line 53
invoke-static {v2}, Lorg/spongycastle/crypto/params/DESedeParameters;->setOddParity([B)V
.line 55
add-int/lit8 v0, v0, 0x1
const/16 v3, 0x14
if-ge v0, v3, :cond_21
array-length v3, v2
invoke-static {v2, v1, v3}, Lorg/spongycastle/crypto/params/DESedeParameters;->isWeakKey([BII)Z
move-result v3
if-nez v3, :cond_6
invoke-static {v2, v1}, Lorg/spongycastle/crypto/params/DESedeParameters;->isRealEDEKey([BI)Z
move-result v3
if-eqz v3, :cond_6
.line 57
:cond_21
array-length v0, v2
invoke-static {v2, v1, v0}, Lorg/spongycastle/crypto/params/DESedeParameters;->isWeakKey([BII)Z
move-result v0
if-nez v0, :cond_2e
invoke-static {v2, v1}, Lorg/spongycastle/crypto/params/DESedeParameters;->isRealEDEKey([BI)Z
move-result v0
if-nez v0, :cond_36
.line 59
:cond_2e
new-instance v0, Ljava/lang/IllegalStateException;
const-string v1, "Unable to generate DES-EDE key"
invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v0
.line 62
:cond_36
return-object v2
.end method
.method public init(Lorg/spongycastle/crypto/KeyGenerationParameters;)V
.registers 6
.prologue
const/16 v3, 0x18
const/16 v2, 0x10
.line 23
invoke-virtual {p1}, Lorg/spongycastle/crypto/KeyGenerationParameters;->getRandom()Ljava/security/SecureRandom;
move-result-object v0
iput-object v0, p0, Lorg/spongycastle/crypto/generators/DESedeKeyGenerator;->random:Ljava/security/SecureRandom;
.line 24
invoke-virtual {p1}, Lorg/spongycastle/crypto/KeyGenerationParameters;->getStrength()I
move-result v0
add-int/lit8 v0, v0, 0x7
div-int/lit8 v0, v0, 0x8
iput v0, p0, Lorg/spongycastle/crypto/generators/DESedeKeyGenerator;->strength:I
.line 26
iget v0, p0, Lorg/spongycastle/crypto/generators/DESedeKeyGenerator;->strength:I
if-eqz v0, :cond_1e
iget v0, p0, Lorg/spongycastle/crypto/generators/DESedeKeyGenerator;->strength:I
const/16 v1, 0x15
if-ne v0, v1, :cond_21
.line 28
:cond_1e
iput v3, p0, Lorg/spongycastle/crypto/generators/DESedeKeyGenerator;->strength:I
.line 42
:cond_20
:goto_20
return-void
.line 30
:cond_21
iget v0, p0, Lorg/spongycastle/crypto/generators/DESedeKeyGenerator;->strength:I
const/16 v1, 0xe
if-ne v0, v1, :cond_2a
.line 32
iput v2, p0, Lorg/spongycastle/crypto/generators/DESedeKeyGenerator;->strength:I
goto :goto_20
.line 34
:cond_2a
iget v0, p0, Lorg/spongycastle/crypto/generators/DESedeKeyGenerator;->strength:I
if-eq v0, v3, :cond_20
iget v0, p0, Lorg/spongycastle/crypto/generators/DESedeKeyGenerator;->strength:I
if-eq v0, v2, :cond_20
.line 37
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "DESede key must be 192 or 128 bits long."
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.end method