ECPointUtil.smali
.class public Lorg/spongycastle/jce/ECPointUtil;
.super Ljava/lang/Object;
.source "ECPointUtil.java"
# direct methods
.method public constructor <init>()V
.registers 1
.prologue
.line 13
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static decodePoint(Ljava/security/spec/EllipticCurve;[B)Ljava/security/spec/ECPoint;
.registers 9
.prologue
const/4 v5, 0x0
.line 31
invoke-virtual {p0}, Ljava/security/spec/EllipticCurve;->getField()Ljava/security/spec/ECField;
move-result-object v0
instance-of v0, v0, Ljava/security/spec/ECFieldFp;
if-eqz v0, :cond_3b
.line 33
new-instance v1, Lorg/spongycastle/math/ec/ECCurve$Fp;
.line 34
invoke-virtual {p0}, Ljava/security/spec/EllipticCurve;->getField()Ljava/security/spec/ECField;
move-result-object v0
check-cast v0, Ljava/security/spec/ECFieldFp;
invoke-virtual {v0}, Ljava/security/spec/ECFieldFp;->getP()Ljava/math/BigInteger;
move-result-object v0
invoke-virtual {p0}, Ljava/security/spec/EllipticCurve;->getA()Ljava/math/BigInteger;
move-result-object v2
invoke-virtual {p0}, Ljava/security/spec/EllipticCurve;->getB()Ljava/math/BigInteger;
move-result-object v3
invoke-direct {v1, v0, v2, v3}, Lorg/spongycastle/math/ec/ECCurve$Fp;-><init>(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V
move-object v0, v1
.line 52
:goto_21
invoke-virtual {v0, p1}, Lorg/spongycastle/math/ec/ECCurve;->decodePoint([B)Lorg/spongycastle/math/ec/ECPoint;
move-result-object v0
.line 54
new-instance v1, Ljava/security/spec/ECPoint;
invoke-virtual {v0}, Lorg/spongycastle/math/ec/ECPoint;->getAffineXCoord()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
invoke-virtual {v2}, Lorg/spongycastle/math/ec/ECFieldElement;->toBigInteger()Ljava/math/BigInteger;
move-result-object v2
invoke-virtual {v0}, Lorg/spongycastle/math/ec/ECPoint;->getAffineYCoord()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
invoke-virtual {v0}, Lorg/spongycastle/math/ec/ECFieldElement;->toBigInteger()Ljava/math/BigInteger;
move-result-object v0
invoke-direct {v1, v2, v0}, Ljava/security/spec/ECPoint;-><init>(Ljava/math/BigInteger;Ljava/math/BigInteger;)V
return-object v1
.line 38
:cond_3b
invoke-virtual {p0}, Ljava/security/spec/EllipticCurve;->getField()Ljava/security/spec/ECField;
move-result-object v0
check-cast v0, Ljava/security/spec/ECFieldF2m;
invoke-virtual {v0}, Ljava/security/spec/ECFieldF2m;->getMidTermsOfReductionPolynomial()[I
move-result-object v4
.line 40
array-length v0, v4
const/4 v1, 0x3
if-ne v0, v1, :cond_69
.line 42
new-instance v0, Lorg/spongycastle/math/ec/ECCurve$F2m;
.line 43
invoke-virtual {p0}, Ljava/security/spec/EllipticCurve;->getField()Ljava/security/spec/ECField;
move-result-object v1
check-cast v1, Ljava/security/spec/ECFieldF2m;
invoke-virtual {v1}, Ljava/security/spec/ECFieldF2m;->getM()I
move-result v1
const/4 v2, 0x2
aget v2, v4, v2
const/4 v3, 0x1
aget v3, v4, v3
aget v4, v4, v5
invoke-virtual {p0}, Ljava/security/spec/EllipticCurve;->getA()Ljava/math/BigInteger;
move-result-object v5
invoke-virtual {p0}, Ljava/security/spec/EllipticCurve;->getB()Ljava/math/BigInteger;
move-result-object v6
invoke-direct/range {v0 .. v6}, Lorg/spongycastle/math/ec/ECCurve$F2m;-><init>(IIIILjava/math/BigInteger;Ljava/math/BigInteger;)V
goto :goto_21
.line 47
:cond_69
new-instance v1, Lorg/spongycastle/math/ec/ECCurve$F2m;
.line 48
invoke-virtual {p0}, Ljava/security/spec/EllipticCurve;->getField()Ljava/security/spec/ECField;
move-result-object v0
check-cast v0, Ljava/security/spec/ECFieldF2m;
invoke-virtual {v0}, Ljava/security/spec/ECFieldF2m;->getM()I
move-result v0
aget v2, v4, v5
invoke-virtual {p0}, Ljava/security/spec/EllipticCurve;->getA()Ljava/math/BigInteger;
move-result-object v3
invoke-virtual {p0}, Ljava/security/spec/EllipticCurve;->getB()Ljava/math/BigInteger;
move-result-object v4
invoke-direct {v1, v0, v2, v3, v4}, Lorg/spongycastle/math/ec/ECCurve$F2m;-><init>(IILjava/math/BigInteger;Ljava/math/BigInteger;)V
move-object v0, v1
goto :goto_21
.end method