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: .line 311
            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 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator this
        start local 1 // org.bouncycastle.asn1.ASN1ObjectIdentifier keyAgreementOID
        start local 2 // java.security.PrivateKey senderPrivateKey
        start local 3 // java.security.PublicKey senderPublicKey
        start local 4 // org.bouncycastle.asn1.ASN1ObjectIdentifier keyEncryptionOID
         0: .line 66
            aload 0 /* this */
            aload 1 /* keyAgreementOID */
            aload 3 /* senderPublicKey */
            invokeinterface java.security.PublicKey.getEncoded:()[B
            invokestatic org.bouncycastle.asn1.x509.SubjectPublicKeyInfo.getInstance:(Ljava/lang/Object;)Lorg/bouncycastle/asn1/x509/SubjectPublicKeyInfo;
            aload 4 /* keyEncryptionOID */
            invokespecial org.bouncycastle.cms.KeyAgreeRecipientInfoGenerator.<init>:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Lorg/bouncycastle/asn1/x509/SubjectPublicKeyInfo;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)V
         1: .line 52
            aload 0 /* this */
            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: .line 54
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.recipientIDs:Ljava/util/List;
         3: .line 55
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.recipientKeys:Ljava/util/List;
         4: .line 59
            aload 0 /* this */
            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: .line 68
            aload 0 /* this */
            aload 3 /* senderPublicKey */
            putfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.senderPublicKey:Ljava/security/PublicKey;
         6: .line 69
            aload 0 /* this */
            aload 2 /* senderPrivateKey */
            putfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.senderPrivateKey:Ljava/security/PrivateKey;
         7: .line 70
            return
        end local 4 // org.bouncycastle.asn1.ASN1ObjectIdentifier keyEncryptionOID
        end local 3 // java.security.PublicKey senderPublicKey
        end local 2 // java.security.PrivateKey senderPrivateKey
        end local 1 // org.bouncycastle.asn1.ASN1ObjectIdentifier keyAgreementOID
        end local 0 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator this
      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 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator this
        start local 1 // byte[] userKeyingMaterial
         0: .line 74
            aload 0 /* this */
            aload 1 /* userKeyingMaterial */
            invokestatic org.bouncycastle.util.Arrays.clone:([B)[B
            putfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.userKeyingMaterial:[B
         1: .line 76
            aload 0 /* this */
            areturn
        end local 1 // byte[] userKeyingMaterial
        end local 0 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator this
      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 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator this
        start local 1 // java.security.Provider provider
         0: .line 81
            aload 0 /* this */
            new org.bouncycastle.cms.jcajce.EnvelopedDataHelper
            dup
            new org.bouncycastle.cms.jcajce.ProviderJcaJceExtHelper
            dup
            aload 1 /* provider */
            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: .line 83
            aload 0 /* this */
            areturn
        end local 1 // java.security.Provider provider
        end local 0 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator this
      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 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator this
        start local 1 // java.lang.String providerName
         0: .line 88
            aload 0 /* this */
            new org.bouncycastle.cms.jcajce.EnvelopedDataHelper
            dup
            new org.bouncycastle.cms.jcajce.NamedJcaJceExtHelper
            dup
            aload 1 /* providerName */
            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: .line 90
            aload 0 /* this */
            areturn
        end local 1 // java.lang.String providerName
        end local 0 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator this
      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 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator this
        start local 1 // java.security.SecureRandom random
         0: .line 95
            aload 0 /* this */
            aload 1 /* random */
            putfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.random:Ljava/security/SecureRandom;
         1: .line 97
            aload 0 /* this */
            areturn
        end local 1 // java.security.SecureRandom random
        end local 0 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator this
      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 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator this
        start local 1 // java.security.cert.X509Certificate recipientCert
         0: .line 110
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.recipientIDs:Ljava/util/List;
            new org.bouncycastle.asn1.cms.KeyAgreeRecipientIdentifier
            dup
            aload 1 /* recipientCert */
            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: .line 111
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.recipientKeys:Ljava/util/List;
            aload 1 /* recipientCert */
            invokevirtual java.security.cert.X509Certificate.getPublicKey:()Ljava/security/PublicKey;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         2: .line 113
            aload 0 /* this */
            areturn
        end local 1 // java.security.cert.X509Certificate recipientCert
        end local 0 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator this
      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 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator this
        start local 1 // byte[] subjectKeyID
        start local 2 // java.security.PublicKey publicKey
         0: .line 127
            aload 0 /* this */
            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 /* subjectKeyID */
            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: .line 128
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.recipientKeys:Ljava/util/List;
            aload 2 /* publicKey */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         2: .line 130
            aload 0 /* this */
            areturn
        end local 2 // java.security.PublicKey publicKey
        end local 1 // byte[] subjectKeyID
        end local 0 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator this
      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 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator this
        start local 1 // org.bouncycastle.asn1.x509.AlgorithmIdentifier keyAgreeAlgorithm
        start local 2 // org.bouncycastle.asn1.x509.AlgorithmIdentifier keyEncryptionAlgorithm
        start local 3 // org.bouncycastle.operator.GenericKey contentEncryptionKey
         0: .line 136
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.recipientIDs:Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 2
         1: .line 138
            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: .line 141
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* keyAgreeAlgorithm */
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokevirtual org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.init:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)V
         3: .line 143
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.senderPrivateKey:Ljava/security/PrivateKey;
            astore 4 /* senderPrivateKey */
        start local 4 // java.security.PrivateKey senderPrivateKey
         4: .line 145
            aload 1 /* keyAgreeAlgorithm */
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            astore 5 /* keyAgreementOID */
        start local 5 // org.bouncycastle.asn1.ASN1ObjectIdentifier keyAgreementOID
         5: .line 147
            new org.bouncycastle.asn1.ASN1EncodableVector
            dup
            invokespecial org.bouncycastle.asn1.ASN1EncodableVector.<init>:()V
            astore 6 /* recipientEncryptedKeys */
        start local 6 // org.bouncycastle.asn1.ASN1EncodableVector recipientEncryptedKeys
         6: .line 148
            iconst_0
            istore 7 /* i */
        start local 7 // int i
         7: goto 57
         8: .line 150
      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 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.recipientKeys:Ljava/util/List;
            iload 7 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.security.PublicKey
            astore 8 /* recipientPublicKey */
        start local 8 // java.security.PublicKey recipientPublicKey
         9: .line 151
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.recipientIDs:Ljava/util/List;
            iload 7 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.bouncycastle.asn1.cms.KeyAgreeRecipientIdentifier
            astore 9 /* karId */
        start local 9 // org.bouncycastle.asn1.cms.KeyAgreeRecipientIdentifier karId
        10: .line 156
            aload 2 /* keyEncryptionAlgorithm */
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            astore 11 /* keyEncAlg */
        start local 11 // org.bouncycastle.asn1.ASN1ObjectIdentifier keyEncAlg
        11: .line 158
            aload 5 /* keyAgreementOID */
            invokestatic org.bouncycastle.cms.jcajce.CMSUtils.isMQV:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Z
            ifeq 14
        12: .line 160
            new org.bouncycastle.jcajce.spec.MQVParameterSpec
            dup
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.ephemeralKP:Ljava/security/KeyPair;
            aload 8 /* recipientPublicKey */
            aload 0 /* this */
            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 /* agreementParamSpec */
        start local 10 // java.security.spec.AlgorithmParameterSpec agreementParamSpec
        13: .line 161
            goto 32
        end local 10 // java.security.spec.AlgorithmParameterSpec agreementParamSpec
        14: .line 162
      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 /* keyAgreementOID */
            invokestatic org.bouncycastle.cms.jcajce.CMSUtils.isEC:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Z
            ifeq 18
        15: .line 164
            getstatic org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.ecc_cms_Generator:Lorg/bouncycastle/cms/jcajce/KeyMaterialGenerator;
            aload 2 /* keyEncryptionAlgorithm */
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.keySizeProvider:Lorg/bouncycastle/operator/SecretKeySizeProvider;
            aload 11 /* keyEncAlg */
            invokeinterface org.bouncycastle.operator.SecretKeySizeProvider.getKeySize:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)I
            aload 0 /* this */
            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 /* ukmKeyingMaterial */
        start local 12 // byte[] ukmKeyingMaterial
        16: .line 166
            new org.bouncycastle.jcajce.spec.UserKeyingMaterialSpec
            dup
            aload 12 /* ukmKeyingMaterial */
            invokespecial org.bouncycastle.jcajce.spec.UserKeyingMaterialSpec.<init>:([B)V
            astore 10 /* agreementParamSpec */
        end local 12 // byte[] ukmKeyingMaterial
        start local 10 // java.security.spec.AlgorithmParameterSpec agreementParamSpec
        17: .line 167
            goto 32
        end local 10 // java.security.spec.AlgorithmParameterSpec agreementParamSpec
        18: .line 168
      StackMap locals:
      StackMap stack:
            aload 5 /* keyAgreementOID */
            invokestatic org.bouncycastle.cms.jcajce.CMSUtils.isRFC2631:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Z
            ifeq 26
        19: .line 170
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.userKeyingMaterial:[B
            ifnull 22
        20: .line 172
            new org.bouncycastle.jcajce.spec.UserKeyingMaterialSpec
            dup
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.userKeyingMaterial:[B
            invokespecial org.bouncycastle.jcajce.spec.UserKeyingMaterialSpec.<init>:([B)V
            astore 10 /* agreementParamSpec */
        start local 10 // java.security.spec.AlgorithmParameterSpec agreementParamSpec
        21: .line 173
            goto 32
        end local 10 // java.security.spec.AlgorithmParameterSpec agreementParamSpec
        22: .line 176
      StackMap locals:
      StackMap stack:
            aload 5 /* keyAgreementOID */
            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: .line 178
            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: .line 180
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 10 /* agreementParamSpec */
        start local 10 // java.security.spec.AlgorithmParameterSpec agreementParamSpec
        25: .line 182
            goto 32
        end local 10 // java.security.spec.AlgorithmParameterSpec agreementParamSpec
        26: .line 183
      StackMap locals:
      StackMap stack:
            aload 5 /* keyAgreementOID */
            invokestatic org.bouncycastle.cms.jcajce.CMSUtils.isGOST:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Z
            ifeq 31
        27: .line 185
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.userKeyingMaterial:[B
            ifnull 30
        28: .line 187
            new org.bouncycastle.jcajce.spec.UserKeyingMaterialSpec
            dup
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.userKeyingMaterial:[B
            invokespecial org.bouncycastle.jcajce.spec.UserKeyingMaterialSpec.<init>:([B)V
            astore 10 /* agreementParamSpec */
        start local 10 // java.security.spec.AlgorithmParameterSpec agreementParamSpec
        29: .line 188
            goto 32
        end local 10 // java.security.spec.AlgorithmParameterSpec agreementParamSpec
        30: .line 191
      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: .line 196
      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 /* keyAgreementOID */
            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 // java.security.spec.AlgorithmParameterSpec agreementParamSpec
        32: .line 200
      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 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.helper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
            aload 5 /* keyAgreementOID */
            invokevirtual org.bouncycastle.cms.jcajce.EnvelopedDataHelper.createKeyAgreement:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Ljavax/crypto/KeyAgreement;
            astore 12 /* keyAgreement */
        start local 12 // javax.crypto.KeyAgreement keyAgreement
        33: .line 201
            aload 12 /* keyAgreement */
            aload 4 /* senderPrivateKey */
            aload 10 /* agreementParamSpec */
            aload 0 /* this */
            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: .line 202
            aload 12 /* keyAgreement */
            aload 8 /* recipientPublicKey */
            iconst_1
            invokevirtual javax.crypto.KeyAgreement.doPhase:(Ljava/security/Key;Z)Ljava/security/Key;
            pop
        35: .line 204
            aload 12 /* keyAgreement */
            aload 11 /* keyEncAlg */
            invokevirtual org.bouncycastle.asn1.ASN1ObjectIdentifier.getId:()Ljava/lang/String;
            invokevirtual javax.crypto.KeyAgreement.generateSecret:(Ljava/lang/String;)Ljavax/crypto/SecretKey;
            astore 13 /* keyEncryptionKey */
        start local 13 // javax.crypto.SecretKey keyEncryptionKey
        36: .line 207
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.helper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
            aload 11 /* keyEncAlg */
            invokevirtual org.bouncycastle.cms.jcajce.EnvelopedDataHelper.createCipher:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Ljavax/crypto/Cipher;
            astore 14 /* keyEncryptionCipher */
        start local 14 // javax.crypto.Cipher keyEncryptionCipher
        37: .line 210
            aload 11 /* keyEncAlg */
            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: .line 211
            aload 11 /* keyEncAlg */
            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: .line 213
      StackMap locals: javax.crypto.KeyAgreement javax.crypto.SecretKey javax.crypto.Cipher
      StackMap stack:
            aload 14 /* keyEncryptionCipher */
            iconst_3
            aload 13 /* keyEncryptionKey */
            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 /* this */
            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: .line 215
            aload 14 /* keyEncryptionCipher */
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.helper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
            aload 3 /* contentEncryptionKey */
            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 /* encKeyBytes */
        start local 16 // byte[] encKeyBytes
        41: .line 217
            new org.bouncycastle.asn1.cryptopro.Gost2814789EncryptedKey
            dup
        42: .line 218
            aload 16 /* encKeyBytes */
            iconst_0
            aload 16 /* encKeyBytes */
            arraylength
            iconst_4
            isub
            invokestatic org.bouncycastle.util.Arrays.copyOfRange:([BII)[B
        43: .line 219
            aload 16 /* encKeyBytes */
            aload 16 /* encKeyBytes */
            arraylength
            iconst_4
            isub
            aload 16 /* encKeyBytes */
            arraylength
            invokestatic org.bouncycastle.util.Arrays.copyOfRange:([BII)[B
        44: .line 217
            invokespecial org.bouncycastle.asn1.cryptopro.Gost2814789EncryptedKey.<init>:([B[B)V
            astore 17 /* encKey */
        start local 17 // org.bouncycastle.asn1.cryptopro.Gost2814789EncryptedKey encKey
        45: .line 221
            new org.bouncycastle.asn1.DEROctetString
            dup
            aload 17 /* encKey */
            ldc "DER"
            invokevirtual org.bouncycastle.asn1.cryptopro.Gost2814789EncryptedKey.getEncoded:(Ljava/lang/String;)[B
            invokespecial org.bouncycastle.asn1.DEROctetString.<init>:([B)V
            astore 15 /* encryptedKey */
        end local 17 // org.bouncycastle.asn1.cryptopro.Gost2814789EncryptedKey encKey
        end local 16 // byte[] encKeyBytes
        start local 15 // org.bouncycastle.asn1.ASN1OctetString encryptedKey
        46: .line 222
            goto 50
        end local 15 // org.bouncycastle.asn1.ASN1OctetString encryptedKey
        47: .line 225
      StackMap locals:
      StackMap stack:
            aload 14 /* keyEncryptionCipher */
            iconst_3
            aload 13 /* keyEncryptionKey */
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.random:Ljava/security/SecureRandom;
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;Ljava/security/SecureRandom;)V
        48: .line 227
            aload 14 /* keyEncryptionCipher */
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.helper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
            aload 3 /* contentEncryptionKey */
            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 /* encryptedKeyBytes */
        start local 16 // byte[] encryptedKeyBytes
        49: .line 229
            new org.bouncycastle.asn1.DEROctetString
            dup
            aload 16 /* encryptedKeyBytes */
            invokespecial org.bouncycastle.asn1.DEROctetString.<init>:([B)V
            astore 15 /* encryptedKey */
        end local 16 // byte[] encryptedKeyBytes
        start local 15 // org.bouncycastle.asn1.ASN1OctetString encryptedKey
        50: .line 232
      StackMap locals: org.bouncycastle.asn1.ASN1OctetString
      StackMap stack:
            aload 6 /* recipientEncryptedKeys */
            new org.bouncycastle.asn1.cms.RecipientEncryptedKey
            dup
            aload 9 /* karId */
            aload 15 /* encryptedKey */
            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 // org.bouncycastle.asn1.ASN1OctetString encryptedKey
        end local 14 // javax.crypto.Cipher keyEncryptionCipher
        end local 13 // javax.crypto.SecretKey keyEncryptionKey
        end local 12 // javax.crypto.KeyAgreement keyAgreement
        end local 11 // org.bouncycastle.asn1.ASN1ObjectIdentifier keyEncAlg
        end local 10 // java.security.spec.AlgorithmParameterSpec agreementParamSpec
        51: .line 233
            goto 56
        52: .line 234
      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 /* e */
        start local 10 // java.security.GeneralSecurityException e
        53: .line 236
            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 /* e */
            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 /* e */
            invokespecial org.bouncycastle.cms.CMSException.<init>:(Ljava/lang/String;Ljava/lang/Exception;)V
            athrow
        end local 10 // java.security.GeneralSecurityException e
        54: .line 238
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 10 /* e */
        start local 10 // java.io.IOException e
        55: .line 240
            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 /* e */
            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 /* e */
            invokespecial org.bouncycastle.cms.CMSException.<init>:(Ljava/lang/String;Ljava/lang/Exception;)V
            athrow
        end local 10 // java.io.IOException e
        end local 9 // org.bouncycastle.asn1.cms.KeyAgreeRecipientIdentifier karId
        end local 8 // java.security.PublicKey recipientPublicKey
        56: .line 148
      StackMap locals:
      StackMap stack:
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        57: iload 7 /* i */
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.recipientIDs:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            if_icmpne 8
        end local 7 // int i
        58: .line 244
            new org.bouncycastle.asn1.DERSequence
            dup
            aload 6 /* recipientEncryptedKeys */
            invokespecial org.bouncycastle.asn1.DERSequence.<init>:(Lorg/bouncycastle/asn1/ASN1EncodableVector;)V
            areturn
        end local 6 // org.bouncycastle.asn1.ASN1EncodableVector recipientEncryptedKeys
        end local 5 // org.bouncycastle.asn1.ASN1ObjectIdentifier keyAgreementOID
        end local 4 // java.security.PrivateKey senderPrivateKey
        end local 3 // org.bouncycastle.operator.GenericKey contentEncryptionKey
        end local 2 // org.bouncycastle.asn1.x509.AlgorithmIdentifier keyEncryptionAlgorithm
        end local 1 // org.bouncycastle.asn1.x509.AlgorithmIdentifier keyAgreeAlgorithm
        end local 0 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator this
      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 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator this
        start local 1 // org.bouncycastle.asn1.x509.AlgorithmIdentifier keyAgreeAlg
         0: .line 250
            aload 0 /* this */
            aload 1 /* keyAgreeAlg */
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokevirtual org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.init:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)V
         1: .line 252
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.ephemeralKP:Ljava/security/KeyPair;
            ifnull 10
         2: .line 254
            aload 0 /* this */
            aload 0 /* this */
            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 /* originatorPublicKey */
        start local 2 // org.bouncycastle.asn1.cms.OriginatorPublicKey originatorPublicKey
         3: .line 258
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.userKeyingMaterial:[B
            ifnull 6
         4: .line 260
            new org.bouncycastle.asn1.cms.ecc.MQVuserKeyingMaterial
            dup
            aload 2 /* originatorPublicKey */
            new org.bouncycastle.asn1.DEROctetString
            dup
            aload 0 /* this */
            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: .line 264
      StackMap locals: org.bouncycastle.asn1.cms.OriginatorPublicKey
      StackMap stack:
            new org.bouncycastle.asn1.cms.ecc.MQVuserKeyingMaterial
            dup
            aload 2 /* originatorPublicKey */
            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: .line 267
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 3 /* e */
        start local 3 // java.io.IOException e
         9: .line 269
            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 /* e */
            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 /* e */
            invokespecial org.bouncycastle.cms.CMSException.<init>:(Ljava/lang/String;Ljava/lang/Exception;)V
            athrow
        end local 3 // java.io.IOException e
        end local 2 // org.bouncycastle.asn1.cms.OriginatorPublicKey originatorPublicKey
        10: .line 273
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.userKeyingMaterial:[B
            areturn
        end local 1 // org.bouncycastle.asn1.x509.AlgorithmIdentifier keyAgreeAlg
        end local 0 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator this
      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 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator this
        start local 1 // org.bouncycastle.asn1.ASN1ObjectIdentifier keyAgreementOID
         0: .line 279
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.random:Ljava/security/SecureRandom;
            ifnonnull 2
         1: .line 281
            aload 0 /* this */
            new java.security.SecureRandom
            dup
            invokespecial java.security.SecureRandom.<init>:()V
            putfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.random:Ljava/security/SecureRandom;
         2: .line 284
      StackMap locals:
      StackMap stack:
            aload 1 /* keyAgreementOID */
            invokestatic org.bouncycastle.cms.jcajce.CMSUtils.isMQV:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Z
            ifeq 15
         3: .line 286
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.ephemeralKP:Ljava/security/KeyPair;
            ifnonnull 15
         4: .line 290
            aload 0 /* this */
            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 /* pubInfo */
        start local 2 // org.bouncycastle.asn1.x509.SubjectPublicKeyInfo pubInfo
         5: .line 292
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.helper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
            aload 1 /* keyAgreementOID */
            invokevirtual org.bouncycastle.cms.jcajce.EnvelopedDataHelper.createAlgorithmParameters:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Ljava/security/AlgorithmParameters;
            astore 3 /* ecAlgParams */
        start local 3 // java.security.AlgorithmParameters ecAlgParams
         6: .line 294
            aload 3 /* ecAlgParams */
            aload 2 /* pubInfo */
            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: .line 296
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.helper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
            aload 1 /* keyAgreementOID */
            invokevirtual org.bouncycastle.cms.jcajce.EnvelopedDataHelper.createKeyPairGenerator:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Ljava/security/KeyPairGenerator;
            astore 4 /* ephemKPG */
        start local 4 // java.security.KeyPairGenerator ephemKPG
         8: .line 298
            aload 4 /* ephemKPG */
            aload 3 /* ecAlgParams */
            ldc Ljava/security/spec/AlgorithmParameterSpec;
            invokevirtual java.security.AlgorithmParameters.getParameterSpec:(Ljava/lang/Class;)Ljava/security/spec/AlgorithmParameterSpec;
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.random:Ljava/security/SecureRandom;
            invokevirtual java.security.KeyPairGenerator.initialize:(Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
         9: .line 300
            aload 0 /* this */
            aload 4 /* ephemKPG */
            invokevirtual java.security.KeyPairGenerator.generateKeyPair:()Ljava/security/KeyPair;
            putfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator.ephemeralKP:Ljava/security/KeyPair;
        end local 4 // java.security.KeyPairGenerator ephemKPG
        end local 3 // java.security.AlgorithmParameters ecAlgParams
        end local 2 // org.bouncycastle.asn1.x509.SubjectPublicKeyInfo pubInfo
        10: .line 301
            goto 15
        11: .line 302
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 2 /* e */
        start local 2 // java.lang.Exception e
        12: .line 304
            new org.bouncycastle.cms.CMSException
            dup
        13: .line 305
            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 /* e */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* e */
        14: .line 304
            invokespecial org.bouncycastle.cms.CMSException.<init>:(Ljava/lang/String;Ljava/lang/Exception;)V
            athrow
        end local 2 // java.lang.Exception e
        15: .line 309
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.bouncycastle.asn1.ASN1ObjectIdentifier keyAgreementOID
        end local 0 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipientInfoGenerator this
      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"