public class org.bouncycastle.crypto.agreement.ECMQVBasicAgreement implements org.bouncycastle.crypto.BasicAgreement
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.bouncycastle.crypto.agreement.ECMQVBasicAgreement
super_class: java.lang.Object
{
org.bouncycastle.crypto.params.MQVPrivateParameters privParams;
descriptor: Lorg/bouncycastle/crypto/params/MQVPrivateParameters;
flags: (0x0000)
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/bouncycastle/crypto/agreement/ECMQVBasicAgreement;
public void init(org.bouncycastle.crypto.CipherParameters);
descriptor: (Lorg/bouncycastle/crypto/CipherParameters;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
checkcast org.bouncycastle.crypto.params.MQVPrivateParameters
putfield org.bouncycastle.crypto.agreement.ECMQVBasicAgreement.privParams:Lorg/bouncycastle/crypto/params/MQVPrivateParameters;
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/bouncycastle/crypto/agreement/ECMQVBasicAgreement;
0 2 1 key Lorg/bouncycastle/crypto/CipherParameters;
MethodParameters:
Name Flags
key
public java.math.BigInteger calculateAgreement(org.bouncycastle.crypto.CipherParameters);
descriptor: (Lorg/bouncycastle/crypto/CipherParameters;)Ljava/math/BigInteger;
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=5, args_size=2
start local 0 start local 1 0: aload 1
checkcast org.bouncycastle.crypto.params.MQVPublicParameters
astore 2
start local 2 1: aload 0
getfield org.bouncycastle.crypto.agreement.ECMQVBasicAgreement.privParams:Lorg/bouncycastle/crypto/params/MQVPrivateParameters;
invokevirtual org.bouncycastle.crypto.params.MQVPrivateParameters.getStaticPrivateKey:()Lorg/bouncycastle/crypto/params/ECPrivateKeyParameters;
astore 3
start local 3 2: aload 0
aload 3
invokevirtual org.bouncycastle.crypto.params.ECPrivateKeyParameters.getParameters:()Lorg/bouncycastle/crypto/params/ECDomainParameters;
aload 3
3: aload 0
getfield org.bouncycastle.crypto.agreement.ECMQVBasicAgreement.privParams:Lorg/bouncycastle/crypto/params/MQVPrivateParameters;
invokevirtual org.bouncycastle.crypto.params.MQVPrivateParameters.getEphemeralPrivateKey:()Lorg/bouncycastle/crypto/params/ECPrivateKeyParameters;
aload 0
getfield org.bouncycastle.crypto.agreement.ECMQVBasicAgreement.privParams:Lorg/bouncycastle/crypto/params/MQVPrivateParameters;
invokevirtual org.bouncycastle.crypto.params.MQVPrivateParameters.getEphemeralPublicKey:()Lorg/bouncycastle/crypto/params/ECPublicKeyParameters;
4: aload 2
invokevirtual org.bouncycastle.crypto.params.MQVPublicParameters.getStaticPublicKey:()Lorg/bouncycastle/crypto/params/ECPublicKeyParameters;
aload 2
invokevirtual org.bouncycastle.crypto.params.MQVPublicParameters.getEphemeralPublicKey:()Lorg/bouncycastle/crypto/params/ECPublicKeyParameters;
5: invokevirtual org.bouncycastle.crypto.agreement.ECMQVBasicAgreement.calculateMqvAgreement:(Lorg/bouncycastle/crypto/params/ECDomainParameters;Lorg/bouncycastle/crypto/params/ECPrivateKeyParameters;Lorg/bouncycastle/crypto/params/ECPrivateKeyParameters;Lorg/bouncycastle/crypto/params/ECPublicKeyParameters;Lorg/bouncycastle/crypto/params/ECPublicKeyParameters;Lorg/bouncycastle/crypto/params/ECPublicKeyParameters;)Lorg/bouncycastle/math/ec/ECPoint;
astore 4
start local 4 6: aload 4
invokevirtual org.bouncycastle.math.ec.ECPoint.getX:()Lorg/bouncycastle/math/ec/ECFieldElement;
invokevirtual org.bouncycastle.math.ec.ECFieldElement.toBigInteger:()Ljava/math/BigInteger;
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/bouncycastle/crypto/agreement/ECMQVBasicAgreement;
0 7 1 pubKey Lorg/bouncycastle/crypto/CipherParameters;
1 7 2 pubParams Lorg/bouncycastle/crypto/params/MQVPublicParameters;
2 7 3 staticPrivateKey Lorg/bouncycastle/crypto/params/ECPrivateKeyParameters;
6 7 4 agreement Lorg/bouncycastle/math/ec/ECPoint;
MethodParameters:
Name Flags
pubKey
private org.bouncycastle.math.ec.ECPoint calculateMqvAgreement(org.bouncycastle.crypto.params.ECDomainParameters, org.bouncycastle.crypto.params.ECPrivateKeyParameters, org.bouncycastle.crypto.params.ECPrivateKeyParameters, org.bouncycastle.crypto.params.ECPublicKeyParameters, org.bouncycastle.crypto.params.ECPublicKeyParameters, org.bouncycastle.crypto.params.ECPublicKeyParameters);
descriptor: (Lorg/bouncycastle/crypto/params/ECDomainParameters;Lorg/bouncycastle/crypto/params/ECPrivateKeyParameters;Lorg/bouncycastle/crypto/params/ECPrivateKeyParameters;Lorg/bouncycastle/crypto/params/ECPublicKeyParameters;Lorg/bouncycastle/crypto/params/ECPublicKeyParameters;Lorg/bouncycastle/crypto/params/ECPublicKeyParameters;)Lorg/bouncycastle/math/ec/ECPoint;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=20, args_size=7
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 0: aload 1
invokevirtual org.bouncycastle.crypto.params.ECDomainParameters.getN:()Ljava/math/BigInteger;
astore 7
start local 7 1: aload 7
invokevirtual java.math.BigInteger.bitLength:()I
iconst_1
iadd
iconst_2
idiv
istore 8
start local 8 2: getstatic org.bouncycastle.math.ec.ECConstants.ONE:Ljava/math/BigInteger;
iload 8
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
astore 9
start local 9 3: aload 4
ifnonnull 6
4: aload 1
invokevirtual org.bouncycastle.crypto.params.ECDomainParameters.getG:()Lorg/bouncycastle/math/ec/ECPoint;
aload 3
invokevirtual org.bouncycastle.crypto.params.ECPrivateKeyParameters.getD:()Ljava/math/BigInteger;
invokevirtual org.bouncycastle.math.ec.ECPoint.multiply:(Ljava/math/BigInteger;)Lorg/bouncycastle/math/ec/ECPoint;
astore 10
start local 10 5: goto 7
end local 10 6: StackMap locals: java.math.BigInteger int java.math.BigInteger
StackMap stack:
aload 4
invokevirtual org.bouncycastle.crypto.params.ECPublicKeyParameters.getQ:()Lorg/bouncycastle/math/ec/ECPoint;
astore 10
start local 10 7: StackMap locals: org.bouncycastle.math.ec.ECPoint
StackMap stack:
aload 10
invokevirtual org.bouncycastle.math.ec.ECPoint.getX:()Lorg/bouncycastle/math/ec/ECFieldElement;
invokevirtual org.bouncycastle.math.ec.ECFieldElement.toBigInteger:()Ljava/math/BigInteger;
astore 11
start local 11 8: aload 11
aload 9
invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 12
start local 12 9: aload 12
iload 8
invokevirtual java.math.BigInteger.setBit:(I)Ljava/math/BigInteger;
astore 13
start local 13 10: aload 2
invokevirtual org.bouncycastle.crypto.params.ECPrivateKeyParameters.getD:()Ljava/math/BigInteger;
aload 13
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
aload 7
invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
aload 3
invokevirtual org.bouncycastle.crypto.params.ECPrivateKeyParameters.getD:()Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
aload 7
invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 14
start local 14 11: aload 6
invokevirtual org.bouncycastle.crypto.params.ECPublicKeyParameters.getQ:()Lorg/bouncycastle/math/ec/ECPoint;
invokevirtual org.bouncycastle.math.ec.ECPoint.getX:()Lorg/bouncycastle/math/ec/ECFieldElement;
invokevirtual org.bouncycastle.math.ec.ECFieldElement.toBigInteger:()Ljava/math/BigInteger;
astore 15
start local 15 12: aload 15
aload 9
invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 16
start local 16 13: aload 16
iload 8
invokevirtual java.math.BigInteger.setBit:(I)Ljava/math/BigInteger;
astore 17
start local 17 14: aload 1
invokevirtual org.bouncycastle.crypto.params.ECDomainParameters.getH:()Ljava/math/BigInteger;
aload 14
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
aload 7
invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 18
start local 18 15: aload 5
invokevirtual org.bouncycastle.crypto.params.ECPublicKeyParameters.getQ:()Lorg/bouncycastle/math/ec/ECPoint;
aload 17
aload 18
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
aload 7
invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
aload 6
invokevirtual org.bouncycastle.crypto.params.ECPublicKeyParameters.getQ:()Lorg/bouncycastle/math/ec/ECPoint;
aload 18
16: invokestatic org.bouncycastle.math.ec.ECAlgorithms.sumOfTwoMultiplies:(Lorg/bouncycastle/math/ec/ECPoint;Ljava/math/BigInteger;Lorg/bouncycastle/math/ec/ECPoint;Ljava/math/BigInteger;)Lorg/bouncycastle/math/ec/ECPoint;
astore 19
start local 19 17: aload 19
invokevirtual org.bouncycastle.math.ec.ECPoint.isInfinity:()Z
ifeq 19
18: new java.lang.IllegalStateException
dup
ldc "Infinity is not a valid agreement value for MQV"
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
19: StackMap locals: org.bouncycastle.crypto.agreement.ECMQVBasicAgreement org.bouncycastle.crypto.params.ECDomainParameters org.bouncycastle.crypto.params.ECPrivateKeyParameters org.bouncycastle.crypto.params.ECPrivateKeyParameters org.bouncycastle.crypto.params.ECPublicKeyParameters org.bouncycastle.crypto.params.ECPublicKeyParameters org.bouncycastle.crypto.params.ECPublicKeyParameters java.math.BigInteger int java.math.BigInteger org.bouncycastle.math.ec.ECPoint java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger org.bouncycastle.math.ec.ECPoint
StackMap stack:
aload 19
areturn
end local 19 end local 18 end local 17 end local 16 end local 15 end local 14 end local 13 end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 this Lorg/bouncycastle/crypto/agreement/ECMQVBasicAgreement;
0 20 1 parameters Lorg/bouncycastle/crypto/params/ECDomainParameters;
0 20 2 d1U Lorg/bouncycastle/crypto/params/ECPrivateKeyParameters;
0 20 3 d2U Lorg/bouncycastle/crypto/params/ECPrivateKeyParameters;
0 20 4 Q2U Lorg/bouncycastle/crypto/params/ECPublicKeyParameters;
0 20 5 Q1V Lorg/bouncycastle/crypto/params/ECPublicKeyParameters;
0 20 6 Q2V Lorg/bouncycastle/crypto/params/ECPublicKeyParameters;
1 20 7 n Ljava/math/BigInteger;
2 20 8 e I
3 20 9 powE Ljava/math/BigInteger;
5 6 10 q Lorg/bouncycastle/math/ec/ECPoint;
7 20 10 q Lorg/bouncycastle/math/ec/ECPoint;
8 20 11 x Ljava/math/BigInteger;
9 20 12 xBar Ljava/math/BigInteger;
10 20 13 Q2UBar Ljava/math/BigInteger;
11 20 14 s Ljava/math/BigInteger;
12 20 15 xPrime Ljava/math/BigInteger;
13 20 16 xPrimeBar Ljava/math/BigInteger;
14 20 17 Q2VBar Ljava/math/BigInteger;
15 20 18 hs Ljava/math/BigInteger;
17 20 19 p Lorg/bouncycastle/math/ec/ECPoint;
MethodParameters:
Name Flags
parameters
d1U
d2U
Q2U
Q1V
Q2V
}
SourceFile: "ECMQVBasicAgreement.java"