public class org.bouncycastle.math.ec.GLVMultiplier extends org.bouncycastle.math.ec.AbstractECMultiplier
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.bouncycastle.math.ec.GLVMultiplier
super_class: org.bouncycastle.math.ec.AbstractECMultiplier
{
protected final org.bouncycastle.math.ec.ECCurve curve;
descriptor: Lorg/bouncycastle/math/ec/ECCurve;
flags: (0x0014) ACC_PROTECTED, ACC_FINAL
protected final org.bouncycastle.math.ec.endo.GLVEndomorphism glvEndomorphism;
descriptor: Lorg/bouncycastle/math/ec/endo/GLVEndomorphism;
flags: (0x0014) ACC_PROTECTED, ACC_FINAL
public void <init>(org.bouncycastle.math.ec.ECCurve, org.bouncycastle.math.ec.endo.GLVEndomorphism);
descriptor: (Lorg/bouncycastle/math/ec/ECCurve;Lorg/bouncycastle/math/ec/endo/GLVEndomorphism;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=3
start local 0 // org.bouncycastle.math.ec.GLVMultiplier this
start local 1 // org.bouncycastle.math.ec.ECCurve curve
start local 2 // org.bouncycastle.math.ec.endo.GLVEndomorphism glvEndomorphism
0: .line 12
aload 0 /* this */
invokespecial org.bouncycastle.math.ec.AbstractECMultiplier.<init>:()V
1: .line 14
aload 1 /* curve */
ifnull 2
aload 1 /* curve */
invokevirtual org.bouncycastle.math.ec.ECCurve.getOrder:()Ljava/math/BigInteger;
ifnonnull 3
2: .line 16
StackMap locals: org.bouncycastle.math.ec.GLVMultiplier org.bouncycastle.math.ec.ECCurve org.bouncycastle.math.ec.endo.GLVEndomorphism
StackMap stack:
new java.lang.IllegalArgumentException
dup
ldc "Need curve with known group order"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
3: .line 19
StackMap locals:
StackMap stack:
aload 0 /* this */
aload 1 /* curve */
putfield org.bouncycastle.math.ec.GLVMultiplier.curve:Lorg/bouncycastle/math/ec/ECCurve;
4: .line 20
aload 0 /* this */
aload 2 /* glvEndomorphism */
putfield org.bouncycastle.math.ec.GLVMultiplier.glvEndomorphism:Lorg/bouncycastle/math/ec/endo/GLVEndomorphism;
5: .line 21
return
end local 2 // org.bouncycastle.math.ec.endo.GLVEndomorphism glvEndomorphism
end local 1 // org.bouncycastle.math.ec.ECCurve curve
end local 0 // org.bouncycastle.math.ec.GLVMultiplier this
LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/bouncycastle/math/ec/GLVMultiplier;
0 6 1 curve Lorg/bouncycastle/math/ec/ECCurve;
0 6 2 glvEndomorphism Lorg/bouncycastle/math/ec/endo/GLVEndomorphism;
MethodParameters:
Name Flags
curve
glvEndomorphism
protected org.bouncycastle.math.ec.ECPoint multiplyPositive(org.bouncycastle.math.ec.ECPoint, java.math.BigInteger);
descriptor: (Lorg/bouncycastle/math/ec/ECPoint;Ljava/math/BigInteger;)Lorg/bouncycastle/math/ec/ECPoint;
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=8, args_size=3
start local 0 // org.bouncycastle.math.ec.GLVMultiplier this
start local 1 // org.bouncycastle.math.ec.ECPoint p
start local 2 // java.math.BigInteger k
0: .line 25
aload 0 /* this */
getfield org.bouncycastle.math.ec.GLVMultiplier.curve:Lorg/bouncycastle/math/ec/ECCurve;
aload 1 /* p */
invokevirtual org.bouncycastle.math.ec.ECPoint.getCurve:()Lorg/bouncycastle/math/ec/ECCurve;
invokevirtual org.bouncycastle.math.ec.ECCurve.equals:(Lorg/bouncycastle/math/ec/ECCurve;)Z
ifne 2
1: .line 27
new java.lang.IllegalStateException
dup
invokespecial java.lang.IllegalStateException.<init>:()V
athrow
2: .line 30
StackMap locals:
StackMap stack:
aload 1 /* p */
invokevirtual org.bouncycastle.math.ec.ECPoint.getCurve:()Lorg/bouncycastle/math/ec/ECCurve;
invokevirtual org.bouncycastle.math.ec.ECCurve.getOrder:()Ljava/math/BigInteger;
astore 3 /* n */
start local 3 // java.math.BigInteger n
3: .line 31
aload 0 /* this */
getfield org.bouncycastle.math.ec.GLVMultiplier.glvEndomorphism:Lorg/bouncycastle/math/ec/endo/GLVEndomorphism;
aload 2 /* k */
aload 3 /* n */
invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
invokeinterface org.bouncycastle.math.ec.endo.GLVEndomorphism.decomposeScalar:(Ljava/math/BigInteger;)[Ljava/math/BigInteger;
astore 4 /* ab */
start local 4 // java.math.BigInteger[] ab
4: .line 32
aload 4 /* ab */
iconst_0
aaload
astore 5 /* a */
start local 5 // java.math.BigInteger a
5: aload 4 /* ab */
iconst_1
aaload
astore 6 /* b */
start local 6 // java.math.BigInteger b
6: .line 34
aload 0 /* this */
getfield org.bouncycastle.math.ec.GLVMultiplier.glvEndomorphism:Lorg/bouncycastle/math/ec/endo/GLVEndomorphism;
invokeinterface org.bouncycastle.math.ec.endo.GLVEndomorphism.getPointMap:()Lorg/bouncycastle/math/ec/ECPointMap;
astore 7 /* pointMap */
start local 7 // org.bouncycastle.math.ec.ECPointMap pointMap
7: .line 35
aload 0 /* this */
getfield org.bouncycastle.math.ec.GLVMultiplier.glvEndomorphism:Lorg/bouncycastle/math/ec/endo/GLVEndomorphism;
invokeinterface org.bouncycastle.math.ec.endo.GLVEndomorphism.hasEfficientPointMap:()Z
ifeq 9
8: .line 37
aload 1 /* p */
aload 5 /* a */
aload 7 /* pointMap */
aload 6 /* b */
invokestatic org.bouncycastle.math.ec.ECAlgorithms.implShamirsTrickWNaf:(Lorg/bouncycastle/math/ec/ECPoint;Ljava/math/BigInteger;Lorg/bouncycastle/math/ec/ECPointMap;Ljava/math/BigInteger;)Lorg/bouncycastle/math/ec/ECPoint;
areturn
9: .line 40
StackMap locals: org.bouncycastle.math.ec.GLVMultiplier org.bouncycastle.math.ec.ECPoint java.math.BigInteger java.math.BigInteger java.math.BigInteger[] java.math.BigInteger java.math.BigInteger org.bouncycastle.math.ec.ECPointMap
StackMap stack:
aload 1 /* p */
aload 5 /* a */
aload 7 /* pointMap */
aload 1 /* p */
invokeinterface org.bouncycastle.math.ec.ECPointMap.map:(Lorg/bouncycastle/math/ec/ECPoint;)Lorg/bouncycastle/math/ec/ECPoint;
aload 6 /* b */
invokestatic org.bouncycastle.math.ec.ECAlgorithms.implShamirsTrickWNaf:(Lorg/bouncycastle/math/ec/ECPoint;Ljava/math/BigInteger;Lorg/bouncycastle/math/ec/ECPoint;Ljava/math/BigInteger;)Lorg/bouncycastle/math/ec/ECPoint;
areturn
end local 7 // org.bouncycastle.math.ec.ECPointMap pointMap
end local 6 // java.math.BigInteger b
end local 5 // java.math.BigInteger a
end local 4 // java.math.BigInteger[] ab
end local 3 // java.math.BigInteger n
end local 2 // java.math.BigInteger k
end local 1 // org.bouncycastle.math.ec.ECPoint p
end local 0 // org.bouncycastle.math.ec.GLVMultiplier this
LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/bouncycastle/math/ec/GLVMultiplier;
0 10 1 p Lorg/bouncycastle/math/ec/ECPoint;
0 10 2 k Ljava/math/BigInteger;
3 10 3 n Ljava/math/BigInteger;
4 10 4 ab [Ljava/math/BigInteger;
5 10 5 a Ljava/math/BigInteger;
6 10 6 b Ljava/math/BigInteger;
7 10 7 pointMap Lorg/bouncycastle/math/ec/ECPointMap;
MethodParameters:
Name Flags
p
k
}
SourceFile: "GLVMultiplier.java"