GMSSParameters.smali
.class public Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;
.super Ljava/lang/Object;
.source "GMSSParameters.java"
# instance fields
.field private K:[I
.field private heightOfTrees:[I
.field private numOfLayers:I
.field private winternitzParameter:[I
# direct methods
.method public constructor <init>(I)V
.registers 9
.prologue
const/16 v1, 0xa
const/4 v6, 0x0
const/4 v5, 0x4
const/4 v4, 0x1
const/4 v3, 0x2
.line 90
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 91
if-gt p1, v1, :cond_1c
.line 93
new-array v0, v4, [I
aput v1, v0, v6
.line 94
new-array v1, v4, [I
const/4 v2, 0x3
aput v2, v1, v6
.line 95
new-array v2, v4, [I
aput v3, v2, v6
.line 96
invoke-direct {p0, v4, v0, v1, v2}, Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;->init(I[I[I[I)V
.line 112
:goto_1b
return-void
.line 98
:cond_1c
const/16 v0, 0x14
if-gt p1, v0, :cond_33
.line 100
new-array v0, v3, [I
fill-array-data v0, :array_46
.line 101
new-array v1, v3, [I
fill-array-data v1, :array_4e
.line 102
new-array v2, v3, [I
fill-array-data v2, :array_56
.line 103
invoke-direct {p0, v3, v0, v1, v2}, Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;->init(I[I[I[I)V
goto :goto_1b
.line 107
:cond_33
new-array v0, v5, [I
fill-array-data v0, :array_5e
.line 108
new-array v1, v5, [I
fill-array-data v1, :array_6a
.line 109
new-array v2, v5, [I
fill-array-data v2, :array_76
.line 110
invoke-direct {p0, v5, v0, v1, v2}, Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;->init(I[I[I[I)V
goto :goto_1b
.line 100
:array_46
.array-data 4
0xa
0xa
.end array-data
.line 101
:array_4e
.array-data 4
0x5
0x4
.end array-data
.line 102
:array_56
.array-data 4
0x2
0x2
.end array-data
.line 107
:array_5e
.array-data 4
0xa
0xa
0xa
0xa
.end array-data
.line 108
:array_6a
.array-data 4
0x9
0x9
0x9
0x3
.end array-data
.line 109
:array_76
.array-data 4
0x2
0x2
0x2
0x2
.end array-data
.end method
.method public constructor <init>(I[I[I[I)V
.registers 5
.prologue
.line 43
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 44
invoke-direct {p0, p1, p2, p3, p4}, Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;->init(I[I[I[I)V
.line 45
return-void
.end method
.method private init(I[I[I[I)V
.registers 12
.prologue
const/4 v6, 0x2
const/4 v2, 0x0
.line 51
const/4 v1, 0x1
.line 52
const-string v0, ""
.line 53
iput p1, p0, Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;->numOfLayers:I
.line 54
iget v3, p0, Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;->numOfLayers:I
array-length v4, p3
if-ne v3, v4, :cond_16
iget v3, p0, Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;->numOfLayers:I
array-length v4, p2
if-ne v3, v4, :cond_16
iget v3, p0, Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;->numOfLayers:I
array-length v4, p4
if-eq v3, v4, :cond_19
.line 59
:cond_16
const-string v0, "Unexpected parameterset format"
move v1, v2
:cond_19
move v3, v2
.line 61
:goto_1a
iget v4, p0, Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;->numOfLayers:I
if-ge v3, v4, :cond_3d
.line 63
aget v4, p4, v3
if-lt v4, v6, :cond_2b
aget v4, p2, v3
aget v5, p4, v3
sub-int/2addr v4, v5
rem-int/lit8 v4, v4, 0x2
if-eqz v4, :cond_2e
.line 66
:cond_2b
const-string v0, "Wrong parameter K (K >= 2 and H-K even required)!"
move v1, v2
.line 69
:cond_2e
aget v4, p2, v3
const/4 v5, 0x4
if-lt v4, v5, :cond_37
aget v4, p3, v3
if-ge v4, v6, :cond_3a
.line 72
:cond_37
const-string v0, "Wrong parameter H or w (H > 3 and w > 1 required)!"
move v1, v2
.line 61
:cond_3a
add-int/lit8 v3, v3, 0x1
goto :goto_1a
.line 76
:cond_3d
if-eqz v1, :cond_52
.line 78
invoke-static {p2}, Lorg/spongycastle/util/Arrays;->clone([I)[I
move-result-object v0
iput-object v0, p0, Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;->heightOfTrees:[I
.line 79
invoke-static {p3}, Lorg/spongycastle/util/Arrays;->clone([I)[I
move-result-object v0
iput-object v0, p0, Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;->winternitzParameter:[I
.line 80
invoke-static {p4}, Lorg/spongycastle/util/Arrays;->clone([I)[I
move-result-object v0
iput-object v0, p0, Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;->K:[I
return-void
.line 84
:cond_52
new-instance v1, Ljava/lang/IllegalArgumentException;
invoke-direct {v1, v0}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v1
.end method
# virtual methods
.method public getHeightOfTrees()[I
.registers 2
.prologue
.line 131
iget-object v0, p0, Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;->heightOfTrees:[I
invoke-static {v0}, Lorg/spongycastle/util/Arrays;->clone([I)[I
move-result-object v0
return-object v0
.end method
.method public getK()[I
.registers 2
.prologue
.line 153
iget-object v0, p0, Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;->K:[I
invoke-static {v0}, Lorg/spongycastle/util/Arrays;->clone([I)[I
move-result-object v0
return-object v0
.end method
.method public getNumOfLayers()I
.registers 2
.prologue
.line 121
iget v0, p0, Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;->numOfLayers:I
return v0
.end method
.method public getWinternitzParameter()[I
.registers 2
.prologue
.line 143
iget-object v0, p0, Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;->winternitzParameter:[I
invoke-static {v0}, Lorg/spongycastle/util/Arrays;->clone([I)[I
move-result-object v0
return-object v0
.end method