class org.bouncycastle.openssl.jcajce.PEMUtilities
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.bouncycastle.openssl.jcajce.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

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

  private static final java.util.Map PRFS_SALT;
    descriptor: Ljava/util/Map;
    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 34
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putstatic org.bouncycastle.openssl.jcajce.PEMUtilities.KEYSIZES:Ljava/util/Map;
         1: .line 35
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            putstatic org.bouncycastle.openssl.jcajce.PEMUtilities.PKCS5_SCHEME_1:Ljava/util/Set;
         2: .line 36
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            putstatic org.bouncycastle.openssl.jcajce.PEMUtilities.PKCS5_SCHEME_2:Ljava/util/Set;
         3: .line 37
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putstatic org.bouncycastle.openssl.jcajce.PEMUtilities.PRFS:Ljava/util/Map;
         4: .line 38
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putstatic org.bouncycastle.openssl.jcajce.PEMUtilities.PRFS_SALT:Ljava/util/Map;
         5: .line 42
            getstatic org.bouncycastle.openssl.jcajce.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
         6: .line 43
            getstatic org.bouncycastle.openssl.jcajce.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
         7: .line 44
            getstatic org.bouncycastle.openssl.jcajce.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
         8: .line 45
            getstatic org.bouncycastle.openssl.jcajce.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
         9: .line 46
            getstatic org.bouncycastle.openssl.jcajce.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
        10: .line 47
            getstatic org.bouncycastle.openssl.jcajce.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
        11: .line 49
            getstatic org.bouncycastle.openssl.jcajce.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
        12: .line 50
            getstatic org.bouncycastle.openssl.jcajce.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
        13: .line 51
            getstatic org.bouncycastle.openssl.jcajce.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
        14: .line 52
            getstatic org.bouncycastle.openssl.jcajce.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
        15: .line 53
            getstatic org.bouncycastle.openssl.jcajce.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
        16: .line 55
            getstatic org.bouncycastle.openssl.jcajce.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
        17: .line 56
            getstatic org.bouncycastle.openssl.jcajce.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
        18: .line 57
            getstatic org.bouncycastle.openssl.jcajce.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
        19: .line 58
            getstatic org.bouncycastle.openssl.jcajce.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
        20: .line 59
            getstatic org.bouncycastle.openssl.jcajce.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
        21: .line 60
            getstatic org.bouncycastle.openssl.jcajce.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
        22: .line 61
            getstatic org.bouncycastle.openssl.jcajce.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
        23: .line 62
            getstatic org.bouncycastle.openssl.jcajce.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
        24: .line 63
            getstatic org.bouncycastle.openssl.jcajce.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
        25: .line 64
            getstatic org.bouncycastle.openssl.jcajce.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
        26: .line 66
            getstatic org.bouncycastle.openssl.jcajce.PEMUtilities.PRFS:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.id_hmacWithSHA1:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            ldc "PBKDF2withHMACSHA1"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        27: .line 67
            getstatic org.bouncycastle.openssl.jcajce.PEMUtilities.PRFS:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.id_hmacWithSHA256:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            ldc "PBKDF2withHMACSHA256"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        28: .line 68
            getstatic org.bouncycastle.openssl.jcajce.PEMUtilities.PRFS:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.id_hmacWithSHA512:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            ldc "PBKDF2withHMACSHA512"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        29: .line 69
            getstatic org.bouncycastle.openssl.jcajce.PEMUtilities.PRFS:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.id_hmacWithSHA224:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            ldc "PBKDF2withHMACSHA224"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        30: .line 70
            getstatic org.bouncycastle.openssl.jcajce.PEMUtilities.PRFS:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.id_hmacWithSHA384:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            ldc "PBKDF2withHMACSHA384"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        31: .line 71
            getstatic org.bouncycastle.openssl.jcajce.PEMUtilities.PRFS:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.nist.NISTObjectIdentifiers.id_hmacWithSHA3_224:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            ldc "PBKDF2withHMACSHA3-224"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        32: .line 72
            getstatic org.bouncycastle.openssl.jcajce.PEMUtilities.PRFS:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.nist.NISTObjectIdentifiers.id_hmacWithSHA3_256:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            ldc "PBKDF2withHMACSHA3-256"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        33: .line 73
            getstatic org.bouncycastle.openssl.jcajce.PEMUtilities.PRFS:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.nist.NISTObjectIdentifiers.id_hmacWithSHA3_384:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            ldc "PBKDF2withHMACSHA3-384"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        34: .line 74
            getstatic org.bouncycastle.openssl.jcajce.PEMUtilities.PRFS:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.nist.NISTObjectIdentifiers.id_hmacWithSHA3_512:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            ldc "PBKDF2withHMACSHA3-512"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        35: .line 75
            getstatic org.bouncycastle.openssl.jcajce.PEMUtilities.PRFS:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers.gostR3411Hmac:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            ldc "PBKDF2withHMACGOST3411"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        36: .line 77
            getstatic org.bouncycastle.openssl.jcajce.PEMUtilities.PRFS_SALT:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.id_hmacWithSHA1:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            bipush 20
            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
        37: .line 78
            getstatic org.bouncycastle.openssl.jcajce.PEMUtilities.PRFS_SALT:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.id_hmacWithSHA256:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            bipush 32
            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
        38: .line 79
            getstatic org.bouncycastle.openssl.jcajce.PEMUtilities.PRFS_SALT:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.id_hmacWithSHA512:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            bipush 64
            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
        39: .line 80
            getstatic org.bouncycastle.openssl.jcajce.PEMUtilities.PRFS_SALT:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.id_hmacWithSHA224:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            bipush 28
            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
        40: .line 81
            getstatic org.bouncycastle.openssl.jcajce.PEMUtilities.PRFS_SALT:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.id_hmacWithSHA384:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            bipush 48
            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
        41: .line 82
            getstatic org.bouncycastle.openssl.jcajce.PEMUtilities.PRFS_SALT:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.nist.NISTObjectIdentifiers.id_hmacWithSHA3_224:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            bipush 28
            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
        42: .line 83
            getstatic org.bouncycastle.openssl.jcajce.PEMUtilities.PRFS_SALT:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.nist.NISTObjectIdentifiers.id_hmacWithSHA3_256:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            bipush 32
            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
        43: .line 84
            getstatic org.bouncycastle.openssl.jcajce.PEMUtilities.PRFS_SALT:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.nist.NISTObjectIdentifiers.id_hmacWithSHA3_384:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            bipush 48
            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
        44: .line 85
            getstatic org.bouncycastle.openssl.jcajce.PEMUtilities.PRFS_SALT:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.nist.NISTObjectIdentifiers.id_hmacWithSHA3_512:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            bipush 64
            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
        45: .line 86
            getstatic org.bouncycastle.openssl.jcajce.PEMUtilities.PRFS_SALT:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers.gostR3411Hmac:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            bipush 32
            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
        46: .line 87
            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.jcajce.PEMUtilities this
         0: .line 32
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.bouncycastle.openssl.jcajce.PEMUtilities this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bouncycastle/openssl/jcajce/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 91
            getstatic org.bouncycastle.openssl.jcajce.PEMUtilities.KEYSIZES:Ljava/util/Map;
            aload 0 /* algorithm */
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifne 2
         1: .line 93
            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 96
      StackMap locals:
      StackMap stack:
            getstatic org.bouncycastle.openssl.jcajce.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 int getSaltSize(org.bouncycastle.asn1.ASN1ObjectIdentifier);
    descriptor: (Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)I
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // org.bouncycastle.asn1.ASN1ObjectIdentifier algorithm
         0: .line 101
            getstatic org.bouncycastle.openssl.jcajce.PEMUtilities.PRFS_SALT:Ljava/util/Map;
            aload 0 /* algorithm */
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifne 2
         1: .line 103
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "no salt size for algorithm: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* algorithm */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 106
      StackMap locals:
      StackMap stack:
            getstatic org.bouncycastle.openssl.jcajce.PEMUtilities.PRFS_SALT: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 // org.bouncycastle.asn1.ASN1ObjectIdentifier algorithm
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0  algorithm  Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
    MethodParameters:
           Name  Flags
      algorithm  

  static boolean isHmacSHA1(org.bouncycastle.asn1.x509.AlgorithmIdentifier);
    descriptor: (Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.bouncycastle.asn1.x509.AlgorithmIdentifier prf
         0: .line 111
            aload 0 /* prf */
            ifnull 1
            aload 0 /* prf */
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.id_hmacWithSHA1:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokevirtual org.bouncycastle.asn1.ASN1ObjectIdentifier.equals:(Ljava/lang/Object;)Z
            ifne 1
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_1
            ireturn
        end local 0 // org.bouncycastle.asn1.x509.AlgorithmIdentifier prf
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0   prf  Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;
    MethodParameters:
      Name  Flags
      prf   

  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 116
            getstatic org.bouncycastle.openssl.jcajce.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 121
            getstatic org.bouncycastle.openssl.jcajce.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 126
            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 javax.crypto.SecretKey generateSecretKeyForPKCS5Scheme2(org.bouncycastle.jcajce.util.JcaJceHelper, java.lang.String, char[], byte[], int);
    descriptor: (Lorg/bouncycastle/jcajce/util/JcaJceHelper;Ljava/lang/String;[C[BI)Ljavax/crypto/SecretKey;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=7, args_size=5
        start local 0 // org.bouncycastle.jcajce.util.JcaJceHelper helper
        start local 1 // java.lang.String algorithm
        start local 2 // char[] password
        start local 3 // byte[] salt
        start local 4 // int iterationCount
         0: .line 132
            aload 0 /* helper */
            ldc "PBKDF2with8BIT"
            invokeinterface org.bouncycastle.jcajce.util.JcaJceHelper.createSecretKeyFactory:(Ljava/lang/String;)Ljavax/crypto/SecretKeyFactory;
            astore 5 /* keyGen */
        start local 5 // javax.crypto.SecretKeyFactory keyGen
         1: .line 134
            aload 5 /* keyGen */
            new javax.crypto.spec.PBEKeySpec
            dup
            aload 2 /* password */
            aload 3 /* salt */
            iload 4 /* iterationCount */
            aload 1 /* algorithm */
            invokestatic org.bouncycastle.openssl.jcajce.PEMUtilities.getKeySize:(Ljava/lang/String;)I
            invokespecial javax.crypto.spec.PBEKeySpec.<init>:([C[BII)V
            invokevirtual javax.crypto.SecretKeyFactory.generateSecret:(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;
            astore 6 /* sKey */
        start local 6 // javax.crypto.SecretKey sKey
         2: .line 136
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 6 /* sKey */
            invokeinterface javax.crypto.SecretKey.getEncoded:()[B
            aload 1 /* algorithm */
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            areturn
        end local 6 // javax.crypto.SecretKey sKey
        end local 5 // javax.crypto.SecretKeyFactory keyGen
        end local 4 // int iterationCount
        end local 3 // byte[] salt
        end local 2 // char[] password
        end local 1 // java.lang.String algorithm
        end local 0 // org.bouncycastle.jcajce.util.JcaJceHelper helper
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    3     0          helper  Lorg/bouncycastle/jcajce/util/JcaJceHelper;
            0    3     1       algorithm  Ljava/lang/String;
            0    3     2        password  [C
            0    3     3            salt  [B
            0    3     4  iterationCount  I
            1    3     5          keyGen  Ljavax/crypto/SecretKeyFactory;
            2    3     6            sKey  Ljavax/crypto/SecretKey;
    Exceptions:
      throws java.security.NoSuchProviderException, java.security.NoSuchAlgorithmException, java.security.spec.InvalidKeySpecException
    MethodParameters:
                Name  Flags
      helper          
      algorithm       
      password        
      salt            
      iterationCount  

  public static javax.crypto.SecretKey generateSecretKeyForPKCS5Scheme2(org.bouncycastle.jcajce.util.JcaJceHelper, java.lang.String, char[], byte[], int, org.bouncycastle.asn1.x509.AlgorithmIdentifier);
    descriptor: (Lorg/bouncycastle/jcajce/util/JcaJceHelper;Ljava/lang/String;[C[BILorg/bouncycastle/asn1/x509/AlgorithmIdentifier;)Ljavax/crypto/SecretKey;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=9, args_size=6
        start local 0 // org.bouncycastle.jcajce.util.JcaJceHelper helper
        start local 1 // java.lang.String algorithm
        start local 2 // char[] password
        start local 3 // byte[] salt
        start local 4 // int iterationCount
        start local 5 // org.bouncycastle.asn1.x509.AlgorithmIdentifier prf
         0: .line 142
            getstatic org.bouncycastle.openssl.jcajce.PEMUtilities.PRFS:Ljava/util/Map;
            aload 5 /* prf */
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 6 /* prfName */
        start local 6 // java.lang.String prfName
         1: .line 143
            aload 6 /* prfName */
            ifnonnull 3
         2: .line 145
            new java.security.NoSuchAlgorithmException
            dup
            new java.lang.StringBuilder
            dup
            ldc "unknown PRF in PKCS#2: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* prf */
            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 java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 148
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* helper */
            aload 6 /* prfName */
            invokeinterface org.bouncycastle.jcajce.util.JcaJceHelper.createSecretKeyFactory:(Ljava/lang/String;)Ljavax/crypto/SecretKeyFactory;
            astore 7 /* keyGen */
        start local 7 // javax.crypto.SecretKeyFactory keyGen
         4: .line 150
            aload 7 /* keyGen */
            new javax.crypto.spec.PBEKeySpec
            dup
            aload 2 /* password */
            aload 3 /* salt */
            iload 4 /* iterationCount */
            aload 1 /* algorithm */
            invokestatic org.bouncycastle.openssl.jcajce.PEMUtilities.getKeySize:(Ljava/lang/String;)I
            invokespecial javax.crypto.spec.PBEKeySpec.<init>:([C[BII)V
            invokevirtual javax.crypto.SecretKeyFactory.generateSecret:(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;
            astore 8 /* sKey */
        start local 8 // javax.crypto.SecretKey sKey
         5: .line 152
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 8 /* sKey */
            invokeinterface javax.crypto.SecretKey.getEncoded:()[B
            aload 1 /* algorithm */
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            areturn
        end local 8 // javax.crypto.SecretKey sKey
        end local 7 // javax.crypto.SecretKeyFactory keyGen
        end local 6 // java.lang.String prfName
        end local 5 // org.bouncycastle.asn1.x509.AlgorithmIdentifier prf
        end local 4 // int iterationCount
        end local 3 // byte[] salt
        end local 2 // char[] password
        end local 1 // java.lang.String algorithm
        end local 0 // org.bouncycastle.jcajce.util.JcaJceHelper helper
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    6     0          helper  Lorg/bouncycastle/jcajce/util/JcaJceHelper;
            0    6     1       algorithm  Ljava/lang/String;
            0    6     2        password  [C
            0    6     3            salt  [B
            0    6     4  iterationCount  I
            0    6     5             prf  Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;
            1    6     6         prfName  Ljava/lang/String;
            4    6     7          keyGen  Ljavax/crypto/SecretKeyFactory;
            5    6     8            sKey  Ljavax/crypto/SecretKey;
    Exceptions:
      throws java.security.NoSuchProviderException, java.security.NoSuchAlgorithmException, java.security.spec.InvalidKeySpecException
    MethodParameters:
                Name  Flags
      helper          
      algorithm       
      password        
      salt            
      iterationCount  
      prf             

  static byte[] crypt(boolean, org.bouncycastle.jcajce.util.JcaJceHelper, byte[], char[], java.lang.String, byte[]);
    descriptor: (ZLorg/bouncycastle/jcajce/util/JcaJceHelper;[B[CLjava/lang/String;[B)[B
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=14, args_size=6
        start local 0 // boolean encrypt
        start local 1 // org.bouncycastle.jcajce.util.JcaJceHelper helper
        start local 2 // byte[] bytes
        start local 3 // char[] password
        start local 4 // java.lang.String dekAlgName
        start local 5 // byte[] iv
         0: .line 164
            new javax.crypto.spec.IvParameterSpec
            dup
            aload 5 /* iv */
            invokespecial javax.crypto.spec.IvParameterSpec.<init>:([B)V
            astore 6 /* paramSpec */
        start local 6 // java.security.spec.AlgorithmParameterSpec paramSpec
         1: .line 166
            ldc "CBC"
            astore 8 /* blockMode */
        start local 8 // java.lang.String blockMode
         2: .line 167
            ldc "PKCS5Padding"
            astore 9 /* padding */
        start local 9 // java.lang.String padding
         3: .line 171
            aload 4 /* dekAlgName */
            ldc "-CFB"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 6
         4: .line 173
            ldc "CFB"
            astore 8 /* blockMode */
         5: .line 174
            ldc "NoPadding"
            astore 9 /* padding */
         6: .line 176
      StackMap locals: int org.bouncycastle.jcajce.util.JcaJceHelper byte[] char[] java.lang.String byte[] java.security.spec.AlgorithmParameterSpec top java.lang.String java.lang.String
      StackMap stack:
            aload 4 /* dekAlgName */
            ldc "-ECB"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifne 9
         7: .line 177
            ldc "DES-EDE"
            aload 4 /* dekAlgName */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 9
         8: .line 178
            ldc "DES-EDE3"
            aload 4 /* dekAlgName */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 11
         9: .line 182
      StackMap locals:
      StackMap stack:
            ldc "ECB"
            astore 8 /* blockMode */
        10: .line 183
            aconst_null
            astore 6 /* paramSpec */
        11: .line 185
      StackMap locals:
      StackMap stack:
            aload 4 /* dekAlgName */
            ldc "-OFB"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 14
        12: .line 187
            ldc "OFB"
            astore 8 /* blockMode */
        13: .line 188
            ldc "NoPadding"
            astore 9 /* padding */
        14: .line 192
      StackMap locals:
      StackMap stack:
            aload 4 /* dekAlgName */
            ldc "DES-EDE"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 21
        15: .line 194
            ldc "DESede"
            astore 7 /* alg */
        start local 7 // java.lang.String alg
        16: .line 197
            aload 4 /* dekAlgName */
            ldc "DES-EDE3"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 17
            iconst_0
            goto 18
      StackMap locals: int org.bouncycastle.jcajce.util.JcaJceHelper byte[] char[] java.lang.String byte[] java.security.spec.AlgorithmParameterSpec java.lang.String java.lang.String java.lang.String
      StackMap stack:
        17: iconst_1
      StackMap locals:
      StackMap stack: int
        18: istore 11 /* des2 */
        start local 11 // boolean des2
        19: .line 198
            aload 1 /* helper */
            aload 3 /* password */
            aload 7 /* alg */
            bipush 24
            aload 5 /* iv */
            iload 11 /* des2 */
            invokestatic org.bouncycastle.openssl.jcajce.PEMUtilities.getKey:(Lorg/bouncycastle/jcajce/util/JcaJceHelper;[CLjava/lang/String;I[BZ)Ljavax/crypto/SecretKey;
            astore 10 /* sKey */
        end local 11 // boolean des2
        start local 10 // java.security.Key sKey
        20: .line 199
            goto 62
        end local 10 // java.security.Key sKey
        end local 7 // java.lang.String alg
        21: .line 200
      StackMap locals: int org.bouncycastle.jcajce.util.JcaJceHelper byte[] char[] java.lang.String byte[] java.security.spec.AlgorithmParameterSpec top java.lang.String java.lang.String
      StackMap stack:
            aload 4 /* dekAlgName */
            ldc "DES-"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 25
        22: .line 202
            ldc "DES"
            astore 7 /* alg */
        start local 7 // java.lang.String alg
        23: .line 203
            aload 1 /* helper */
            aload 3 /* password */
            aload 7 /* alg */
            bipush 8
            aload 5 /* iv */
            invokestatic org.bouncycastle.openssl.jcajce.PEMUtilities.getKey:(Lorg/bouncycastle/jcajce/util/JcaJceHelper;[CLjava/lang/String;I[B)Ljavax/crypto/SecretKey;
            astore 10 /* sKey */
        start local 10 // java.security.Key sKey
        24: .line 204
            goto 62
        end local 10 // java.security.Key sKey
        end local 7 // java.lang.String alg
        25: .line 205
      StackMap locals:
      StackMap stack:
            aload 4 /* dekAlgName */
            ldc "BF-"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 29
        26: .line 207
            ldc "Blowfish"
            astore 7 /* alg */
        start local 7 // java.lang.String alg
        27: .line 208
            aload 1 /* helper */
            aload 3 /* password */
            aload 7 /* alg */
            bipush 16
            aload 5 /* iv */
            invokestatic org.bouncycastle.openssl.jcajce.PEMUtilities.getKey:(Lorg/bouncycastle/jcajce/util/JcaJceHelper;[CLjava/lang/String;I[B)Ljavax/crypto/SecretKey;
            astore 10 /* sKey */
        start local 10 // java.security.Key sKey
        28: .line 209
            goto 62
        end local 10 // java.security.Key sKey
        end local 7 // java.lang.String alg
        29: .line 210
      StackMap locals:
      StackMap stack:
            aload 4 /* dekAlgName */
            ldc "RC2-"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 43
        30: .line 212
            ldc "RC2"
            astore 7 /* alg */
        start local 7 // java.lang.String alg
        31: .line 213
            sipush 128
            istore 11 /* keyBits */
        start local 11 // int keyBits
        32: .line 214
            aload 4 /* dekAlgName */
            ldc "RC2-40-"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 35
        33: .line 216
            bipush 40
            istore 11 /* keyBits */
        34: .line 217
            goto 37
        35: .line 218
      StackMap locals: int org.bouncycastle.jcajce.util.JcaJceHelper byte[] char[] java.lang.String byte[] java.security.spec.AlgorithmParameterSpec java.lang.String java.lang.String java.lang.String top int
      StackMap stack:
            aload 4 /* dekAlgName */
            ldc "RC2-64-"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 37
        36: .line 220
            bipush 64
            istore 11 /* keyBits */
        37: .line 222
      StackMap locals:
      StackMap stack:
            aload 1 /* helper */
            aload 3 /* password */
            aload 7 /* alg */
            iload 11 /* keyBits */
            bipush 8
            idiv
            aload 5 /* iv */
            invokestatic org.bouncycastle.openssl.jcajce.PEMUtilities.getKey:(Lorg/bouncycastle/jcajce/util/JcaJceHelper;[CLjava/lang/String;I[B)Ljavax/crypto/SecretKey;
            astore 10 /* sKey */
        start local 10 // java.security.Key sKey
        38: .line 223
            aload 6 /* paramSpec */
            ifnonnull 41
        39: .line 225
            new javax.crypto.spec.RC2ParameterSpec
            dup
            iload 11 /* keyBits */
            invokespecial javax.crypto.spec.RC2ParameterSpec.<init>:(I)V
            astore 6 /* paramSpec */
        40: .line 226
            goto 62
        41: .line 229
      StackMap locals: int org.bouncycastle.jcajce.util.JcaJceHelper byte[] char[] java.lang.String byte[] java.security.spec.AlgorithmParameterSpec java.lang.String java.lang.String java.lang.String java.security.Key int
      StackMap stack:
            new javax.crypto.spec.RC2ParameterSpec
            dup
            iload 11 /* keyBits */
            aload 5 /* iv */
            invokespecial javax.crypto.spec.RC2ParameterSpec.<init>:(I[B)V
            astore 6 /* paramSpec */
        end local 11 // int keyBits
        42: .line 231
            goto 62
        end local 10 // java.security.Key sKey
        end local 7 // java.lang.String alg
        43: .line 232
      StackMap locals: int org.bouncycastle.jcajce.util.JcaJceHelper byte[] char[] java.lang.String byte[] java.security.spec.AlgorithmParameterSpec top java.lang.String java.lang.String
      StackMap stack:
            aload 4 /* dekAlgName */
            ldc "AES-"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 61
        44: .line 234
            ldc "AES"
            astore 7 /* alg */
        start local 7 // java.lang.String alg
        45: .line 235
            aload 5 /* iv */
            astore 11 /* salt */
        start local 11 // byte[] salt
        46: .line 236
            aload 11 /* salt */
            arraylength
            bipush 8
            if_icmple 49
        47: .line 238
            bipush 8
            newarray 8
            astore 11 /* salt */
        48: .line 239
            aload 5 /* iv */
            iconst_0
            aload 11 /* salt */
            iconst_0
            bipush 8
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        49: .line 243
      StackMap locals: int org.bouncycastle.jcajce.util.JcaJceHelper byte[] char[] java.lang.String byte[] java.security.spec.AlgorithmParameterSpec java.lang.String java.lang.String java.lang.String top byte[]
      StackMap stack:
            aload 4 /* dekAlgName */
            ldc "AES-128-"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 52
        50: .line 245
            sipush 128
            istore 12 /* keyBits */
        start local 12 // int keyBits
        51: .line 246
            goto 59
        end local 12 // int keyBits
        52: .line 247
      StackMap locals:
      StackMap stack:
            aload 4 /* dekAlgName */
            ldc "AES-192-"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 55
        53: .line 249
            sipush 192
            istore 12 /* keyBits */
        start local 12 // int keyBits
        54: .line 250
            goto 59
        end local 12 // int keyBits
        55: .line 251
      StackMap locals:
      StackMap stack:
            aload 4 /* dekAlgName */
            ldc "AES-256-"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 58
        56: .line 253
            sipush 256
            istore 12 /* keyBits */
        start local 12 // int keyBits
        57: .line 254
            goto 59
        end local 12 // int keyBits
        58: .line 257
      StackMap locals:
      StackMap stack:
            new org.bouncycastle.openssl.EncryptionException
            dup
            ldc "unknown AES encryption with private key"
            invokespecial org.bouncycastle.openssl.EncryptionException.<init>:(Ljava/lang/String;)V
            athrow
        start local 12 // int keyBits
        59: .line 259
      StackMap locals: int
      StackMap stack:
            aload 1 /* helper */
            aload 3 /* password */
            ldc "AES"
            iload 12 /* keyBits */
            bipush 8
            idiv
            aload 11 /* salt */
            invokestatic org.bouncycastle.openssl.jcajce.PEMUtilities.getKey:(Lorg/bouncycastle/jcajce/util/JcaJceHelper;[CLjava/lang/String;I[B)Ljavax/crypto/SecretKey;
            astore 10 /* sKey */
        end local 12 // int keyBits
        end local 11 // byte[] salt
        start local 10 // java.security.Key sKey
        60: .line 260
            goto 62
        end local 10 // java.security.Key sKey
        end local 7 // java.lang.String alg
        61: .line 263
      StackMap locals: int org.bouncycastle.jcajce.util.JcaJceHelper byte[] char[] java.lang.String byte[] java.security.spec.AlgorithmParameterSpec top java.lang.String java.lang.String
      StackMap stack:
            new org.bouncycastle.openssl.EncryptionException
            dup
            ldc "unknown encryption with private key"
            invokespecial org.bouncycastle.openssl.EncryptionException.<init>:(Ljava/lang/String;)V
            athrow
        start local 7 // java.lang.String alg
        start local 10 // java.security.Key sKey
        62: .line 266
      StackMap locals: int org.bouncycastle.jcajce.util.JcaJceHelper byte[] char[] java.lang.String byte[] java.security.spec.AlgorithmParameterSpec java.lang.String java.lang.String java.lang.String java.security.Key
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 7 /* alg */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "/"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 8 /* blockMode */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "/"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 9 /* padding */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 11 /* transformation */
        start local 11 // java.lang.String transformation
        63: .line 270
            aload 1 /* helper */
            aload 11 /* transformation */
            invokeinterface org.bouncycastle.jcajce.util.JcaJceHelper.createCipher:(Ljava/lang/String;)Ljavax/crypto/Cipher;
            astore 12 /* c */
        start local 12 // javax.crypto.Cipher c
        64: .line 271
            iload 0 /* encrypt */
            ifeq 65
            iconst_1
            goto 66
      StackMap locals: java.lang.String javax.crypto.Cipher
      StackMap stack:
        65: iconst_2
      StackMap locals:
      StackMap stack: int
        66: istore 13 /* mode */
        start local 13 // int mode
        67: .line 273
            aload 6 /* paramSpec */
            ifnonnull 70
        68: .line 275
            aload 12 /* c */
            iload 13 /* mode */
            aload 10 /* sKey */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;)V
        69: .line 276
            goto 71
        70: .line 279
      StackMap locals: int
      StackMap stack:
            aload 12 /* c */
            iload 13 /* mode */
            aload 10 /* sKey */
            aload 6 /* paramSpec */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
        71: .line 281
      StackMap locals:
      StackMap stack:
            aload 12 /* c */
            aload 2 /* bytes */
            invokevirtual javax.crypto.Cipher.doFinal:([B)[B
        72: areturn
        end local 13 // int mode
        end local 12 // javax.crypto.Cipher c
        73: .line 283
      StackMap locals: int org.bouncycastle.jcajce.util.JcaJceHelper byte[] char[] java.lang.String byte[] java.security.spec.AlgorithmParameterSpec java.lang.String java.lang.String java.lang.String java.security.Key java.lang.String
      StackMap stack: java.lang.Exception
            astore 12 /* e */
        start local 12 // java.lang.Exception e
        74: .line 285
            new org.bouncycastle.openssl.EncryptionException
            dup
            ldc "exception using cipher - please check password and data."
            aload 12 /* e */
            invokespecial org.bouncycastle.openssl.EncryptionException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 12 // java.lang.Exception e
        end local 11 // java.lang.String transformation
        end local 10 // java.security.Key sKey
        end local 9 // java.lang.String padding
        end local 8 // java.lang.String blockMode
        end local 7 // java.lang.String alg
        end local 6 // java.security.spec.AlgorithmParameterSpec paramSpec
        end local 5 // byte[] iv
        end local 4 // java.lang.String dekAlgName
        end local 3 // char[] password
        end local 2 // byte[] bytes
        end local 1 // org.bouncycastle.jcajce.util.JcaJceHelper helper
        end local 0 // boolean encrypt
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   75     0         encrypt  Z
            0   75     1          helper  Lorg/bouncycastle/jcajce/util/JcaJceHelper;
            0   75     2           bytes  [B
            0   75     3        password  [C
            0   75     4      dekAlgName  Ljava/lang/String;
            0   75     5              iv  [B
            1   75     6       paramSpec  Ljava/security/spec/AlgorithmParameterSpec;
           16   21     7             alg  Ljava/lang/String;
           23   25     7             alg  Ljava/lang/String;
           27   29     7             alg  Ljava/lang/String;
           31   43     7             alg  Ljava/lang/String;
           45   61     7             alg  Ljava/lang/String;
           62   75     7             alg  Ljava/lang/String;
            2   75     8       blockMode  Ljava/lang/String;
            3   75     9         padding  Ljava/lang/String;
           20   21    10            sKey  Ljava/security/Key;
           24   25    10            sKey  Ljava/security/Key;
           28   29    10            sKey  Ljava/security/Key;
           38   43    10            sKey  Ljava/security/Key;
           60   61    10            sKey  Ljava/security/Key;
           62   75    10            sKey  Ljava/security/Key;
           19   20    11            des2  Z
           32   42    11         keyBits  I
           46   60    11            salt  [B
           51   52    12         keyBits  I
           54   55    12         keyBits  I
           57   58    12         keyBits  I
           59   60    12         keyBits  I
           63   75    11  transformation  Ljava/lang/String;
           64   73    12               c  Ljavax/crypto/Cipher;
           67   73    13            mode  I
           74   75    12               e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
          63    72      73  Class java.lang.Exception
    Exceptions:
      throws org.bouncycastle.openssl.PEMException
    MethodParameters:
            Name  Flags
      encrypt     
      helper      
      bytes       
      password    
      dekAlgName  
      iv          

  private static javax.crypto.SecretKey getKey(org.bouncycastle.jcajce.util.JcaJceHelper, char[], java.lang.String, int, byte[]);
    descriptor: (Lorg/bouncycastle/jcajce/util/JcaJceHelper;[CLjava/lang/String;I[B)Ljavax/crypto/SecretKey;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=5, args_size=5
        start local 0 // org.bouncycastle.jcajce.util.JcaJceHelper helper
        start local 1 // char[] password
        start local 2 // java.lang.String algorithm
        start local 3 // int keyLength
        start local 4 // byte[] salt
         0: .line 297
            aload 0 /* helper */
            aload 1 /* password */
            aload 2 /* algorithm */
            iload 3 /* keyLength */
            aload 4 /* salt */
            iconst_0
            invokestatic org.bouncycastle.openssl.jcajce.PEMUtilities.getKey:(Lorg/bouncycastle/jcajce/util/JcaJceHelper;[CLjava/lang/String;I[BZ)Ljavax/crypto/SecretKey;
            areturn
        end local 4 // byte[] salt
        end local 3 // int keyLength
        end local 2 // java.lang.String algorithm
        end local 1 // char[] password
        end local 0 // org.bouncycastle.jcajce.util.JcaJceHelper helper
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0     helper  Lorg/bouncycastle/jcajce/util/JcaJceHelper;
            0    1     1   password  [C
            0    1     2  algorithm  Ljava/lang/String;
            0    1     3  keyLength  I
            0    1     4       salt  [B
    Exceptions:
      throws org.bouncycastle.openssl.PEMException
    MethodParameters:
           Name  Flags
      helper     
      password   
      algorithm  
      keyLength  
      salt       

  private static javax.crypto.SecretKey getKey(org.bouncycastle.jcajce.util.JcaJceHelper, char[], java.lang.String, int, byte[], boolean);
    descriptor: (Lorg/bouncycastle/jcajce/util/JcaJceHelper;[CLjava/lang/String;I[BZ)Ljavax/crypto/SecretKey;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=7, locals=9, args_size=6
        start local 0 // org.bouncycastle.jcajce.util.JcaJceHelper helper
        start local 1 // char[] password
        start local 2 // java.lang.String algorithm
        start local 3 // int keyLength
        start local 4 // byte[] salt
        start local 5 // boolean des2
         0: .line 311
            new javax.crypto.spec.PBEKeySpec
            dup
            aload 1 /* password */
            aload 4 /* salt */
            iconst_1
            iload 3 /* keyLength */
            bipush 8
            imul
            invokespecial javax.crypto.spec.PBEKeySpec.<init>:([C[BII)V
            astore 6 /* spec */
        start local 6 // javax.crypto.spec.PBEKeySpec spec
         1: .line 312
            aload 0 /* helper */
            ldc "PBKDF-OpenSSL"
            invokeinterface org.bouncycastle.jcajce.util.JcaJceHelper.createSecretKeyFactory:(Ljava/lang/String;)Ljavax/crypto/SecretKeyFactory;
            astore 7 /* keyFactory */
        start local 7 // javax.crypto.SecretKeyFactory keyFactory
         2: .line 314
            aload 7 /* keyFactory */
            aload 6 /* spec */
            invokevirtual javax.crypto.SecretKeyFactory.generateSecret:(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;
            invokeinterface javax.crypto.SecretKey.getEncoded:()[B
            astore 8 /* key */
        start local 8 // byte[] key
         3: .line 316
            iload 5 /* des2 */
            ifeq 5
            aload 8 /* key */
            arraylength
            bipush 24
            if_icmplt 5
         4: .line 319
            aload 8 /* key */
            iconst_0
            aload 8 /* key */
            bipush 16
            bipush 8
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         5: .line 322
      StackMap locals: javax.crypto.spec.PBEKeySpec javax.crypto.SecretKeyFactory byte[]
      StackMap stack:
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 8 /* key */
            aload 2 /* algorithm */
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
         6: areturn
        end local 8 // byte[] key
        end local 7 // javax.crypto.SecretKeyFactory keyFactory
        end local 6 // javax.crypto.spec.PBEKeySpec spec
         7: .line 324
      StackMap locals: org.bouncycastle.jcajce.util.JcaJceHelper char[] java.lang.String int byte[] int
      StackMap stack: java.security.GeneralSecurityException
            astore 6 /* e */
        start local 6 // java.security.GeneralSecurityException e
         8: .line 326
            new org.bouncycastle.openssl.PEMException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unable to create OpenSSL PBDKF: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* e */
            invokevirtual java.security.GeneralSecurityException.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 6 /* e */
            invokespecial org.bouncycastle.openssl.PEMException.<init>:(Ljava/lang/String;Ljava/lang/Exception;)V
            athrow
        end local 6 // java.security.GeneralSecurityException e
        end local 5 // boolean des2
        end local 4 // byte[] salt
        end local 3 // int keyLength
        end local 2 // java.lang.String algorithm
        end local 1 // char[] password
        end local 0 // org.bouncycastle.jcajce.util.JcaJceHelper helper
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0      helper  Lorg/bouncycastle/jcajce/util/JcaJceHelper;
            0    9     1    password  [C
            0    9     2   algorithm  Ljava/lang/String;
            0    9     3   keyLength  I
            0    9     4        salt  [B
            0    9     5        des2  Z
            1    7     6        spec  Ljavax/crypto/spec/PBEKeySpec;
            2    7     7  keyFactory  Ljavax/crypto/SecretKeyFactory;
            3    7     8         key  [B
            8    9     6           e  Ljava/security/GeneralSecurityException;
      Exception table:
        from    to  target  type
           0     6       7  Class java.security.GeneralSecurityException
    Exceptions:
      throws org.bouncycastle.openssl.PEMException
    MethodParameters:
           Name  Flags
      helper     
      password   
      algorithm  
      keyLength  
      salt       
      des2       
}
SourceFile: "PEMUtilities.java"