class org.bouncycastle.openssl.bc.PEMUtilities
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.bouncycastle.openssl.bc.PEMUtilities
  super_class: java.lang.Object
{
  private static final java.util.Map KEYSIZES;
    descriptor: Ljava/util/Map;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.util.Set PKCS5_SCHEME_1;
    descriptor: Ljava/util/Set;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.util.Set PKCS5_SCHEME_2;
    descriptor: Ljava/util/Set;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 37
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putstatic org.bouncycastle.openssl.bc.PEMUtilities.KEYSIZES:Ljava/util/Map;
         1: .line 38
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            putstatic org.bouncycastle.openssl.bc.PEMUtilities.PKCS5_SCHEME_1:Ljava/util/Set;
         2: .line 39
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            putstatic org.bouncycastle.openssl.bc.PEMUtilities.PKCS5_SCHEME_2:Ljava/util/Set;
         3: .line 43
            getstatic org.bouncycastle.openssl.bc.PEMUtilities.PKCS5_SCHEME_1:Ljava/util/Set;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.pbeWithMD2AndDES_CBC:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         4: .line 44
            getstatic org.bouncycastle.openssl.bc.PEMUtilities.PKCS5_SCHEME_1:Ljava/util/Set;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.pbeWithMD2AndRC2_CBC:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         5: .line 45
            getstatic org.bouncycastle.openssl.bc.PEMUtilities.PKCS5_SCHEME_1:Ljava/util/Set;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.pbeWithMD5AndDES_CBC:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         6: .line 46
            getstatic org.bouncycastle.openssl.bc.PEMUtilities.PKCS5_SCHEME_1:Ljava/util/Set;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.pbeWithMD5AndRC2_CBC:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         7: .line 47
            getstatic org.bouncycastle.openssl.bc.PEMUtilities.PKCS5_SCHEME_1:Ljava/util/Set;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.pbeWithSHA1AndDES_CBC:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         8: .line 48
            getstatic org.bouncycastle.openssl.bc.PEMUtilities.PKCS5_SCHEME_1:Ljava/util/Set;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.pbeWithSHA1AndRC2_CBC:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         9: .line 50
            getstatic org.bouncycastle.openssl.bc.PEMUtilities.PKCS5_SCHEME_2:Ljava/util/Set;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.id_PBES2:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        10: .line 51
            getstatic org.bouncycastle.openssl.bc.PEMUtilities.PKCS5_SCHEME_2:Ljava/util/Set;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.des_EDE3_CBC:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        11: .line 52
            getstatic org.bouncycastle.openssl.bc.PEMUtilities.PKCS5_SCHEME_2:Ljava/util/Set;
            getstatic org.bouncycastle.asn1.nist.NISTObjectIdentifiers.id_aes128_CBC:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        12: .line 53
            getstatic org.bouncycastle.openssl.bc.PEMUtilities.PKCS5_SCHEME_2:Ljava/util/Set;
            getstatic org.bouncycastle.asn1.nist.NISTObjectIdentifiers.id_aes192_CBC:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        13: .line 54
            getstatic org.bouncycastle.openssl.bc.PEMUtilities.PKCS5_SCHEME_2:Ljava/util/Set;
            getstatic org.bouncycastle.asn1.nist.NISTObjectIdentifiers.id_aes256_CBC:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        14: .line 56
            getstatic org.bouncycastle.openssl.bc.PEMUtilities.KEYSIZES:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.des_EDE3_CBC:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokevirtual org.bouncycastle.asn1.ASN1ObjectIdentifier.getId:()Ljava/lang/String;
            sipush 192
            invokestatic org.bouncycastle.util.Integers.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        15: .line 57
            getstatic org.bouncycastle.openssl.bc.PEMUtilities.KEYSIZES:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.nist.NISTObjectIdentifiers.id_aes128_CBC:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokevirtual org.bouncycastle.asn1.ASN1ObjectIdentifier.getId:()Ljava/lang/String;
            sipush 128
            invokestatic org.bouncycastle.util.Integers.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        16: .line 58
            getstatic org.bouncycastle.openssl.bc.PEMUtilities.KEYSIZES:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.nist.NISTObjectIdentifiers.id_aes192_CBC:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokevirtual org.bouncycastle.asn1.ASN1ObjectIdentifier.getId:()Ljava/lang/String;
            sipush 192
            invokestatic org.bouncycastle.util.Integers.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        17: .line 59
            getstatic org.bouncycastle.openssl.bc.PEMUtilities.KEYSIZES:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.nist.NISTObjectIdentifiers.id_aes256_CBC:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokevirtual org.bouncycastle.asn1.ASN1ObjectIdentifier.getId:()Ljava/lang/String;
            sipush 256
            invokestatic org.bouncycastle.util.Integers.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        18: .line 60
            getstatic org.bouncycastle.openssl.bc.PEMUtilities.KEYSIZES:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.pbeWithSHAAnd128BitRC4:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokevirtual org.bouncycastle.asn1.ASN1ObjectIdentifier.getId:()Ljava/lang/String;
            sipush 128
            invokestatic org.bouncycastle.util.Integers.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        19: .line 61
            getstatic org.bouncycastle.openssl.bc.PEMUtilities.KEYSIZES:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.pbeWithSHAAnd40BitRC4:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            bipush 40
            invokestatic org.bouncycastle.util.Integers.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        20: .line 62
            getstatic org.bouncycastle.openssl.bc.PEMUtilities.KEYSIZES:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.pbeWithSHAAnd2_KeyTripleDES_CBC:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            sipush 128
            invokestatic org.bouncycastle.util.Integers.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        21: .line 63
            getstatic org.bouncycastle.openssl.bc.PEMUtilities.KEYSIZES:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.pbeWithSHAAnd3_KeyTripleDES_CBC:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            sipush 192
            invokestatic org.bouncycastle.util.Integers.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        22: .line 64
            getstatic org.bouncycastle.openssl.bc.PEMUtilities.KEYSIZES:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.pbeWithSHAAnd128BitRC2_CBC:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            sipush 128
            invokestatic org.bouncycastle.util.Integers.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        23: .line 65
            getstatic org.bouncycastle.openssl.bc.PEMUtilities.KEYSIZES:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.pbeWithSHAAnd40BitRC2_CBC:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            bipush 40
            invokestatic org.bouncycastle.util.Integers.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        24: .line 66
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.openssl.bc.PEMUtilities this
         0: .line 35
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.bouncycastle.openssl.bc.PEMUtilities this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bouncycastle/openssl/bc/PEMUtilities;

  static int getKeySize(java.lang.String);
    descriptor: (Ljava/lang/String;)I
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // java.lang.String algorithm
         0: .line 70
            getstatic org.bouncycastle.openssl.bc.PEMUtilities.KEYSIZES:Ljava/util/Map;
            aload 0 /* algorithm */
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifne 2
         1: .line 72
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "no key size for algorithm: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* algorithm */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 75
      StackMap locals:
      StackMap stack:
            getstatic org.bouncycastle.openssl.bc.PEMUtilities.KEYSIZES:Ljava/util/Map;
            aload 0 /* algorithm */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            ireturn
        end local 0 // java.lang.String algorithm
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0  algorithm  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      algorithm  

  static boolean isPKCS5Scheme1(org.bouncycastle.asn1.ASN1ObjectIdentifier);
    descriptor: (Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.bouncycastle.asn1.ASN1ObjectIdentifier algOid
         0: .line 80
            getstatic org.bouncycastle.openssl.bc.PEMUtilities.PKCS5_SCHEME_1:Ljava/util/Set;
            aload 0 /* algOid */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ireturn
        end local 0 // org.bouncycastle.asn1.ASN1ObjectIdentifier algOid
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  algOid  Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
    MethodParameters:
        Name  Flags
      algOid  

  static boolean isPKCS5Scheme2(org.bouncycastle.asn1.ASN1ObjectIdentifier);
    descriptor: (Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.bouncycastle.asn1.ASN1ObjectIdentifier algOid
         0: .line 85
            getstatic org.bouncycastle.openssl.bc.PEMUtilities.PKCS5_SCHEME_2:Ljava/util/Set;
            aload 0 /* algOid */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ireturn
        end local 0 // org.bouncycastle.asn1.ASN1ObjectIdentifier algOid
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  algOid  Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
    MethodParameters:
        Name  Flags
      algOid  

  public static boolean isPKCS12(org.bouncycastle.asn1.ASN1ObjectIdentifier);
    descriptor: (Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.bouncycastle.asn1.ASN1ObjectIdentifier algOid
         0: .line 90
            aload 0 /* algOid */
            invokevirtual org.bouncycastle.asn1.ASN1ObjectIdentifier.getId:()Ljava/lang/String;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.pkcs_12PbeIds:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokevirtual org.bouncycastle.asn1.ASN1ObjectIdentifier.getId:()Ljava/lang/String;
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ireturn
        end local 0 // org.bouncycastle.asn1.ASN1ObjectIdentifier algOid
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  algOid  Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
    MethodParameters:
        Name  Flags
      algOid  

  public static org.bouncycastle.crypto.params.KeyParameter generateSecretKeyForPKCS5Scheme2(java.lang.String, char[], byte[], int);
    descriptor: (Ljava/lang/String;[C[BI)Lorg/bouncycastle/crypto/params/KeyParameter;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // java.lang.String algorithm
        start local 1 // char[] password
        start local 2 // byte[] salt
        start local 3 // int iterationCount
         0: .line 95
            new org.bouncycastle.crypto.generators.PKCS5S2ParametersGenerator
            dup
            new org.bouncycastle.crypto.digests.SHA1Digest
            dup
            invokespecial org.bouncycastle.crypto.digests.SHA1Digest.<init>:()V
            invokespecial org.bouncycastle.crypto.generators.PKCS5S2ParametersGenerator.<init>:(Lorg/bouncycastle/crypto/Digest;)V
            astore 4 /* paramsGen */
        start local 4 // org.bouncycastle.crypto.PBEParametersGenerator paramsGen
         1: .line 97
            aload 4 /* paramsGen */
            aload 1 /* password */
            invokestatic org.bouncycastle.crypto.PBEParametersGenerator.PKCS5PasswordToBytes:([C)[B
            aload 2 /* salt */
            iload 3 /* iterationCount */
            invokevirtual org.bouncycastle.crypto.PBEParametersGenerator.init:([B[BI)V
         2: .line 99
            aload 4 /* paramsGen */
            aload 0 /* algorithm */
            invokestatic org.bouncycastle.openssl.bc.PEMUtilities.getKeySize:(Ljava/lang/String;)I
            invokevirtual org.bouncycastle.crypto.PBEParametersGenerator.generateDerivedParameters:(I)Lorg/bouncycastle/crypto/CipherParameters;
            checkcast org.bouncycastle.crypto.params.KeyParameter
            areturn
        end local 4 // org.bouncycastle.crypto.PBEParametersGenerator paramsGen
        end local 3 // int iterationCount
        end local 2 // byte[] salt
        end local 1 // char[] password
        end local 0 // java.lang.String algorithm
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    3     0       algorithm  Ljava/lang/String;
            0    3     1        password  [C
            0    3     2            salt  [B
            0    3     3  iterationCount  I
            1    3     4       paramsGen  Lorg/bouncycastle/crypto/PBEParametersGenerator;
    MethodParameters:
                Name  Flags
      algorithm       
      password        
      salt            
      iterationCount  

  static byte[] crypt(boolean, byte[], char[], java.lang.String, byte[]);
    descriptor: (Z[B[CLjava/lang/String;[B)[B
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=14, args_size=5
        start local 0 // boolean encrypt
        start local 1 // byte[] bytes
        start local 2 // char[] password
        start local 3 // java.lang.String dekAlgName
        start local 4 // byte[] iv
         0: .line 110
            aload 4 /* iv */
            astore 5 /* ivValue */
        start local 5 // byte[] ivValue
         1: .line 111
            ldc "CBC"
            astore 6 /* blockMode */
        start local 6 // java.lang.String blockMode
         2: .line 113
            new org.bouncycastle.crypto.paddings.PKCS7Padding
            dup
            invokespecial org.bouncycastle.crypto.paddings.PKCS7Padding.<init>:()V
            astore 8 /* padding */
        start local 8 // org.bouncycastle.crypto.paddings.BlockCipherPadding padding
         3: .line 117
            aload 3 /* dekAlgName */
            ldc "-CFB"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 6
         4: .line 119
            ldc "CFB"
            astore 6 /* blockMode */
         5: .line 120
            aconst_null
            astore 8 /* padding */
         6: .line 122
      StackMap locals: int byte[] char[] java.lang.String byte[] byte[] java.lang.String top org.bouncycastle.crypto.paddings.BlockCipherPadding
      StackMap stack:
            aload 3 /* dekAlgName */
            ldc "-ECB"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifne 9
         7: .line 123
            ldc "DES-EDE"
            aload 3 /* dekAlgName */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 9
         8: .line 124
            ldc "DES-EDE3"
            aload 3 /* dekAlgName */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 11
         9: .line 128
      StackMap locals:
      StackMap stack:
            ldc "ECB"
            astore 6 /* blockMode */
        10: .line 129
            aconst_null
            astore 5 /* ivValue */
        11: .line 131
      StackMap locals:
      StackMap stack:
            aload 3 /* dekAlgName */
            ldc "-OFB"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 14
        12: .line 133
            ldc "OFB"
            astore 6 /* blockMode */
        13: .line 134
            aconst_null
            astore 8 /* padding */
        14: .line 138
      StackMap locals:
      StackMap stack:
            aload 3 /* dekAlgName */
            ldc "DES-EDE"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 21
        15: .line 142
            aload 3 /* dekAlgName */
            ldc "DES-EDE3"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 16
            iconst_0
            goto 17
      StackMap locals:
      StackMap stack:
        16: iconst_1
      StackMap locals:
      StackMap stack: int
        17: istore 10 /* des2 */
        start local 10 // boolean des2
        18: .line 143
            aload 2 /* password */
            bipush 24
            aload 4 /* iv */
            iload 10 /* des2 */
            invokestatic org.bouncycastle.openssl.bc.PEMUtilities.getKey:([CI[BZ)Lorg/bouncycastle/crypto/params/KeyParameter;
            astore 9 /* sKey */
        start local 9 // org.bouncycastle.crypto.params.KeyParameter sKey
        19: .line 144
            new org.bouncycastle.crypto.engines.DESedeEngine
            dup
            invokespecial org.bouncycastle.crypto.engines.DESedeEngine.<init>:()V
            astore 7 /* engine */
        end local 10 // boolean des2
        start local 7 // org.bouncycastle.crypto.BlockCipher engine
        20: .line 145
            goto 58
        end local 9 // org.bouncycastle.crypto.params.KeyParameter sKey
        end local 7 // org.bouncycastle.crypto.BlockCipher engine
        21: .line 146
      StackMap locals:
      StackMap stack:
            aload 3 /* dekAlgName */
            ldc "DES-"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 25
        22: .line 148
            aload 2 /* password */
            bipush 8
            aload 4 /* iv */
            invokestatic org.bouncycastle.openssl.bc.PEMUtilities.getKey:([CI[B)Lorg/bouncycastle/crypto/params/KeyParameter;
            astore 9 /* sKey */
        start local 9 // org.bouncycastle.crypto.params.KeyParameter sKey
        23: .line 149
            new org.bouncycastle.crypto.engines.DESEngine
            dup
            invokespecial org.bouncycastle.crypto.engines.DESEngine.<init>:()V
            astore 7 /* engine */
        start local 7 // org.bouncycastle.crypto.BlockCipher engine
        24: .line 150
            goto 58
        end local 9 // org.bouncycastle.crypto.params.KeyParameter sKey
        end local 7 // org.bouncycastle.crypto.BlockCipher engine
        25: .line 151
      StackMap locals:
      StackMap stack:
            aload 3 /* dekAlgName */
            ldc "BF-"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 29
        26: .line 153
            aload 2 /* password */
            bipush 16
            aload 4 /* iv */
            invokestatic org.bouncycastle.openssl.bc.PEMUtilities.getKey:([CI[B)Lorg/bouncycastle/crypto/params/KeyParameter;
            astore 9 /* sKey */
        start local 9 // org.bouncycastle.crypto.params.KeyParameter sKey
        27: .line 154
            new org.bouncycastle.crypto.engines.BlowfishEngine
            dup
            invokespecial org.bouncycastle.crypto.engines.BlowfishEngine.<init>:()V
            astore 7 /* engine */
        start local 7 // org.bouncycastle.crypto.BlockCipher engine
        28: .line 155
            goto 58
        end local 9 // org.bouncycastle.crypto.params.KeyParameter sKey
        end local 7 // org.bouncycastle.crypto.BlockCipher engine
        29: .line 156
      StackMap locals:
      StackMap stack:
            aload 3 /* dekAlgName */
            ldc "RC2-"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 39
        30: .line 158
            sipush 128
            istore 10 /* keyBits */
        start local 10 // int keyBits
        31: .line 159
            aload 3 /* dekAlgName */
            ldc "RC2-40-"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 34
        32: .line 161
            bipush 40
            istore 10 /* keyBits */
        33: .line 162
            goto 36
        34: .line 163
      StackMap locals: int byte[] char[] java.lang.String byte[] byte[] java.lang.String top org.bouncycastle.crypto.paddings.BlockCipherPadding top int
      StackMap stack:
            aload 3 /* dekAlgName */
            ldc "RC2-64-"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 36
        35: .line 165
            bipush 64
            istore 10 /* keyBits */
        36: .line 167
      StackMap locals:
      StackMap stack:
            new org.bouncycastle.crypto.params.RC2Parameters
            dup
            aload 2 /* password */
            iload 10 /* keyBits */
            bipush 8
            idiv
            aload 4 /* iv */
            invokestatic org.bouncycastle.openssl.bc.PEMUtilities.getKey:([CI[B)Lorg/bouncycastle/crypto/params/KeyParameter;
            invokevirtual org.bouncycastle.crypto.params.KeyParameter.getKey:()[B
            iload 10 /* keyBits */
            invokespecial org.bouncycastle.crypto.params.RC2Parameters.<init>:([BI)V
            astore 9 /* sKey */
        start local 9 // org.bouncycastle.crypto.params.KeyParameter sKey
        37: .line 168
            new org.bouncycastle.crypto.engines.RC2Engine
            dup
            invokespecial org.bouncycastle.crypto.engines.RC2Engine.<init>:()V
            astore 7 /* engine */
        end local 10 // int keyBits
        start local 7 // org.bouncycastle.crypto.BlockCipher engine
        38: .line 169
            goto 58
        end local 9 // org.bouncycastle.crypto.params.KeyParameter sKey
        end local 7 // org.bouncycastle.crypto.BlockCipher engine
        39: .line 170
      StackMap locals: int byte[] char[] java.lang.String byte[] byte[] java.lang.String top org.bouncycastle.crypto.paddings.BlockCipherPadding
      StackMap stack:
            aload 3 /* dekAlgName */
            ldc "AES-"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 57
        40: .line 172
            aload 4 /* iv */
            astore 10 /* salt */
        start local 10 // byte[] salt
        41: .line 173
            aload 10 /* salt */
            arraylength
            bipush 8
            if_icmple 44
        42: .line 175
            bipush 8
            newarray 8
            astore 10 /* salt */
        43: .line 176
            aload 4 /* iv */
            iconst_0
            aload 10 /* salt */
            iconst_0
            bipush 8
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        44: .line 180
      StackMap locals: int byte[] char[] java.lang.String byte[] byte[] java.lang.String top org.bouncycastle.crypto.paddings.BlockCipherPadding top byte[]
      StackMap stack:
            aload 3 /* dekAlgName */
            ldc "AES-128-"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 47
        45: .line 182
            sipush 128
            istore 11 /* keyBits */
        start local 11 // int keyBits
        46: .line 183
            goto 54
        end local 11 // int keyBits
        47: .line 184
      StackMap locals:
      StackMap stack:
            aload 3 /* dekAlgName */
            ldc "AES-192-"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 50
        48: .line 186
            sipush 192
            istore 11 /* keyBits */
        start local 11 // int keyBits
        49: .line 187
            goto 54
        end local 11 // int keyBits
        50: .line 188
      StackMap locals:
      StackMap stack:
            aload 3 /* dekAlgName */
            ldc "AES-256-"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 53
        51: .line 190
            sipush 256
            istore 11 /* keyBits */
        start local 11 // int keyBits
        52: .line 191
            goto 54
        end local 11 // int keyBits
        53: .line 194
      StackMap locals:
      StackMap stack:
            new org.bouncycastle.openssl.EncryptionException
            dup
            new java.lang.StringBuilder
            dup
            ldc "unknown AES encryption with private key: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* dekAlgName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial org.bouncycastle.openssl.EncryptionException.<init>:(Ljava/lang/String;)V
            athrow
        start local 11 // int keyBits
        54: .line 196
      StackMap locals: int
      StackMap stack:
            aload 2 /* password */
            iload 11 /* keyBits */
            bipush 8
            idiv
            aload 10 /* salt */
            invokestatic org.bouncycastle.openssl.bc.PEMUtilities.getKey:([CI[B)Lorg/bouncycastle/crypto/params/KeyParameter;
            astore 9 /* sKey */
        start local 9 // org.bouncycastle.crypto.params.KeyParameter sKey
        55: .line 197
            new org.bouncycastle.crypto.engines.AESEngine
            dup
            invokespecial org.bouncycastle.crypto.engines.AESEngine.<init>:()V
            astore 7 /* engine */
        end local 11 // int keyBits
        end local 10 // byte[] salt
        start local 7 // org.bouncycastle.crypto.BlockCipher engine
        56: .line 198
            goto 58
        end local 9 // org.bouncycastle.crypto.params.KeyParameter sKey
        end local 7 // org.bouncycastle.crypto.BlockCipher engine
        57: .line 201
      StackMap locals: int byte[] char[] java.lang.String byte[] byte[] java.lang.String top org.bouncycastle.crypto.paddings.BlockCipherPadding
      StackMap stack:
            new org.bouncycastle.openssl.EncryptionException
            dup
            new java.lang.StringBuilder
            dup
            ldc "unknown encryption with private key: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* dekAlgName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial org.bouncycastle.openssl.EncryptionException.<init>:(Ljava/lang/String;)V
            athrow
        start local 7 // org.bouncycastle.crypto.BlockCipher engine
        start local 9 // org.bouncycastle.crypto.params.KeyParameter sKey
        58: .line 204
      StackMap locals: int byte[] char[] java.lang.String byte[] byte[] java.lang.String org.bouncycastle.crypto.BlockCipher org.bouncycastle.crypto.paddings.BlockCipherPadding org.bouncycastle.crypto.params.KeyParameter
      StackMap stack:
            aload 6 /* blockMode */
            ldc "CBC"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 61
        59: .line 206
            new org.bouncycastle.crypto.modes.CBCBlockCipher
            dup
            aload 7 /* engine */
            invokespecial org.bouncycastle.crypto.modes.CBCBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;)V
            astore 7 /* engine */
        60: .line 207
            goto 66
        61: .line 208
      StackMap locals:
      StackMap stack:
            aload 6 /* blockMode */
            ldc "CFB"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 64
        62: .line 210
            new org.bouncycastle.crypto.modes.CFBBlockCipher
            dup
            aload 7 /* engine */
            aload 7 /* engine */
            invokeinterface org.bouncycastle.crypto.BlockCipher.getBlockSize:()I
            bipush 8
            imul
            invokespecial org.bouncycastle.crypto.modes.CFBBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;I)V
            astore 7 /* engine */
        63: .line 211
            goto 66
        64: .line 212
      StackMap locals:
      StackMap stack:
            aload 6 /* blockMode */
            ldc "OFB"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 66
        65: .line 214
            new org.bouncycastle.crypto.modes.OFBBlockCipher
            dup
            aload 7 /* engine */
            aload 7 /* engine */
            invokeinterface org.bouncycastle.crypto.BlockCipher.getBlockSize:()I
            bipush 8
            imul
            invokespecial org.bouncycastle.crypto.modes.OFBBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;I)V
            astore 7 /* engine */
        66: .line 220
      StackMap locals:
      StackMap stack:
            aload 8 /* padding */
            ifnonnull 69
        67: .line 222
            new org.bouncycastle.crypto.BufferedBlockCipher
            dup
            aload 7 /* engine */
            invokespecial org.bouncycastle.crypto.BufferedBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;)V
            astore 10 /* c */
        start local 10 // org.bouncycastle.crypto.BufferedBlockCipher c
        68: .line 223
            goto 70
        end local 10 // org.bouncycastle.crypto.BufferedBlockCipher c
        69: .line 226
      StackMap locals:
      StackMap stack:
            new org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher
            dup
            aload 7 /* engine */
            aload 8 /* padding */
            invokespecial org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;Lorg/bouncycastle/crypto/paddings/BlockCipherPadding;)V
            astore 10 /* c */
        start local 10 // org.bouncycastle.crypto.BufferedBlockCipher c
        70: .line 229
      StackMap locals: org.bouncycastle.crypto.BufferedBlockCipher
      StackMap stack:
            aload 5 /* ivValue */
            ifnonnull 73
        71: .line 231
            aload 10 /* c */
            iload 0 /* encrypt */
            aload 9 /* sKey */
            invokevirtual org.bouncycastle.crypto.BufferedBlockCipher.init:(ZLorg/bouncycastle/crypto/CipherParameters;)V
        72: .line 232
            goto 74
        73: .line 235
      StackMap locals:
      StackMap stack:
            aload 10 /* c */
            iload 0 /* encrypt */
            new org.bouncycastle.crypto.params.ParametersWithIV
            dup
            aload 9 /* sKey */
            aload 5 /* ivValue */
            invokespecial org.bouncycastle.crypto.params.ParametersWithIV.<init>:(Lorg/bouncycastle/crypto/CipherParameters;[B)V
            invokevirtual org.bouncycastle.crypto.BufferedBlockCipher.init:(ZLorg/bouncycastle/crypto/CipherParameters;)V
        74: .line 238
      StackMap locals:
      StackMap stack:
            aload 10 /* c */
            aload 1 /* bytes */
            arraylength
            invokevirtual org.bouncycastle.crypto.BufferedBlockCipher.getOutputSize:(I)I
            newarray 8
            astore 11 /* out */
        start local 11 // byte[] out
        75: .line 240
            aload 10 /* c */
            aload 1 /* bytes */
            iconst_0
            aload 1 /* bytes */
            arraylength
            aload 11 /* out */
            iconst_0
            invokevirtual org.bouncycastle.crypto.BufferedBlockCipher.processBytes:([BII[BI)I
            istore 12 /* procLen */
        start local 12 // int procLen
        76: .line 242
            iload 12 /* procLen */
            aload 10 /* c */
            aload 11 /* out */
            iload 12 /* procLen */
            invokevirtual org.bouncycastle.crypto.BufferedBlockCipher.doFinal:([BI)I
            iadd
            istore 12 /* procLen */
        77: .line 244
            iload 12 /* procLen */
            aload 11 /* out */
            arraylength
            if_icmpne 80
        78: .line 246
            aload 11 /* out */
        79: areturn
        80: .line 250
      StackMap locals: byte[] int
      StackMap stack:
            iload 12 /* procLen */
            newarray 8
            astore 13 /* rv */
        start local 13 // byte[] rv
        81: .line 252
            aload 11 /* out */
            iconst_0
            aload 13 /* rv */
            iconst_0
            iload 12 /* procLen */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        82: .line 254
            aload 13 /* rv */
        83: areturn
        end local 13 // byte[] rv
        end local 12 // int procLen
        end local 11 // byte[] out
        end local 10 // org.bouncycastle.crypto.BufferedBlockCipher c
        84: .line 257
      StackMap locals: int byte[] char[] java.lang.String byte[] byte[] java.lang.String org.bouncycastle.crypto.BlockCipher org.bouncycastle.crypto.paddings.BlockCipherPadding org.bouncycastle.crypto.params.KeyParameter
      StackMap stack: java.lang.Exception
            astore 10 /* e */
        start local 10 // java.lang.Exception e
        85: .line 259
            new org.bouncycastle.openssl.EncryptionException
            dup
            ldc "exception using cipher - please check password and data."
            aload 10 /* e */
            invokespecial org.bouncycastle.openssl.EncryptionException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 10 // java.lang.Exception e
        end local 9 // org.bouncycastle.crypto.params.KeyParameter sKey
        end local 8 // org.bouncycastle.crypto.paddings.BlockCipherPadding padding
        end local 7 // org.bouncycastle.crypto.BlockCipher engine
        end local 6 // java.lang.String blockMode
        end local 5 // byte[] ivValue
        end local 4 // byte[] iv
        end local 3 // java.lang.String dekAlgName
        end local 2 // char[] password
        end local 1 // byte[] bytes
        end local 0 // boolean encrypt
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   86     0     encrypt  Z
            0   86     1       bytes  [B
            0   86     2    password  [C
            0   86     3  dekAlgName  Ljava/lang/String;
            0   86     4          iv  [B
            1   86     5     ivValue  [B
            2   86     6   blockMode  Ljava/lang/String;
           20   21     7      engine  Lorg/bouncycastle/crypto/BlockCipher;
           24   25     7      engine  Lorg/bouncycastle/crypto/BlockCipher;
           28   29     7      engine  Lorg/bouncycastle/crypto/BlockCipher;
           38   39     7      engine  Lorg/bouncycastle/crypto/BlockCipher;
           56   57     7      engine  Lorg/bouncycastle/crypto/BlockCipher;
           58   86     7      engine  Lorg/bouncycastle/crypto/BlockCipher;
            3   86     8     padding  Lorg/bouncycastle/crypto/paddings/BlockCipherPadding;
           19   21     9        sKey  Lorg/bouncycastle/crypto/params/KeyParameter;
           23   25     9        sKey  Lorg/bouncycastle/crypto/params/KeyParameter;
           27   29     9        sKey  Lorg/bouncycastle/crypto/params/KeyParameter;
           37   39     9        sKey  Lorg/bouncycastle/crypto/params/KeyParameter;
           55   57     9        sKey  Lorg/bouncycastle/crypto/params/KeyParameter;
           58   86     9        sKey  Lorg/bouncycastle/crypto/params/KeyParameter;
           18   20    10        des2  Z
           31   38    10     keyBits  I
           41   56    10        salt  [B
           46   47    11     keyBits  I
           49   50    11     keyBits  I
           52   53    11     keyBits  I
           54   56    11     keyBits  I
           68   69    10           c  Lorg/bouncycastle/crypto/BufferedBlockCipher;
           70   84    10           c  Lorg/bouncycastle/crypto/BufferedBlockCipher;
           75   84    11         out  [B
           76   84    12     procLen  I
           81   84    13          rv  [B
           85   86    10           e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
          66    79      84  Class java.lang.Exception
          80    83      84  Class java.lang.Exception
    Exceptions:
      throws org.bouncycastle.openssl.PEMException
    MethodParameters:
            Name  Flags
      encrypt     
      bytes       
      password    
      dekAlgName  
      iv          

  private static org.bouncycastle.crypto.params.KeyParameter getKey(char[], int, byte[]);
    descriptor: ([CI[B)Lorg/bouncycastle/crypto/params/KeyParameter;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // char[] password
        start local 1 // int keyLength
        start local 2 // byte[] salt
         0: .line 269
            aload 0 /* password */
            iload 1 /* keyLength */
            aload 2 /* salt */
            iconst_0
            invokestatic org.bouncycastle.openssl.bc.PEMUtilities.getKey:([CI[BZ)Lorg/bouncycastle/crypto/params/KeyParameter;
            areturn
        end local 2 // byte[] salt
        end local 1 // int keyLength
        end local 0 // char[] password
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0   password  [C
            0    1     1  keyLength  I
            0    1     2       salt  [B
    Exceptions:
      throws org.bouncycastle.openssl.PEMException
    MethodParameters:
           Name  Flags
      password   
      keyLength  
      salt       

  private static org.bouncycastle.crypto.params.KeyParameter getKey(char[], int, byte[], boolean);
    descriptor: ([CI[BZ)Lorg/bouncycastle/crypto/params/KeyParameter;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=7, args_size=4
        start local 0 // char[] password
        start local 1 // int keyLength
        start local 2 // byte[] salt
        start local 3 // boolean des2
         0: .line 279
            new org.bouncycastle.crypto.generators.OpenSSLPBEParametersGenerator
            dup
            invokespecial org.bouncycastle.crypto.generators.OpenSSLPBEParametersGenerator.<init>:()V
            astore 4 /* paramsGen */
        start local 4 // org.bouncycastle.crypto.PBEParametersGenerator paramsGen
         1: .line 281
            aload 4 /* paramsGen */
            aload 0 /* password */
            invokestatic org.bouncycastle.crypto.PBEParametersGenerator.PKCS5PasswordToBytes:([C)[B
            aload 2 /* salt */
            iconst_1
            invokevirtual org.bouncycastle.crypto.PBEParametersGenerator.init:([B[BI)V
         2: .line 283
            aload 4 /* paramsGen */
            iload 1 /* keyLength */
            bipush 8
            imul
            invokevirtual org.bouncycastle.crypto.PBEParametersGenerator.generateDerivedParameters:(I)Lorg/bouncycastle/crypto/CipherParameters;
            checkcast org.bouncycastle.crypto.params.KeyParameter
            astore 5 /* kp */
        start local 5 // org.bouncycastle.crypto.params.KeyParameter kp
         3: .line 285
            iload 3 /* des2 */
            ifeq 7
            aload 5 /* kp */
            invokevirtual org.bouncycastle.crypto.params.KeyParameter.getKey:()[B
            arraylength
            bipush 24
            if_icmpne 7
         4: .line 288
            aload 5 /* kp */
            invokevirtual org.bouncycastle.crypto.params.KeyParameter.getKey:()[B
            astore 6 /* key */
        start local 6 // byte[] key
         5: .line 290
            aload 6 /* key */
            iconst_0
            aload 6 /* key */
            bipush 16
            bipush 8
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         6: .line 292
            new org.bouncycastle.crypto.params.KeyParameter
            dup
            aload 6 /* key */
            invokespecial org.bouncycastle.crypto.params.KeyParameter.<init>:([B)V
            areturn
        end local 6 // byte[] key
         7: .line 295
      StackMap locals: org.bouncycastle.crypto.PBEParametersGenerator org.bouncycastle.crypto.params.KeyParameter
      StackMap stack:
            aload 5 /* kp */
            areturn
        end local 5 // org.bouncycastle.crypto.params.KeyParameter kp
        end local 4 // org.bouncycastle.crypto.PBEParametersGenerator paramsGen
        end local 3 // boolean des2
        end local 2 // byte[] salt
        end local 1 // int keyLength
        end local 0 // char[] password
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0   password  [C
            0    8     1  keyLength  I
            0    8     2       salt  [B
            0    8     3       des2  Z
            1    8     4  paramsGen  Lorg/bouncycastle/crypto/PBEParametersGenerator;
            3    8     5         kp  Lorg/bouncycastle/crypto/params/KeyParameter;
            5    7     6        key  [B
    Exceptions:
      throws org.bouncycastle.openssl.PEMException
    MethodParameters:
           Name  Flags
      password   
      keyLength  
      salt       
      des2       
}
SourceFile: "PEMUtilities.java"