ECCurve$AbstractFp.smali
.class public abstract Lorg/spongycastle/math/ec/ECCurve$AbstractFp;
.super Lorg/spongycastle/math/ec/ECCurve;
.source "ECCurve.java"
# direct methods
.method protected constructor <init>(Ljava/math/BigInteger;)V
.registers 3
.prologue
.line 503
invoke-static {p1}, Lorg/spongycastle/math/field/FiniteFields;->getPrimeField(Ljava/math/BigInteger;)Lorg/spongycastle/math/field/FiniteField;
move-result-object v0
invoke-direct {p0, v0}, Lorg/spongycastle/math/ec/ECCurve;-><init>(Lorg/spongycastle/math/field/FiniteField;)V
.line 504
return-void
.end method
# virtual methods
.method protected decompressPoint(ILjava/math/BigInteger;)Lorg/spongycastle/math/ec/ECPoint;
.registers 8
.prologue
const/4 v2, 0x1
.line 513
invoke-virtual {p0, p2}, Lorg/spongycastle/math/ec/ECCurve$AbstractFp;->fromBigInteger(Ljava/math/BigInteger;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v3
.line 514
invoke-virtual {v3}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
iget-object v1, p0, Lorg/spongycastle/math/ec/ECCurve$AbstractFp;->a:Lorg/spongycastle/math/ec/ECFieldElement;
invoke-virtual {v0, v1}, Lorg/spongycastle/math/ec/ECFieldElement;->add(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
invoke-virtual {v0, v3}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
iget-object v1, p0, Lorg/spongycastle/math/ec/ECCurve$AbstractFp;->b:Lorg/spongycastle/math/ec/ECFieldElement;
invoke-virtual {v0, v1}, Lorg/spongycastle/math/ec/ECFieldElement;->add(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
.line 515
invoke-virtual {v0}, Lorg/spongycastle/math/ec/ECFieldElement;->sqrt()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
.line 520
if-nez v0, :cond_27
.line 522
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "Invalid point compression"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 525
:cond_27
invoke-virtual {v0}, Lorg/spongycastle/math/ec/ECFieldElement;->testBitZero()Z
move-result v4
if-ne p1, v2, :cond_39
move v1, v2
:goto_2e
if-eq v4, v1, :cond_34
.line 528
invoke-virtual {v0}, Lorg/spongycastle/math/ec/ECFieldElement;->negate()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
.line 531
:cond_34
invoke-virtual {p0, v3, v0, v2}, Lorg/spongycastle/math/ec/ECCurve$AbstractFp;->createRawPoint(Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;Z)Lorg/spongycastle/math/ec/ECPoint;
move-result-object v0
return-object v0
.line 525
:cond_39
const/4 v1, 0x0
goto :goto_2e
.end method
.method public isValidFieldElement(Ljava/math/BigInteger;)Z
.registers 3
.prologue
.line 508
if-eqz p1, :cond_18
invoke-virtual {p1}, Ljava/math/BigInteger;->signum()I
move-result v0
if-ltz v0, :cond_18
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECCurve$AbstractFp;->getField()Lorg/spongycastle/math/field/FiniteField;
move-result-object v0
invoke-interface {v0}, Lorg/spongycastle/math/field/FiniteField;->getCharacteristic()Ljava/math/BigInteger;
move-result-object v0
invoke-virtual {p1, v0}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I
move-result v0
if-gez v0, :cond_18
const/4 v0, 0x1
:goto_17
return v0
:cond_18
const/4 v0, 0x0
goto :goto_17
.end method