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 start local 1 start local 2 start local 3 0: aload 0
invokespecial javax.crypto.CipherSpi.<init>:()V
1: aload 0
sipush 4096
putfield com.sun.crypto.provider.PBES2Core.iCount:I
2: aload 0
aconst_null
putfield com.sun.crypto.provider.PBES2Core.salt:[B
3: aload 0
aconst_null
putfield com.sun.crypto.provider.PBES2Core.ivSpec:Ljavax/crypto/spec/IvParameterSpec;
4: aload 0
aload 2
putfield com.sun.crypto.provider.PBES2Core.cipherAlgo:Ljava/lang/String;
5: aload 0
iload 3
bipush 8
imul
putfield com.sun.crypto.provider.PBES2Core.keyLength:I
6: aload 0
new java.lang.StringBuilder
dup
ldc "PBEWith"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
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
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
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: aload 2
ldc "AES"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 30
8: aload 0
bipush 16
putfield com.sun.crypto.provider.PBES2Core.blkSize:I
9: aload 0
new com.sun.crypto.provider.CipherCore
dup
new com.sun.crypto.provider.AESCrypt
dup
invokespecial com.sun.crypto.provider.AESCrypt.<init>:()V
aload 0
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: aload 1
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: StackMap locals:
StackMap stack:
aload 0
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: goto 33
18: StackMap locals:
StackMap stack:
aload 0
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: goto 33
20: StackMap locals:
StackMap stack:
aload 0
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: goto 33
22: StackMap locals:
StackMap stack:
aload 0
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: goto 33
24: StackMap locals:
StackMap stack:
aload 0
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: goto 33
26: StackMap locals:
StackMap stack:
new java.security.NoSuchAlgorithmException
dup
27: new java.lang.StringBuilder
dup
ldc "No Cipher implementation for "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
28: invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;)V
athrow
29: StackMap locals:
StackMap stack:
goto 33
30: 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: aload 0
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: invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;)V
athrow
33: StackMap locals:
StackMap stack:
aload 0
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: aload 0
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: return
end local 3 end local 2 end local 1 end local 0 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 start local 1 0: aload 1
ifnull 2
aload 1
ldc "CBC"
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifne 2
1: 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
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: StackMap locals:
StackMap stack:
return
end local 1 end local 0 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 start local 1 0: aload 1
ifnull 5
1: aload 1
ldc "PKCS5Padding"
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifne 5
2: new javax.crypto.NoSuchPaddingException
dup
new java.lang.StringBuilder
dup
ldc "Invalid padding scheme: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
3: aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
4: invokespecial javax.crypto.NoSuchPaddingException.<init>:(Ljava/lang/String;)V
athrow
5: StackMap locals:
StackMap stack:
return
end local 1 end local 0 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 0: aload 0
getfield com.sun.crypto.provider.PBES2Core.blkSize:I
ireturn
end local 0 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 start local 1 0: aload 0
getfield com.sun.crypto.provider.PBES2Core.cipher:Lcom/sun/crypto/provider/CipherCore;
iload 1
invokevirtual com.sun.crypto.provider.CipherCore.getOutputSize:(I)I
ireturn
end local 1 end local 0 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 0: aload 0
getfield com.sun.crypto.provider.PBES2Core.cipher:Lcom/sun/crypto/provider/CipherCore;
invokevirtual com.sun.crypto.provider.CipherCore.getIV:()[B
areturn
end local 0 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 0: aconst_null
astore 1
start local 1 1: aload 0
getfield com.sun.crypto.provider.PBES2Core.salt:[B
ifnonnull 5
2: aload 0
bipush 20
newarray 8
putfield com.sun.crypto.provider.PBES2Core.salt:[B
3: invokestatic com.sun.crypto.provider.SunJCE.getRandom:()Ljava/security/SecureRandom;
aload 0
getfield com.sun.crypto.provider.PBES2Core.salt:[B
invokevirtual java.security.SecureRandom.nextBytes:([B)V
4: aload 0
sipush 4096
putfield com.sun.crypto.provider.PBES2Core.iCount:I
5: StackMap locals: java.security.AlgorithmParameters
StackMap stack:
aload 0
getfield com.sun.crypto.provider.PBES2Core.ivSpec:Ljavax/crypto/spec/IvParameterSpec;
ifnonnull 9
6: aload 0
getfield com.sun.crypto.provider.PBES2Core.blkSize:I
newarray 8
astore 2
start local 2 7: invokestatic com.sun.crypto.provider.SunJCE.getRandom:()Ljava/security/SecureRandom;
aload 2
invokevirtual java.security.SecureRandom.nextBytes:([B)V
8: aload 0
new javax.crypto.spec.IvParameterSpec
dup
aload 2
invokespecial javax.crypto.spec.IvParameterSpec.<init>:([B)V
putfield com.sun.crypto.provider.PBES2Core.ivSpec:Ljavax/crypto/spec/IvParameterSpec;
end local 2 9: StackMap locals:
StackMap stack:
new javax.crypto.spec.PBEParameterSpec
dup
aload 0
getfield com.sun.crypto.provider.PBES2Core.salt:[B
aload 0
getfield com.sun.crypto.provider.PBES2Core.iCount:I
aload 0
getfield com.sun.crypto.provider.PBES2Core.ivSpec:Ljavax/crypto/spec/IvParameterSpec;
invokespecial javax.crypto.spec.PBEParameterSpec.<init>:([BILjava/security/spec/AlgorithmParameterSpec;)V
astore 2
start local 2 10: aload 0
getfield com.sun.crypto.provider.PBES2Core.pbeAlgo:Ljava/lang/String;
11: invokestatic com.sun.crypto.provider.SunJCE.getInstance:()Lcom/sun/crypto/provider/SunJCE;
12: invokestatic java.security.AlgorithmParameters.getInstance:(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/AlgorithmParameters;
astore 1
13: aload 1
aload 2
invokevirtual java.security.AlgorithmParameters.init:(Ljava/security/spec/AlgorithmParameterSpec;)V
14: goto 19
StackMap locals: com.sun.crypto.provider.PBES2Core java.security.AlgorithmParameters javax.crypto.spec.PBEParameterSpec
StackMap stack: java.security.NoSuchAlgorithmException
15: pop
16: new java.lang.RuntimeException
dup
ldc "SunJCE called, but not configured"
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
17: StackMap locals:
StackMap stack: java.security.spec.InvalidParameterSpecException
pop
18: new java.lang.RuntimeException
dup
ldc "PBEParameterSpec not supported"
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
19: StackMap locals:
StackMap stack:
aload 1
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 this Lcom/sun/crypto/provider/PBES2Core;
1 20 1 params Ljava/security/AlgorithmParameters;
7 9 2 ivBytes [B
10 20 2 pbeSpec Ljavax/crypto/spec/PBEParameterSpec;
Exception table:
from to target type
10 14 15 Class java.security.NoSuchAlgorithmException
10 14 17 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 start local 1 start local 2 start local 3 0: aload 0
iload 1
aload 2
aconst_null
aload 3
invokevirtual com.sun.crypto.provider.PBES2Core.engineInit:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
1: goto 7
StackMap locals:
StackMap stack: java.security.InvalidAlgorithmParameterException
2: astore 4
start local 4 3: new java.security.InvalidKeyException
dup
ldc "requires PBE parameters"
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
4: astore 5
start local 5 5: aload 5
aload 4
invokevirtual java.security.InvalidKeyException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
pop
6: aload 5
athrow
end local 5 end local 4 7: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 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 start local 1 start local 2 start local 3 start local 4 0: aload 2
ifnonnull 2
1: new java.security.InvalidKeyException
dup
ldc "Null key"
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 2
invokeinterface java.security.Key.getEncoded:()[B
astore 5
start local 5 3: aconst_null
astore 6
start local 6 4: aload 5
ifnull 6
5: aload 2
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: 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: StackMap locals:
StackMap stack:
aload 2
instanceof javax.crypto.interfaces.PBEKey
ifeq 21
8: aload 0
aload 2
checkcast javax.crypto.interfaces.PBEKey
invokeinterface javax.crypto.interfaces.PBEKey.getSalt:()[B
putfield com.sun.crypto.provider.PBES2Core.salt:[B
9: aload 0
getfield com.sun.crypto.provider.PBES2Core.salt:[B
ifnull 13
aload 0
getfield com.sun.crypto.provider.PBES2Core.salt:[B
arraylength
bipush 8
if_icmpge 13
10: new java.security.InvalidAlgorithmParameterException
dup
11: ldc "Salt must be at least 8 bytes long"
12: invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
13: StackMap locals:
StackMap stack:
aload 0
aload 2
checkcast javax.crypto.interfaces.PBEKey
invokeinterface javax.crypto.interfaces.PBEKey.getIterationCount:()I
putfield com.sun.crypto.provider.PBES2Core.iCount:I
14: aload 0
getfield com.sun.crypto.provider.PBES2Core.iCount:I
ifne 17
15: aload 0
sipush 4096
putfield com.sun.crypto.provider.PBES2Core.iCount:I
16: goto 21
StackMap locals:
StackMap stack:
17: aload 0
getfield com.sun.crypto.provider.PBES2Core.iCount:I
ifge 21
18: new java.security.InvalidAlgorithmParameterException
dup
19: ldc "Iteration count must be a positive number"
20: invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
21: StackMap locals:
StackMap stack:
aload 3
ifnonnull 32
22: aload 0
getfield com.sun.crypto.provider.PBES2Core.salt:[B
ifnonnull 26
23: aload 0
bipush 20
newarray 8
putfield com.sun.crypto.provider.PBES2Core.salt:[B
24: aload 4
aload 0
getfield com.sun.crypto.provider.PBES2Core.salt:[B
invokevirtual java.security.SecureRandom.nextBytes:([B)V
25: aload 0
sipush 4096
putfield com.sun.crypto.provider.PBES2Core.iCount:I
26: StackMap locals:
StackMap stack:
iload 1
iconst_1
if_icmpeq 28
27: iload 1
iconst_3
if_icmpne 69
28: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.crypto.provider.PBES2Core.blkSize:I
newarray 8
astore 8
start local 8 29: aload 4
aload 8
invokevirtual java.security.SecureRandom.nextBytes:([B)V
30: aload 0
new javax.crypto.spec.IvParameterSpec
dup
aload 8
invokespecial javax.crypto.spec.IvParameterSpec.<init>:([B)V
putfield com.sun.crypto.provider.PBES2Core.ivSpec:Ljavax/crypto/spec/IvParameterSpec;
end local 8 31: goto 69
32: StackMap locals:
StackMap stack:
aload 3
instanceof javax.crypto.spec.PBEParameterSpec
ifne 36
33: new java.security.InvalidAlgorithmParameterException
dup
34: ldc "Wrong parameter type: PBE expected"
35: invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
36: StackMap locals:
StackMap stack:
aload 3
checkcast javax.crypto.spec.PBEParameterSpec
invokevirtual javax.crypto.spec.PBEParameterSpec.getSalt:()[B
astore 8
start local 8 37: aload 8
ifnull 41
aload 8
arraylength
bipush 8
if_icmpge 41
38: new java.security.InvalidAlgorithmParameterException
dup
39: ldc "Salt must be at least 8 bytes long"
40: invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
41: 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
aload 8
putfield com.sun.crypto.provider.PBES2Core.salt:[B
42: aload 3
checkcast javax.crypto.spec.PBEParameterSpec
invokevirtual javax.crypto.spec.PBEParameterSpec.getIterationCount:()I
istore 9
start local 9 43: iload 9
ifne 46
44: sipush 4096
istore 9
45: goto 50
StackMap locals: int
StackMap stack:
46: iload 9
ifge 50
47: new java.security.InvalidAlgorithmParameterException
dup
48: ldc "Iteration count must be a positive number"
49: invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
50: StackMap locals:
StackMap stack:
aload 0
iload 9
putfield com.sun.crypto.provider.PBES2Core.iCount:I
51: aload 3
checkcast javax.crypto.spec.PBEParameterSpec
invokevirtual javax.crypto.spec.PBEParameterSpec.getParameterSpec:()Ljava/security/spec/AlgorithmParameterSpec;
52: astore 10
start local 10 53: aload 10
ifnull 60
54: aload 10
instanceof javax.crypto.spec.IvParameterSpec
ifeq 57
55: aload 0
aload 10
checkcast javax.crypto.spec.IvParameterSpec
putfield com.sun.crypto.provider.PBES2Core.ivSpec:Ljavax/crypto/spec/IvParameterSpec;
56: goto 69
57: StackMap locals: java.security.spec.AlgorithmParameterSpec
StackMap stack:
new java.security.InvalidAlgorithmParameterException
dup
58: ldc "Wrong parameter type: IV expected"
59: invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
60: StackMap locals:
StackMap stack:
iload 1
iconst_1
if_icmpeq 62
61: iload 1
iconst_3
if_icmpne 66
62: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.crypto.provider.PBES2Core.blkSize:I
newarray 8
astore 11
start local 11 63: aload 4
aload 11
invokevirtual java.security.SecureRandom.nextBytes:([B)V
64: aload 0
new javax.crypto.spec.IvParameterSpec
dup
aload 11
invokespecial javax.crypto.spec.IvParameterSpec.<init>:([B)V
putfield com.sun.crypto.provider.PBES2Core.ivSpec:Ljavax/crypto/spec/IvParameterSpec;
end local 11 65: goto 69
66: StackMap locals:
StackMap stack:
new java.security.InvalidAlgorithmParameterException
dup
67: ldc "Missing parameter type: IV expected"
68: invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
end local 10 end local 9 end local 8 69: StackMap locals: com.sun.crypto.provider.PBES2Core int java.security.Key java.security.spec.AlgorithmParameterSpec java.security.SecureRandom byte[] char[]
StackMap stack:
aload 5
arraylength
newarray 5
astore 6
70: iconst_0
istore 8
start local 8 71: goto 74
72: 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
iload 8
aload 5
iload 8
baload
bipush 127
iand
i2c
castore
73: iinc 8 1
StackMap locals:
StackMap stack:
74: iload 8
aload 6
arraylength
if_icmplt 72
end local 8 75: new javax.crypto.spec.PBEKeySpec
dup
aload 6
aload 0
getfield com.sun.crypto.provider.PBES2Core.salt:[B
aload 0
getfield com.sun.crypto.provider.PBES2Core.iCount:I
aload 0
getfield com.sun.crypto.provider.PBES2Core.keyLength:I
invokespecial javax.crypto.spec.PBEKeySpec.<init>:([C[BII)V
astore 7
start local 7 76: goto 81
end local 7 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: aload 6
ifnull 79
aload 6
iconst_0
invokestatic java.util.Arrays.fill:([CC)V
79: 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
ifnull 80
aload 5
iconst_0
invokestatic java.util.Arrays.fill:([BB)V
80: StackMap locals:
StackMap stack:
aload 12
athrow
start local 7 81: 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
ifnull 82
aload 6
iconst_0
invokestatic java.util.Arrays.fill:([CC)V
82: StackMap locals:
StackMap stack:
aload 5
ifnull 83
aload 5
iconst_0
invokestatic java.util.Arrays.fill:([BB)V
83: StackMap locals:
StackMap stack:
aconst_null
astore 8
start local 8 84: aload 0
getfield com.sun.crypto.provider.PBES2Core.kdf:Lcom/sun/crypto/provider/PBKDF2Core;
aload 7
invokevirtual com.sun.crypto.provider.PBKDF2Core.engineGenerateSecret:(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;
astore 8
85: 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
start local 9 87: new java.security.InvalidKeyException
dup
ldc "Cannot construct PBE key"
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
88: astore 10
start local 10 89: aload 10
aload 9
invokevirtual java.security.InvalidKeyException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
pop
90: aload 10
athrow
end local 10 end local 9 91: StackMap locals:
StackMap stack:
aload 8
invokeinterface javax.crypto.SecretKey.getEncoded:()[B
astore 9
start local 9 92: new javax.crypto.spec.SecretKeySpec
dup
aload 9
aload 0
getfield com.sun.crypto.provider.PBES2Core.cipherAlgo:Ljava/lang/String;
invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
astore 10
start local 10 93: aload 0
getfield com.sun.crypto.provider.PBES2Core.cipher:Lcom/sun/crypto/provider/CipherCore;
iload 1
aload 10
aload 0
getfield com.sun.crypto.provider.PBES2Core.ivSpec:Ljavax/crypto/spec/IvParameterSpec;
aload 4
invokevirtual com.sun.crypto.provider.CipherCore.init:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
94: return
end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 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 69 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 start local 1 start local 2 start local 3 start local 4 0: aconst_null
astore 5
start local 5 1: aload 3
ifnull 8
2: aload 3
ldc Ljavax/crypto/spec/PBEParameterSpec;
invokevirtual java.security.AlgorithmParameters.getParameterSpec:(Ljava/lang/Class;)Ljava/security/spec/AlgorithmParameterSpec;
astore 5
3: 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: new java.security.InvalidAlgorithmParameterException
dup
6: ldc "Wrong parameter type: PBE expected"
7: invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
8: StackMap locals:
StackMap stack:
aload 0
iload 1
aload 2
aload 5
aload 4
invokevirtual com.sun.crypto.provider.PBES2Core.engineInit:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
9: return
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 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 start local 1 start local 2 start local 3 0: aload 0
getfield com.sun.crypto.provider.PBES2Core.cipher:Lcom/sun/crypto/provider/CipherCore;
aload 1
iload 2
iload 3
invokevirtual com.sun.crypto.provider.CipherCore.update:([BII)[B
areturn
end local 3 end local 2 end local 1 end local 0 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 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 0
getfield com.sun.crypto.provider.PBES2Core.cipher:Lcom/sun/crypto/provider/CipherCore;
aload 1
iload 2
iload 3
1: aload 4
iload 5
2: invokevirtual com.sun.crypto.provider.CipherCore.update:([BII[BI)I
ireturn
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 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 start local 1 start local 2 start local 3 0: aload 0
getfield com.sun.crypto.provider.PBES2Core.cipher:Lcom/sun/crypto/provider/CipherCore;
aload 1
iload 2
iload 3
invokevirtual com.sun.crypto.provider.CipherCore.doFinal:([BII)[B
areturn
end local 3 end local 2 end local 1 end local 0 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 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 0
getfield com.sun.crypto.provider.PBES2Core.cipher:Lcom/sun/crypto/provider/CipherCore;
aload 1
iload 2
iload 3
1: aload 4
iload 5
2: invokevirtual com.sun.crypto.provider.CipherCore.doFinal:([BII[BI)I
ireturn
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 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 start local 1 0: aload 0
getfield com.sun.crypto.provider.PBES2Core.keyLength:I
ireturn
end local 1 end local 0 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 start local 1 0: aload 0
getfield com.sun.crypto.provider.PBES2Core.cipher:Lcom/sun/crypto/provider/CipherCore;
aload 1
invokevirtual com.sun.crypto.provider.CipherCore.wrap:(Ljava/security/Key;)[B
areturn
end local 1 end local 0 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 start local 1 start local 2 start local 3 0: aload 0
getfield com.sun.crypto.provider.PBES2Core.cipher:Lcom/sun/crypto/provider/CipherCore;
aload 1
aload 2
1: iload 3
2: invokevirtual com.sun.crypto.provider.CipherCore.unwrap:([BLjava/lang/String;I)Ljava/security/Key;
areturn
end local 3 end local 2 end local 1 end local 0 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