final class com.sun.crypto.provider.PBES1Core
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: com.sun.crypto.provider.PBES1Core
super_class: java.lang.Object
{
private com.sun.crypto.provider.CipherCore cipher;
descriptor: Lcom/sun/crypto/provider/CipherCore;
flags: (0x0002) ACC_PRIVATE
private java.security.MessageDigest md;
descriptor: Ljava/security/MessageDigest;
flags: (0x0002) ACC_PRIVATE
private int blkSize;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private java.lang.String algo;
descriptor: Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
private byte[] salt;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private int iCount;
descriptor: I
flags: (0x0002) ACC_PRIVATE
void <init>(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0000)
Code:
stack=5, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aconst_null
putfield com.sun.crypto.provider.PBES1Core.algo:Ljava/lang/String;
2: aload 0
aconst_null
putfield com.sun.crypto.provider.PBES1Core.salt:[B
3: aload 0
bipush 10
putfield com.sun.crypto.provider.PBES1Core.iCount:I
4: aload 0
aload 1
putfield com.sun.crypto.provider.PBES1Core.algo:Ljava/lang/String;
5: aload 0
getfield com.sun.crypto.provider.PBES1Core.algo:Ljava/lang/String;
ldc "DES"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 10
6: aload 0
new com.sun.crypto.provider.CipherCore
dup
new com.sun.crypto.provider.DESCrypt
dup
invokespecial com.sun.crypto.provider.DESCrypt.<init>:()V
7: bipush 8
invokespecial com.sun.crypto.provider.CipherCore.<init>:(Lcom/sun/crypto/provider/SymmetricCipher;I)V
8: putfield com.sun.crypto.provider.PBES1Core.cipher:Lcom/sun/crypto/provider/CipherCore;
9: goto 18
StackMap locals: com.sun.crypto.provider.PBES1Core java.lang.String
StackMap stack:
10: aload 0
getfield com.sun.crypto.provider.PBES1Core.algo:Ljava/lang/String;
ldc "DESede"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 15
11: aload 0
new com.sun.crypto.provider.CipherCore
dup
new com.sun.crypto.provider.DESedeCrypt
dup
invokespecial com.sun.crypto.provider.DESedeCrypt.<init>:()V
12: bipush 8
invokespecial com.sun.crypto.provider.CipherCore.<init>:(Lcom/sun/crypto/provider/SymmetricCipher;I)V
13: putfield com.sun.crypto.provider.PBES1Core.cipher:Lcom/sun/crypto/provider/CipherCore;
14: goto 18
15: StackMap locals:
StackMap stack:
new java.security.NoSuchAlgorithmException
dup
new java.lang.StringBuilder
dup
ldc "No Cipher implementation for PBEWithMD5And"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
16: aload 0
getfield com.sun.crypto.provider.PBES1Core.algo:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
17: invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;)V
athrow
18: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.crypto.provider.PBES1Core.cipher:Lcom/sun/crypto/provider/CipherCore;
ldc "CBC"
invokevirtual com.sun.crypto.provider.CipherCore.setMode:(Ljava/lang/String;)V
19: aload 0
getfield com.sun.crypto.provider.PBES1Core.cipher:Lcom/sun/crypto/provider/CipherCore;
ldc "PKCS5Padding"
invokevirtual com.sun.crypto.provider.CipherCore.setPadding:(Ljava/lang/String;)V
20: aload 0
ldc "MD5"
invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
putfield com.sun.crypto.provider.PBES1Core.md:Ljava/security/MessageDigest;
21: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 this Lcom/sun/crypto/provider/PBES1Core;
0 22 1 cipherAlg Ljava/lang/String;
Exceptions:
throws java.security.NoSuchAlgorithmException, javax.crypto.NoSuchPaddingException
MethodParameters:
Name Flags
cipherAlg
void setMode(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.sun.crypto.provider.PBES1Core.cipher:Lcom/sun/crypto/provider/CipherCore;
aload 1
invokevirtual com.sun.crypto.provider.CipherCore.setMode:(Ljava/lang/String;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/sun/crypto/provider/PBES1Core;
0 2 1 mode Ljava/lang/String;
Exceptions:
throws java.security.NoSuchAlgorithmException
MethodParameters:
Name Flags
mode
void setPadding(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.sun.crypto.provider.PBES1Core.cipher:Lcom/sun/crypto/provider/CipherCore;
aload 1
invokevirtual com.sun.crypto.provider.CipherCore.setPadding:(Ljava/lang/String;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/sun/crypto/provider/PBES1Core;
0 2 1 paddingScheme Ljava/lang/String;
Exceptions:
throws javax.crypto.NoSuchPaddingException
MethodParameters:
Name Flags
paddingScheme
int getBlockSize();
descriptor: ()I
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: bipush 8
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/sun/crypto/provider/PBES1Core;
int getOutputSize(int);
descriptor: (I)I
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.sun.crypto.provider.PBES1Core.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/PBES1Core;
0 1 1 inputLen I
MethodParameters:
Name Flags
inputLen
byte[] getIV();
descriptor: ()[B
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.sun.crypto.provider.PBES1Core.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/PBES1Core;
java.security.AlgorithmParameters getParameters();
descriptor: ()Ljava/security/AlgorithmParameters;
flags: (0x0000)
Code:
stack=4, locals=3, args_size=1
start local 0 0: aconst_null
astore 1
start local 1 1: aload 0
getfield com.sun.crypto.provider.PBES1Core.salt:[B
ifnonnull 4
2: aload 0
bipush 8
newarray 8
putfield com.sun.crypto.provider.PBES1Core.salt:[B
3: invokestatic com.sun.crypto.provider.SunJCE.getRandom:()Ljava/security/SecureRandom;
aload 0
getfield com.sun.crypto.provider.PBES1Core.salt:[B
invokevirtual java.security.SecureRandom.nextBytes:([B)V
4: StackMap locals: java.security.AlgorithmParameters
StackMap stack:
new javax.crypto.spec.PBEParameterSpec
dup
aload 0
getfield com.sun.crypto.provider.PBES1Core.salt:[B
aload 0
getfield com.sun.crypto.provider.PBES1Core.iCount:I
invokespecial javax.crypto.spec.PBEParameterSpec.<init>:([BI)V
astore 2
start local 2 5: new java.lang.StringBuilder
dup
ldc "PBEWithMD5And"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
6: aload 0
getfield com.sun.crypto.provider.PBES1Core.algo:Ljava/lang/String;
ldc "DES"
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifeq 7
ldc "DES"
goto 8
StackMap locals: com.sun.crypto.provider.PBES1Core java.security.AlgorithmParameters javax.crypto.spec.PBEParameterSpec
StackMap stack: java.lang.StringBuilder
7: ldc "TripleDES"
StackMap locals: com.sun.crypto.provider.PBES1Core java.security.AlgorithmParameters javax.crypto.spec.PBEParameterSpec
StackMap stack: java.lang.StringBuilder java.lang.String
8: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
9: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
10: invokestatic com.sun.crypto.provider.SunJCE.getInstance:()Lcom/sun/crypto/provider/SunJCE;
11: invokestatic java.security.AlgorithmParameters.getInstance:(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/AlgorithmParameters;
astore 1
12: aload 1
aload 2
invokevirtual java.security.AlgorithmParameters.init:(Ljava/security/spec/AlgorithmParameterSpec;)V
13: goto 18
StackMap locals:
StackMap stack: java.security.NoSuchAlgorithmException
14: pop
15: new java.lang.RuntimeException
dup
ldc "SunJCE called, but not configured"
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
16: StackMap locals:
StackMap stack: java.security.spec.InvalidParameterSpecException
pop
17: new java.lang.RuntimeException
dup
ldc "PBEParameterSpec not supported"
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
18: StackMap locals:
StackMap stack:
aload 1
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Lcom/sun/crypto/provider/PBES1Core;
1 19 1 params Ljava/security/AlgorithmParameters;
5 19 2 pbeSpec Ljavax/crypto/spec/PBEParameterSpec;
Exception table:
from to target type
5 13 14 Class java.security.NoSuchAlgorithmException
5 13 16 Class java.security.spec.InvalidParameterSpecException
void init(int, java.security.Key, java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom);
descriptor: (ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
flags: (0x0000)
Code:
stack=6, locals=9, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: iload 1
iconst_2
if_icmpeq 2
1: iload 1
iconst_4
if_icmpne 4
StackMap locals:
StackMap stack:
2: aload 3
ifnonnull 4
3: new java.security.InvalidAlgorithmParameterException
dup
ldc "Parameters missing"
invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
aload 2
ifnonnull 6
5: new java.security.InvalidKeyException
dup
ldc "Null key"
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals:
StackMap stack:
aload 2
invokeinterface java.security.Key.getEncoded:()[B
astore 6
start local 6 7: aload 6
ifnull 9
8: 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 10
9: StackMap locals: com.sun.crypto.provider.PBES1Core int java.security.Key java.security.spec.AlgorithmParameterSpec java.security.SecureRandom top byte[]
StackMap stack:
new java.security.InvalidKeyException
dup
ldc "Missing password"
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
athrow
10: StackMap locals:
StackMap stack:
aload 3
ifnonnull 14
11: aload 0
bipush 8
newarray 8
putfield com.sun.crypto.provider.PBES1Core.salt:[B
12: aload 4
aload 0
getfield com.sun.crypto.provider.PBES1Core.salt:[B
invokevirtual java.security.SecureRandom.nextBytes:([B)V
13: goto 28
14: StackMap locals:
StackMap stack:
aload 3
instanceof javax.crypto.spec.PBEParameterSpec
ifne 18
15: new java.security.InvalidAlgorithmParameterException
dup
16: ldc "Wrong parameter type: PBE expected"
17: invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
18: StackMap locals:
StackMap stack:
aload 0
aload 3
checkcast javax.crypto.spec.PBEParameterSpec
invokevirtual javax.crypto.spec.PBEParameterSpec.getSalt:()[B
putfield com.sun.crypto.provider.PBES1Core.salt:[B
19: aload 0
getfield com.sun.crypto.provider.PBES1Core.salt:[B
arraylength
bipush 8
if_icmpeq 23
20: new java.security.InvalidAlgorithmParameterException
dup
21: ldc "Salt must be 8 bytes long"
22: invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
23: StackMap locals:
StackMap stack:
aload 0
aload 3
checkcast javax.crypto.spec.PBEParameterSpec
invokevirtual javax.crypto.spec.PBEParameterSpec.getIterationCount:()I
putfield com.sun.crypto.provider.PBES1Core.iCount:I
24: aload 0
getfield com.sun.crypto.provider.PBES1Core.iCount:I
ifgt 28
25: new java.security.InvalidAlgorithmParameterException
dup
26: ldc "IterationCount must be a positive number"
27: invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
28: StackMap locals:
StackMap stack:
aload 0
aload 6
invokevirtual com.sun.crypto.provider.PBES1Core.deriveCipherKey:([B)[B
astore 5
start local 5 29: goto 33
end local 5 StackMap locals:
StackMap stack: java.lang.Throwable
30: astore 7
31: aload 6
ifnull 32
aload 6
iconst_0
invokestatic java.util.Arrays.fill:([BB)V
32: StackMap locals: java.lang.Throwable
StackMap stack:
aload 7
athrow
start local 5 33: StackMap locals: com.sun.crypto.provider.PBES1Core int java.security.Key java.security.spec.AlgorithmParameterSpec java.security.SecureRandom byte[] byte[]
StackMap stack:
aload 6
ifnull 34
aload 6
iconst_0
invokestatic java.util.Arrays.fill:([BB)V
34: StackMap locals:
StackMap stack:
new javax.crypto.spec.SecretKeySpec
dup
aload 5
iconst_0
35: aload 5
arraylength
bipush 8
isub
aload 0
getfield com.sun.crypto.provider.PBES1Core.algo:Ljava/lang/String;
36: invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BIILjava/lang/String;)V
astore 7
start local 7 37: new javax.crypto.spec.IvParameterSpec
dup
aload 5
38: aload 5
arraylength
bipush 8
isub
39: bipush 8
40: invokespecial javax.crypto.spec.IvParameterSpec.<init>:([BII)V
astore 8
start local 8 41: aload 0
getfield com.sun.crypto.provider.PBES1Core.cipher:Lcom/sun/crypto/provider/CipherCore;
iload 1
aload 7
aload 8
aload 4
invokevirtual com.sun.crypto.provider.CipherCore.init:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
42: return
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 43 0 this Lcom/sun/crypto/provider/PBES1Core;
0 43 1 opmode I
0 43 2 key Ljava/security/Key;
0 43 3 params Ljava/security/spec/AlgorithmParameterSpec;
0 43 4 random Ljava/security/SecureRandom;
29 30 5 derivedKey [B
33 43 5 derivedKey [B
7 43 6 passwdBytes [B
37 43 7 cipherKey Ljavax/crypto/spec/SecretKeySpec;
41 43 8 ivSpec Ljavax/crypto/spec/IvParameterSpec;
Exception table:
from to target type
7 30 30 any
Exceptions:
throws java.security.InvalidKeyException, java.security.InvalidAlgorithmParameterException
MethodParameters:
Name Flags
opmode
key
params
random
private byte[] deriveCipherKey(byte[]);
descriptor: ([B)[B
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=6, args_size=2
start local 0 start local 1 0: aconst_null
astore 2
start local 2 1: aload 0
getfield com.sun.crypto.provider.PBES1Core.algo:Ljava/lang/String;
ldc "DES"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 15
2: aload 1
arraylength
aload 0
getfield com.sun.crypto.provider.PBES1Core.salt:[B
arraylength
invokestatic java.lang.Math.addExact:(II)I
newarray 8
astore 3
start local 3 3: aload 1
iconst_0
aload 3
iconst_0
aload 1
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
4: aload 0
getfield com.sun.crypto.provider.PBES1Core.salt:[B
iconst_0
aload 3
aload 1
arraylength
aload 0
getfield com.sun.crypto.provider.PBES1Core.salt:[B
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
5: aload 3
astore 4
start local 4 6: iconst_0
istore 5
start local 5 7: goto 11
8: StackMap locals: com.sun.crypto.provider.PBES1Core byte[] byte[] byte[] byte[] int
StackMap stack:
aload 0
getfield com.sun.crypto.provider.PBES1Core.md:Ljava/security/MessageDigest;
aload 4
invokevirtual java.security.MessageDigest.update:([B)V
9: aload 0
getfield com.sun.crypto.provider.PBES1Core.md:Ljava/security/MessageDigest;
invokevirtual java.security.MessageDigest.digest:()[B
astore 4
10: iinc 5 1
StackMap locals:
StackMap stack:
11: iload 5
aload 0
getfield com.sun.crypto.provider.PBES1Core.iCount:I
if_icmplt 8
end local 5 12: aload 3
iconst_0
invokestatic java.util.Arrays.fill:([BB)V
13: aload 4
astore 2
end local 4 end local 3 14: goto 48
StackMap locals:
StackMap stack:
15: aload 0
getfield com.sun.crypto.provider.PBES1Core.algo:Ljava/lang/String;
ldc "DESede"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 48
16: iconst_0
istore 3
start local 3 17: goto 21
18: StackMap locals: int
StackMap stack:
aload 0
getfield com.sun.crypto.provider.PBES1Core.salt:[B
iload 3
baload
aload 0
getfield com.sun.crypto.provider.PBES1Core.salt:[B
iload 3
iconst_4
iadd
baload
if_icmpeq 20
19: goto 22
20: StackMap locals:
StackMap stack:
iinc 3 1
StackMap locals:
StackMap stack:
21: iload 3
iconst_4
if_icmplt 18
22: StackMap locals:
StackMap stack:
iload 3
iconst_4
if_icmpne 29
23: iconst_0
istore 3
goto 28
24: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.crypto.provider.PBES1Core.salt:[B
iload 3
baload
istore 4
start local 4 25: aload 0
getfield com.sun.crypto.provider.PBES1Core.salt:[B
iload 3
aload 0
getfield com.sun.crypto.provider.PBES1Core.salt:[B
iconst_3
iload 3
isub
baload
bastore
26: aload 0
getfield com.sun.crypto.provider.PBES1Core.salt:[B
iconst_3
iload 3
isub
iload 4
bastore
end local 4 27: iinc 3 1
StackMap locals:
StackMap stack:
28: iload 3
iconst_2
if_icmplt 24
29: StackMap locals:
StackMap stack:
aconst_null
astore 4
start local 4 30: bipush 32
newarray 8
astore 2
31: iconst_0
istore 3
goto 47
32: StackMap locals: byte[]
StackMap stack:
aload 0
getfield com.sun.crypto.provider.PBES1Core.salt:[B
arraylength
iconst_2
idiv
newarray 8
astore 4
33: aload 0
getfield com.sun.crypto.provider.PBES1Core.salt:[B
iload 3
aload 0
getfield com.sun.crypto.provider.PBES1Core.salt:[B
arraylength
iconst_2
idiv
imul
aload 4
iconst_0
34: aload 4
arraylength
35: invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
36: iconst_0
istore 5
start local 5 37: goto 42
38: StackMap locals: int
StackMap stack:
aload 0
getfield com.sun.crypto.provider.PBES1Core.md:Ljava/security/MessageDigest;
aload 4
invokevirtual java.security.MessageDigest.update:([B)V
39: aload 0
getfield com.sun.crypto.provider.PBES1Core.md:Ljava/security/MessageDigest;
aload 1
invokevirtual java.security.MessageDigest.update:([B)V
40: aload 0
getfield com.sun.crypto.provider.PBES1Core.md:Ljava/security/MessageDigest;
invokevirtual java.security.MessageDigest.digest:()[B
astore 4
41: iinc 5 1
StackMap locals:
StackMap stack:
42: iload 5
aload 0
getfield com.sun.crypto.provider.PBES1Core.iCount:I
if_icmplt 38
end local 5 43: aload 4
iconst_0
aload 2
iload 3
bipush 16
imul
44: aload 4
arraylength
45: invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
46: iinc 3 1
StackMap locals:
StackMap stack:
47: iload 3
iconst_2
if_icmplt 32
end local 4 end local 3 48: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.crypto.provider.PBES1Core.md:Ljava/security/MessageDigest;
invokevirtual java.security.MessageDigest.reset:()V
49: aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 50 0 this Lcom/sun/crypto/provider/PBES1Core;
0 50 1 passwdBytes [B
1 50 2 result [B
3 14 3 concat [B
6 14 4 toBeHashed [B
7 12 5 i I
17 48 3 i I
25 27 4 tmp B
30 48 4 toBeHashed [B
37 43 5 j I
MethodParameters:
Name Flags
passwdBytes
void init(int, java.security.Key, java.security.AlgorithmParameters, java.security.SecureRandom);
descriptor: (ILjava/security/Key;Ljava/security/AlgorithmParameters;Ljava/security/SecureRandom;)V
flags: (0x0000)
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 6
2: aload 3
ldc Ljavax/crypto/spec/PBEParameterSpec;
invokevirtual java.security.AlgorithmParameters.getParameterSpec:(Ljava/lang/Class;)Ljava/security/spec/AlgorithmParameterSpec;
checkcast javax.crypto.spec.PBEParameterSpec
astore 5
3: goto 6
StackMap locals: com.sun.crypto.provider.PBES1Core int java.security.Key java.security.AlgorithmParameters java.security.SecureRandom javax.crypto.spec.PBEParameterSpec
StackMap stack: java.security.spec.InvalidParameterSpecException
4: pop
5: new java.security.InvalidAlgorithmParameterException
dup
ldc "Wrong parameter type: PBE expected"
invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals:
StackMap stack:
aload 0
iload 1
aload 2
aload 5
aload 4
invokevirtual com.sun.crypto.provider.PBES1Core.init:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
7: 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 8 0 this Lcom/sun/crypto/provider/PBES1Core;
0 8 1 opmode I
0 8 2 key Ljava/security/Key;
0 8 3 params Ljava/security/AlgorithmParameters;
0 8 4 random Ljava/security/SecureRandom;
1 8 5 pbeSpec Ljavax/crypto/spec/PBEParameterSpec;
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
byte[] update(byte[], int, int);
descriptor: ([BII)[B
flags: (0x0000)
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.PBES1Core.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/PBES1Core;
0 1 1 input [B
0 1 2 inputOffset I
0 1 3 inputLen I
MethodParameters:
Name Flags
input
inputOffset
inputLen
int update(byte[], int, int, byte[], int);
descriptor: ([BII[BI)I
flags: (0x0000)
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.PBES1Core.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/PBES1Core;
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
byte[] doFinal(byte[], int, int);
descriptor: ([BII)[B
flags: (0x0000)
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.PBES1Core.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/PBES1Core;
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
int doFinal(byte[], int, int, byte[], int);
descriptor: ([BII[BI)I
flags: (0x0000)
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.PBES1Core.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/PBES1Core;
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
byte[] wrap(java.security.Key);
descriptor: (Ljava/security/Key;)[B
flags: (0x0000)
Code:
stack=4, locals=5, args_size=2
start local 0 start local 1 0: aconst_null
astore 2
start local 2 1: aconst_null
astore 3
start local 3 2: aload 1
invokeinterface java.security.Key.getEncoded:()[B
astore 3
3: aload 3
ifnull 4
aload 3
arraylength
ifne 5
4: StackMap locals: byte[] byte[]
StackMap stack:
new java.security.InvalidKeyException
dup
ldc "Cannot get an encoding of the key to be wrapped"
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
athrow
5: StackMap locals:
StackMap stack:
aload 0
aload 3
iconst_0
aload 3
arraylength
invokevirtual com.sun.crypto.provider.PBES1Core.doFinal:([BII)[B
astore 2
6: goto 12
StackMap locals:
StackMap stack: javax.crypto.BadPaddingException
7: pop
8: aload 3
ifnull 13
aload 3
iconst_0
invokestatic java.util.Arrays.fill:([BB)V
goto 13
9: StackMap locals:
StackMap stack: java.lang.Throwable
astore 4
10: aload 3
ifnull 11
aload 3
iconst_0
invokestatic java.util.Arrays.fill:([BB)V
11: StackMap locals: java.lang.Throwable
StackMap stack:
aload 4
athrow
12: StackMap locals:
StackMap stack:
aload 3
ifnull 13
aload 3
iconst_0
invokestatic java.util.Arrays.fill:([BB)V
13: StackMap locals:
StackMap stack:
aload 2
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lcom/sun/crypto/provider/PBES1Core;
0 14 1 key Ljava/security/Key;
1 14 2 result [B
2 14 3 encodedKey [B
Exception table:
from to target type
2 6 7 Class javax.crypto.BadPaddingException
2 8 9 any
Exceptions:
throws javax.crypto.IllegalBlockSizeException, java.security.InvalidKeyException
MethodParameters:
Name Flags
key
java.security.Key unwrap(byte[], java.lang.String, int);
descriptor: ([BLjava/lang/String;I)Ljava/security/Key;
flags: (0x0000)
Code:
stack=4, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
iconst_0
aload 1
arraylength
invokevirtual com.sun.crypto.provider.PBES1Core.doFinal:([BII)[B
astore 4
start local 4 1: goto 6
end local 4 StackMap locals:
StackMap stack: javax.crypto.BadPaddingException
2: pop
3: new java.security.InvalidKeyException
dup
ldc "The wrapped key is not padded correctly"
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack: javax.crypto.IllegalBlockSizeException
pop
5: new java.security.InvalidKeyException
dup
ldc "The wrapped key does not have the correct length"
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
athrow
start local 4 6: StackMap locals: byte[]
StackMap stack:
aload 4
aload 2
7: iload 3
8: invokestatic com.sun.crypto.provider.ConstructKeys.constructKey:([BLjava/lang/String;I)Ljava/security/Key;
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lcom/sun/crypto/provider/PBES1Core;
0 9 1 wrappedKey [B
0 9 2 wrappedKeyAlgorithm Ljava/lang/String;
0 9 3 wrappedKeyType I
1 2 4 encodedKey [B
6 9 4 encodedKey [B
Exception table:
from to target type
0 1 2 Class javax.crypto.BadPaddingException
0 1 4 Class javax.crypto.IllegalBlockSizeException
Exceptions:
throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException
MethodParameters:
Name Flags
wrappedKey
wrappedKeyAlgorithm
wrappedKeyType
}
SourceFile: "PBES1Core.java"