public abstract class org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient implements org.bouncycastle.cms.KeyAgreeRecipient
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient
  super_class: java.lang.Object
{
  private static final java.util.Set possibleOldMessages;
    descriptor: Ljava/util/Set;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private java.security.PrivateKey recipientKey;
    descriptor: Ljava/security/PrivateKey;
    flags: (0x0002) ACC_PRIVATE

  protected org.bouncycastle.cms.jcajce.EnvelopedDataHelper helper;
    descriptor: Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
    flags: (0x0004) ACC_PROTECTED

  protected org.bouncycastle.cms.jcajce.EnvelopedDataHelper contentHelper;
    descriptor: Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
    flags: (0x0004) ACC_PROTECTED

  private org.bouncycastle.operator.SecretKeySizeProvider keySizeProvider;
    descriptor: Lorg/bouncycastle/operator/SecretKeySizeProvider;
    flags: (0x0002) ACC_PRIVATE

  private static org.bouncycastle.cms.jcajce.KeyMaterialGenerator old_ecc_cms_Generator;
    descriptor: Lorg/bouncycastle/cms/jcajce/KeyMaterialGenerator;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  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 48
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            putstatic org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.possibleOldMessages:Ljava/util/Set;
         1: .line 52
            getstatic org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.possibleOldMessages:Ljava/util/Set;
            getstatic org.bouncycastle.asn1.x9.X9ObjectIdentifiers.dhSinglePass_stdDH_sha1kdf_scheme:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         2: .line 53
            getstatic org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.possibleOldMessages:Ljava/util/Set;
            getstatic org.bouncycastle.asn1.x9.X9ObjectIdentifiers.mqvSinglePass_sha1kdf_scheme:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         3: .line 280
            new org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient$1
            dup
            invokespecial org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient$1.<init>:()V
            putstatic org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.old_ecc_cms_Generator:Lorg/bouncycastle/cms/jcajce/KeyMaterialGenerator;
         4: .line 300
            new org.bouncycastle.cms.jcajce.RFC5753KeyMaterialGenerator
            dup
            invokespecial org.bouncycastle.cms.jcajce.RFC5753KeyMaterialGenerator.<init>:()V
            putstatic org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.ecc_cms_Generator:Lorg/bouncycastle/cms/jcajce/KeyMaterialGenerator;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(java.security.PrivateKey);
    descriptor: (Ljava/security/PrivateKey;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient this
        start local 1 // java.security.PrivateKey recipientKey
         0: .line 62
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 57
            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.JceKeyAgreeRecipient.helper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
         2: .line 58
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.helper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
            putfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.contentHelper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
         3: .line 59
            aload 0 /* this */
            new org.bouncycastle.operator.DefaultSecretKeySizeProvider
            dup
            invokespecial org.bouncycastle.operator.DefaultSecretKeySizeProvider.<init>:()V
            putfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.keySizeProvider:Lorg/bouncycastle/operator/SecretKeySizeProvider;
         4: .line 64
            aload 0 /* this */
            aload 1 /* recipientKey */
            putfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.recipientKey:Ljava/security/PrivateKey;
         5: .line 65
            return
        end local 1 // java.security.PrivateKey recipientKey
        end local 0 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0          this  Lorg/bouncycastle/cms/jcajce/JceKeyAgreeRecipient;
            0    6     1  recipientKey  Ljava/security/PrivateKey;
    MethodParameters:
              Name  Flags
      recipientKey  

  public org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient setProvider(java.security.Provider);
    descriptor: (Ljava/security/Provider;)Lorg/bouncycastle/cms/jcajce/JceKeyAgreeRecipient;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient this
        start local 1 // java.security.Provider provider
         0: .line 75
            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.JceKeyAgreeRecipient.helper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
         1: .line 76
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.helper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
            putfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.contentHelper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
         2: .line 78
            aload 0 /* this */
            areturn
        end local 1 // java.security.Provider provider
        end local 0 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lorg/bouncycastle/cms/jcajce/JceKeyAgreeRecipient;
            0    3     1  provider  Ljava/security/Provider;
    MethodParameters:
          Name  Flags
      provider  

  public org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient setProvider(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/bouncycastle/cms/jcajce/JceKeyAgreeRecipient;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient this
        start local 1 // java.lang.String providerName
         0: .line 89
            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.JceKeyAgreeRecipient.helper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
         1: .line 90
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.helper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
            putfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.contentHelper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
         2: .line 92
            aload 0 /* this */
            areturn
        end local 1 // java.lang.String providerName
        end local 0 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0          this  Lorg/bouncycastle/cms/jcajce/JceKeyAgreeRecipient;
            0    3     1  providerName  Ljava/lang/String;
    MethodParameters:
              Name  Flags
      providerName  

  public org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient setContentProvider(java.security.Provider);
    descriptor: (Ljava/security/Provider;)Lorg/bouncycastle/cms/jcajce/JceKeyAgreeRecipient;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient this
        start local 1 // java.security.Provider provider
         0: .line 104
            aload 0 /* this */
            aload 1 /* provider */
            invokestatic org.bouncycastle.cms.jcajce.CMSUtils.createContentHelper:(Ljava/security/Provider;)Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
            putfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.contentHelper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
         1: .line 106
            aload 0 /* this */
            areturn
        end local 1 // java.security.Provider provider
        end local 0 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lorg/bouncycastle/cms/jcajce/JceKeyAgreeRecipient;
            0    2     1  provider  Ljava/security/Provider;
    MethodParameters:
          Name  Flags
      provider  

  public org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient setContentProvider(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/bouncycastle/cms/jcajce/JceKeyAgreeRecipient;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient this
        start local 1 // java.lang.String providerName
         0: .line 118
            aload 0 /* this */
            aload 1 /* providerName */
            invokestatic org.bouncycastle.cms.jcajce.CMSUtils.createContentHelper:(Ljava/lang/String;)Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
            putfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.contentHelper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
         1: .line 120
            aload 0 /* this */
            areturn
        end local 1 // java.lang.String providerName
        end local 0 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lorg/bouncycastle/cms/jcajce/JceKeyAgreeRecipient;
            0    2     1  providerName  Ljava/lang/String;
    MethodParameters:
              Name  Flags
      providerName  

  private javax.crypto.SecretKey calculateAgreedWrapKey(org.bouncycastle.asn1.x509.AlgorithmIdentifier, org.bouncycastle.asn1.x509.AlgorithmIdentifier, java.security.PublicKey, org.bouncycastle.asn1.ASN1OctetString, java.security.PrivateKey, org.bouncycastle.cms.jcajce.KeyMaterialGenerator);
    descriptor: (Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;Ljava/security/PublicKey;Lorg/bouncycastle/asn1/ASN1OctetString;Ljava/security/PrivateKey;Lorg/bouncycastle/cms/jcajce/KeyMaterialGenerator;)Ljavax/crypto/SecretKey;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=14, args_size=7
        start local 0 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient this
        start local 1 // org.bouncycastle.asn1.x509.AlgorithmIdentifier keyEncAlg
        start local 2 // org.bouncycastle.asn1.x509.AlgorithmIdentifier wrapAlg
        start local 3 // java.security.PublicKey senderPublicKey
        start local 4 // org.bouncycastle.asn1.ASN1OctetString userKeyingMaterial
        start local 5 // java.security.PrivateKey receiverPrivateKey
        start local 6 // org.bouncycastle.cms.jcajce.KeyMaterialGenerator kmGen
         0: .line 127
            aload 1 /* keyEncAlg */
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokestatic org.bouncycastle.cms.jcajce.CMSUtils.isMQV:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Z
            ifeq 18
         1: .line 129
            aload 4 /* userKeyingMaterial */
            invokevirtual org.bouncycastle.asn1.ASN1OctetString.getOctets:()[B
            invokestatic org.bouncycastle.asn1.cms.ecc.MQVuserKeyingMaterial.getInstance:(Ljava/lang/Object;)Lorg/bouncycastle/asn1/cms/ecc/MQVuserKeyingMaterial;
            astore 7 /* ukm */
        start local 7 // org.bouncycastle.asn1.cms.ecc.MQVuserKeyingMaterial ukm
         2: .line 131
            new org.bouncycastle.asn1.x509.SubjectPublicKeyInfo
            dup
         3: .line 132
            aload 0 /* this */
            invokevirtual org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.getPrivateKeyAlgorithmIdentifier:()Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;
         4: .line 133
            aload 7 /* ukm */
            invokevirtual org.bouncycastle.asn1.cms.ecc.MQVuserKeyingMaterial.getEphemeralPublicKey:()Lorg/bouncycastle/asn1/cms/OriginatorPublicKey;
            invokevirtual org.bouncycastle.asn1.cms.OriginatorPublicKey.getPublicKey:()Lorg/bouncycastle/asn1/DERBitString;
            invokevirtual org.bouncycastle.asn1.DERBitString.getBytes:()[B
         5: .line 131
            invokespecial org.bouncycastle.asn1.x509.SubjectPublicKeyInfo.<init>:(Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;[B)V
            astore 8 /* pubInfo */
        start local 8 // org.bouncycastle.asn1.x509.SubjectPublicKeyInfo pubInfo
         6: .line 135
            new java.security.spec.X509EncodedKeySpec
            dup
            aload 8 /* pubInfo */
            invokevirtual org.bouncycastle.asn1.x509.SubjectPublicKeyInfo.getEncoded:()[B
            invokespecial java.security.spec.X509EncodedKeySpec.<init>:([B)V
            astore 9 /* pubSpec */
        start local 9 // java.security.spec.X509EncodedKeySpec pubSpec
         7: .line 136
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.helper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
            aload 1 /* keyEncAlg */
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokevirtual org.bouncycastle.cms.jcajce.EnvelopedDataHelper.createKeyFactory:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Ljava/security/KeyFactory;
            astore 10 /* fact */
        start local 10 // java.security.KeyFactory fact
         8: .line 137
            aload 10 /* fact */
            aload 9 /* pubSpec */
            invokevirtual java.security.KeyFactory.generatePublic:(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;
            astore 11 /* ephemeralKey */
        start local 11 // java.security.PublicKey ephemeralKey
         9: .line 139
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.helper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
            aload 1 /* keyEncAlg */
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokevirtual org.bouncycastle.cms.jcajce.EnvelopedDataHelper.createKeyAgreement:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Ljavax/crypto/KeyAgreement;
            astore 12 /* agreement */
        start local 12 // javax.crypto.KeyAgreement agreement
        10: .line 141
            aload 7 /* ukm */
            invokevirtual org.bouncycastle.asn1.cms.ecc.MQVuserKeyingMaterial.getAddedukm:()Lorg/bouncycastle/asn1/ASN1OctetString;
            ifnull 11
            aload 7 /* ukm */
            invokevirtual org.bouncycastle.asn1.cms.ecc.MQVuserKeyingMaterial.getAddedukm:()Lorg/bouncycastle/asn1/ASN1OctetString;
            invokevirtual org.bouncycastle.asn1.ASN1OctetString.getOctets:()[B
            goto 12
      StackMap locals: org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient org.bouncycastle.asn1.x509.AlgorithmIdentifier org.bouncycastle.asn1.x509.AlgorithmIdentifier java.security.PublicKey org.bouncycastle.asn1.ASN1OctetString java.security.PrivateKey org.bouncycastle.cms.jcajce.KeyMaterialGenerator org.bouncycastle.asn1.cms.ecc.MQVuserKeyingMaterial org.bouncycastle.asn1.x509.SubjectPublicKeyInfo java.security.spec.X509EncodedKeySpec java.security.KeyFactory java.security.PublicKey javax.crypto.KeyAgreement
      StackMap stack:
        11: aconst_null
      StackMap locals:
      StackMap stack: byte[]
        12: astore 13 /* ukmKeyingMaterial */
        start local 13 // byte[] ukmKeyingMaterial
        13: .line 142
            aload 6 /* kmGen */
            getstatic org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.old_ecc_cms_Generator:Lorg/bouncycastle/cms/jcajce/KeyMaterialGenerator;
            if_acmpne 15
        14: .line 144
            getstatic org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.old_ecc_cms_Generator:Lorg/bouncycastle/cms/jcajce/KeyMaterialGenerator;
            aload 2 /* wrapAlg */
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.keySizeProvider:Lorg/bouncycastle/operator/SecretKeySizeProvider;
            aload 2 /* wrapAlg */
            invokeinterface org.bouncycastle.operator.SecretKeySizeProvider.getKeySize:(Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;)I
            aload 13 /* ukmKeyingMaterial */
            invokeinterface org.bouncycastle.cms.jcajce.KeyMaterialGenerator.generateKDFMaterial:(Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;I[B)[B
            astore 13 /* ukmKeyingMaterial */
        15: .line 147
      StackMap locals: byte[]
      StackMap stack:
            aload 12 /* agreement */
            aload 5 /* receiverPrivateKey */
            new org.bouncycastle.jcajce.spec.MQVParameterSpec
            dup
            aload 5 /* receiverPrivateKey */
            aload 11 /* ephemeralKey */
            aload 13 /* ukmKeyingMaterial */
            invokespecial org.bouncycastle.jcajce.spec.MQVParameterSpec.<init>:(Ljava/security/PrivateKey;Ljava/security/PublicKey;[B)V
            invokevirtual javax.crypto.KeyAgreement.init:(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
        16: .line 148
            aload 12 /* agreement */
            aload 3 /* senderPublicKey */
            iconst_1
            invokevirtual javax.crypto.KeyAgreement.doPhase:(Ljava/security/Key;Z)Ljava/security/Key;
            pop
        17: .line 150
            aload 12 /* agreement */
            aload 2 /* wrapAlg */
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokevirtual org.bouncycastle.asn1.ASN1ObjectIdentifier.getId:()Ljava/lang/String;
            invokevirtual javax.crypto.KeyAgreement.generateSecret:(Ljava/lang/String;)Ljavax/crypto/SecretKey;
            areturn
        end local 13 // byte[] ukmKeyingMaterial
        end local 12 // javax.crypto.KeyAgreement agreement
        end local 11 // java.security.PublicKey ephemeralKey
        end local 10 // java.security.KeyFactory fact
        end local 9 // java.security.spec.X509EncodedKeySpec pubSpec
        end local 8 // org.bouncycastle.asn1.x509.SubjectPublicKeyInfo pubInfo
        end local 7 // org.bouncycastle.asn1.cms.ecc.MQVuserKeyingMaterial ukm
        18: .line 154
      StackMap locals: org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient org.bouncycastle.asn1.x509.AlgorithmIdentifier org.bouncycastle.asn1.x509.AlgorithmIdentifier java.security.PublicKey org.bouncycastle.asn1.ASN1OctetString java.security.PrivateKey org.bouncycastle.cms.jcajce.KeyMaterialGenerator
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.helper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
            aload 1 /* keyEncAlg */
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokevirtual org.bouncycastle.cms.jcajce.EnvelopedDataHelper.createKeyAgreement:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Ljavax/crypto/KeyAgreement;
            astore 7 /* agreement */
        start local 7 // javax.crypto.KeyAgreement agreement
        19: .line 156
            aconst_null
            astore 8 /* userKeyingMaterialSpec */
        start local 8 // org.bouncycastle.jcajce.spec.UserKeyingMaterialSpec userKeyingMaterialSpec
        20: .line 158
            aload 1 /* keyEncAlg */
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokestatic org.bouncycastle.cms.jcajce.CMSUtils.isEC:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Z
            ifeq 28
        21: .line 160
            aload 4 /* userKeyingMaterial */
            ifnull 25
        22: .line 162
            aload 6 /* kmGen */
            aload 2 /* wrapAlg */
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.keySizeProvider:Lorg/bouncycastle/operator/SecretKeySizeProvider;
            aload 2 /* wrapAlg */
            invokeinterface org.bouncycastle.operator.SecretKeySizeProvider.getKeySize:(Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;)I
            aload 4 /* userKeyingMaterial */
            invokevirtual org.bouncycastle.asn1.ASN1OctetString.getOctets:()[B
            invokeinterface org.bouncycastle.cms.jcajce.KeyMaterialGenerator.generateKDFMaterial:(Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;I[B)[B
            astore 9 /* ukmKeyingMaterial */
        start local 9 // byte[] ukmKeyingMaterial
        23: .line 164
            new org.bouncycastle.jcajce.spec.UserKeyingMaterialSpec
            dup
            aload 9 /* ukmKeyingMaterial */
            invokespecial org.bouncycastle.jcajce.spec.UserKeyingMaterialSpec.<init>:([B)V
            astore 8 /* userKeyingMaterialSpec */
        end local 9 // byte[] ukmKeyingMaterial
        24: .line 165
            goto 37
        25: .line 168
      StackMap locals: javax.crypto.KeyAgreement org.bouncycastle.jcajce.spec.UserKeyingMaterialSpec
      StackMap stack:
            aload 6 /* kmGen */
            aload 2 /* wrapAlg */
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.keySizeProvider:Lorg/bouncycastle/operator/SecretKeySizeProvider;
            aload 2 /* wrapAlg */
            invokeinterface org.bouncycastle.operator.SecretKeySizeProvider.getKeySize:(Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;)I
            aconst_null
            invokeinterface org.bouncycastle.cms.jcajce.KeyMaterialGenerator.generateKDFMaterial:(Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;I[B)[B
            astore 9 /* ukmKeyingMaterial */
        start local 9 // byte[] ukmKeyingMaterial
        26: .line 170
            new org.bouncycastle.jcajce.spec.UserKeyingMaterialSpec
            dup
            aload 9 /* ukmKeyingMaterial */
            invokespecial org.bouncycastle.jcajce.spec.UserKeyingMaterialSpec.<init>:([B)V
            astore 8 /* userKeyingMaterialSpec */
        end local 9 // byte[] ukmKeyingMaterial
        27: .line 172
            goto 37
        28: .line 173
      StackMap locals:
      StackMap stack:
            aload 1 /* keyEncAlg */
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokestatic org.bouncycastle.cms.jcajce.CMSUtils.isRFC2631:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Z
            ifeq 32
        29: .line 175
            aload 4 /* userKeyingMaterial */
            ifnull 37
        30: .line 177
            new org.bouncycastle.jcajce.spec.UserKeyingMaterialSpec
            dup
            aload 4 /* userKeyingMaterial */
            invokevirtual org.bouncycastle.asn1.ASN1OctetString.getOctets:()[B
            invokespecial org.bouncycastle.jcajce.spec.UserKeyingMaterialSpec.<init>:([B)V
            astore 8 /* userKeyingMaterialSpec */
        31: .line 179
            goto 37
        32: .line 180
      StackMap locals:
      StackMap stack:
            aload 1 /* keyEncAlg */
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokestatic org.bouncycastle.cms.jcajce.CMSUtils.isGOST:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Z
            ifeq 36
        33: .line 182
            aload 4 /* userKeyingMaterial */
            ifnull 37
        34: .line 184
            new org.bouncycastle.jcajce.spec.UserKeyingMaterialSpec
            dup
            aload 4 /* userKeyingMaterial */
            invokevirtual org.bouncycastle.asn1.ASN1OctetString.getOctets:()[B
            invokespecial org.bouncycastle.jcajce.spec.UserKeyingMaterialSpec.<init>:([B)V
            astore 8 /* userKeyingMaterialSpec */
        35: .line 186
            goto 37
        36: .line 189
      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 1 /* keyEncAlg */
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            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
        37: .line 192
      StackMap locals:
      StackMap stack:
            aload 7 /* agreement */
            aload 5 /* receiverPrivateKey */
            aload 8 /* userKeyingMaterialSpec */
            invokevirtual javax.crypto.KeyAgreement.init:(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
        38: .line 194
            aload 7 /* agreement */
            aload 3 /* senderPublicKey */
            iconst_1
            invokevirtual javax.crypto.KeyAgreement.doPhase:(Ljava/security/Key;Z)Ljava/security/Key;
            pop
        39: .line 196
            aload 7 /* agreement */
            aload 2 /* wrapAlg */
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokevirtual org.bouncycastle.asn1.ASN1ObjectIdentifier.getId:()Ljava/lang/String;
            invokevirtual javax.crypto.KeyAgreement.generateSecret:(Ljava/lang/String;)Ljavax/crypto/SecretKey;
            areturn
        end local 8 // org.bouncycastle.jcajce.spec.UserKeyingMaterialSpec userKeyingMaterialSpec
        end local 7 // javax.crypto.KeyAgreement agreement
        end local 6 // org.bouncycastle.cms.jcajce.KeyMaterialGenerator kmGen
        end local 5 // java.security.PrivateKey receiverPrivateKey
        end local 4 // org.bouncycastle.asn1.ASN1OctetString userKeyingMaterial
        end local 3 // java.security.PublicKey senderPublicKey
        end local 2 // org.bouncycastle.asn1.x509.AlgorithmIdentifier wrapAlg
        end local 1 // org.bouncycastle.asn1.x509.AlgorithmIdentifier keyEncAlg
        end local 0 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   40     0                    this  Lorg/bouncycastle/cms/jcajce/JceKeyAgreeRecipient;
            0   40     1               keyEncAlg  Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;
            0   40     2                 wrapAlg  Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;
            0   40     3         senderPublicKey  Ljava/security/PublicKey;
            0   40     4      userKeyingMaterial  Lorg/bouncycastle/asn1/ASN1OctetString;
            0   40     5      receiverPrivateKey  Ljava/security/PrivateKey;
            0   40     6                   kmGen  Lorg/bouncycastle/cms/jcajce/KeyMaterialGenerator;
            2   18     7                     ukm  Lorg/bouncycastle/asn1/cms/ecc/MQVuserKeyingMaterial;
            6   18     8                 pubInfo  Lorg/bouncycastle/asn1/x509/SubjectPublicKeyInfo;
            7   18     9                 pubSpec  Ljava/security/spec/X509EncodedKeySpec;
            8   18    10                    fact  Ljava/security/KeyFactory;
            9   18    11            ephemeralKey  Ljava/security/PublicKey;
           10   18    12               agreement  Ljavax/crypto/KeyAgreement;
           13   18    13       ukmKeyingMaterial  [B
           19   40     7               agreement  Ljavax/crypto/KeyAgreement;
           20   40     8  userKeyingMaterialSpec  Lorg/bouncycastle/jcajce/spec/UserKeyingMaterialSpec;
           23   24     9       ukmKeyingMaterial  [B
           26   27     9       ukmKeyingMaterial  [B
    Exceptions:
      throws org.bouncycastle.cms.CMSException, java.security.GeneralSecurityException, java.io.IOException
    MethodParameters:
                    Name  Flags
      keyEncAlg           
      wrapAlg             
      senderPublicKey     
      userKeyingMaterial  
      receiverPrivateKey  
      kmGen               

  private java.security.Key unwrapSessionKey(org.bouncycastle.asn1.ASN1ObjectIdentifier, javax.crypto.SecretKey, org.bouncycastle.asn1.ASN1ObjectIdentifier, byte[]);
    descriptor: (Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Ljavax/crypto/SecretKey;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;[B)Ljava/security/Key;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=6, args_size=5
        start local 0 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient this
        start local 1 // org.bouncycastle.asn1.ASN1ObjectIdentifier wrapAlg
        start local 2 // javax.crypto.SecretKey agreedKey
        start local 3 // org.bouncycastle.asn1.ASN1ObjectIdentifier contentEncryptionAlgorithm
        start local 4 // byte[] encryptedContentEncryptionKey
         0: .line 203
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.helper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
            aload 1 /* wrapAlg */
            invokevirtual org.bouncycastle.cms.jcajce.EnvelopedDataHelper.createCipher:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Ljavax/crypto/Cipher;
            astore 5 /* keyCipher */
        start local 5 // javax.crypto.Cipher keyCipher
         1: .line 204
            aload 5 /* keyCipher */
            iconst_4
            aload 2 /* agreedKey */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;)V
         2: .line 205
            aload 5 /* keyCipher */
            aload 4 /* encryptedContentEncryptionKey */
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.helper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
            aload 3 /* contentEncryptionAlgorithm */
            invokevirtual org.bouncycastle.cms.jcajce.EnvelopedDataHelper.getBaseCipherName:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Ljava/lang/String;
            iconst_3
            invokevirtual javax.crypto.Cipher.unwrap:([BLjava/lang/String;I)Ljava/security/Key;
            areturn
        end local 5 // javax.crypto.Cipher keyCipher
        end local 4 // byte[] encryptedContentEncryptionKey
        end local 3 // org.bouncycastle.asn1.ASN1ObjectIdentifier contentEncryptionAlgorithm
        end local 2 // javax.crypto.SecretKey agreedKey
        end local 1 // org.bouncycastle.asn1.ASN1ObjectIdentifier wrapAlg
        end local 0 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient this
      LocalVariableTable:
        Start  End  Slot                           Name  Signature
            0    3     0                           this  Lorg/bouncycastle/cms/jcajce/JceKeyAgreeRecipient;
            0    3     1                        wrapAlg  Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            0    3     2                      agreedKey  Ljavax/crypto/SecretKey;
            0    3     3     contentEncryptionAlgorithm  Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            0    3     4  encryptedContentEncryptionKey  [B
            1    3     5                      keyCipher  Ljavax/crypto/Cipher;
    Exceptions:
      throws org.bouncycastle.cms.CMSException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException
    MethodParameters:
                               Name  Flags
      wrapAlg                        
      agreedKey                      
      contentEncryptionAlgorithm     
      encryptedContentEncryptionKey  

  protected java.security.Key extractSecretKey(org.bouncycastle.asn1.x509.AlgorithmIdentifier, org.bouncycastle.asn1.x509.AlgorithmIdentifier, org.bouncycastle.asn1.x509.SubjectPublicKeyInfo, org.bouncycastle.asn1.ASN1OctetString, byte[]);
    descriptor: (Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;Lorg/bouncycastle/asn1/x509/SubjectPublicKeyInfo;Lorg/bouncycastle/asn1/ASN1OctetString;[B)Ljava/security/Key;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=14, args_size=6
        start local 0 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient this
        start local 1 // org.bouncycastle.asn1.x509.AlgorithmIdentifier keyEncryptionAlgorithm
        start local 2 // org.bouncycastle.asn1.x509.AlgorithmIdentifier contentEncryptionAlgorithm
        start local 3 // org.bouncycastle.asn1.x509.SubjectPublicKeyInfo senderKey
        start local 4 // org.bouncycastle.asn1.ASN1OctetString userKeyingMaterial
        start local 5 // byte[] encryptedContentEncryptionKey
         0: .line 214
            aload 1 /* keyEncryptionAlgorithm */
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getParameters:()Lorg/bouncycastle/asn1/ASN1Encodable;
            invokestatic org.bouncycastle.asn1.x509.AlgorithmIdentifier.getInstance:(Ljava/lang/Object;)Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;
         1: .line 213
            astore 6 /* wrapAlg */
        start local 6 // org.bouncycastle.asn1.x509.AlgorithmIdentifier wrapAlg
         2: .line 216
            new java.security.spec.X509EncodedKeySpec
            dup
            aload 3 /* senderKey */
            invokevirtual org.bouncycastle.asn1.x509.SubjectPublicKeyInfo.getEncoded:()[B
            invokespecial java.security.spec.X509EncodedKeySpec.<init>:([B)V
            astore 7 /* pubSpec */
        start local 7 // java.security.spec.X509EncodedKeySpec pubSpec
         3: .line 217
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.helper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
            aload 3 /* senderKey */
            invokevirtual org.bouncycastle.asn1.x509.SubjectPublicKeyInfo.getAlgorithm:()Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokevirtual org.bouncycastle.cms.jcajce.EnvelopedDataHelper.createKeyFactory:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Ljava/security/KeyFactory;
            astore 8 /* fact */
        start local 8 // java.security.KeyFactory fact
         4: .line 218
            aload 8 /* fact */
            aload 7 /* pubSpec */
            invokevirtual java.security.KeyFactory.generatePublic:(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;
            astore 9 /* senderPublicKey */
        start local 9 // java.security.PublicKey senderPublicKey
         5: .line 222
            aload 0 /* this */
            aload 1 /* keyEncryptionAlgorithm */
            aload 6 /* wrapAlg */
         6: .line 223
            aload 9 /* senderPublicKey */
            aload 4 /* userKeyingMaterial */
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.recipientKey:Ljava/security/PrivateKey;
            getstatic org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.ecc_cms_Generator:Lorg/bouncycastle/cms/jcajce/KeyMaterialGenerator;
         7: .line 222
            invokevirtual org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.calculateAgreedWrapKey:(Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;Ljava/security/PublicKey;Lorg/bouncycastle/asn1/ASN1OctetString;Ljava/security/PrivateKey;Lorg/bouncycastle/cms/jcajce/KeyMaterialGenerator;)Ljavax/crypto/SecretKey;
            astore 10 /* agreedWrapKey */
        start local 10 // javax.crypto.SecretKey agreedWrapKey
         8: .line 225
            aload 6 /* wrapAlg */
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            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 10
         9: .line 226
            aload 6 /* wrapAlg */
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            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 16
        10: .line 228
      StackMap locals: org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient org.bouncycastle.asn1.x509.AlgorithmIdentifier org.bouncycastle.asn1.x509.AlgorithmIdentifier org.bouncycastle.asn1.x509.SubjectPublicKeyInfo org.bouncycastle.asn1.ASN1OctetString byte[] org.bouncycastle.asn1.x509.AlgorithmIdentifier java.security.spec.X509EncodedKeySpec java.security.KeyFactory java.security.PublicKey javax.crypto.SecretKey
      StackMap stack:
            aload 5 /* encryptedContentEncryptionKey */
            invokestatic org.bouncycastle.asn1.cryptopro.Gost2814789EncryptedKey.getInstance:(Ljava/lang/Object;)Lorg/bouncycastle/asn1/cryptopro/Gost2814789EncryptedKey;
            astore 11 /* encKey */
        start local 11 // org.bouncycastle.asn1.cryptopro.Gost2814789EncryptedKey encKey
        11: .line 229
            aload 6 /* wrapAlg */
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getParameters:()Lorg/bouncycastle/asn1/ASN1Encodable;
            invokestatic org.bouncycastle.asn1.cryptopro.Gost2814789KeyWrapParameters.getInstance:(Ljava/lang/Object;)Lorg/bouncycastle/asn1/cryptopro/Gost2814789KeyWrapParameters;
            astore 12 /* wrapParams */
        start local 12 // org.bouncycastle.asn1.cryptopro.Gost2814789KeyWrapParameters wrapParams
        12: .line 231
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.helper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
            aload 6 /* wrapAlg */
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokevirtual org.bouncycastle.cms.jcajce.EnvelopedDataHelper.createCipher:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Ljavax/crypto/Cipher;
            astore 13 /* keyCipher */
        start local 13 // javax.crypto.Cipher keyCipher
        13: .line 233
            aload 13 /* keyCipher */
            iconst_4
            aload 10 /* agreedWrapKey */
            new org.bouncycastle.jcajce.spec.GOST28147WrapParameterSpec
            dup
            aload 12 /* wrapParams */
            invokevirtual org.bouncycastle.asn1.cryptopro.Gost2814789KeyWrapParameters.getEncryptionParamSet:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            aload 4 /* userKeyingMaterial */
            invokevirtual org.bouncycastle.asn1.ASN1OctetString.getOctets:()[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
        14: .line 235
            aload 13 /* keyCipher */
            aload 11 /* encKey */
            invokevirtual org.bouncycastle.asn1.cryptopro.Gost2814789EncryptedKey.getEncryptedKey:()[B
            aload 11 /* encKey */
            invokevirtual org.bouncycastle.asn1.cryptopro.Gost2814789EncryptedKey.getMacKey:()[B
            invokestatic org.bouncycastle.util.Arrays.concatenate:([B[B)[B
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.helper:Lorg/bouncycastle/cms/jcajce/EnvelopedDataHelper;
            aload 2 /* contentEncryptionAlgorithm */
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokevirtual org.bouncycastle.cms.jcajce.EnvelopedDataHelper.getBaseCipherName:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Ljava/lang/String;
            iconst_3
            invokevirtual javax.crypto.Cipher.unwrap:([BLjava/lang/String;I)Ljava/security/Key;
        15: areturn
        end local 13 // javax.crypto.Cipher keyCipher
        end local 12 // org.bouncycastle.asn1.cryptopro.Gost2814789KeyWrapParameters wrapParams
        end local 11 // org.bouncycastle.asn1.cryptopro.Gost2814789EncryptedKey encKey
        16: .line 238
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 6 /* wrapAlg */
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            aload 10 /* agreedWrapKey */
            aload 2 /* contentEncryptionAlgorithm */
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            aload 5 /* encryptedContentEncryptionKey */
            invokevirtual org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.unwrapSessionKey:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Ljavax/crypto/SecretKey;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;[B)Ljava/security/Key;
        17: areturn
        end local 10 // javax.crypto.SecretKey agreedWrapKey
        18: .line 240
      StackMap locals: org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient org.bouncycastle.asn1.x509.AlgorithmIdentifier org.bouncycastle.asn1.x509.AlgorithmIdentifier org.bouncycastle.asn1.x509.SubjectPublicKeyInfo org.bouncycastle.asn1.ASN1OctetString byte[] org.bouncycastle.asn1.x509.AlgorithmIdentifier java.security.spec.X509EncodedKeySpec java.security.KeyFactory java.security.PublicKey
      StackMap stack: java.security.InvalidKeyException
            astore 10 /* e */
        start local 10 // java.security.InvalidKeyException e
        19: .line 243
            getstatic org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.possibleOldMessages:Ljava/util/Set;
            aload 1 /* keyEncryptionAlgorithm */
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 25
        20: .line 245
            aload 0 /* this */
            aload 1 /* keyEncryptionAlgorithm */
            aload 6 /* wrapAlg */
        21: .line 246
            aload 9 /* senderPublicKey */
            aload 4 /* userKeyingMaterial */
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.recipientKey:Ljava/security/PrivateKey;
            getstatic org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.old_ecc_cms_Generator:Lorg/bouncycastle/cms/jcajce/KeyMaterialGenerator;
        22: .line 245
            invokevirtual org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.calculateAgreedWrapKey:(Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;Ljava/security/PublicKey;Lorg/bouncycastle/asn1/ASN1OctetString;Ljava/security/PrivateKey;Lorg/bouncycastle/cms/jcajce/KeyMaterialGenerator;)Ljavax/crypto/SecretKey;
            astore 11 /* agreedWrapKey */
        start local 11 // javax.crypto.SecretKey agreedWrapKey
        23: .line 248
            aload 0 /* this */
            aload 6 /* wrapAlg */
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            aload 11 /* agreedWrapKey */
            aload 2 /* contentEncryptionAlgorithm */
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            aload 5 /* encryptedContentEncryptionKey */
            invokevirtual org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.unwrapSessionKey:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Ljavax/crypto/SecretKey;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;[B)Ljava/security/Key;
        24: areturn
        end local 11 // javax.crypto.SecretKey agreedWrapKey
        25: .line 250
      StackMap locals: java.security.InvalidKeyException
      StackMap stack:
            aload 10 /* e */
            athrow
        end local 10 // java.security.InvalidKeyException e
        end local 9 // java.security.PublicKey senderPublicKey
        end local 8 // java.security.KeyFactory fact
        end local 7 // java.security.spec.X509EncodedKeySpec pubSpec
        end local 6 // org.bouncycastle.asn1.x509.AlgorithmIdentifier wrapAlg
        26: .line 253
      StackMap locals: org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient org.bouncycastle.asn1.x509.AlgorithmIdentifier org.bouncycastle.asn1.x509.AlgorithmIdentifier org.bouncycastle.asn1.x509.SubjectPublicKeyInfo org.bouncycastle.asn1.ASN1OctetString byte[]
      StackMap stack: java.security.NoSuchAlgorithmException
            astore 6 /* e */
        start local 6 // java.security.NoSuchAlgorithmException e
        27: .line 255
            new org.bouncycastle.cms.CMSException
            dup
            ldc "can't find algorithm."
            aload 6 /* e */
            invokespecial org.bouncycastle.cms.CMSException.<init>:(Ljava/lang/String;Ljava/lang/Exception;)V
            athrow
        end local 6 // java.security.NoSuchAlgorithmException e
        28: .line 257
      StackMap locals:
      StackMap stack: java.security.InvalidKeyException
            astore 6 /* e */
        start local 6 // java.security.InvalidKeyException e
        29: .line 259
            new org.bouncycastle.cms.CMSException
            dup
            ldc "key invalid in message."
            aload 6 /* e */
            invokespecial org.bouncycastle.cms.CMSException.<init>:(Ljava/lang/String;Ljava/lang/Exception;)V
            athrow
        end local 6 // java.security.InvalidKeyException e
        30: .line 261
      StackMap locals:
      StackMap stack: java.security.spec.InvalidKeySpecException
            astore 6 /* e */
        start local 6 // java.security.spec.InvalidKeySpecException e
        31: .line 263
            new org.bouncycastle.cms.CMSException
            dup
            ldc "originator key spec invalid."
            aload 6 /* e */
            invokespecial org.bouncycastle.cms.CMSException.<init>:(Ljava/lang/String;Ljava/lang/Exception;)V
            athrow
        end local 6 // java.security.spec.InvalidKeySpecException e
        32: .line 265
      StackMap locals:
      StackMap stack: javax.crypto.NoSuchPaddingException
            astore 6 /* e */
        start local 6 // javax.crypto.NoSuchPaddingException e
        33: .line 267
            new org.bouncycastle.cms.CMSException
            dup
            ldc "required padding not supported."
            aload 6 /* e */
            invokespecial org.bouncycastle.cms.CMSException.<init>:(Ljava/lang/String;Ljava/lang/Exception;)V
            athrow
        end local 6 // javax.crypto.NoSuchPaddingException e
        34: .line 269
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 6 /* e */
        start local 6 // java.lang.Exception e
        35: .line 271
            new org.bouncycastle.cms.CMSException
            dup
            ldc "originator key invalid."
            aload 6 /* e */
            invokespecial org.bouncycastle.cms.CMSException.<init>:(Ljava/lang/String;Ljava/lang/Exception;)V
            athrow
        end local 6 // java.lang.Exception e
        end local 5 // byte[] encryptedContentEncryptionKey
        end local 4 // org.bouncycastle.asn1.ASN1OctetString userKeyingMaterial
        end local 3 // org.bouncycastle.asn1.x509.SubjectPublicKeyInfo senderKey
        end local 2 // org.bouncycastle.asn1.x509.AlgorithmIdentifier contentEncryptionAlgorithm
        end local 1 // org.bouncycastle.asn1.x509.AlgorithmIdentifier keyEncryptionAlgorithm
        end local 0 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient this
      LocalVariableTable:
        Start  End  Slot                           Name  Signature
            0   36     0                           this  Lorg/bouncycastle/cms/jcajce/JceKeyAgreeRecipient;
            0   36     1         keyEncryptionAlgorithm  Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;
            0   36     2     contentEncryptionAlgorithm  Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;
            0   36     3                      senderKey  Lorg/bouncycastle/asn1/x509/SubjectPublicKeyInfo;
            0   36     4             userKeyingMaterial  Lorg/bouncycastle/asn1/ASN1OctetString;
            0   36     5  encryptedContentEncryptionKey  [B
            2   26     6                        wrapAlg  Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;
            3   26     7                        pubSpec  Ljava/security/spec/X509EncodedKeySpec;
            4   26     8                           fact  Ljava/security/KeyFactory;
            5   26     9                senderPublicKey  Ljava/security/PublicKey;
            8   18    10                  agreedWrapKey  Ljavax/crypto/SecretKey;
           11   16    11                         encKey  Lorg/bouncycastle/asn1/cryptopro/Gost2814789EncryptedKey;
           12   16    12                     wrapParams  Lorg/bouncycastle/asn1/cryptopro/Gost2814789KeyWrapParameters;
           13   16    13                      keyCipher  Ljavax/crypto/Cipher;
           19   26    10                              e  Ljava/security/InvalidKeyException;
           23   25    11                  agreedWrapKey  Ljavax/crypto/SecretKey;
           27   28     6                              e  Ljava/security/NoSuchAlgorithmException;
           29   30     6                              e  Ljava/security/InvalidKeyException;
           31   32     6                              e  Ljava/security/spec/InvalidKeySpecException;
           33   34     6                              e  Ljavax/crypto/NoSuchPaddingException;
           35   36     6                              e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           5    15      18  Class java.security.InvalidKeyException
          16    17      18  Class java.security.InvalidKeyException
           0    15      26  Class java.security.NoSuchAlgorithmException
          16    17      26  Class java.security.NoSuchAlgorithmException
          18    24      26  Class java.security.NoSuchAlgorithmException
          25    26      26  Class java.security.NoSuchAlgorithmException
           0    15      28  Class java.security.InvalidKeyException
          16    17      28  Class java.security.InvalidKeyException
          18    24      28  Class java.security.InvalidKeyException
          25    26      28  Class java.security.InvalidKeyException
           0    15      30  Class java.security.spec.InvalidKeySpecException
          16    17      30  Class java.security.spec.InvalidKeySpecException
          18    24      30  Class java.security.spec.InvalidKeySpecException
          25    26      30  Class java.security.spec.InvalidKeySpecException
           0    15      32  Class javax.crypto.NoSuchPaddingException
          16    17      32  Class javax.crypto.NoSuchPaddingException
          18    24      32  Class javax.crypto.NoSuchPaddingException
          25    26      32  Class javax.crypto.NoSuchPaddingException
           0    15      34  Class java.lang.Exception
          16    17      34  Class java.lang.Exception
          18    24      34  Class java.lang.Exception
          25    26      34  Class java.lang.Exception
    Exceptions:
      throws org.bouncycastle.cms.CMSException
    MethodParameters:
                               Name  Flags
      keyEncryptionAlgorithm         
      contentEncryptionAlgorithm     
      senderKey                      
      userKeyingMaterial             
      encryptedContentEncryptionKey  

  public org.bouncycastle.asn1.x509.AlgorithmIdentifier getPrivateKeyAlgorithmIdentifier();
    descriptor: ()Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient this
         0: .line 277
            aload 0 /* this */
            getfield org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient.recipientKey:Ljava/security/PrivateKey;
            invokeinterface java.security.PrivateKey.getEncoded:()[B
            invokestatic org.bouncycastle.asn1.pkcs.PrivateKeyInfo.getInstance:(Ljava/lang/Object;)Lorg/bouncycastle/asn1/pkcs/PrivateKeyInfo;
            invokevirtual org.bouncycastle.asn1.pkcs.PrivateKeyInfo.getPrivateKeyAlgorithm:()Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;
            areturn
        end local 0 // org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bouncycastle/cms/jcajce/JceKeyAgreeRecipient;
}
SourceFile: "JceKeyAgreeRecipient.java"
NestMembers:
  org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient$1
InnerClasses:
  org.bouncycastle.cms.jcajce.JceKeyAgreeRecipient$1