public class org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator extends org.bouncycastle.cms.KeyAgreeRecipientInfoGenerator
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator
super_class: org.bouncycastle.cms.KeyAgreeRecipientInfoGenerator
{
private org.bouncycastle.operator.SecretKeySizeProvider keySizeProvider;
descriptor: Lorg/bouncycastle/operator/SecretKeySizeProvider;
flags: (0x0002) ACC_PRIVATE
private java.util.List recipientIDs;
descriptor: Ljava/util/List;
flags: (0x0002) ACC_PRIVATE
private java.util.List recipientKeys;
descriptor: Ljava/util/List;
flags: (0x0002) ACC_PRIVATE
private java.security.PublicKey senderPublicKey;
descriptor: Ljava/security/PublicKey;
flags: (0x0002) ACC_PRIVATE
private java.security.PrivateKey senderPrivateKey;
descriptor: Ljava/security/PrivateKey;
flags: (0x0002) ACC_PRIVATE
private org.bouncycastle.cms.jcajce.EnvelopedDataHelper helper;
descriptor: Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
flags: (0x0002) ACC_PRIVATE
private java.security.SecureRandom random;
descriptor: Ljava/security/SecureRandom;
flags: (0x0002) ACC_PRIVATE
private java.security.KeyPair ephemeralKP;
descriptor: Ljava/security/KeyPair;
flags: (0x0002) ACC_PRIVATE
private byte[] userKeyingMaterial;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private static org.bouncycastle.cms.jcajce.KeyMaterialGenerator ecc_cms_Generator;
descriptor: Lorg/bouncycastle/cms/jcajce/KeyMaterialGenerator;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: new org.bouncycastle.cms.jcajce.RFC5753KeyMaterialGenerator
dup
invokespecial org.bouncycastle.cms.jcajce.RFC5753KeyMaterialGenerator.<init>:()V
putstatic org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.ecc_cms_Generator:Lorg/bouncycastle/cms/jcajce/KeyMaterialGenerator;
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(org.bouncycastle.asn1.ASN1ObjectIdentifier, java.security.PrivateKey, java.security.PublicKey, org.bouncycastle.asn1.ASN1ObjectIdentifier);
descriptor: (Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Ljava/security/PrivateKey;Ljava/security/PublicKey;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=5, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
aload 1
aload 3
invokeinterface java.security.PublicKey.getEncoded:()[B
invokestatic org.bouncycastle.asn1.x509.SubjectPublicKeyInfo.getInstance:(Ljava/lang/Object;)Lorg/bouncycastle/asn1/x509/SubjectPublicKeyInfo;
aload 4
invokespecial org.bouncycastle.cms.KeyAgreeRecipientInfoGenerator.<init>:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Lorg/bouncycastle/asn1/x509/SubjectPublicKeyInfo;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)V
1: aload 0
new org.bouncycastle.operator.DefaultSecretKeySizeProvider
dup
invokespecial org.bouncycastle.operator.DefaultSecretKeySizeProvider.<init>:()V
putfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.keySizeProvider:Lorg/bouncycastle/operator/SecretKeySizeProvider;
2: aload 0
new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
putfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.recipientIDs:Ljava/util/List;
3: aload 0
new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
putfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.recipientKeys:Ljava/util/List;
4: aload 0
new org.bouncycastle.cms.jcajce.EnvelopedDataHelper
dup
new org.bouncycastle.cms.jcajce.DefaultJcaJceExtHelper
dup
invokespecial org.bouncycastle.cms.jcajce.DefaultJcaJceExtHelper.<init>:()V
invokespecial org.bouncycastle.cms.jcajce.EnvelopedDataHelper.<init>:(Lorg/bouncycastle/cms/jcajce/JcaJceExtHelper;)V
putfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.helper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
5: aload 0
aload 3
putfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.senderPublicKey:Ljava/security/PublicKey;
6: aload 0
aload 2
putfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.senderPrivateKey:Ljava/security/PrivateKey;
7: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/bouncycastle/cms/jcajce/JceKeyAgreeRecipientInfoGenerator;
0 8 1 keyAgreementOID Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
0 8 2 senderPrivateKey Ljava/security/PrivateKey;
0 8 3 senderPublicKey Ljava/security/PublicKey;
0 8 4 keyEncryptionOID Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
MethodParameters:
Name Flags
keyAgreementOID
senderPrivateKey
senderPublicKey
keyEncryptionOID
public org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator setUserKeyingMaterial(byte[]);
descriptor: ([B)Lorg/bouncycastle/cms/jcajce/JceKeyAgreeRecipientInfoGenerator;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokestatic org.bouncycastle.util.Arrays.clone:([B)[B
putfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.userKeyingMaterial:[B
1: aload 0
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/bouncycastle/cms/jcajce/JceKeyAgreeRecipientInfoGenerator;
0 2 1 userKeyingMaterial [B
MethodParameters:
Name Flags
userKeyingMaterial
public org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator setProvider(java.security.Provider);
descriptor: (Ljava/security/Provider;)Lorg/bouncycastle/cms/jcajce/JceKeyAgreeRecipientInfoGenerator;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=2, args_size=2
start local 0 start local 1 0: aload 0
new org.bouncycastle.cms.jcajce.EnvelopedDataHelper
dup
new org.bouncycastle.cms.jcajce.ProviderJcaJceExtHelper
dup
aload 1
invokespecial org.bouncycastle.cms.jcajce.ProviderJcaJceExtHelper.<init>:(Ljava/security/Provider;)V
invokespecial org.bouncycastle.cms.jcajce.EnvelopedDataHelper.<init>:(Lorg/bouncycastle/cms/jcajce/JcaJceExtHelper;)V
putfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.helper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
1: aload 0
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/bouncycastle/cms/jcajce/JceKeyAgreeRecipientInfoGenerator;
0 2 1 provider Ljava/security/Provider;
MethodParameters:
Name Flags
provider
public org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator setProvider(java.lang.String);
descriptor: (Ljava/lang/String;)Lorg/bouncycastle/cms/jcajce/JceKeyAgreeRecipientInfoGenerator;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=2, args_size=2
start local 0 start local 1 0: aload 0
new org.bouncycastle.cms.jcajce.EnvelopedDataHelper
dup
new org.bouncycastle.cms.jcajce.NamedJcaJceExtHelper
dup
aload 1
invokespecial org.bouncycastle.cms.jcajce.NamedJcaJceExtHelper.<init>:(Ljava/lang/String;)V
invokespecial org.bouncycastle.cms.jcajce.EnvelopedDataHelper.<init>:(Lorg/bouncycastle/cms/jcajce/JcaJceExtHelper;)V
putfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.helper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
1: aload 0
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/bouncycastle/cms/jcajce/JceKeyAgreeRecipientInfoGenerator;
0 2 1 providerName Ljava/lang/String;
MethodParameters:
Name Flags
providerName
public org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator setSecureRandom(java.security.SecureRandom);
descriptor: (Ljava/security/SecureRandom;)Lorg/bouncycastle/cms/jcajce/JceKeyAgreeRecipientInfoGenerator;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
putfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.random:Ljava/security/SecureRandom;
1: aload 0
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/bouncycastle/cms/jcajce/JceKeyAgreeRecipientInfoGenerator;
0 2 1 random Ljava/security/SecureRandom;
MethodParameters:
Name Flags
random
public org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator addRecipient(java.security.cert.X509Certificate);
descriptor: (Ljava/security/cert/X509Certificate;)Lorg/bouncycastle/cms/jcajce/JceKeyAgreeRecipientInfoGenerator;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.recipientIDs:Ljava/util/List;
new org.bouncycastle.asn1.cms.KeyAgreeRecipientIdentifier
dup
aload 1
invokestatic org.bouncycastle.cms.jcajce.CMSUtils.getIssuerAndSerialNumber:(Ljava/security/cert/X509Certificate;)Lorg/bouncycastle/asn1/cms/IssuerAndSerialNumber;
invokespecial org.bouncycastle.asn1.cms.KeyAgreeRecipientIdentifier.<init>:(Lorg/bouncycastle/asn1/cms/IssuerAndSerialNumber;)V
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
1: aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.recipientKeys:Ljava/util/List;
aload 1
invokevirtual java.security.cert.X509Certificate.getPublicKey:()Ljava/security/PublicKey;
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
2: aload 0
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/bouncycastle/cms/jcajce/JceKeyAgreeRecipientInfoGenerator;
0 3 1 recipientCert Ljava/security/cert/X509Certificate;
Exceptions:
throws java.security.cert.CertificateEncodingException
MethodParameters:
Name Flags
recipientCert
public org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator addRecipient(byte[], java.security.PublicKey);
descriptor: ([BLjava/security/PublicKey;)Lorg/bouncycastle/cms/jcajce/JceKeyAgreeRecipientInfoGenerator;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.recipientIDs:Ljava/util/List;
new org.bouncycastle.asn1.cms.KeyAgreeRecipientIdentifier
dup
new org.bouncycastle.asn1.cms.RecipientKeyIdentifier
dup
aload 1
invokespecial org.bouncycastle.asn1.cms.RecipientKeyIdentifier.<init>:([B)V
invokespecial org.bouncycastle.asn1.cms.KeyAgreeRecipientIdentifier.<init>:(Lorg/bouncycastle/asn1/cms/RecipientKeyIdentifier;)V
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
1: aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.recipientKeys:Ljava/util/List;
aload 2
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
2: aload 0
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/bouncycastle/cms/jcajce/JceKeyAgreeRecipientInfoGenerator;
0 3 1 subjectKeyID [B
0 3 2 publicKey Ljava/security/PublicKey;
Exceptions:
throws java.security.cert.CertificateEncodingException
MethodParameters:
Name Flags
subjectKeyID
publicKey
public org.bouncycastle.asn1.ASN1Sequence generateRecipientEncryptedKeys(org.bouncycastle.asn1.x509.AlgorithmIdentifier, org.bouncycastle.asn1.x509.AlgorithmIdentifier, org.bouncycastle.operator.GenericKey);
descriptor: (Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;Lorg/bouncycastle/operator/GenericKey;)Lorg/bouncycastle/asn1/ASN1Sequence;
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=18, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.recipientIDs:Ljava/util/List;
invokeinterface java.util.List.isEmpty:()Z
ifeq 2
1: new org.bouncycastle.cms.CMSException
dup
ldc "No recipients associated with generator - use addRecipient()"
invokespecial org.bouncycastle.cms.CMSException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
invokevirtual org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.init:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)V
3: aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.senderPrivateKey:Ljava/security/PrivateKey;
astore 4
start local 4 4: aload 1
invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
astore 5
start local 5 5: new org.bouncycastle.asn1.ASN1EncodableVector
dup
invokespecial org.bouncycastle.asn1.ASN1EncodableVector.<init>:()V
astore 6
start local 6 6: iconst_0
istore 7
start local 7 7: goto 57
8: StackMap locals: org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator org.bouncycastle.asn1.x509.AlgorithmIdentifier org.bouncycastle.asn1.x509.AlgorithmIdentifier org.bouncycastle.operator.GenericKey java.security.PrivateKey org.bouncycastle.asn1.ASN1ObjectIdentifier org.bouncycastle.asn1.ASN1EncodableVector int
StackMap stack:
aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.recipientKeys:Ljava/util/List;
iload 7
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast java.security.PublicKey
astore 8
start local 8 9: aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.recipientIDs:Ljava/util/List;
iload 7
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast org.bouncycastle.asn1.cms.KeyAgreeRecipientIdentifier
astore 9
start local 9 10: aload 2
invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
astore 11
start local 11 11: aload 5
invokestatic org.bouncycastle.cms.jcajce.CMSUtils.isMQV:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Z
ifeq 14
12: new org.bouncycastle.jcajce.spec.MQVParameterSpec
dup
aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.ephemeralKP:Ljava/security/KeyPair;
aload 8
aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.userKeyingMaterial:[B
invokespecial org.bouncycastle.jcajce.spec.MQVParameterSpec.<init>:(Ljava/security/KeyPair;Ljava/security/PublicKey;[B)V
astore 10
start local 10 13: goto 32
end local 10 14: StackMap locals: org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator org.bouncycastle.asn1.x509.AlgorithmIdentifier org.bouncycastle.asn1.x509.AlgorithmIdentifier org.bouncycastle.operator.GenericKey java.security.PrivateKey org.bouncycastle.asn1.ASN1ObjectIdentifier org.bouncycastle.asn1.ASN1EncodableVector int java.security.PublicKey org.bouncycastle.asn1.cms.KeyAgreeRecipientIdentifier top org.bouncycastle.asn1.ASN1ObjectIdentifier
StackMap stack:
aload 5
invokestatic org.bouncycastle.cms.jcajce.CMSUtils.isEC:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Z
ifeq 18
15: getstatic org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.ecc_cms_Generator:Lorg/bouncycastle/cms/jcajce/KeyMaterialGenerator;
aload 2
aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.keySizeProvider:Lorg/bouncycastle/operator/SecretKeySizeProvider;
aload 11
invokeinterface org.bouncycastle.operator.SecretKeySizeProvider.getKeySize:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)I
aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.userKeyingMaterial:[B
invokeinterface org.bouncycastle.cms.jcajce.KeyMaterialGenerator.generateKDFMaterial:(Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;I[B)[B
astore 12
start local 12 16: new org.bouncycastle.jcajce.spec.UserKeyingMaterialSpec
dup
aload 12
invokespecial org.bouncycastle.jcajce.spec.UserKeyingMaterialSpec.<init>:([B)V
astore 10
end local 12 start local 10 17: goto 32
end local 10 18: StackMap locals:
StackMap stack:
aload 5
invokestatic org.bouncycastle.cms.jcajce.CMSUtils.isRFC2631:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Z
ifeq 26
19: aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.userKeyingMaterial:[B
ifnull 22
20: new org.bouncycastle.jcajce.spec.UserKeyingMaterialSpec
dup
aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.userKeyingMaterial:[B
invokespecial org.bouncycastle.jcajce.spec.UserKeyingMaterialSpec.<init>:([B)V
astore 10
start local 10 21: goto 32
end local 10 22: StackMap locals:
StackMap stack:
aload 5
getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.id_alg_SSDH:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
invokevirtual org.bouncycastle.asn1.ASN1ObjectIdentifier.equals:(Ljava/lang/Object;)Z
ifeq 24
23: new org.bouncycastle.cms.CMSException
dup
ldc "User keying material must be set for static keys."
invokespecial org.bouncycastle.cms.CMSException.<init>:(Ljava/lang/String;)V
athrow
24: StackMap locals:
StackMap stack:
aconst_null
astore 10
start local 10 25: goto 32
end local 10 26: StackMap locals:
StackMap stack:
aload 5
invokestatic org.bouncycastle.cms.jcajce.CMSUtils.isGOST:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Z
ifeq 31
27: aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.userKeyingMaterial:[B
ifnull 30
28: new org.bouncycastle.jcajce.spec.UserKeyingMaterialSpec
dup
aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.userKeyingMaterial:[B
invokespecial org.bouncycastle.jcajce.spec.UserKeyingMaterialSpec.<init>:([B)V
astore 10
start local 10 29: goto 32
end local 10 30: StackMap locals:
StackMap stack:
new org.bouncycastle.cms.CMSException
dup
ldc "User keying material must be set for static keys."
invokespecial org.bouncycastle.cms.CMSException.<init>:(Ljava/lang/String;)V
athrow
31: StackMap locals:
StackMap stack:
new org.bouncycastle.cms.CMSException
dup
new java.lang.StringBuilder
dup
ldc "Unknown key agreement algorithm: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 5
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial org.bouncycastle.cms.CMSException.<init>:(Ljava/lang/String;)V
athrow
start local 10 32: StackMap locals: org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator org.bouncycastle.asn1.x509.AlgorithmIdentifier org.bouncycastle.asn1.x509.AlgorithmIdentifier org.bouncycastle.operator.GenericKey java.security.PrivateKey org.bouncycastle.asn1.ASN1ObjectIdentifier org.bouncycastle.asn1.ASN1EncodableVector int java.security.PublicKey org.bouncycastle.asn1.cms.KeyAgreeRecipientIdentifier java.security.spec.AlgorithmParameterSpec org.bouncycastle.asn1.ASN1ObjectIdentifier
StackMap stack:
aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.helper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
aload 5
invokevirtual org.bouncycastle.cms.jcajce.EnvelopedDataHelper.createKeyAgreement:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Ljavax/crypto/KeyAgreement;
astore 12
start local 12 33: aload 12
aload 4
aload 10
aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.random:Ljava/security/SecureRandom;
invokevirtual javax.crypto.KeyAgreement.init:(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
34: aload 12
aload 8
iconst_1
invokevirtual javax.crypto.KeyAgreement.doPhase:(Ljava/security/Key;Z)Ljava/security/Key;
pop
35: aload 12
aload 11
invokevirtual org.bouncycastle.asn1.ASN1ObjectIdentifier.getId:()Ljava/lang/String;
invokevirtual javax.crypto.KeyAgreement.generateSecret:(Ljava/lang/String;)Ljavax/crypto/SecretKey;
astore 13
start local 13 36: aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.helper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
aload 11
invokevirtual org.bouncycastle.cms.jcajce.EnvelopedDataHelper.createCipher:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Ljavax/crypto/Cipher;
astore 14
start local 14 37: aload 11
getstatic org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers.id_Gost28147_89_None_KeyWrap:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
invokevirtual org.bouncycastle.asn1.ASN1ObjectIdentifier.equals:(Ljava/lang/Object;)Z
ifne 39
38: aload 11
getstatic org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers.id_Gost28147_89_CryptoPro_KeyWrap:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
invokevirtual org.bouncycastle.asn1.ASN1ObjectIdentifier.equals:(Ljava/lang/Object;)Z
ifeq 47
39: StackMap locals: javax.crypto.KeyAgreement javax.crypto.SecretKey javax.crypto.Cipher
StackMap stack:
aload 14
iconst_3
aload 13
new org.bouncycastle.jcajce.spec.GOST28147WrapParameterSpec
dup
getstatic org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers.id_Gost28147_89_CryptoPro_A_ParamSet:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.userKeyingMaterial:[B
invokespecial org.bouncycastle.jcajce.spec.GOST28147WrapParameterSpec.<init>:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;[B)V
invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
40: aload 14
aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.helper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
aload 3
invokevirtual org.bouncycastle.cms.jcajce.EnvelopedDataHelper.getJceKey:(Lorg/bouncycastle/operator/GenericKey;)Ljava/security/Key;
invokevirtual javax.crypto.Cipher.wrap:(Ljava/security/Key;)[B
astore 16
start local 16 41: new org.bouncycastle.asn1.cryptopro.Gost2814789EncryptedKey
dup
42: aload 16
iconst_0
aload 16
arraylength
iconst_4
isub
invokestatic org.bouncycastle.util.Arrays.copyOfRange:([BII)[B
43: aload 16
aload 16
arraylength
iconst_4
isub
aload 16
arraylength
invokestatic org.bouncycastle.util.Arrays.copyOfRange:([BII)[B
44: invokespecial org.bouncycastle.asn1.cryptopro.Gost2814789EncryptedKey.<init>:([B[B)V
astore 17
start local 17 45: new org.bouncycastle.asn1.DEROctetString
dup
aload 17
ldc "DER"
invokevirtual org.bouncycastle.asn1.cryptopro.Gost2814789EncryptedKey.getEncoded:(Ljava/lang/String;)[B
invokespecial org.bouncycastle.asn1.DEROctetString.<init>:([B)V
astore 15
end local 17 end local 16 start local 15 46: goto 50
end local 15 47: StackMap locals:
StackMap stack:
aload 14
iconst_3
aload 13
aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.random:Ljava/security/SecureRandom;
invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;Ljava/security/SecureRandom;)V
48: aload 14
aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.helper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
aload 3
invokevirtual org.bouncycastle.cms.jcajce.EnvelopedDataHelper.getJceKey:(Lorg/bouncycastle/operator/GenericKey;)Ljava/security/Key;
invokevirtual javax.crypto.Cipher.wrap:(Ljava/security/Key;)[B
astore 16
start local 16 49: new org.bouncycastle.asn1.DEROctetString
dup
aload 16
invokespecial org.bouncycastle.asn1.DEROctetString.<init>:([B)V
astore 15
end local 16 start local 15 50: StackMap locals: org.bouncycastle.asn1.ASN1OctetString
StackMap stack:
aload 6
new org.bouncycastle.asn1.cms.RecipientEncryptedKey
dup
aload 9
aload 15
invokespecial org.bouncycastle.asn1.cms.RecipientEncryptedKey.<init>:(Lorg/bouncycastle/asn1/cms/KeyAgreeRecipientIdentifier;Lorg/bouncycastle/asn1/ASN1OctetString;)V
invokevirtual org.bouncycastle.asn1.ASN1EncodableVector.add:(Lorg/bouncycastle/asn1/ASN1Encodable;)V
end local 15 end local 14 end local 13 end local 12 end local 11 end local 10 51: goto 56
52: StackMap locals: org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator org.bouncycastle.asn1.x509.AlgorithmIdentifier org.bouncycastle.asn1.x509.AlgorithmIdentifier org.bouncycastle.operator.GenericKey java.security.PrivateKey org.bouncycastle.asn1.ASN1ObjectIdentifier org.bouncycastle.asn1.ASN1EncodableVector int java.security.PublicKey org.bouncycastle.asn1.cms.KeyAgreeRecipientIdentifier
StackMap stack: java.security.GeneralSecurityException
astore 10
start local 10 53: new org.bouncycastle.cms.CMSException
dup
new java.lang.StringBuilder
dup
ldc "cannot perform agreement step: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 10
invokevirtual java.security.GeneralSecurityException.getMessage:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 10
invokespecial org.bouncycastle.cms.CMSException.<init>:(Ljava/lang/String;Ljava/lang/Exception;)V
athrow
end local 10 54: StackMap locals:
StackMap stack: java.io.IOException
astore 10
start local 10 55: new org.bouncycastle.cms.CMSException
dup
new java.lang.StringBuilder
dup
ldc "unable to encode wrapped key: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 10
invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 10
invokespecial org.bouncycastle.cms.CMSException.<init>:(Ljava/lang/String;Ljava/lang/Exception;)V
athrow
end local 10 end local 9 end local 8 56: StackMap locals:
StackMap stack:
iinc 7 1
StackMap locals:
StackMap stack:
57: iload 7
aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.recipientIDs:Ljava/util/List;
invokeinterface java.util.List.size:()I
if_icmpne 8
end local 7 58: new org.bouncycastle.asn1.DERSequence
dup
aload 6
invokespecial org.bouncycastle.asn1.DERSequence.<init>:(Lorg/bouncycastle/asn1/ASN1EncodableVector;)V
areturn
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 59 0 this Lorg/bouncycastle/cms/jcajce/JceKeyAgreeRecipientInfoGenerator;
0 59 1 keyAgreeAlgorithm Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;
0 59 2 keyEncryptionAlgorithm Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;
0 59 3 contentEncryptionKey Lorg/bouncycastle/operator/GenericKey;
4 59 4 senderPrivateKey Ljava/security/PrivateKey;
5 59 5 keyAgreementOID Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
6 59 6 recipientEncryptedKeys Lorg/bouncycastle/asn1/ASN1EncodableVector;
7 58 7 i I
9 56 8 recipientPublicKey Ljava/security/PublicKey;
10 56 9 karId Lorg/bouncycastle/asn1/cms/KeyAgreeRecipientIdentifier;
13 14 10 agreementParamSpec Ljava/security/spec/AlgorithmParameterSpec;
17 18 10 agreementParamSpec Ljava/security/spec/AlgorithmParameterSpec;
21 22 10 agreementParamSpec Ljava/security/spec/AlgorithmParameterSpec;
25 26 10 agreementParamSpec Ljava/security/spec/AlgorithmParameterSpec;
29 30 10 agreementParamSpec Ljava/security/spec/AlgorithmParameterSpec;
32 51 10 agreementParamSpec Ljava/security/spec/AlgorithmParameterSpec;
11 51 11 keyEncAlg Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
16 17 12 ukmKeyingMaterial [B
33 51 12 keyAgreement Ljavax/crypto/KeyAgreement;
36 51 13 keyEncryptionKey Ljavax/crypto/SecretKey;
37 51 14 keyEncryptionCipher Ljavax/crypto/Cipher;
46 47 15 encryptedKey Lorg/bouncycastle/asn1/ASN1OctetString;
50 51 15 encryptedKey Lorg/bouncycastle/asn1/ASN1OctetString;
41 46 16 encKeyBytes [B
45 46 17 encKey Lorg/bouncycastle/asn1/cryptopro/Gost2814789EncryptedKey;
49 50 16 encryptedKeyBytes [B
53 54 10 e Ljava/security/GeneralSecurityException;
55 56 10 e Ljava/io/IOException;
Exception table:
from to target type
10 51 52 Class java.security.GeneralSecurityException
10 51 54 Class java.io.IOException
Exceptions:
throws org.bouncycastle.cms.CMSException
MethodParameters:
Name Flags
keyAgreeAlgorithm
keyEncryptionAlgorithm
contentEncryptionKey
protected byte[] getUserKeyingMaterial(org.bouncycastle.asn1.x509.AlgorithmIdentifier);
descriptor: (Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;)[B
flags: (0x0004) ACC_PROTECTED
Code:
stack=6, locals=4, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
invokevirtual org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.init:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)V
1: aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.ephemeralKP:Ljava/security/KeyPair;
ifnull 10
2: aload 0
aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.ephemeralKP:Ljava/security/KeyPair;
invokevirtual java.security.KeyPair.getPublic:()Ljava/security/PublicKey;
invokeinterface java.security.PublicKey.getEncoded:()[B
invokestatic org.bouncycastle.asn1.x509.SubjectPublicKeyInfo.getInstance:(Ljava/lang/Object;)Lorg/bouncycastle/asn1/x509/SubjectPublicKeyInfo;
invokevirtual org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.createOriginatorPublicKey:(Lorg/bouncycastle/asn1/x509/SubjectPublicKeyInfo;)Lorg/bouncycastle/asn1/cms/OriginatorPublicKey;
astore 2
start local 2 3: aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.userKeyingMaterial:[B
ifnull 6
4: new org.bouncycastle.asn1.cms.ecc.MQVuserKeyingMaterial
dup
aload 2
new org.bouncycastle.asn1.DEROctetString
dup
aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.userKeyingMaterial:[B
invokespecial org.bouncycastle.asn1.DEROctetString.<init>:([B)V
invokespecial org.bouncycastle.asn1.cms.ecc.MQVuserKeyingMaterial.<init>:(Lorg/bouncycastle/asn1/cms/OriginatorPublicKey;Lorg/bouncycastle/asn1/ASN1OctetString;)V
invokevirtual org.bouncycastle.asn1.cms.ecc.MQVuserKeyingMaterial.getEncoded:()[B
5: areturn
6: StackMap locals: org.bouncycastle.asn1.cms.OriginatorPublicKey
StackMap stack:
new org.bouncycastle.asn1.cms.ecc.MQVuserKeyingMaterial
dup
aload 2
aconst_null
invokespecial org.bouncycastle.asn1.cms.ecc.MQVuserKeyingMaterial.<init>:(Lorg/bouncycastle/asn1/cms/OriginatorPublicKey;Lorg/bouncycastle/asn1/ASN1OctetString;)V
invokevirtual org.bouncycastle.asn1.cms.ecc.MQVuserKeyingMaterial.getEncoded:()[B
7: areturn
8: StackMap locals:
StackMap stack: java.io.IOException
astore 3
start local 3 9: new org.bouncycastle.cms.CMSException
dup
new java.lang.StringBuilder
dup
ldc "unable to encode user keying material: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 3
invokespecial org.bouncycastle.cms.CMSException.<init>:(Ljava/lang/String;Ljava/lang/Exception;)V
athrow
end local 3 end local 2 10: StackMap locals:
StackMap stack:
aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.userKeyingMaterial:[B
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lorg/bouncycastle/cms/jcajce/JceKeyAgreeRecipientInfoGenerator;
0 11 1 keyAgreeAlg Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;
3 10 2 originatorPublicKey Lorg/bouncycastle/asn1/cms/OriginatorPublicKey;
9 10 3 e Ljava/io/IOException;
Exception table:
from to target type
3 5 8 Class java.io.IOException
6 7 8 Class java.io.IOException
Exceptions:
throws org.bouncycastle.cms.CMSException
MethodParameters:
Name Flags
keyAgreeAlg
private void init(org.bouncycastle.asn1.ASN1ObjectIdentifier);
descriptor: (Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=5, args_size=2
start local 0 start local 1 0: aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.random:Ljava/security/SecureRandom;
ifnonnull 2
1: aload 0
new java.security.SecureRandom
dup
invokespecial java.security.SecureRandom.<init>:()V
putfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.random:Ljava/security/SecureRandom;
2: StackMap locals:
StackMap stack:
aload 1
invokestatic org.bouncycastle.cms.jcajce.CMSUtils.isMQV:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Z
ifeq 15
3: aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.ephemeralKP:Ljava/security/KeyPair;
ifnonnull 15
4: aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.senderPublicKey:Ljava/security/PublicKey;
invokeinterface java.security.PublicKey.getEncoded:()[B
invokestatic org.bouncycastle.asn1.x509.SubjectPublicKeyInfo.getInstance:(Ljava/lang/Object;)Lorg/bouncycastle/asn1/x509/SubjectPublicKeyInfo;
astore 2
start local 2 5: aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.helper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
aload 1
invokevirtual org.bouncycastle.cms.jcajce.EnvelopedDataHelper.createAlgorithmParameters:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Ljava/security/AlgorithmParameters;
astore 3
start local 3 6: aload 3
aload 2
invokevirtual org.bouncycastle.asn1.x509.SubjectPublicKeyInfo.getAlgorithm:()Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;
invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getParameters:()Lorg/bouncycastle/asn1/ASN1Encodable;
invokeinterface org.bouncycastle.asn1.ASN1Encodable.toASN1Primitive:()Lorg/bouncycastle/asn1/ASN1Primitive;
invokevirtual org.bouncycastle.asn1.ASN1Primitive.getEncoded:()[B
invokevirtual java.security.AlgorithmParameters.init:([B)V
7: aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.helper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
aload 1
invokevirtual org.bouncycastle.cms.jcajce.EnvelopedDataHelper.createKeyPairGenerator:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Ljava/security/KeyPairGenerator;
astore 4
start local 4 8: aload 4
aload 3
ldc Ljava/security/spec/AlgorithmParameterSpec;
invokevirtual java.security.AlgorithmParameters.getParameterSpec:(Ljava/lang/Class;)Ljava/security/spec/AlgorithmParameterSpec;
aload 0
getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.random:Ljava/security/SecureRandom;
invokevirtual java.security.KeyPairGenerator.initialize:(Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
9: aload 0
aload 4
invokevirtual java.security.KeyPairGenerator.generateKeyPair:()Ljava/security/KeyPair;
putfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.ephemeralKP:Ljava/security/KeyPair;
end local 4 end local 3 end local 2 10: goto 15
11: StackMap locals:
StackMap stack: java.lang.Exception
astore 2
start local 2 12: new org.bouncycastle.cms.CMSException
dup
13: new java.lang.StringBuilder
dup
ldc "cannot determine MQV ephemeral key pair parameters from public key: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 2
14: invokespecial org.bouncycastle.cms.CMSException.<init>:(Ljava/lang/String;Ljava/lang/Exception;)V
athrow
end local 2 15: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lorg/bouncycastle/cms/jcajce/JceKeyAgreeRecipientInfoGenerator;
0 16 1 keyAgreementOID Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
5 10 2 pubInfo Lorg/bouncycastle/asn1/x509/SubjectPublicKeyInfo;
6 10 3 ecAlgParams Ljava/security/AlgorithmParameters;
8 10 4 ephemKPG Ljava/security/KeyPairGenerator;
12 15 2 e Ljava/lang/Exception;
Exception table:
from to target type
4 10 11 Class java.lang.Exception
Exceptions:
throws org.bouncycastle.cms.CMSException
MethodParameters:
Name Flags
keyAgreementOID
}
SourceFile: "JceKeyAgreeRecipientInfoGenerator.java"