public class org.bouncycastle.cms.bc.BcPasswordRecipientInfoGenerator extends org.bouncycastle.cms.PasswordRecipientInfoGenerator
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.bouncycastle.cms.bc.BcPasswordRecipientInfoGenerator
  super_class: org.bouncycastle.cms.PasswordRecipientInfoGenerator
{
  public void <init>(org.bouncycastle.asn1.ASN1ObjectIdentifier, char[]);
    descriptor: (Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;[C)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.bouncycastle.cms.bc.BcPasswordRecipientInfoGenerator this
        start local 1 // org.bouncycastle.asn1.ASN1ObjectIdentifier kekAlgorithm
        start local 2 // char[] password
         0: .line 22
            aload 0 /* this */
            aload 1 /* kekAlgorithm */
            aload 2 /* password */
            invokespecial org.bouncycastle.cms.PasswordRecipientInfoGenerator.<init>:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;[C)V
         1: .line 23
            return
        end local 2 // char[] password
        end local 1 // org.bouncycastle.asn1.ASN1ObjectIdentifier kekAlgorithm
        end local 0 // org.bouncycastle.cms.bc.BcPasswordRecipientInfoGenerator this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lorg/bouncycastle/cms/bc/BcPasswordRecipientInfoGenerator;
            0    2     1  kekAlgorithm  Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            0    2     2      password  [C
    MethodParameters:
              Name  Flags
      kekAlgorithm  
      password      

  protected byte[] calculateDerivedKey(int, org.bouncycastle.asn1.x509.AlgorithmIdentifier, int);
    descriptor: (ILorg/bouncycastle/asn1/x509/AlgorithmIdentifier;I)[B
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=7, args_size=4
        start local 0 // org.bouncycastle.cms.bc.BcPasswordRecipientInfoGenerator this
        start local 1 // int schemeID
        start local 2 // org.bouncycastle.asn1.x509.AlgorithmIdentifier derivationAlgorithm
        start local 3 // int keySize
         0: .line 28
            aload 2 /* derivationAlgorithm */
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getParameters:()Lorg/bouncycastle/asn1/ASN1Encodable;
            invokestatic org.bouncycastle.asn1.pkcs.PBKDF2Params.getInstance:(Ljava/lang/Object;)Lorg/bouncycastle/asn1/pkcs/PBKDF2Params;
            astore 4 /* params */
        start local 4 // org.bouncycastle.asn1.pkcs.PBKDF2Params params
         1: .line 29
            iload 1 /* schemeID */
            ifne 2
            aload 0 /* this */
            getfield org.bouncycastle.cms.bc.BcPasswordRecipientInfoGenerator.password:[C
            invokestatic org.bouncycastle.crypto.PBEParametersGenerator.PKCS5PasswordToBytes:([C)[B
            goto 3
      StackMap locals: org.bouncycastle.asn1.pkcs.PBKDF2Params
      StackMap stack:
         2: aload 0 /* this */
            getfield org.bouncycastle.cms.bc.BcPasswordRecipientInfoGenerator.password:[C
            invokestatic org.bouncycastle.crypto.PBEParametersGenerator.PKCS5PasswordToUTF8Bytes:([C)[B
      StackMap locals:
      StackMap stack: byte[]
         3: astore 5 /* encodedPassword */
        start local 5 // byte[] encodedPassword
         4: .line 33
            new org.bouncycastle.crypto.generators.PKCS5S2ParametersGenerator
            dup
            aload 4 /* params */
            invokevirtual org.bouncycastle.asn1.pkcs.PBKDF2Params.getPrf:()Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;
            invokestatic org.bouncycastle.cms.bc.EnvelopedDataHelper.getPRF:(Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;)Lorg/bouncycastle/crypto/ExtendedDigest;
            invokespecial org.bouncycastle.crypto.generators.PKCS5S2ParametersGenerator.<init>:(Lorg/bouncycastle/crypto/Digest;)V
            astore 6 /* gen */
        start local 6 // org.bouncycastle.crypto.generators.PKCS5S2ParametersGenerator gen
         5: .line 35
            aload 6 /* gen */
            aload 5 /* encodedPassword */
            aload 4 /* params */
            invokevirtual org.bouncycastle.asn1.pkcs.PBKDF2Params.getSalt:()[B
            aload 4 /* params */
            invokevirtual org.bouncycastle.asn1.pkcs.PBKDF2Params.getIterationCount:()Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.intValue:()I
            invokevirtual org.bouncycastle.crypto.generators.PKCS5S2ParametersGenerator.init:([B[BI)V
         6: .line 37
            aload 6 /* gen */
            iload 3 /* keySize */
            invokevirtual org.bouncycastle.crypto.generators.PKCS5S2ParametersGenerator.generateDerivedParameters:(I)Lorg/bouncycastle/crypto/CipherParameters;
            checkcast org.bouncycastle.crypto.params.KeyParameter
            invokevirtual org.bouncycastle.crypto.params.KeyParameter.getKey:()[B
         7: areturn
        end local 6 // org.bouncycastle.crypto.generators.PKCS5S2ParametersGenerator gen
         8: .line 39
      StackMap locals: org.bouncycastle.cms.bc.BcPasswordRecipientInfoGenerator int org.bouncycastle.asn1.x509.AlgorithmIdentifier int org.bouncycastle.asn1.pkcs.PBKDF2Params byte[]
      StackMap stack: java.lang.Exception
            astore 6 /* e */
        start local 6 // java.lang.Exception e
         9: .line 41
            new org.bouncycastle.cms.CMSException
            dup
            new java.lang.StringBuilder
            dup
            ldc "exception creating derived key: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* e */
            invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            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[] encodedPassword
        end local 4 // org.bouncycastle.asn1.pkcs.PBKDF2Params params
        end local 3 // int keySize
        end local 2 // org.bouncycastle.asn1.x509.AlgorithmIdentifier derivationAlgorithm
        end local 1 // int schemeID
        end local 0 // org.bouncycastle.cms.bc.BcPasswordRecipientInfoGenerator this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   10     0                 this  Lorg/bouncycastle/cms/bc/BcPasswordRecipientInfoGenerator;
            0   10     1             schemeID  I
            0   10     2  derivationAlgorithm  Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;
            0   10     3              keySize  I
            1   10     4               params  Lorg/bouncycastle/asn1/pkcs/PBKDF2Params;
            4   10     5      encodedPassword  [B
            5    8     6                  gen  Lorg/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator;
            9   10     6                    e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           4     7       8  Class java.lang.Exception
    Exceptions:
      throws org.bouncycastle.cms.CMSException
    MethodParameters:
                     Name  Flags
      schemeID             
      derivationAlgorithm  
      keySize              

  public byte[] generateEncryptedBytes(org.bouncycastle.asn1.x509.AlgorithmIdentifier, byte[], org.bouncycastle.operator.GenericKey);
    descriptor: (Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;[BLorg/bouncycastle/operator/GenericKey;)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=6, args_size=4
        start local 0 // org.bouncycastle.cms.bc.BcPasswordRecipientInfoGenerator this
        start local 1 // org.bouncycastle.asn1.x509.AlgorithmIdentifier keyEncryptionAlgorithm
        start local 2 // byte[] derivedKey
        start local 3 // org.bouncycastle.operator.GenericKey contentEncryptionKey
         0: .line 48
            aload 3 /* contentEncryptionKey */
            invokestatic org.bouncycastle.cms.bc.CMSUtils.getBcKey:(Lorg/bouncycastle/operator/GenericKey;)Lorg/bouncycastle/crypto/CipherParameters;
            checkcast org.bouncycastle.crypto.params.KeyParameter
            invokevirtual org.bouncycastle.crypto.params.KeyParameter.getKey:()[B
            astore 4 /* contentEncryptionKeySpec */
        start local 4 // byte[] contentEncryptionKeySpec
         1: .line 49
            aload 1 /* keyEncryptionAlgorithm */
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokestatic org.bouncycastle.cms.bc.EnvelopedDataHelper.createRFC3211Wrapper:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Lorg/bouncycastle/crypto/Wrapper;
            astore 5 /* keyEncryptionCipher */
        start local 5 // org.bouncycastle.crypto.Wrapper keyEncryptionCipher
         2: .line 51
            aload 5 /* keyEncryptionCipher */
            iconst_1
            new org.bouncycastle.crypto.params.ParametersWithIV
            dup
            new org.bouncycastle.crypto.params.KeyParameter
            dup
            aload 2 /* derivedKey */
            invokespecial org.bouncycastle.crypto.params.KeyParameter.<init>:([B)V
            aload 1 /* keyEncryptionAlgorithm */
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getParameters:()Lorg/bouncycastle/asn1/ASN1Encodable;
            invokestatic org.bouncycastle.asn1.ASN1OctetString.getInstance:(Ljava/lang/Object;)Lorg/bouncycastle/asn1/ASN1OctetString;
            invokevirtual org.bouncycastle.asn1.ASN1OctetString.getOctets:()[B
            invokespecial org.bouncycastle.crypto.params.ParametersWithIV.<init>:(Lorg/bouncycastle/crypto/CipherParameters;[B)V
            invokeinterface org.bouncycastle.crypto.Wrapper.init:(ZLorg/bouncycastle/crypto/CipherParameters;)V
         3: .line 53
            aload 5 /* keyEncryptionCipher */
            aload 4 /* contentEncryptionKeySpec */
            iconst_0
            aload 4 /* contentEncryptionKeySpec */
            arraylength
            invokeinterface org.bouncycastle.crypto.Wrapper.wrap:([BII)[B
            areturn
        end local 5 // org.bouncycastle.crypto.Wrapper keyEncryptionCipher
        end local 4 // byte[] contentEncryptionKeySpec
        end local 3 // org.bouncycastle.operator.GenericKey contentEncryptionKey
        end local 2 // byte[] derivedKey
        end local 1 // org.bouncycastle.asn1.x509.AlgorithmIdentifier keyEncryptionAlgorithm
        end local 0 // org.bouncycastle.cms.bc.BcPasswordRecipientInfoGenerator this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0    4     0                      this  Lorg/bouncycastle/cms/bc/BcPasswordRecipientInfoGenerator;
            0    4     1    keyEncryptionAlgorithm  Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;
            0    4     2                derivedKey  [B
            0    4     3      contentEncryptionKey  Lorg/bouncycastle/operator/GenericKey;
            1    4     4  contentEncryptionKeySpec  [B
            2    4     5       keyEncryptionCipher  Lorg/bouncycastle/crypto/Wrapper;
    Exceptions:
      throws org.bouncycastle.cms.CMSException
    MethodParameters:
                        Name  Flags
      keyEncryptionAlgorithm  
      derivedKey              
      contentEncryptionKey    
}
SourceFile: "BcPasswordRecipientInfoGenerator.java"