public class org.bouncycastle.jce.provider.PBE$Util
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.bouncycastle.jce.provider.PBE$Util
  super_class: java.lang.Object
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.jce.provider.PBE$Util this
         0: .line 44
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.bouncycastle.jce.provider.PBE$Util this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bouncycastle/jce/provider/PBE$Util;

  private static org.bouncycastle.crypto.PBEParametersGenerator makePBEGenerator(int, int);
    descriptor: (II)Lorg/bouncycastle/crypto/PBEParametersGenerator;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // int type
        start local 1 // int hash
         0: .line 52
            iload 0 /* type */
            ifne 10
         1: .line 54
            iload 1 /* hash */
            tableswitch { // 0 - 5
                    0: 4
                    1: 6
                    2: 8
                    3: 8
                    4: 8
                    5: 2
              default: 8
          }
         2: .line 57
      StackMap locals:
      StackMap stack:
            new org.bouncycastle.crypto.generators.PKCS5S1ParametersGenerator
            dup
            new org.bouncycastle.crypto.digests.MD2Digest
            dup
            invokespecial org.bouncycastle.crypto.digests.MD2Digest.<init>:()V
            invokespecial org.bouncycastle.crypto.generators.PKCS5S1ParametersGenerator.<init>:(Lorg/bouncycastle/crypto/Digest;)V
            astore 2 /* generator */
        start local 2 // org.bouncycastle.crypto.PBEParametersGenerator generator
         3: .line 58
            goto 30
        end local 2 // org.bouncycastle.crypto.PBEParametersGenerator generator
         4: .line 60
      StackMap locals:
      StackMap stack:
            new org.bouncycastle.crypto.generators.PKCS5S1ParametersGenerator
            dup
            new org.bouncycastle.crypto.digests.MD5Digest
            dup
            invokespecial org.bouncycastle.crypto.digests.MD5Digest.<init>:()V
            invokespecial org.bouncycastle.crypto.generators.PKCS5S1ParametersGenerator.<init>:(Lorg/bouncycastle/crypto/Digest;)V
            astore 2 /* generator */
        start local 2 // org.bouncycastle.crypto.PBEParametersGenerator generator
         5: .line 61
            goto 30
        end local 2 // org.bouncycastle.crypto.PBEParametersGenerator generator
         6: .line 63
      StackMap locals:
      StackMap stack:
            new org.bouncycastle.crypto.generators.PKCS5S1ParametersGenerator
            dup
            new org.bouncycastle.crypto.digests.SHA1Digest
            dup
            invokespecial org.bouncycastle.crypto.digests.SHA1Digest.<init>:()V
            invokespecial org.bouncycastle.crypto.generators.PKCS5S1ParametersGenerator.<init>:(Lorg/bouncycastle/crypto/Digest;)V
            astore 2 /* generator */
        start local 2 // org.bouncycastle.crypto.PBEParametersGenerator generator
         7: .line 64
            goto 30
        end local 2 // org.bouncycastle.crypto.PBEParametersGenerator generator
         8: .line 66
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalStateException
            dup
            ldc "PKCS5 scheme 1 only supports MD2, MD5 and SHA1."
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        start local 2 // org.bouncycastle.crypto.PBEParametersGenerator generator
         9: .line 68
      StackMap locals: org.bouncycastle.crypto.PBEParametersGenerator
      StackMap stack:
            goto 30
        end local 2 // org.bouncycastle.crypto.PBEParametersGenerator generator
        10: .line 69
      StackMap locals:
      StackMap stack:
            iload 0 /* type */
            iconst_1
            if_icmpne 13
        11: .line 71
            new org.bouncycastle.crypto.generators.PKCS5S2ParametersGenerator
            dup
            invokespecial org.bouncycastle.crypto.generators.PKCS5S2ParametersGenerator.<init>:()V
            astore 2 /* generator */
        start local 2 // org.bouncycastle.crypto.PBEParametersGenerator generator
        12: .line 72
            goto 30
        end local 2 // org.bouncycastle.crypto.PBEParametersGenerator generator
        13: .line 73
      StackMap locals:
      StackMap stack:
            iload 0 /* type */
            iconst_2
            if_icmpne 29
        14: .line 75
            iload 1 /* hash */
            tableswitch { // 0 - 5
                    0: 17
                    1: 19
                    2: 21
                    3: 23
                    4: 25
                    5: 15
              default: 27
          }
        15: .line 78
      StackMap locals:
      StackMap stack:
            new org.bouncycastle.crypto.generators.PKCS12ParametersGenerator
            dup
            new org.bouncycastle.crypto.digests.MD2Digest
            dup
            invokespecial org.bouncycastle.crypto.digests.MD2Digest.<init>:()V
            invokespecial org.bouncycastle.crypto.generators.PKCS12ParametersGenerator.<init>:(Lorg/bouncycastle/crypto/Digest;)V
            astore 2 /* generator */
        start local 2 // org.bouncycastle.crypto.PBEParametersGenerator generator
        16: .line 79
            goto 30
        end local 2 // org.bouncycastle.crypto.PBEParametersGenerator generator
        17: .line 81
      StackMap locals:
      StackMap stack:
            new org.bouncycastle.crypto.generators.PKCS12ParametersGenerator
            dup
            new org.bouncycastle.crypto.digests.MD5Digest
            dup
            invokespecial org.bouncycastle.crypto.digests.MD5Digest.<init>:()V
            invokespecial org.bouncycastle.crypto.generators.PKCS12ParametersGenerator.<init>:(Lorg/bouncycastle/crypto/Digest;)V
            astore 2 /* generator */
        start local 2 // org.bouncycastle.crypto.PBEParametersGenerator generator
        18: .line 82
            goto 30
        end local 2 // org.bouncycastle.crypto.PBEParametersGenerator generator
        19: .line 84
      StackMap locals:
      StackMap stack:
            new org.bouncycastle.crypto.generators.PKCS12ParametersGenerator
            dup
            new org.bouncycastle.crypto.digests.SHA1Digest
            dup
            invokespecial org.bouncycastle.crypto.digests.SHA1Digest.<init>:()V
            invokespecial org.bouncycastle.crypto.generators.PKCS12ParametersGenerator.<init>:(Lorg/bouncycastle/crypto/Digest;)V
            astore 2 /* generator */
        start local 2 // org.bouncycastle.crypto.PBEParametersGenerator generator
        20: .line 85
            goto 30
        end local 2 // org.bouncycastle.crypto.PBEParametersGenerator generator
        21: .line 87
      StackMap locals:
      StackMap stack:
            new org.bouncycastle.crypto.generators.PKCS12ParametersGenerator
            dup
            new org.bouncycastle.crypto.digests.RIPEMD160Digest
            dup
            invokespecial org.bouncycastle.crypto.digests.RIPEMD160Digest.<init>:()V
            invokespecial org.bouncycastle.crypto.generators.PKCS12ParametersGenerator.<init>:(Lorg/bouncycastle/crypto/Digest;)V
            astore 2 /* generator */
        start local 2 // org.bouncycastle.crypto.PBEParametersGenerator generator
        22: .line 88
            goto 30
        end local 2 // org.bouncycastle.crypto.PBEParametersGenerator generator
        23: .line 90
      StackMap locals:
      StackMap stack:
            new org.bouncycastle.crypto.generators.PKCS12ParametersGenerator
            dup
            new org.bouncycastle.crypto.digests.TigerDigest
            dup
            invokespecial org.bouncycastle.crypto.digests.TigerDigest.<init>:()V
            invokespecial org.bouncycastle.crypto.generators.PKCS12ParametersGenerator.<init>:(Lorg/bouncycastle/crypto/Digest;)V
            astore 2 /* generator */
        start local 2 // org.bouncycastle.crypto.PBEParametersGenerator generator
        24: .line 91
            goto 30
        end local 2 // org.bouncycastle.crypto.PBEParametersGenerator generator
        25: .line 93
      StackMap locals:
      StackMap stack:
            new org.bouncycastle.crypto.generators.PKCS12ParametersGenerator
            dup
            new org.bouncycastle.crypto.digests.SHA256Digest
            dup
            invokespecial org.bouncycastle.crypto.digests.SHA256Digest.<init>:()V
            invokespecial org.bouncycastle.crypto.generators.PKCS12ParametersGenerator.<init>:(Lorg/bouncycastle/crypto/Digest;)V
            astore 2 /* generator */
        start local 2 // org.bouncycastle.crypto.PBEParametersGenerator generator
        26: .line 94
            goto 30
        end local 2 // org.bouncycastle.crypto.PBEParametersGenerator generator
        27: .line 96
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalStateException
            dup
            ldc "unknown digest scheme for PBE encryption."
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        start local 2 // org.bouncycastle.crypto.PBEParametersGenerator generator
        28: .line 98
      StackMap locals: org.bouncycastle.crypto.PBEParametersGenerator
      StackMap stack:
            goto 30
        end local 2 // org.bouncycastle.crypto.PBEParametersGenerator generator
        29: .line 101
      StackMap locals:
      StackMap stack:
            new org.bouncycastle.crypto.generators.OpenSSLPBEParametersGenerator
            dup
            invokespecial org.bouncycastle.crypto.generators.OpenSSLPBEParametersGenerator.<init>:()V
            astore 2 /* generator */
        start local 2 // org.bouncycastle.crypto.PBEParametersGenerator generator
        30: .line 104
      StackMap locals: org.bouncycastle.crypto.PBEParametersGenerator
      StackMap stack:
            aload 2 /* generator */
            areturn
        end local 2 // org.bouncycastle.crypto.PBEParametersGenerator generator
        end local 1 // int hash
        end local 0 // int type
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   31     0       type  I
            0   31     1       hash  I
            3    4     2  generator  Lorg/bouncycastle/crypto/PBEParametersGenerator;
            5    6     2  generator  Lorg/bouncycastle/crypto/PBEParametersGenerator;
            7    8     2  generator  Lorg/bouncycastle/crypto/PBEParametersGenerator;
            9   10     2  generator  Lorg/bouncycastle/crypto/PBEParametersGenerator;
           12   13     2  generator  Lorg/bouncycastle/crypto/PBEParametersGenerator;
           16   17     2  generator  Lorg/bouncycastle/crypto/PBEParametersGenerator;
           18   19     2  generator  Lorg/bouncycastle/crypto/PBEParametersGenerator;
           20   21     2  generator  Lorg/bouncycastle/crypto/PBEParametersGenerator;
           22   23     2  generator  Lorg/bouncycastle/crypto/PBEParametersGenerator;
           24   25     2  generator  Lorg/bouncycastle/crypto/PBEParametersGenerator;
           26   27     2  generator  Lorg/bouncycastle/crypto/PBEParametersGenerator;
           28   29     2  generator  Lorg/bouncycastle/crypto/PBEParametersGenerator;
           30   31     2  generator  Lorg/bouncycastle/crypto/PBEParametersGenerator;
    MethodParameters:
      Name  Flags
      type  
      hash  

  static org.bouncycastle.crypto.CipherParameters makePBEParameters(org.bouncycastle.jce.provider.JCEPBEKey, java.security.spec.AlgorithmParameterSpec, java.lang.String);
    descriptor: (Lorg/bouncycastle/jce/provider/JCEPBEKey;Ljava/security/spec/AlgorithmParameterSpec;Ljava/lang/String;)Lorg/bouncycastle/crypto/CipherParameters;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=8, args_size=3
        start local 0 // org.bouncycastle.jce.provider.JCEPBEKey pbeKey
        start local 1 // java.security.spec.AlgorithmParameterSpec spec
        start local 2 // java.lang.String targetAlgorithm
         0: .line 116
            aload 1 /* spec */
            ifnull 1
            aload 1 /* spec */
            instanceof javax.crypto.spec.PBEParameterSpec
            ifne 2
         1: .line 118
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "Need a PBEParameter spec with a PBE key."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 121
      StackMap locals:
      StackMap stack:
            aload 1 /* spec */
            checkcast javax.crypto.spec.PBEParameterSpec
            astore 3 /* pbeParam */
        start local 3 // javax.crypto.spec.PBEParameterSpec pbeParam
         3: .line 122
            aload 0 /* pbeKey */
            invokevirtual org.bouncycastle.jce.provider.JCEPBEKey.getType:()I
            aload 0 /* pbeKey */
            invokevirtual org.bouncycastle.jce.provider.JCEPBEKey.getDigest:()I
            invokestatic org.bouncycastle.jce.provider.PBE$Util.makePBEGenerator:(II)Lorg/bouncycastle/crypto/PBEParametersGenerator;
            astore 4 /* generator */
        start local 4 // org.bouncycastle.crypto.PBEParametersGenerator generator
         4: .line 123
            aload 0 /* pbeKey */
            invokevirtual org.bouncycastle.jce.provider.JCEPBEKey.getEncoded:()[B
            astore 5 /* key */
        start local 5 // byte[] key
         5: .line 126
            aload 0 /* pbeKey */
            invokevirtual org.bouncycastle.jce.provider.JCEPBEKey.shouldTryWrongPKCS12:()Z
            ifeq 7
         6: .line 128
            iconst_2
            newarray 8
            astore 5 /* key */
         7: .line 131
      StackMap locals: javax.crypto.spec.PBEParameterSpec org.bouncycastle.crypto.PBEParametersGenerator byte[]
      StackMap stack:
            aload 4 /* generator */
            aload 5 /* key */
            aload 3 /* pbeParam */
            invokevirtual javax.crypto.spec.PBEParameterSpec.getSalt:()[B
            aload 3 /* pbeParam */
            invokevirtual javax.crypto.spec.PBEParameterSpec.getIterationCount:()I
            invokevirtual org.bouncycastle.crypto.PBEParametersGenerator.init:([B[BI)V
         8: .line 133
            aload 0 /* pbeKey */
            invokevirtual org.bouncycastle.jce.provider.JCEPBEKey.getIvSize:()I
            ifeq 11
         9: .line 135
            aload 4 /* generator */
            aload 0 /* pbeKey */
            invokevirtual org.bouncycastle.jce.provider.JCEPBEKey.getKeySize:()I
            aload 0 /* pbeKey */
            invokevirtual org.bouncycastle.jce.provider.JCEPBEKey.getIvSize:()I
            invokevirtual org.bouncycastle.crypto.PBEParametersGenerator.generateDerivedParameters:(II)Lorg/bouncycastle/crypto/CipherParameters;
            astore 6 /* param */
        start local 6 // org.bouncycastle.crypto.CipherParameters param
        10: .line 136
            goto 12
        end local 6 // org.bouncycastle.crypto.CipherParameters param
        11: .line 139
      StackMap locals:
      StackMap stack:
            aload 4 /* generator */
            aload 0 /* pbeKey */
            invokevirtual org.bouncycastle.jce.provider.JCEPBEKey.getKeySize:()I
            invokevirtual org.bouncycastle.crypto.PBEParametersGenerator.generateDerivedParameters:(I)Lorg/bouncycastle/crypto/CipherParameters;
            astore 6 /* param */
        start local 6 // org.bouncycastle.crypto.CipherParameters param
        12: .line 142
      StackMap locals: org.bouncycastle.crypto.CipherParameters
      StackMap stack:
            aload 2 /* targetAlgorithm */
            ldc "DES"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 19
        13: .line 144
            aload 6 /* param */
            instanceof org.bouncycastle.crypto.params.ParametersWithIV
            ifeq 17
        14: .line 146
            aload 6 /* param */
            checkcast org.bouncycastle.crypto.params.ParametersWithIV
            invokevirtual org.bouncycastle.crypto.params.ParametersWithIV.getParameters:()Lorg/bouncycastle/crypto/CipherParameters;
            checkcast org.bouncycastle.crypto.params.KeyParameter
            astore 7 /* kParam */
        start local 7 // org.bouncycastle.crypto.params.KeyParameter kParam
        15: .line 148
            aload 7 /* kParam */
            invokevirtual org.bouncycastle.crypto.params.KeyParameter.getKey:()[B
            invokestatic org.bouncycastle.crypto.params.DESParameters.setOddParity:([B)V
        end local 7 // org.bouncycastle.crypto.params.KeyParameter kParam
        16: .line 149
            goto 19
        17: .line 152
      StackMap locals:
      StackMap stack:
            aload 6 /* param */
            checkcast org.bouncycastle.crypto.params.KeyParameter
            astore 7 /* kParam */
        start local 7 // org.bouncycastle.crypto.params.KeyParameter kParam
        18: .line 154
            aload 7 /* kParam */
            invokevirtual org.bouncycastle.crypto.params.KeyParameter.getKey:()[B
            invokestatic org.bouncycastle.crypto.params.DESParameters.setOddParity:([B)V
        end local 7 // org.bouncycastle.crypto.params.KeyParameter kParam
        19: .line 158
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 7 /* i */
        start local 7 // int i
        20: goto 23
        21: .line 160
      StackMap locals: int
      StackMap stack:
            aload 5 /* key */
            iload 7 /* i */
            iconst_0
            bastore
        22: .line 158
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        23: iload 7 /* i */
            aload 5 /* key */
            arraylength
            if_icmpne 21
        end local 7 // int i
        24: .line 163
            aload 6 /* param */
            areturn
        end local 6 // org.bouncycastle.crypto.CipherParameters param
        end local 5 // byte[] key
        end local 4 // org.bouncycastle.crypto.PBEParametersGenerator generator
        end local 3 // javax.crypto.spec.PBEParameterSpec pbeParam
        end local 2 // java.lang.String targetAlgorithm
        end local 1 // java.security.spec.AlgorithmParameterSpec spec
        end local 0 // org.bouncycastle.jce.provider.JCEPBEKey pbeKey
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   25     0           pbeKey  Lorg/bouncycastle/jce/provider/JCEPBEKey;
            0   25     1             spec  Ljava/security/spec/AlgorithmParameterSpec;
            0   25     2  targetAlgorithm  Ljava/lang/String;
            3   25     3         pbeParam  Ljavax/crypto/spec/PBEParameterSpec;
            4   25     4        generator  Lorg/bouncycastle/crypto/PBEParametersGenerator;
            5   25     5              key  [B
           10   11     6            param  Lorg/bouncycastle/crypto/CipherParameters;
           12   25     6            param  Lorg/bouncycastle/crypto/CipherParameters;
           15   16     7           kParam  Lorg/bouncycastle/crypto/params/KeyParameter;
           18   19     7           kParam  Lorg/bouncycastle/crypto/params/KeyParameter;
           20   24     7                i  I
    MethodParameters:
                 Name  Flags
      pbeKey           
      spec             
      targetAlgorithm  

  static org.bouncycastle.crypto.CipherParameters makePBEMacParameters(org.bouncycastle.jce.provider.JCEPBEKey, java.security.spec.AlgorithmParameterSpec);
    descriptor: (Lorg/bouncycastle/jce/provider/JCEPBEKey;Ljava/security/spec/AlgorithmParameterSpec;)Lorg/bouncycastle/crypto/CipherParameters;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=7, args_size=2
        start local 0 // org.bouncycastle.jce.provider.JCEPBEKey pbeKey
        start local 1 // java.security.spec.AlgorithmParameterSpec spec
         0: .line 175
            aload 1 /* spec */
            ifnull 1
            aload 1 /* spec */
            instanceof javax.crypto.spec.PBEParameterSpec
            ifne 2
         1: .line 177
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "Need a PBEParameter spec with a PBE key."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 180
      StackMap locals:
      StackMap stack:
            aload 1 /* spec */
            checkcast javax.crypto.spec.PBEParameterSpec
            astore 2 /* pbeParam */
        start local 2 // javax.crypto.spec.PBEParameterSpec pbeParam
         3: .line 181
            aload 0 /* pbeKey */
            invokevirtual org.bouncycastle.jce.provider.JCEPBEKey.getType:()I
            aload 0 /* pbeKey */
            invokevirtual org.bouncycastle.jce.provider.JCEPBEKey.getDigest:()I
            invokestatic org.bouncycastle.jce.provider.PBE$Util.makePBEGenerator:(II)Lorg/bouncycastle/crypto/PBEParametersGenerator;
            astore 3 /* generator */
        start local 3 // org.bouncycastle.crypto.PBEParametersGenerator generator
         4: .line 182
            aload 0 /* pbeKey */
            invokevirtual org.bouncycastle.jce.provider.JCEPBEKey.getEncoded:()[B
            astore 4 /* key */
        start local 4 // byte[] key
         5: .line 185
            aload 0 /* pbeKey */
            invokevirtual org.bouncycastle.jce.provider.JCEPBEKey.shouldTryWrongPKCS12:()Z
            ifeq 7
         6: .line 187
            iconst_2
            newarray 8
            astore 4 /* key */
         7: .line 190
      StackMap locals: javax.crypto.spec.PBEParameterSpec org.bouncycastle.crypto.PBEParametersGenerator byte[]
      StackMap stack:
            aload 3 /* generator */
            aload 4 /* key */
            aload 2 /* pbeParam */
            invokevirtual javax.crypto.spec.PBEParameterSpec.getSalt:()[B
            aload 2 /* pbeParam */
            invokevirtual javax.crypto.spec.PBEParameterSpec.getIterationCount:()I
            invokevirtual org.bouncycastle.crypto.PBEParametersGenerator.init:([B[BI)V
         8: .line 192
            aload 3 /* generator */
            aload 0 /* pbeKey */
            invokevirtual org.bouncycastle.jce.provider.JCEPBEKey.getKeySize:()I
            invokevirtual org.bouncycastle.crypto.PBEParametersGenerator.generateDerivedMacParameters:(I)Lorg/bouncycastle/crypto/CipherParameters;
            astore 5 /* param */
        start local 5 // org.bouncycastle.crypto.CipherParameters param
         9: .line 194
            iconst_0
            istore 6 /* i */
        start local 6 // int i
        10: goto 13
        11: .line 196
      StackMap locals: org.bouncycastle.crypto.CipherParameters int
      StackMap stack:
            aload 4 /* key */
            iload 6 /* i */
            iconst_0
            bastore
        12: .line 194
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        13: iload 6 /* i */
            aload 4 /* key */
            arraylength
            if_icmpne 11
        end local 6 // int i
        14: .line 199
            aload 5 /* param */
            areturn
        end local 5 // org.bouncycastle.crypto.CipherParameters param
        end local 4 // byte[] key
        end local 3 // org.bouncycastle.crypto.PBEParametersGenerator generator
        end local 2 // javax.crypto.spec.PBEParameterSpec pbeParam
        end local 1 // java.security.spec.AlgorithmParameterSpec spec
        end local 0 // org.bouncycastle.jce.provider.JCEPBEKey pbeKey
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   15     0     pbeKey  Lorg/bouncycastle/jce/provider/JCEPBEKey;
            0   15     1       spec  Ljava/security/spec/AlgorithmParameterSpec;
            3   15     2   pbeParam  Ljavax/crypto/spec/PBEParameterSpec;
            4   15     3  generator  Lorg/bouncycastle/crypto/PBEParametersGenerator;
            5   15     4        key  [B
            9   15     5      param  Lorg/bouncycastle/crypto/CipherParameters;
           10   14     6          i  I
    MethodParameters:
        Name  Flags
      pbeKey  
      spec    

  static org.bouncycastle.crypto.CipherParameters makePBEParameters(javax.crypto.spec.PBEKeySpec, int, int, int, int);
    descriptor: (Ljavax/crypto/spec/PBEKeySpec;IIII)Lorg/bouncycastle/crypto/CipherParameters;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=9, args_size=5
        start local 0 // javax.crypto.spec.PBEKeySpec keySpec
        start local 1 // int type
        start local 2 // int hash
        start local 3 // int keySize
        start local 4 // int ivSize
         0: .line 213
            iload 1 /* type */
            iload 2 /* hash */
            invokestatic org.bouncycastle.jce.provider.PBE$Util.makePBEGenerator:(II)Lorg/bouncycastle/crypto/PBEParametersGenerator;
            astore 5 /* generator */
        start local 5 // org.bouncycastle.crypto.PBEParametersGenerator generator
         1: .line 217
            iload 1 /* type */
            iconst_2
            if_icmpne 4
         2: .line 219
            aload 0 /* keySpec */
            invokevirtual javax.crypto.spec.PBEKeySpec.getPassword:()[C
            invokestatic org.bouncycastle.crypto.PBEParametersGenerator.PKCS12PasswordToBytes:([C)[B
            astore 6 /* key */
        start local 6 // byte[] key
         3: .line 220
            goto 5
        end local 6 // byte[] key
         4: .line 223
      StackMap locals: org.bouncycastle.crypto.PBEParametersGenerator
      StackMap stack:
            aload 0 /* keySpec */
            invokevirtual javax.crypto.spec.PBEKeySpec.getPassword:()[C
            invokestatic org.bouncycastle.crypto.PBEParametersGenerator.PKCS5PasswordToBytes:([C)[B
            astore 6 /* key */
        start local 6 // byte[] key
         5: .line 226
      StackMap locals: byte[]
      StackMap stack:
            aload 5 /* generator */
            aload 6 /* key */
            aload 0 /* keySpec */
            invokevirtual javax.crypto.spec.PBEKeySpec.getSalt:()[B
            aload 0 /* keySpec */
            invokevirtual javax.crypto.spec.PBEKeySpec.getIterationCount:()I
            invokevirtual org.bouncycastle.crypto.PBEParametersGenerator.init:([B[BI)V
         6: .line 228
            iload 4 /* ivSize */
            ifeq 9
         7: .line 230
            aload 5 /* generator */
            iload 3 /* keySize */
            iload 4 /* ivSize */
            invokevirtual org.bouncycastle.crypto.PBEParametersGenerator.generateDerivedParameters:(II)Lorg/bouncycastle/crypto/CipherParameters;
            astore 7 /* param */
        start local 7 // org.bouncycastle.crypto.CipherParameters param
         8: .line 231
            goto 10
        end local 7 // org.bouncycastle.crypto.CipherParameters param
         9: .line 234
      StackMap locals:
      StackMap stack:
            aload 5 /* generator */
            iload 3 /* keySize */
            invokevirtual org.bouncycastle.crypto.PBEParametersGenerator.generateDerivedParameters:(I)Lorg/bouncycastle/crypto/CipherParameters;
            astore 7 /* param */
        start local 7 // org.bouncycastle.crypto.CipherParameters param
        10: .line 237
      StackMap locals: org.bouncycastle.crypto.CipherParameters
      StackMap stack:
            iconst_0
            istore 8 /* i */
        start local 8 // int i
        11: goto 14
        12: .line 239
      StackMap locals: int
      StackMap stack:
            aload 6 /* key */
            iload 8 /* i */
            iconst_0
            bastore
        13: .line 237
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        14: iload 8 /* i */
            aload 6 /* key */
            arraylength
            if_icmpne 12
        end local 8 // int i
        15: .line 242
            aload 7 /* param */
            areturn
        end local 7 // org.bouncycastle.crypto.CipherParameters param
        end local 6 // byte[] key
        end local 5 // org.bouncycastle.crypto.PBEParametersGenerator generator
        end local 4 // int ivSize
        end local 3 // int keySize
        end local 2 // int hash
        end local 1 // int type
        end local 0 // javax.crypto.spec.PBEKeySpec keySpec
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   16     0    keySpec  Ljavax/crypto/spec/PBEKeySpec;
            0   16     1       type  I
            0   16     2       hash  I
            0   16     3    keySize  I
            0   16     4     ivSize  I
            1   16     5  generator  Lorg/bouncycastle/crypto/PBEParametersGenerator;
            3    4     6        key  [B
            5   16     6        key  [B
            8    9     7      param  Lorg/bouncycastle/crypto/CipherParameters;
           10   16     7      param  Lorg/bouncycastle/crypto/CipherParameters;
           11   15     8          i  I
    MethodParameters:
         Name  Flags
      keySpec  
      type     
      hash     
      keySize  
      ivSize   

  static org.bouncycastle.crypto.CipherParameters makePBEMacParameters(javax.crypto.spec.PBEKeySpec, int, int, int);
    descriptor: (Ljavax/crypto/spec/PBEKeySpec;III)Lorg/bouncycastle/crypto/CipherParameters;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=8, args_size=4
        start local 0 // javax.crypto.spec.PBEKeySpec keySpec
        start local 1 // int type
        start local 2 // int hash
        start local 3 // int keySize
         0: .line 256
            iload 1 /* type */
            iload 2 /* hash */
            invokestatic org.bouncycastle.jce.provider.PBE$Util.makePBEGenerator:(II)Lorg/bouncycastle/crypto/PBEParametersGenerator;
            astore 4 /* generator */
        start local 4 // org.bouncycastle.crypto.PBEParametersGenerator generator
         1: .line 260
            iload 1 /* type */
            iconst_2
            if_icmpne 4
         2: .line 262
            aload 0 /* keySpec */
            invokevirtual javax.crypto.spec.PBEKeySpec.getPassword:()[C
            invokestatic org.bouncycastle.crypto.PBEParametersGenerator.PKCS12PasswordToBytes:([C)[B
            astore 5 /* key */
        start local 5 // byte[] key
         3: .line 263
            goto 5
        end local 5 // byte[] key
         4: .line 266
      StackMap locals: org.bouncycastle.crypto.PBEParametersGenerator
      StackMap stack:
            aload 0 /* keySpec */
            invokevirtual javax.crypto.spec.PBEKeySpec.getPassword:()[C
            invokestatic org.bouncycastle.crypto.PBEParametersGenerator.PKCS5PasswordToBytes:([C)[B
            astore 5 /* key */
        start local 5 // byte[] key
         5: .line 269
      StackMap locals: byte[]
      StackMap stack:
            aload 4 /* generator */
            aload 5 /* key */
            aload 0 /* keySpec */
            invokevirtual javax.crypto.spec.PBEKeySpec.getSalt:()[B
            aload 0 /* keySpec */
            invokevirtual javax.crypto.spec.PBEKeySpec.getIterationCount:()I
            invokevirtual org.bouncycastle.crypto.PBEParametersGenerator.init:([B[BI)V
         6: .line 271
            aload 4 /* generator */
            iload 3 /* keySize */
            invokevirtual org.bouncycastle.crypto.PBEParametersGenerator.generateDerivedMacParameters:(I)Lorg/bouncycastle/crypto/CipherParameters;
            astore 6 /* param */
        start local 6 // org.bouncycastle.crypto.CipherParameters param
         7: .line 273
            iconst_0
            istore 7 /* i */
        start local 7 // int i
         8: goto 11
         9: .line 275
      StackMap locals: org.bouncycastle.crypto.CipherParameters int
      StackMap stack:
            aload 5 /* key */
            iload 7 /* i */
            iconst_0
            bastore
        10: .line 273
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        11: iload 7 /* i */
            aload 5 /* key */
            arraylength
            if_icmpne 9
        end local 7 // int i
        12: .line 278
            aload 6 /* param */
            areturn
        end local 6 // org.bouncycastle.crypto.CipherParameters param
        end local 5 // byte[] key
        end local 4 // org.bouncycastle.crypto.PBEParametersGenerator generator
        end local 3 // int keySize
        end local 2 // int hash
        end local 1 // int type
        end local 0 // javax.crypto.spec.PBEKeySpec keySpec
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   13     0    keySpec  Ljavax/crypto/spec/PBEKeySpec;
            0   13     1       type  I
            0   13     2       hash  I
            0   13     3    keySize  I
            1   13     4  generator  Lorg/bouncycastle/crypto/PBEParametersGenerator;
            3    4     5        key  [B
            5   13     5        key  [B
            7   13     6      param  Lorg/bouncycastle/crypto/CipherParameters;
            8   12     7          i  I
    MethodParameters:
         Name  Flags
      keySpec  
      type     
      hash     
      keySize  
}
SourceFile: "PBE.java"
NestHost: org.bouncycastle.jce.provider.PBE
InnerClasses:
  public Util = org.bouncycastle.jce.provider.PBE$Util of org.bouncycastle.jce.provider.PBE