abstract class com.sun.crypto.provider.PBES2Core extends javax.crypto.CipherSpi
  minor version: 0
  major version: 59
  flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
  this_class: com.sun.crypto.provider.PBES2Core
  super_class: javax.crypto.CipherSpi
{
  private static final int DEFAULT_SALT_LENGTH;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 20

  private static final int DEFAULT_COUNT;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 4096

  private final com.sun.crypto.provider.CipherCore cipher;
    descriptor: Lcom/sun/crypto/provider/CipherCore;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final int keyLength;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final int blkSize;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.sun.crypto.provider.PBKDF2Core kdf;
    descriptor: Lcom/sun/crypto/provider/PBKDF2Core;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.String pbeAlgo;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.String cipherAlgo;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private int iCount;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private byte[] salt;
    descriptor: [B
    flags: (0x0002) ACC_PRIVATE

  private javax.crypto.spec.IvParameterSpec ivSpec;
    descriptor: Ljavax/crypto/spec/IvParameterSpec;
    flags: (0x0002) ACC_PRIVATE

  void <init>(java.lang.String, java.lang.String, int);
    descriptor: (Ljava/lang/String;Ljava/lang/String;I)V
    flags: (0x0000) 
    Code:
      stack=5, locals=5, args_size=4
        start local 0 // com.sun.crypto.provider.PBES2Core this
        start local 1 // java.lang.String kdfAlgo
        start local 2 // java.lang.String cipherAlgo
        start local 3 // int keySize
         0: .line 69
            aload 0 /* this */
            invokespecial javax.crypto.CipherSpi.<init>:()V
         1: .line 61
            aload 0 /* this */
            sipush 4096
            putfield com.sun.crypto.provider.PBES2Core.iCount:I
         2: .line 62
            aload 0 /* this */
            aconst_null
            putfield com.sun.crypto.provider.PBES2Core.salt:[B
         3: .line 63
            aload 0 /* this */
            aconst_null
            putfield com.sun.crypto.provider.PBES2Core.ivSpec:Ljavax/crypto/spec/IvParameterSpec;
         4: .line 72
            aload 0 /* this */
            aload 2 /* cipherAlgo */
            putfield com.sun.crypto.provider.PBES2Core.cipherAlgo:Ljava/lang/String;
         5: .line 73
            aload 0 /* this */
            iload 3 /* keySize */
            bipush 8
            imul
            putfield com.sun.crypto.provider.PBES2Core.keyLength:I
         6: .line 74
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "PBEWith"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* kdfAlgo */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "And"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* cipherAlgo */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "_"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.keyLength:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            putfield com.sun.crypto.provider.PBES2Core.pbeAlgo:Ljava/lang/String;
         7: .line 76
            aload 2 /* cipherAlgo */
            ldc "AES"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 30
         8: .line 77
            aload 0 /* this */
            bipush 16
            putfield com.sun.crypto.provider.PBES2Core.blkSize:I
         9: .line 78
            aload 0 /* this */
            new com.sun.crypto.provider.CipherCore
            dup
            new com.sun.crypto.provider.AESCrypt
            dup
            invokespecial com.sun.crypto.provider.AESCrypt.<init>:()V
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.blkSize:I
            invokespecial com.sun.crypto.provider.CipherCore.<init>:(Lcom/sun/crypto/provider/SymmetricCipher;I)V
            putfield com.sun.crypto.provider.PBES2Core.cipher:Lcom/sun/crypto/provider/CipherCore;
        10: .line 80
            aload 1 /* kdfAlgo */
            dup
            astore 4
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 5
            954016943: 11
            954017038: 12
            954018090: 13
            954019793: 14
           1752946092: 15
              default: 26
          }
      StackMap locals: com.sun.crypto.provider.PBES2Core java.lang.String java.lang.String int java.lang.String
      StackMap stack:
        11: aload 4
            ldc "HmacSHA224"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 18
            goto 26
      StackMap locals:
      StackMap stack:
        12: aload 4
            ldc "HmacSHA256"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 20
            goto 26
      StackMap locals:
      StackMap stack:
        13: aload 4
            ldc "HmacSHA384"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 22
            goto 26
      StackMap locals:
      StackMap stack:
        14: aload 4
            ldc "HmacSHA512"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 24
            goto 26
      StackMap locals:
      StackMap stack:
        15: aload 4
            ldc "HmacSHA1"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 16
            goto 26
        16: .line 82
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new com.sun.crypto.provider.PBKDF2Core$HmacSHA1
            dup
            invokespecial com.sun.crypto.provider.PBKDF2Core$HmacSHA1.<init>:()V
            putfield com.sun.crypto.provider.PBES2Core.kdf:Lcom/sun/crypto/provider/PBKDF2Core;
        17: .line 83
            goto 33
        18: .line 85
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new com.sun.crypto.provider.PBKDF2Core$HmacSHA224
            dup
            invokespecial com.sun.crypto.provider.PBKDF2Core$HmacSHA224.<init>:()V
            putfield com.sun.crypto.provider.PBES2Core.kdf:Lcom/sun/crypto/provider/PBKDF2Core;
        19: .line 86
            goto 33
        20: .line 88
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new com.sun.crypto.provider.PBKDF2Core$HmacSHA256
            dup
            invokespecial com.sun.crypto.provider.PBKDF2Core$HmacSHA256.<init>:()V
            putfield com.sun.crypto.provider.PBES2Core.kdf:Lcom/sun/crypto/provider/PBKDF2Core;
        21: .line 89
            goto 33
        22: .line 91
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new com.sun.crypto.provider.PBKDF2Core$HmacSHA384
            dup
            invokespecial com.sun.crypto.provider.PBKDF2Core$HmacSHA384.<init>:()V
            putfield com.sun.crypto.provider.PBES2Core.kdf:Lcom/sun/crypto/provider/PBKDF2Core;
        23: .line 92
            goto 33
        24: .line 94
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new com.sun.crypto.provider.PBKDF2Core$HmacSHA512
            dup
            invokespecial com.sun.crypto.provider.PBKDF2Core$HmacSHA512.<init>:()V
            putfield com.sun.crypto.provider.PBES2Core.kdf:Lcom/sun/crypto/provider/PBKDF2Core;
        25: .line 95
            goto 33
        26: .line 97
      StackMap locals:
      StackMap stack:
            new java.security.NoSuchAlgorithmException
            dup
        27: .line 98
            new java.lang.StringBuilder
            dup
            ldc "No Cipher implementation for "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* kdfAlgo */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        28: .line 97
            invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;)V
            athrow
        29: .line 100
      StackMap locals:
      StackMap stack:
            goto 33
        30: .line 101
      StackMap locals:
      StackMap stack:
            new java.security.NoSuchAlgorithmException
            dup
            new java.lang.StringBuilder
            dup
            ldc "No Cipher implementation for "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        31: .line 102
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.pbeAlgo:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        32: .line 101
            invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;)V
            athrow
        33: .line 104
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.cipher:Lcom/sun/crypto/provider/CipherCore;
            ldc "CBC"
            invokevirtual com.sun.crypto.provider.CipherCore.setMode:(Ljava/lang/String;)V
        34: .line 105
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.cipher:Lcom/sun/crypto/provider/CipherCore;
            ldc "PKCS5Padding"
            invokevirtual com.sun.crypto.provider.CipherCore.setPadding:(Ljava/lang/String;)V
        35: .line 106
            return
        end local 3 // int keySize
        end local 2 // java.lang.String cipherAlgo
        end local 1 // java.lang.String kdfAlgo
        end local 0 // com.sun.crypto.provider.PBES2Core this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   36     0        this  Lcom/sun/crypto/provider/PBES2Core;
            0   36     1     kdfAlgo  Ljava/lang/String;
            0   36     2  cipherAlgo  Ljava/lang/String;
            0   36     3     keySize  I
    Exceptions:
      throws java.security.NoSuchAlgorithmException, javax.crypto.NoSuchPaddingException
    MethodParameters:
            Name  Flags
      kdfAlgo     
      cipherAlgo  
      keySize     

  protected void engineSetMode(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // com.sun.crypto.provider.PBES2Core this
        start local 1 // java.lang.String mode
         0: .line 109
            aload 1 /* mode */
            ifnull 2
            aload 1 /* mode */
            ldc "CBC"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifne 2
         1: .line 110
            new java.security.NoSuchAlgorithmException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Invalid cipher mode: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* mode */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 112
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.String mode
        end local 0 // com.sun.crypto.provider.PBES2Core this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/sun/crypto/provider/PBES2Core;
            0    3     1  mode  Ljava/lang/String;
    Exceptions:
      throws java.security.NoSuchAlgorithmException
    MethodParameters:
      Name  Flags
      mode  

  protected void engineSetPadding(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // com.sun.crypto.provider.PBES2Core this
        start local 1 // java.lang.String paddingScheme
         0: .line 116
            aload 1 /* paddingScheme */
            ifnull 5
         1: .line 117
            aload 1 /* paddingScheme */
            ldc "PKCS5Padding"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifne 5
         2: .line 118
            new javax.crypto.NoSuchPaddingException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Invalid padding scheme: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         3: .line 119
            aload 1 /* paddingScheme */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         4: .line 118
            invokespecial javax.crypto.NoSuchPaddingException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 121
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.String paddingScheme
        end local 0 // com.sun.crypto.provider.PBES2Core this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0           this  Lcom/sun/crypto/provider/PBES2Core;
            0    6     1  paddingScheme  Ljava/lang/String;
    Exceptions:
      throws javax.crypto.NoSuchPaddingException
    MethodParameters:
               Name  Flags
      paddingScheme  

  protected int engineGetBlockSize();
    descriptor: ()I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.crypto.provider.PBES2Core this
         0: .line 124
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.blkSize:I
            ireturn
        end local 0 // com.sun.crypto.provider.PBES2Core this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/crypto/provider/PBES2Core;

  protected int engineGetOutputSize(int);
    descriptor: (I)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.sun.crypto.provider.PBES2Core this
        start local 1 // int inputLen
         0: .line 128
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.cipher:Lcom/sun/crypto/provider/CipherCore;
            iload 1 /* inputLen */
            invokevirtual com.sun.crypto.provider.CipherCore.getOutputSize:(I)I
            ireturn
        end local 1 // int inputLen
        end local 0 // com.sun.crypto.provider.PBES2Core this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lcom/sun/crypto/provider/PBES2Core;
            0    1     1  inputLen  I
    MethodParameters:
          Name  Flags
      inputLen  

  protected byte[] engineGetIV();
    descriptor: ()[B
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.crypto.provider.PBES2Core this
         0: .line 132
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.cipher:Lcom/sun/crypto/provider/CipherCore;
            invokevirtual com.sun.crypto.provider.CipherCore.getIV:()[B
            areturn
        end local 0 // com.sun.crypto.provider.PBES2Core this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/crypto/provider/PBES2Core;

  protected java.security.AlgorithmParameters engineGetParameters();
    descriptor: ()Ljava/security/AlgorithmParameters;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // com.sun.crypto.provider.PBES2Core this
         0: .line 136
            aconst_null
            astore 1 /* params */
        start local 1 // java.security.AlgorithmParameters params
         1: .line 137
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.salt:[B
            ifnonnull 5
         2: .line 139
            aload 0 /* this */
            bipush 20
            newarray 8
            putfield com.sun.crypto.provider.PBES2Core.salt:[B
         3: .line 140
            getstatic com.sun.crypto.provider.SunJCE.RANDOM:Ljava/security/SecureRandom;
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.salt:[B
            invokevirtual java.security.SecureRandom.nextBytes:([B)V
         4: .line 141
            aload 0 /* this */
            sipush 4096
            putfield com.sun.crypto.provider.PBES2Core.iCount:I
         5: .line 143
      StackMap locals: java.security.AlgorithmParameters
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.ivSpec:Ljavax/crypto/spec/IvParameterSpec;
            ifnonnull 9
         6: .line 145
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.blkSize:I
            newarray 8
            astore 2 /* ivBytes */
        start local 2 // byte[] ivBytes
         7: .line 146
            getstatic com.sun.crypto.provider.SunJCE.RANDOM:Ljava/security/SecureRandom;
            aload 2 /* ivBytes */
            invokevirtual java.security.SecureRandom.nextBytes:([B)V
         8: .line 147
            aload 0 /* this */
            new javax.crypto.spec.IvParameterSpec
            dup
            aload 2 /* ivBytes */
            invokespecial javax.crypto.spec.IvParameterSpec.<init>:([B)V
            putfield com.sun.crypto.provider.PBES2Core.ivSpec:Ljavax/crypto/spec/IvParameterSpec;
        end local 2 // byte[] ivBytes
         9: .line 149
      StackMap locals:
      StackMap stack:
            new com.sun.crypto.spec.PBE2ParameterSpec
            dup
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.salt:[B
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.iCount:I
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.ivSpec:Ljavax/crypto/spec/IvParameterSpec;
            invokespecial com.sun.crypto.spec.PBE2ParameterSpec.<init>:([BILjava/security/spec/AlgorithmParameterSpec;)V
            astore 2 /* pbeSpec */
        start local 2 // com.sun.crypto.spec.PBE2ParameterSpec pbeSpec
        10: .line 151
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.pbeAlgo:Ljava/lang/String;
            ldc "SunJCE"
            invokestatic java.security.AlgorithmParameters.getInstance:(Ljava/lang/String;Ljava/lang/String;)Ljava/security/AlgorithmParameters;
            astore 1 /* params */
        11: .line 152
            goto 16
      StackMap locals: com.sun.crypto.provider.PBES2Core java.security.AlgorithmParameters com.sun.crypto.spec.PBE2ParameterSpec
      StackMap stack: java.security.NoSuchAlgorithmException
        12: pop
        13: .line 154
            new java.lang.RuntimeException
            dup
            ldc "SunJCE called, but not configured"
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        14: .line 155
      StackMap locals:
      StackMap stack: java.security.NoSuchProviderException
            pop
        15: .line 157
            new java.lang.RuntimeException
            dup
            ldc "SunJCE called, but not configured"
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        16: .line 160
      StackMap locals:
      StackMap stack:
            aload 1 /* params */
            aload 2 /* pbeSpec */
            invokevirtual java.security.AlgorithmParameters.init:(Ljava/security/spec/AlgorithmParameterSpec;)V
        17: .line 161
            goto 20
      StackMap locals:
      StackMap stack: java.security.spec.InvalidParameterSpecException
        18: pop
        19: .line 163
            new java.lang.RuntimeException
            dup
            ldc "PBEParameterSpec not supported"
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        20: .line 165
      StackMap locals:
      StackMap stack:
            aload 1 /* params */
            areturn
        end local 2 // com.sun.crypto.spec.PBE2ParameterSpec pbeSpec
        end local 1 // java.security.AlgorithmParameters params
        end local 0 // com.sun.crypto.provider.PBES2Core this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   21     0     this  Lcom/sun/crypto/provider/PBES2Core;
            1   21     1   params  Ljava/security/AlgorithmParameters;
            7    9     2  ivBytes  [B
           10   21     2  pbeSpec  Lcom/sun/crypto/spec/PBE2ParameterSpec;
      Exception table:
        from    to  target  type
          10    11      12  Class java.security.NoSuchAlgorithmException
          10    11      14  Class java.security.NoSuchProviderException
          16    17      18  Class java.security.spec.InvalidParameterSpecException

  protected void engineInit(int, java.security.Key, java.security.SecureRandom);
    descriptor: (ILjava/security/Key;Ljava/security/SecureRandom;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=6, args_size=4
        start local 0 // com.sun.crypto.provider.PBES2Core this
        start local 1 // int opmode
        start local 2 // java.security.Key key
        start local 3 // java.security.SecureRandom random
         0: .line 171
            aload 0 /* this */
            iload 1 /* opmode */
            aload 2 /* key */
            aconst_null
            aload 3 /* random */
            invokevirtual com.sun.crypto.provider.PBES2Core.engineInit:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
         1: .line 172
            goto 7
      StackMap locals:
      StackMap stack: java.security.InvalidAlgorithmParameterException
         2: astore 4 /* ie */
        start local 4 // java.security.InvalidAlgorithmParameterException ie
         3: .line 174
            new java.security.InvalidKeyException
            dup
            ldc "requires PBE parameters"
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
         4: .line 173
            astore 5 /* ike */
        start local 5 // java.security.InvalidKeyException ike
         5: .line 175
            aload 5 /* ike */
            aload 4 /* ie */
            invokevirtual java.security.InvalidKeyException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            pop
         6: .line 176
            aload 5 /* ike */
            athrow
        end local 5 // java.security.InvalidKeyException ike
        end local 4 // java.security.InvalidAlgorithmParameterException ie
         7: .line 178
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.security.SecureRandom random
        end local 2 // java.security.Key key
        end local 1 // int opmode
        end local 0 // com.sun.crypto.provider.PBES2Core this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0    this  Lcom/sun/crypto/provider/PBES2Core;
            0    8     1  opmode  I
            0    8     2     key  Ljava/security/Key;
            0    8     3  random  Ljava/security/SecureRandom;
            3    7     4      ie  Ljava/security/InvalidAlgorithmParameterException;
            5    7     5     ike  Ljava/security/InvalidKeyException;
      Exception table:
        from    to  target  type
           0     1       2  Class java.security.InvalidAlgorithmParameterException
    Exceptions:
      throws java.security.InvalidKeyException
    MethodParameters:
        Name  Flags
      opmode  
      key     
      random  

  protected void engineInit(int, java.security.Key, java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom);
    descriptor: (ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=13, args_size=5
        start local 0 // com.sun.crypto.provider.PBES2Core this
        start local 1 // int opmode
        start local 2 // java.security.Key key
        start local 3 // java.security.spec.AlgorithmParameterSpec params
        start local 4 // java.security.SecureRandom random
         0: .line 185
            aload 2 /* key */
            ifnonnull 2
         1: .line 186
            new java.security.InvalidKeyException
            dup
            ldc "Null key"
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 189
      StackMap locals:
      StackMap stack:
            aload 2 /* key */
            invokeinterface java.security.Key.getEncoded:()[B
            astore 5 /* passwdBytes */
        start local 5 // byte[] passwdBytes
         3: .line 190
            aconst_null
            astore 6 /* passwdChars */
        start local 6 // char[] passwdChars
         4: .line 193
            aload 5 /* passwdBytes */
            ifnull 6
         5: .line 194
            aload 2 /* key */
            invokeinterface java.security.Key.getAlgorithm:()Ljava/lang/String;
            iconst_1
            iconst_0
            ldc "PBE"
            iconst_0
            iconst_3
            invokevirtual java.lang.String.regionMatches:(ZILjava/lang/String;II)Z
            ifne 7
         6: .line 195
      StackMap locals: byte[] char[]
      StackMap stack:
            new java.security.InvalidKeyException
            dup
            ldc "Missing password"
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 201
      StackMap locals:
      StackMap stack:
            aload 2 /* key */
            instanceof javax.crypto.interfaces.PBEKey
            ifeq 21
         8: .line 202
            aload 0 /* this */
            aload 2 /* key */
            checkcast javax.crypto.interfaces.PBEKey
            invokeinterface javax.crypto.interfaces.PBEKey.getSalt:()[B
            putfield com.sun.crypto.provider.PBES2Core.salt:[B
         9: .line 203
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.salt:[B
            ifnull 13
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.salt:[B
            arraylength
            bipush 8
            if_icmpge 13
        10: .line 204
            new java.security.InvalidAlgorithmParameterException
            dup
        11: .line 205
            ldc "Salt must be at least 8 bytes long"
        12: .line 204
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        13: .line 207
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* key */
            checkcast javax.crypto.interfaces.PBEKey
            invokeinterface javax.crypto.interfaces.PBEKey.getIterationCount:()I
            putfield com.sun.crypto.provider.PBES2Core.iCount:I
        14: .line 208
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.iCount:I
            ifne 17
        15: .line 209
            aload 0 /* this */
            sipush 4096
            putfield com.sun.crypto.provider.PBES2Core.iCount:I
        16: .line 210
            goto 21
      StackMap locals:
      StackMap stack:
        17: aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.iCount:I
            ifge 21
        18: .line 211
            new java.security.InvalidAlgorithmParameterException
            dup
        19: .line 212
            ldc "Iteration count must be a positive number"
        20: .line 211
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        21: .line 217
      StackMap locals:
      StackMap stack:
            aload 3 /* params */
            ifnonnull 32
        22: .line 218
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.salt:[B
            ifnonnull 26
        23: .line 220
            aload 0 /* this */
            bipush 20
            newarray 8
            putfield com.sun.crypto.provider.PBES2Core.salt:[B
        24: .line 221
            aload 4 /* random */
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.salt:[B
            invokevirtual java.security.SecureRandom.nextBytes:([B)V
        25: .line 222
            aload 0 /* this */
            sipush 4096
            putfield com.sun.crypto.provider.PBES2Core.iCount:I
        26: .line 224
      StackMap locals:
      StackMap stack:
            iload 1 /* opmode */
            iconst_1
            if_icmpeq 28
        27: .line 225
            iload 1 /* opmode */
            iconst_3
            if_icmpne 69
        28: .line 227
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.blkSize:I
            newarray 8
            astore 8 /* ivBytes */
        start local 8 // byte[] ivBytes
        29: .line 228
            aload 4 /* random */
            aload 8 /* ivBytes */
            invokevirtual java.security.SecureRandom.nextBytes:([B)V
        30: .line 229
            aload 0 /* this */
            new javax.crypto.spec.IvParameterSpec
            dup
            aload 8 /* ivBytes */
            invokespecial javax.crypto.spec.IvParameterSpec.<init>:([B)V
            putfield com.sun.crypto.provider.PBES2Core.ivSpec:Ljavax/crypto/spec/IvParameterSpec;
        end local 8 // byte[] ivBytes
        31: .line 231
            goto 69
        32: .line 232
      StackMap locals:
      StackMap stack:
            aload 3 /* params */
            instanceof javax.crypto.spec.PBEParameterSpec
            ifne 36
        33: .line 233
            new java.security.InvalidAlgorithmParameterException
            dup
        34: .line 234
            ldc "Wrong parameter type: PBE expected"
        35: .line 233
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        36: .line 237
      StackMap locals:
      StackMap stack:
            aload 3 /* params */
            checkcast javax.crypto.spec.PBEParameterSpec
            invokevirtual javax.crypto.spec.PBEParameterSpec.getSalt:()[B
            astore 8 /* specSalt */
        start local 8 // byte[] specSalt
        37: .line 238
            aload 8 /* specSalt */
            ifnull 41
            aload 8 /* specSalt */
            arraylength
            bipush 8
            if_icmpge 41
        38: .line 239
            new java.security.InvalidAlgorithmParameterException
            dup
        39: .line 240
            ldc "Salt must be at least 8 bytes long"
        40: .line 239
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        41: .line 242
      StackMap locals: com.sun.crypto.provider.PBES2Core int java.security.Key java.security.spec.AlgorithmParameterSpec java.security.SecureRandom byte[] char[] top byte[]
      StackMap stack:
            aload 0 /* this */
            aload 8 /* specSalt */
            putfield com.sun.crypto.provider.PBES2Core.salt:[B
        42: .line 243
            aload 3 /* params */
            checkcast javax.crypto.spec.PBEParameterSpec
            invokevirtual javax.crypto.spec.PBEParameterSpec.getIterationCount:()I
            istore 9 /* specICount */
        start local 9 // int specICount
        43: .line 244
            iload 9 /* specICount */
            ifne 46
        44: .line 245
            sipush 4096
            istore 9 /* specICount */
        45: .line 246
            goto 50
      StackMap locals: int
      StackMap stack:
        46: iload 9 /* specICount */
            ifge 50
        47: .line 247
            new java.security.InvalidAlgorithmParameterException
            dup
        48: .line 248
            ldc "Iteration count must be a positive number"
        49: .line 247
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        50: .line 250
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 9 /* specICount */
            putfield com.sun.crypto.provider.PBES2Core.iCount:I
        51: .line 253
            aload 3 /* params */
            instanceof com.sun.crypto.spec.PBE2ParameterSpec
            ifeq 60
        52: .line 254
            aload 3 /* params */
            checkcast com.sun.crypto.spec.PBE2ParameterSpec
            invokevirtual com.sun.crypto.spec.PBE2ParameterSpec.getParameterSpec:()Ljava/security/spec/AlgorithmParameterSpec;
            dup
            astore 10 /* specParams */
        start local 10 // java.security.spec.AlgorithmParameterSpec specParams
        53: ifnull 60
        54: .line 255
            aload 10 /* specParams */
            instanceof javax.crypto.spec.IvParameterSpec
            ifeq 57
        55: .line 256
            aload 0 /* this */
            aload 10 /* specParams */
            checkcast javax.crypto.spec.IvParameterSpec
            putfield com.sun.crypto.provider.PBES2Core.ivSpec:Ljavax/crypto/spec/IvParameterSpec;
        56: .line 257
            goto 69
        57: .line 258
      StackMap locals: java.security.spec.AlgorithmParameterSpec
      StackMap stack:
            new java.security.InvalidAlgorithmParameterException
            dup
        58: .line 259
            ldc "Wrong parameter type: IV expected"
        59: .line 258
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        end local 10 // java.security.spec.AlgorithmParameterSpec specParams
        60: .line 261
      StackMap locals:
      StackMap stack:
            iload 1 /* opmode */
            iconst_1
            if_icmpeq 62
        61: .line 262
            iload 1 /* opmode */
            iconst_3
            if_icmpne 66
        62: .line 264
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.blkSize:I
            newarray 8
            astore 11 /* ivBytes */
        start local 11 // byte[] ivBytes
        63: .line 265
            aload 4 /* random */
            aload 11 /* ivBytes */
            invokevirtual java.security.SecureRandom.nextBytes:([B)V
        64: .line 266
            aload 0 /* this */
            new javax.crypto.spec.IvParameterSpec
            dup
            aload 11 /* ivBytes */
            invokespecial javax.crypto.spec.IvParameterSpec.<init>:([B)V
            putfield com.sun.crypto.provider.PBES2Core.ivSpec:Ljavax/crypto/spec/IvParameterSpec;
        end local 11 // byte[] ivBytes
        65: .line 267
            goto 69
        66: .line 268
      StackMap locals:
      StackMap stack:
            new java.security.InvalidAlgorithmParameterException
            dup
        67: .line 269
            ldc "Missing parameter type: IV expected"
        68: .line 268
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        end local 9 // int specICount
        end local 8 // byte[] specSalt
        69: .line 273
      StackMap locals: com.sun.crypto.provider.PBES2Core int java.security.Key java.security.spec.AlgorithmParameterSpec java.security.SecureRandom byte[] char[]
      StackMap stack:
            aload 5 /* passwdBytes */
            arraylength
            newarray 5
            astore 6 /* passwdChars */
        70: .line 274
            iconst_0
            istore 8 /* i */
        start local 8 // int i
        71: goto 74
        72: .line 275
      StackMap locals: com.sun.crypto.provider.PBES2Core int java.security.Key java.security.spec.AlgorithmParameterSpec java.security.SecureRandom byte[] char[] top int
      StackMap stack:
            aload 6 /* passwdChars */
            iload 8 /* i */
            aload 5 /* passwdBytes */
            iload 8 /* i */
            baload
            bipush 127
            iand
            i2c
            castore
        73: .line 274
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        74: iload 8 /* i */
            aload 6 /* passwdChars */
            arraylength
            if_icmplt 72
        end local 8 // int i
        75: .line 277
            new javax.crypto.spec.PBEKeySpec
            dup
            aload 6 /* passwdChars */
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.salt:[B
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.iCount:I
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.keyLength:I
            invokespecial javax.crypto.spec.PBEKeySpec.<init>:([C[BII)V
            astore 7 /* pbeSpec */
        start local 7 // javax.crypto.spec.PBEKeySpec pbeSpec
        76: .line 280
            goto 81
        end local 7 // javax.crypto.spec.PBEKeySpec pbeSpec
      StackMap locals: com.sun.crypto.provider.PBES2Core int java.security.Key java.security.spec.AlgorithmParameterSpec java.security.SecureRandom byte[] char[]
      StackMap stack: java.lang.Throwable
        77: astore 12
        78: .line 281
            aload 6 /* passwdChars */
            ifnull 79
            aload 6 /* passwdChars */
            iconst_0
            invokestatic java.util.Arrays.fill:([CC)V
        79: .line 282
      StackMap locals: com.sun.crypto.provider.PBES2Core int java.security.Key java.security.spec.AlgorithmParameterSpec java.security.SecureRandom byte[] char[] top top top top top java.lang.Throwable
      StackMap stack:
            aload 5 /* passwdBytes */
            ifnull 80
            aload 5 /* passwdBytes */
            iconst_0
            invokestatic java.util.Arrays.fill:([BB)V
        80: .line 283
      StackMap locals:
      StackMap stack:
            aload 12
            athrow
        start local 7 // javax.crypto.spec.PBEKeySpec pbeSpec
        81: .line 281
      StackMap locals: com.sun.crypto.provider.PBES2Core int java.security.Key java.security.spec.AlgorithmParameterSpec java.security.SecureRandom byte[] char[] javax.crypto.spec.PBEKeySpec
      StackMap stack:
            aload 6 /* passwdChars */
            ifnull 82
            aload 6 /* passwdChars */
            iconst_0
            invokestatic java.util.Arrays.fill:([CC)V
        82: .line 282
      StackMap locals:
      StackMap stack:
            aload 5 /* passwdBytes */
            ifnull 83
            aload 5 /* passwdBytes */
            iconst_0
            invokestatic java.util.Arrays.fill:([BB)V
        83: .line 285
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 8 /* s */
        start local 8 // javax.crypto.SecretKey s
        84: .line 288
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.kdf:Lcom/sun/crypto/provider/PBKDF2Core;
            aload 7 /* pbeSpec */
            invokevirtual com.sun.crypto.provider.PBKDF2Core.engineGenerateSecret:(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;
            astore 8 /* s */
        85: .line 290
            goto 91
      StackMap locals: com.sun.crypto.provider.PBES2Core int java.security.Key java.security.spec.AlgorithmParameterSpec java.security.SecureRandom byte[] char[] javax.crypto.spec.PBEKeySpec javax.crypto.SecretKey
      StackMap stack: java.security.spec.InvalidKeySpecException
        86: astore 9 /* ikse */
        start local 9 // java.security.spec.InvalidKeySpecException ikse
        87: .line 292
            new java.security.InvalidKeyException
            dup
            ldc "Cannot construct PBE key"
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
        88: .line 291
            astore 10 /* ike */
        start local 10 // java.security.InvalidKeyException ike
        89: .line 293
            aload 10 /* ike */
            aload 9 /* ikse */
            invokevirtual java.security.InvalidKeyException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            pop
        90: .line 294
            aload 10 /* ike */
            athrow
        end local 10 // java.security.InvalidKeyException ike
        end local 9 // java.security.spec.InvalidKeySpecException ikse
        91: .line 296
      StackMap locals:
      StackMap stack:
            aload 8 /* s */
            invokeinterface javax.crypto.SecretKey.getEncoded:()[B
            astore 9 /* derivedKey */
        start local 9 // byte[] derivedKey
        92: .line 297
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 9 /* derivedKey */
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.cipherAlgo:Ljava/lang/String;
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 10 /* cipherKey */
        start local 10 // javax.crypto.spec.SecretKeySpec cipherKey
        93: .line 300
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.cipher:Lcom/sun/crypto/provider/CipherCore;
            iload 1 /* opmode */
            aload 10 /* cipherKey */
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.ivSpec:Ljavax/crypto/spec/IvParameterSpec;
            aload 4 /* random */
            invokevirtual com.sun.crypto.provider.CipherCore.init:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
        94: .line 301
            return
        end local 10 // javax.crypto.spec.SecretKeySpec cipherKey
        end local 9 // byte[] derivedKey
        end local 8 // javax.crypto.SecretKey s
        end local 7 // javax.crypto.spec.PBEKeySpec pbeSpec
        end local 6 // char[] passwdChars
        end local 5 // byte[] passwdBytes
        end local 4 // java.security.SecureRandom random
        end local 3 // java.security.spec.AlgorithmParameterSpec params
        end local 2 // java.security.Key key
        end local 1 // int opmode
        end local 0 // com.sun.crypto.provider.PBES2Core this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   95     0         this  Lcom/sun/crypto/provider/PBES2Core;
            0   95     1       opmode  I
            0   95     2          key  Ljava/security/Key;
            0   95     3       params  Ljava/security/spec/AlgorithmParameterSpec;
            0   95     4       random  Ljava/security/SecureRandom;
            3   95     5  passwdBytes  [B
            4   95     6  passwdChars  [C
           76   77     7      pbeSpec  Ljavax/crypto/spec/PBEKeySpec;
           81   95     7      pbeSpec  Ljavax/crypto/spec/PBEKeySpec;
           29   31     8      ivBytes  [B
           37   69     8     specSalt  [B
           43   69     9   specICount  I
           53   60    10   specParams  Ljava/security/spec/AlgorithmParameterSpec;
           63   65    11      ivBytes  [B
           71   75     8            i  I
           84   95     8            s  Ljavax/crypto/SecretKey;
           87   91     9         ikse  Ljava/security/spec/InvalidKeySpecException;
           89   91    10          ike  Ljava/security/InvalidKeyException;
           92   95     9   derivedKey  [B
           93   95    10    cipherKey  Ljavax/crypto/spec/SecretKeySpec;
      Exception table:
        from    to  target  type
           4    77      77  any
          84    85      86  Class java.security.spec.InvalidKeySpecException
    Exceptions:
      throws java.security.InvalidKeyException, java.security.InvalidAlgorithmParameterException
    MethodParameters:
        Name  Flags
      opmode  
      key     
      params  
      random  

  protected void engineInit(int, java.security.Key, java.security.AlgorithmParameters, java.security.SecureRandom);
    descriptor: (ILjava/security/Key;Ljava/security/AlgorithmParameters;Ljava/security/SecureRandom;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=6, args_size=5
        start local 0 // com.sun.crypto.provider.PBES2Core this
        start local 1 // int opmode
        start local 2 // java.security.Key key
        start local 3 // java.security.AlgorithmParameters params
        start local 4 // java.security.SecureRandom random
         0: .line 306
            aconst_null
            astore 5 /* pbeSpec */
        start local 5 // java.security.spec.AlgorithmParameterSpec pbeSpec
         1: .line 307
            aload 3 /* params */
            ifnull 8
         2: .line 309
            aload 3 /* params */
            ldc Ljavax/crypto/spec/PBEParameterSpec;
            invokevirtual java.security.AlgorithmParameters.getParameterSpec:(Ljava/lang/Class;)Ljava/security/spec/AlgorithmParameterSpec;
            astore 5 /* pbeSpec */
         3: .line 310
            goto 8
      StackMap locals: com.sun.crypto.provider.PBES2Core int java.security.Key java.security.AlgorithmParameters java.security.SecureRandom java.security.spec.AlgorithmParameterSpec
      StackMap stack: java.security.spec.InvalidParameterSpecException
         4: pop
         5: .line 311
            new java.security.InvalidAlgorithmParameterException
            dup
         6: .line 312
            ldc "Wrong parameter type: PBE expected"
         7: .line 311
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 315
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* opmode */
            aload 2 /* key */
            aload 5 /* pbeSpec */
            aload 4 /* random */
            invokevirtual com.sun.crypto.provider.PBES2Core.engineInit:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
         9: .line 316
            return
        end local 5 // java.security.spec.AlgorithmParameterSpec pbeSpec
        end local 4 // java.security.SecureRandom random
        end local 3 // java.security.AlgorithmParameters params
        end local 2 // java.security.Key key
        end local 1 // int opmode
        end local 0 // com.sun.crypto.provider.PBES2Core this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   10     0     this  Lcom/sun/crypto/provider/PBES2Core;
            0   10     1   opmode  I
            0   10     2      key  Ljava/security/Key;
            0   10     3   params  Ljava/security/AlgorithmParameters;
            0   10     4   random  Ljava/security/SecureRandom;
            1   10     5  pbeSpec  Ljava/security/spec/AlgorithmParameterSpec;
      Exception table:
        from    to  target  type
           2     3       4  Class java.security.spec.InvalidParameterSpecException
    Exceptions:
      throws java.security.InvalidKeyException, java.security.InvalidAlgorithmParameterException
    MethodParameters:
        Name  Flags
      opmode  
      key     
      params  
      random  

  protected byte[] engineUpdate(byte[], int, int);
    descriptor: ([BII)[B
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.sun.crypto.provider.PBES2Core this
        start local 1 // byte[] input
        start local 2 // int inputOffset
        start local 3 // int inputLen
         0: .line 319
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.cipher:Lcom/sun/crypto/provider/CipherCore;
            aload 1 /* input */
            iload 2 /* inputOffset */
            iload 3 /* inputLen */
            invokevirtual com.sun.crypto.provider.CipherCore.update:([BII)[B
            areturn
        end local 3 // int inputLen
        end local 2 // int inputOffset
        end local 1 // byte[] input
        end local 0 // com.sun.crypto.provider.PBES2Core this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lcom/sun/crypto/provider/PBES2Core;
            0    1     1        input  [B
            0    1     2  inputOffset  I
            0    1     3     inputLen  I
    MethodParameters:
             Name  Flags
      input        
      inputOffset  
      inputLen     

  protected int engineUpdate(byte[], int, int, byte[], int);
    descriptor: ([BII[BI)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=6, args_size=6
        start local 0 // com.sun.crypto.provider.PBES2Core this
        start local 1 // byte[] input
        start local 2 // int inputOffset
        start local 3 // int inputLen
        start local 4 // byte[] output
        start local 5 // int outputOffset
         0: .line 325
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.cipher:Lcom/sun/crypto/provider/CipherCore;
            aload 1 /* input */
            iload 2 /* inputOffset */
            iload 3 /* inputLen */
         1: .line 326
            aload 4 /* output */
            iload 5 /* outputOffset */
         2: .line 325
            invokevirtual com.sun.crypto.provider.CipherCore.update:([BII[BI)I
            ireturn
        end local 5 // int outputOffset
        end local 4 // byte[] output
        end local 3 // int inputLen
        end local 2 // int inputOffset
        end local 1 // byte[] input
        end local 0 // com.sun.crypto.provider.PBES2Core this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0          this  Lcom/sun/crypto/provider/PBES2Core;
            0    3     1         input  [B
            0    3     2   inputOffset  I
            0    3     3      inputLen  I
            0    3     4        output  [B
            0    3     5  outputOffset  I
    Exceptions:
      throws javax.crypto.ShortBufferException
    MethodParameters:
              Name  Flags
      input         
      inputOffset   
      inputLen      
      output        
      outputOffset  

  protected byte[] engineDoFinal(byte[], int, int);
    descriptor: ([BII)[B
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.sun.crypto.provider.PBES2Core this
        start local 1 // byte[] input
        start local 2 // int inputOffset
        start local 3 // int inputLen
         0: .line 331
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.cipher:Lcom/sun/crypto/provider/CipherCore;
            aload 1 /* input */
            iload 2 /* inputOffset */
            iload 3 /* inputLen */
            invokevirtual com.sun.crypto.provider.CipherCore.doFinal:([BII)[B
            areturn
        end local 3 // int inputLen
        end local 2 // int inputOffset
        end local 1 // byte[] input
        end local 0 // com.sun.crypto.provider.PBES2Core this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lcom/sun/crypto/provider/PBES2Core;
            0    1     1        input  [B
            0    1     2  inputOffset  I
            0    1     3     inputLen  I
    Exceptions:
      throws javax.crypto.IllegalBlockSizeException, javax.crypto.BadPaddingException
    MethodParameters:
             Name  Flags
      input        
      inputOffset  
      inputLen     

  protected int engineDoFinal(byte[], int, int, byte[], int);
    descriptor: ([BII[BI)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=6, args_size=6
        start local 0 // com.sun.crypto.provider.PBES2Core this
        start local 1 // byte[] input
        start local 2 // int inputOffset
        start local 3 // int inputLen
        start local 4 // byte[] output
        start local 5 // int outputOffset
         0: .line 338
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.cipher:Lcom/sun/crypto/provider/CipherCore;
            aload 1 /* input */
            iload 2 /* inputOffset */
            iload 3 /* inputLen */
         1: .line 339
            aload 4 /* output */
            iload 5 /* outputOffset */
         2: .line 338
            invokevirtual com.sun.crypto.provider.CipherCore.doFinal:([BII[BI)I
            ireturn
        end local 5 // int outputOffset
        end local 4 // byte[] output
        end local 3 // int inputLen
        end local 2 // int inputOffset
        end local 1 // byte[] input
        end local 0 // com.sun.crypto.provider.PBES2Core this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0          this  Lcom/sun/crypto/provider/PBES2Core;
            0    3     1         input  [B
            0    3     2   inputOffset  I
            0    3     3      inputLen  I
            0    3     4        output  [B
            0    3     5  outputOffset  I
    Exceptions:
      throws javax.crypto.ShortBufferException, javax.crypto.IllegalBlockSizeException, javax.crypto.BadPaddingException
    MethodParameters:
              Name  Flags
      input         
      inputOffset   
      inputLen      
      output        
      outputOffset  

  protected int engineGetKeySize(java.security.Key);
    descriptor: (Ljava/security/Key;)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.sun.crypto.provider.PBES2Core this
        start local 1 // java.security.Key key
         0: .line 343
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.keyLength:I
            ireturn
        end local 1 // java.security.Key key
        end local 0 // com.sun.crypto.provider.PBES2Core this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/crypto/provider/PBES2Core;
            0    1     1   key  Ljava/security/Key;
    Exceptions:
      throws java.security.InvalidKeyException
    MethodParameters:
      Name  Flags
      key   

  protected byte[] engineWrap(java.security.Key);
    descriptor: (Ljava/security/Key;)[B
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.sun.crypto.provider.PBES2Core this
        start local 1 // java.security.Key key
         0: .line 348
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.cipher:Lcom/sun/crypto/provider/CipherCore;
            aload 1 /* key */
            invokevirtual com.sun.crypto.provider.CipherCore.wrap:(Ljava/security/Key;)[B
            areturn
        end local 1 // java.security.Key key
        end local 0 // com.sun.crypto.provider.PBES2Core this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/crypto/provider/PBES2Core;
            0    1     1   key  Ljava/security/Key;
    Exceptions:
      throws javax.crypto.IllegalBlockSizeException, java.security.InvalidKeyException
    MethodParameters:
      Name  Flags
      key   

  protected java.security.Key engineUnwrap(byte[], java.lang.String, int);
    descriptor: ([BLjava/lang/String;I)Ljava/security/Key;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.sun.crypto.provider.PBES2Core this
        start local 1 // byte[] wrappedKey
        start local 2 // java.lang.String wrappedKeyAlgorithm
        start local 3 // int wrappedKeyType
         0: .line 355
            aload 0 /* this */
            getfield com.sun.crypto.provider.PBES2Core.cipher:Lcom/sun/crypto/provider/CipherCore;
            aload 1 /* wrappedKey */
            aload 2 /* wrappedKeyAlgorithm */
         1: .line 356
            iload 3 /* wrappedKeyType */
         2: .line 355
            invokevirtual com.sun.crypto.provider.CipherCore.unwrap:([BLjava/lang/String;I)Ljava/security/Key;
            areturn
        end local 3 // int wrappedKeyType
        end local 2 // java.lang.String wrappedKeyAlgorithm
        end local 1 // byte[] wrappedKey
        end local 0 // com.sun.crypto.provider.PBES2Core this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    3     0                 this  Lcom/sun/crypto/provider/PBES2Core;
            0    3     1           wrappedKey  [B
            0    3     2  wrappedKeyAlgorithm  Ljava/lang/String;
            0    3     3       wrappedKeyType  I
    Exceptions:
      throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException
    MethodParameters:
                     Name  Flags
      wrappedKey           
      wrappedKeyAlgorithm  
      wrappedKeyType       
}
SourceFile: "PBES2Core.java"
NestMembers:
  com.sun.crypto.provider.PBES2Core$HmacSHA1AndAES_128  com.sun.crypto.provider.PBES2Core$HmacSHA1AndAES_256  com.sun.crypto.provider.PBES2Core$HmacSHA224AndAES_128  com.sun.crypto.provider.PBES2Core$HmacSHA224AndAES_256  com.sun.crypto.provider.PBES2Core$HmacSHA256AndAES_128  com.sun.crypto.provider.PBES2Core$HmacSHA256AndAES_256  com.sun.crypto.provider.PBES2Core$HmacSHA384AndAES_128  com.sun.crypto.provider.PBES2Core$HmacSHA384AndAES_256  com.sun.crypto.provider.PBES2Core$HmacSHA512AndAES_128  com.sun.crypto.provider.PBES2Core$HmacSHA512AndAES_256
InnerClasses:
  public final HmacSHA1AndAES_128 = com.sun.crypto.provider.PBES2Core$HmacSHA1AndAES_128 of com.sun.crypto.provider.PBES2Core
  public final HmacSHA1AndAES_256 = com.sun.crypto.provider.PBES2Core$HmacSHA1AndAES_256 of com.sun.crypto.provider.PBES2Core
  public final HmacSHA224AndAES_128 = com.sun.crypto.provider.PBES2Core$HmacSHA224AndAES_128 of com.sun.crypto.provider.PBES2Core
  public final HmacSHA224AndAES_256 = com.sun.crypto.provider.PBES2Core$HmacSHA224AndAES_256 of com.sun.crypto.provider.PBES2Core
  public final HmacSHA256AndAES_128 = com.sun.crypto.provider.PBES2Core$HmacSHA256AndAES_128 of com.sun.crypto.provider.PBES2Core
  public final HmacSHA256AndAES_256 = com.sun.crypto.provider.PBES2Core$HmacSHA256AndAES_256 of com.sun.crypto.provider.PBES2Core
  public final HmacSHA384AndAES_128 = com.sun.crypto.provider.PBES2Core$HmacSHA384AndAES_128 of com.sun.crypto.provider.PBES2Core
  public final HmacSHA384AndAES_256 = com.sun.crypto.provider.PBES2Core$HmacSHA384AndAES_256 of com.sun.crypto.provider.PBES2Core
  public final HmacSHA512AndAES_128 = com.sun.crypto.provider.PBES2Core$HmacSHA512AndAES_128 of com.sun.crypto.provider.PBES2Core
  public final HmacSHA512AndAES_256 = com.sun.crypto.provider.PBES2Core$HmacSHA512AndAES_256 of com.sun.crypto.provider.PBES2Core
  public final HmacSHA1 = com.sun.crypto.provider.PBKDF2Core$HmacSHA1 of com.sun.crypto.provider.PBKDF2Core
  public final HmacSHA224 = com.sun.crypto.provider.PBKDF2Core$HmacSHA224 of com.sun.crypto.provider.PBKDF2Core
  public final HmacSHA256 = com.sun.crypto.provider.PBKDF2Core$HmacSHA256 of com.sun.crypto.provider.PBKDF2Core
  public final HmacSHA384 = com.sun.crypto.provider.PBKDF2Core$HmacSHA384 of com.sun.crypto.provider.PBKDF2Core
  public final HmacSHA512 = com.sun.crypto.provider.PBKDF2Core$HmacSHA512 of com.sun.crypto.provider.PBKDF2Core