public class org.bouncycastle.crypto.agreement.DHBasicAgreement implements org.bouncycastle.crypto.BasicAgreement
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.bouncycastle.crypto.agreement.DHBasicAgreement
super_class: java.lang.Object
{
private org.bouncycastle.crypto.params.DHPrivateKeyParameters key;
descriptor: Lorg/bouncycastle/crypto/params/DHPrivateKeyParameters;
flags: (0x0002) ACC_PRIVATE
private org.bouncycastle.crypto.params.DHParameters dhParams;
descriptor: Lorg/bouncycastle/crypto/params/DHParameters;
flags: (0x0002) ACC_PRIVATE
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 // org.bouncycastle.crypto.agreement.DHBasicAgreement this
0: .line 20
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
return
end local 0 // org.bouncycastle.crypto.agreement.DHBasicAgreement this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/bouncycastle/crypto/agreement/DHBasicAgreement;
public void init(org.bouncycastle.crypto.CipherParameters);
descriptor: (Lorg/bouncycastle/crypto/CipherParameters;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=2
start local 0 // org.bouncycastle.crypto.agreement.DHBasicAgreement this
start local 1 // org.bouncycastle.crypto.CipherParameters param
0: .line 31
aload 1 /* param */
instanceof org.bouncycastle.crypto.params.ParametersWithRandom
ifeq 4
1: .line 33
aload 1 /* param */
checkcast org.bouncycastle.crypto.params.ParametersWithRandom
astore 3 /* rParam */
start local 3 // org.bouncycastle.crypto.params.ParametersWithRandom rParam
2: .line 34
aload 3 /* rParam */
invokevirtual org.bouncycastle.crypto.params.ParametersWithRandom.getParameters:()Lorg/bouncycastle/crypto/CipherParameters;
checkcast org.bouncycastle.crypto.params.AsymmetricKeyParameter
astore 2 /* kParam */
end local 3 // org.bouncycastle.crypto.params.ParametersWithRandom rParam
start local 2 // org.bouncycastle.crypto.params.AsymmetricKeyParameter kParam
3: .line 35
goto 5
end local 2 // org.bouncycastle.crypto.params.AsymmetricKeyParameter kParam
4: .line 38
StackMap locals:
StackMap stack:
aload 1 /* param */
checkcast org.bouncycastle.crypto.params.AsymmetricKeyParameter
astore 2 /* kParam */
start local 2 // org.bouncycastle.crypto.params.AsymmetricKeyParameter kParam
5: .line 41
StackMap locals: org.bouncycastle.crypto.params.AsymmetricKeyParameter
StackMap stack:
aload 2 /* kParam */
instanceof org.bouncycastle.crypto.params.DHPrivateKeyParameters
ifne 7
6: .line 43
new java.lang.IllegalArgumentException
dup
ldc "DHEngine expects DHPrivateKeyParameters"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
7: .line 46
StackMap locals:
StackMap stack:
aload 0 /* this */
aload 2 /* kParam */
checkcast org.bouncycastle.crypto.params.DHPrivateKeyParameters
putfield org.bouncycastle.crypto.agreement.DHBasicAgreement.key:Lorg/bouncycastle/crypto/params/DHPrivateKeyParameters;
8: .line 47
aload 0 /* this */
aload 0 /* this */
getfield org.bouncycastle.crypto.agreement.DHBasicAgreement.key:Lorg/bouncycastle/crypto/params/DHPrivateKeyParameters;
invokevirtual org.bouncycastle.crypto.params.DHPrivateKeyParameters.getParameters:()Lorg/bouncycastle/crypto/params/DHParameters;
putfield org.bouncycastle.crypto.agreement.DHBasicAgreement.dhParams:Lorg/bouncycastle/crypto/params/DHParameters;
9: .line 48
return
end local 2 // org.bouncycastle.crypto.params.AsymmetricKeyParameter kParam
end local 1 // org.bouncycastle.crypto.CipherParameters param
end local 0 // org.bouncycastle.crypto.agreement.DHBasicAgreement this
LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/bouncycastle/crypto/agreement/DHBasicAgreement;
0 10 1 param Lorg/bouncycastle/crypto/CipherParameters;
3 4 2 kParam Lorg/bouncycastle/crypto/params/AsymmetricKeyParameter;
5 10 2 kParam Lorg/bouncycastle/crypto/params/AsymmetricKeyParameter;
2 3 3 rParam Lorg/bouncycastle/crypto/params/ParametersWithRandom;
MethodParameters:
Name Flags
param
public java.math.BigInteger calculateAgreement(org.bouncycastle.crypto.CipherParameters);
descriptor: (Lorg/bouncycastle/crypto/CipherParameters;)Ljava/math/BigInteger;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=2
start local 0 // org.bouncycastle.crypto.agreement.DHBasicAgreement this
start local 1 // org.bouncycastle.crypto.CipherParameters pubKey
0: .line 57
aload 1 /* pubKey */
checkcast org.bouncycastle.crypto.params.DHPublicKeyParameters
astore 2 /* pub */
start local 2 // org.bouncycastle.crypto.params.DHPublicKeyParameters pub
1: .line 59
aload 2 /* pub */
invokevirtual org.bouncycastle.crypto.params.DHPublicKeyParameters.getParameters:()Lorg/bouncycastle/crypto/params/DHParameters;
aload 0 /* this */
getfield org.bouncycastle.crypto.agreement.DHBasicAgreement.dhParams:Lorg/bouncycastle/crypto/params/DHParameters;
invokevirtual org.bouncycastle.crypto.params.DHParameters.equals:(Ljava/lang/Object;)Z
ifne 3
2: .line 61
new java.lang.IllegalArgumentException
dup
ldc "Diffie-Hellman public key has wrong parameters."
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
3: .line 64
StackMap locals: org.bouncycastle.crypto.params.DHPublicKeyParameters
StackMap stack:
aload 2 /* pub */
invokevirtual org.bouncycastle.crypto.params.DHPublicKeyParameters.getY:()Ljava/math/BigInteger;
aload 0 /* this */
getfield org.bouncycastle.crypto.agreement.DHBasicAgreement.key:Lorg/bouncycastle/crypto/params/DHPrivateKeyParameters;
invokevirtual org.bouncycastle.crypto.params.DHPrivateKeyParameters.getX:()Ljava/math/BigInteger;
aload 0 /* this */
getfield org.bouncycastle.crypto.agreement.DHBasicAgreement.dhParams:Lorg/bouncycastle/crypto/params/DHParameters;
invokevirtual org.bouncycastle.crypto.params.DHParameters.getP:()Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.modPow:(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
areturn
end local 2 // org.bouncycastle.crypto.params.DHPublicKeyParameters pub
end local 1 // org.bouncycastle.crypto.CipherParameters pubKey
end local 0 // org.bouncycastle.crypto.agreement.DHBasicAgreement this
LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/bouncycastle/crypto/agreement/DHBasicAgreement;
0 4 1 pubKey Lorg/bouncycastle/crypto/CipherParameters;
1 4 2 pub Lorg/bouncycastle/crypto/params/DHPublicKeyParameters;
MethodParameters:
Name Flags
pubKey
}
SourceFile: "DHBasicAgreement.java"