final class org.springframework.security.crypto.encrypt.CipherUtils
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: org.springframework.security.crypto.encrypt.CipherUtils
  super_class: java.lang.Object
{
  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.security.crypto.encrypt.CipherUtils this
         0: .line 42
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 43
            return
        end local 0 // org.springframework.security.crypto.encrypt.CipherUtils this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/springframework/security/crypto/encrypt/CipherUtils;

  static javax.crypto.SecretKey newSecretKey(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljavax/crypto/SecretKey;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // java.lang.String algorithm
        start local 1 // java.lang.String password
         0: .line 49
            aload 0 /* algorithm */
            new javax.crypto.spec.PBEKeySpec
            dup
            aload 1 /* password */
            invokevirtual java.lang.String.toCharArray:()[C
            invokespecial javax.crypto.spec.PBEKeySpec.<init>:([C)V
            invokestatic org.springframework.security.crypto.encrypt.CipherUtils.newSecretKey:(Ljava/lang/String;Ljavax/crypto/spec/PBEKeySpec;)Ljavax/crypto/SecretKey;
            areturn
        end local 1 // java.lang.String password
        end local 0 // java.lang.String algorithm
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0  algorithm  Ljava/lang/String;
            0    1     1   password  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      algorithm  
      password   

  static javax.crypto.SecretKey newSecretKey(java.lang.String, javax.crypto.spec.PBEKeySpec);
    descriptor: (Ljava/lang/String;Ljavax/crypto/spec/PBEKeySpec;)Ljavax/crypto/SecretKey;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // java.lang.String algorithm
        start local 1 // javax.crypto.spec.PBEKeySpec keySpec
         0: .line 57
            aload 0 /* algorithm */
            invokestatic javax.crypto.SecretKeyFactory.getInstance:(Ljava/lang/String;)Ljavax/crypto/SecretKeyFactory;
            astore 2 /* factory */
        start local 2 // javax.crypto.SecretKeyFactory factory
         1: .line 58
            aload 2 /* factory */
            aload 1 /* keySpec */
            invokevirtual javax.crypto.SecretKeyFactory.generateSecret:(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;
         2: areturn
        end local 2 // javax.crypto.SecretKeyFactory factory
         3: .line 60
      StackMap locals:
      StackMap stack: java.security.NoSuchAlgorithmException
            astore 2 /* ex */
        start local 2 // java.security.NoSuchAlgorithmException ex
         4: .line 61
            new java.lang.IllegalArgumentException
            dup
            ldc "Not a valid encryption algorithm"
            aload 2 /* ex */
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.security.NoSuchAlgorithmException ex
         5: .line 63
      StackMap locals:
      StackMap stack: java.security.spec.InvalidKeySpecException
            astore 2 /* ex */
        start local 2 // java.security.spec.InvalidKeySpecException ex
         6: .line 64
            new java.lang.IllegalArgumentException
            dup
            ldc "Not a valid secret key"
            aload 2 /* ex */
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.security.spec.InvalidKeySpecException ex
        end local 1 // javax.crypto.spec.PBEKeySpec keySpec
        end local 0 // java.lang.String algorithm
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0  algorithm  Ljava/lang/String;
            0    7     1    keySpec  Ljavax/crypto/spec/PBEKeySpec;
            1    3     2    factory  Ljavax/crypto/SecretKeyFactory;
            4    5     2         ex  Ljava/security/NoSuchAlgorithmException;
            6    7     2         ex  Ljava/security/spec/InvalidKeySpecException;
      Exception table:
        from    to  target  type
           0     2       3  Class java.security.NoSuchAlgorithmException
           0     2       5  Class java.security.spec.InvalidKeySpecException
    MethodParameters:
           Name  Flags
      algorithm  
      keySpec    

  static javax.crypto.Cipher newCipher(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljavax/crypto/Cipher;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // java.lang.String algorithm
         0: .line 73
            aload 0 /* algorithm */
            invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
         1: areturn
         2: .line 75
      StackMap locals:
      StackMap stack: java.security.NoSuchAlgorithmException
            astore 1 /* ex */
        start local 1 // java.security.NoSuchAlgorithmException ex
         3: .line 76
            new java.lang.IllegalArgumentException
            dup
            ldc "Not a valid encryption algorithm"
            aload 1 /* ex */
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.security.NoSuchAlgorithmException ex
         4: .line 78
      StackMap locals:
      StackMap stack: javax.crypto.NoSuchPaddingException
            astore 1 /* ex */
        start local 1 // javax.crypto.NoSuchPaddingException ex
         5: .line 79
            new java.lang.IllegalStateException
            dup
            ldc "Should not happen"
            aload 1 /* ex */
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // javax.crypto.NoSuchPaddingException ex
        end local 0 // java.lang.String algorithm
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    6     0  algorithm  Ljava/lang/String;
            3    4     1         ex  Ljava/security/NoSuchAlgorithmException;
            5    6     1         ex  Ljavax/crypto/NoSuchPaddingException;
      Exception table:
        from    to  target  type
           0     1       2  Class java.security.NoSuchAlgorithmException
           0     1       4  Class javax.crypto.NoSuchPaddingException
    MethodParameters:
           Name  Flags
      algorithm  

  static <T extends java.security.spec.AlgorithmParameterSpec> T getParameterSpec(javax.crypto.Cipher, java.lang.Class<T>);
    descriptor: (Ljavax/crypto/Cipher;Ljava/lang/Class;)Ljava/security/spec/AlgorithmParameterSpec;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // javax.crypto.Cipher cipher
        start local 1 // java.lang.Class parameterSpecClass
         0: .line 88
            aload 0 /* cipher */
            invokevirtual javax.crypto.Cipher.getParameters:()Ljava/security/AlgorithmParameters;
            aload 1 /* parameterSpecClass */
            invokevirtual java.security.AlgorithmParameters.getParameterSpec:(Ljava/lang/Class;)Ljava/security/spec/AlgorithmParameterSpec;
         1: areturn
         2: .line 90
      StackMap locals:
      StackMap stack: java.security.spec.InvalidParameterSpecException
            astore 2 /* ex */
        start local 2 // java.security.spec.InvalidParameterSpecException ex
         3: .line 91
            new java.lang.IllegalArgumentException
            dup
            ldc "Unable to access parameter"
            aload 2 /* ex */
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.security.spec.InvalidParameterSpecException ex
        end local 1 // java.lang.Class parameterSpecClass
        end local 0 // javax.crypto.Cipher cipher
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    4     0              cipher  Ljavax/crypto/Cipher;
            0    4     1  parameterSpecClass  Ljava/lang/Class<TT;>;
            3    4     2                  ex  Ljava/security/spec/InvalidParameterSpecException;
      Exception table:
        from    to  target  type
           0     1       2  Class java.security.spec.InvalidParameterSpecException
    Signature: <T::Ljava/security/spec/AlgorithmParameterSpec;>(Ljavax/crypto/Cipher;Ljava/lang/Class<TT;>;)TT;
    MethodParameters:
                    Name  Flags
      cipher              
      parameterSpecClass  

  static void initCipher(javax.crypto.Cipher, int, javax.crypto.SecretKey);
    descriptor: (Ljavax/crypto/Cipher;ILjavax/crypto/SecretKey;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // javax.crypto.Cipher cipher
        start local 1 // int mode
        start local 2 // javax.crypto.SecretKey secretKey
         0: .line 99
            aload 0 /* cipher */
            iload 1 /* mode */
            aload 2 /* secretKey */
            aconst_null
            invokestatic org.springframework.security.crypto.encrypt.CipherUtils.initCipher:(Ljavax/crypto/Cipher;ILjavax/crypto/SecretKey;Ljava/security/spec/AlgorithmParameterSpec;)V
         1: .line 100
            return
        end local 2 // javax.crypto.SecretKey secretKey
        end local 1 // int mode
        end local 0 // javax.crypto.Cipher cipher
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0     cipher  Ljavax/crypto/Cipher;
            0    2     1       mode  I
            0    2     2  secretKey  Ljavax/crypto/SecretKey;
    MethodParameters:
           Name  Flags
      cipher     
      mode       
      secretKey  

  static void initCipher(javax.crypto.Cipher, int, javax.crypto.SecretKey, byte[], int);
    descriptor: (Ljavax/crypto/Cipher;ILjavax/crypto/SecretKey;[BI)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=7, locals=5, args_size=5
        start local 0 // javax.crypto.Cipher cipher
        start local 1 // int mode
        start local 2 // javax.crypto.SecretKey secretKey
        start local 3 // byte[] salt
        start local 4 // int iterationCount
         0: .line 106
            aload 0 /* cipher */
            iload 1 /* mode */
            aload 2 /* secretKey */
            new javax.crypto.spec.PBEParameterSpec
            dup
            aload 3 /* salt */
            iload 4 /* iterationCount */
            invokespecial javax.crypto.spec.PBEParameterSpec.<init>:([BI)V
            invokestatic org.springframework.security.crypto.encrypt.CipherUtils.initCipher:(Ljavax/crypto/Cipher;ILjavax/crypto/SecretKey;Ljava/security/spec/AlgorithmParameterSpec;)V
         1: .line 107
            return
        end local 4 // int iterationCount
        end local 3 // byte[] salt
        end local 2 // javax.crypto.SecretKey secretKey
        end local 1 // int mode
        end local 0 // javax.crypto.Cipher cipher
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    2     0          cipher  Ljavax/crypto/Cipher;
            0    2     1            mode  I
            0    2     2       secretKey  Ljavax/crypto/SecretKey;
            0    2     3            salt  [B
            0    2     4  iterationCount  I
    MethodParameters:
                Name  Flags
      cipher          
      mode            
      secretKey       
      salt            
      iterationCount  

  static void initCipher(javax.crypto.Cipher, int, javax.crypto.SecretKey, java.security.spec.AlgorithmParameterSpec);
    descriptor: (Ljavax/crypto/Cipher;ILjavax/crypto/SecretKey;Ljava/security/spec/AlgorithmParameterSpec;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // javax.crypto.Cipher cipher
        start local 1 // int mode
        start local 2 // javax.crypto.SecretKey secretKey
        start local 3 // java.security.spec.AlgorithmParameterSpec parameterSpec
         0: .line 114
            aload 3 /* parameterSpec */
            ifnull 3
         1: .line 115
            aload 0 /* cipher */
            iload 1 /* mode */
            aload 2 /* secretKey */
            aload 3 /* parameterSpec */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
         2: .line 116
            goto 9
         3: .line 118
      StackMap locals:
      StackMap stack:
            aload 0 /* cipher */
            iload 1 /* mode */
            aload 2 /* secretKey */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;)V
         4: .line 120
            goto 9
         5: .line 121
      StackMap locals:
      StackMap stack: java.security.InvalidKeyException
            astore 4 /* ex */
        start local 4 // java.security.InvalidKeyException ex
         6: .line 122
            new java.lang.IllegalArgumentException
            dup
            ldc "Unable to initialize due to invalid secret key"
            aload 4 /* ex */
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.security.InvalidKeyException ex
         7: .line 124
      StackMap locals:
      StackMap stack: java.security.InvalidAlgorithmParameterException
            astore 4 /* ex */
        start local 4 // java.security.InvalidAlgorithmParameterException ex
         8: .line 125
            new java.lang.IllegalStateException
            dup
            ldc "Unable to initialize due to invalid decryption parameter spec"
            aload 4 /* ex */
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.security.InvalidAlgorithmParameterException ex
         9: .line 127
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.security.spec.AlgorithmParameterSpec parameterSpec
        end local 2 // javax.crypto.SecretKey secretKey
        end local 1 // int mode
        end local 0 // javax.crypto.Cipher cipher
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   10     0         cipher  Ljavax/crypto/Cipher;
            0   10     1           mode  I
            0   10     2      secretKey  Ljavax/crypto/SecretKey;
            0   10     3  parameterSpec  Ljava/security/spec/AlgorithmParameterSpec;
            6    7     4             ex  Ljava/security/InvalidKeyException;
            8    9     4             ex  Ljava/security/InvalidAlgorithmParameterException;
      Exception table:
        from    to  target  type
           0     4       5  Class java.security.InvalidKeyException
           0     4       7  Class java.security.InvalidAlgorithmParameterException
    MethodParameters:
               Name  Flags
      cipher         
      mode           
      secretKey      
      parameterSpec  

  static byte[] doFinal(javax.crypto.Cipher, byte[]);
    descriptor: (Ljavax/crypto/Cipher;[B)[B
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // javax.crypto.Cipher cipher
        start local 1 // byte[] input
         0: .line 135
            aload 0 /* cipher */
            aload 1 /* input */
            invokevirtual javax.crypto.Cipher.doFinal:([B)[B
         1: areturn
         2: .line 137
      StackMap locals:
      StackMap stack: javax.crypto.IllegalBlockSizeException
            astore 2 /* ex */
        start local 2 // javax.crypto.IllegalBlockSizeException ex
         3: .line 138
            new java.lang.IllegalStateException
            dup
            ldc "Unable to invoke Cipher due to illegal block size"
            aload 2 /* ex */
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // javax.crypto.IllegalBlockSizeException ex
         4: .line 140
      StackMap locals:
      StackMap stack: javax.crypto.BadPaddingException
            astore 2 /* ex */
        start local 2 // javax.crypto.BadPaddingException ex
         5: .line 141
            new java.lang.IllegalStateException
            dup
            ldc "Unable to invoke Cipher due to bad padding"
            aload 2 /* ex */
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // javax.crypto.BadPaddingException ex
        end local 1 // byte[] input
        end local 0 // javax.crypto.Cipher cipher
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0  cipher  Ljavax/crypto/Cipher;
            0    6     1   input  [B
            3    4     2      ex  Ljavax/crypto/IllegalBlockSizeException;
            5    6     2      ex  Ljavax/crypto/BadPaddingException;
      Exception table:
        from    to  target  type
           0     1       2  Class javax.crypto.IllegalBlockSizeException
           0     1       4  Class javax.crypto.BadPaddingException
    MethodParameters:
        Name  Flags
      cipher  
      input   
}
SourceFile: "CipherUtils.java"