CramerShoupParametersGenerator$ParametersHelper.smali
.class Lorg/spongycastle/crypto/generators/CramerShoupParametersGenerator$ParametersHelper;
.super Ljava/lang/Object;
.source "CramerShoupParametersGenerator.java"
# static fields
.field private static final TWO:Ljava/math/BigInteger;
# direct methods
.method static constructor <clinit>()V
.registers 2
.prologue
.line 79
const-wide/16 v0, 0x2
invoke-static {v0, v1}, Ljava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;
move-result-object v0
sput-object v0, Lorg/spongycastle/crypto/generators/CramerShoupParametersGenerator$ParametersHelper;->TWO:Ljava/math/BigInteger;
return-void
.end method
.method private constructor <init>()V
.registers 1
.prologue
.line 76
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method static generateSafePrimes(IILjava/security/SecureRandom;)[Ljava/math/BigInteger;
.registers 9
.prologue
const/4 v5, 0x1
const/4 v4, 0x2
.line 89
add-int/lit8 v0, p0, -0x1
.line 93
:cond_4
new-instance v1, Ljava/math/BigInteger;
invoke-direct {v1, v0, v4, p2}, Ljava/math/BigInteger;-><init>(IILjava/util/Random;)V
.line 94
invoke-virtual {v1, v5}, Ljava/math/BigInteger;->shiftLeft(I)Ljava/math/BigInteger;
move-result-object v2
# getter for: Lorg/spongycastle/crypto/generators/CramerShoupParametersGenerator;->ONE:Ljava/math/BigInteger;
invoke-static {}, Lorg/spongycastle/crypto/generators/CramerShoupParametersGenerator;->access$000()Ljava/math/BigInteger;
move-result-object v3
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->add(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v2
.line 95
invoke-virtual {v2, p1}, Ljava/math/BigInteger;->isProbablePrime(I)Z
move-result v3
if-eqz v3, :cond_4
if-le p1, v4, :cond_23
invoke-virtual {v1, p1}, Ljava/math/BigInteger;->isProbablePrime(I)Z
move-result v3
if-eqz v3, :cond_4
.line 101
:cond_23
new-array v0, v4, [Ljava/math/BigInteger;
const/4 v3, 0x0
aput-object v2, v0, v3
aput-object v1, v0, v5
return-object v0
.end method
.method static selectGenerator(Ljava/math/BigInteger;Ljava/security/SecureRandom;)Ljava/math/BigInteger;
.registers 5
.prologue
.line 106
sget-object v0, Lorg/spongycastle/crypto/generators/CramerShoupParametersGenerator$ParametersHelper;->TWO:Ljava/math/BigInteger;
invoke-virtual {p0, v0}, Ljava/math/BigInteger;->subtract(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v0
.line 114
:cond_6
sget-object v1, Lorg/spongycastle/crypto/generators/CramerShoupParametersGenerator$ParametersHelper;->TWO:Ljava/math/BigInteger;
invoke-static {v1, v0, p1}, Lorg/spongycastle/util/BigIntegers;->createRandomInRange(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/security/SecureRandom;)Ljava/math/BigInteger;
move-result-object v1
.line 116
sget-object v2, Lorg/spongycastle/crypto/generators/CramerShoupParametersGenerator$ParametersHelper;->TWO:Ljava/math/BigInteger;
invoke-virtual {v1, v2, p0}, Ljava/math/BigInteger;->modPow(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v1
.line 118
# getter for: Lorg/spongycastle/crypto/generators/CramerShoupParametersGenerator;->ONE:Ljava/math/BigInteger;
invoke-static {}, Lorg/spongycastle/crypto/generators/CramerShoupParametersGenerator;->access$000()Ljava/math/BigInteger;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/math/BigInteger;->equals(Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_6
.line 120
return-object v1
.end method