final class com.sun.crypto.provider.PKCS12PBECipherCore
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: com.sun.crypto.provider.PKCS12PBECipherCore
super_class: java.lang.Object
{
private com.sun.crypto.provider.CipherCore cipher;
descriptor: Lcom/sun/crypto/provider/CipherCore;
flags: (0x0002) ACC_PRIVATE
private int blockSize;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private int keySize;
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
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: 1024
static final int CIPHER_KEY;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 1
static final int CIPHER_IV;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 2
static final int MAC_KEY;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 3
static byte[] derive(char[], byte[], int, int, int);
descriptor: ([C[BIII)[B
flags: (0x0008) ACC_STATIC
Code:
stack=6, locals=24, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
arraylength
iconst_2
imul
istore 5
start local 5 1: iload 5
ifeq 3
2: iinc 5 2
3: StackMap locals: int
StackMap stack:
iload 5
newarray 8
astore 6
start local 6 4: iconst_0
istore 7
start local 7 5: iconst_0
istore 8
start local 8 6: goto 10
7: StackMap locals: byte[] int int
StackMap stack:
aload 6
iload 8
aload 0
iload 7
caload
bipush 8
iushr
sipush 255
iand
i2b
bastore
8: aload 6
iload 8
iconst_1
iadd
aload 0
iload 7
caload
sipush 255
iand
i2b
bastore
9: iinc 7 1
iinc 8 2
StackMap locals:
StackMap stack:
10: iload 7
aload 0
arraylength
if_icmplt 7
end local 8 end local 7 11: bipush 64
istore 7
start local 7 12: bipush 20
istore 8
start local 8 13: iload 3
iload 8
invokestatic com.sun.crypto.provider.PKCS12PBECipherCore.roundup:(II)I
iload 8
idiv
istore 9
start local 9 14: iload 7
newarray 8
astore 10
start local 10 15: aload 1
arraylength
iload 7
invokestatic com.sun.crypto.provider.PKCS12PBECipherCore.roundup:(II)I
istore 11
start local 11 16: aload 6
arraylength
iload 7
invokestatic com.sun.crypto.provider.PKCS12PBECipherCore.roundup:(II)I
istore 12
start local 12 17: iload 11
iload 12
iadd
newarray 8
astore 13
start local 13 18: iload 3
newarray 8
astore 14
start local 14 19: aload 10
iload 4
i2b
invokestatic java.util.Arrays.fill:([BB)V
20: aload 1
aload 13
iconst_0
iload 11
invokestatic com.sun.crypto.provider.PKCS12PBECipherCore.concat:([B[BII)V
21: aload 6
aload 13
iload 11
iload 12
invokestatic com.sun.crypto.provider.PKCS12PBECipherCore.concat:([B[BII)V
22: ldc "SHA1"
invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
astore 15
start local 15 23: iload 7
newarray 8
astore 17
start local 17 24: iload 7
newarray 8
astore 18
start local 18 25: iconst_0
istore 19
start local 19 26: StackMap locals: char[] byte[] int int int int byte[] int int int byte[] int int byte[] byte[] java.security.MessageDigest top byte[] byte[] int
StackMap stack:
aload 15
aload 10
invokevirtual java.security.MessageDigest.update:([B)V
27: aload 15
aload 13
invokevirtual java.security.MessageDigest.update:([B)V
28: aload 15
invokevirtual java.security.MessageDigest.digest:()[B
astore 16
start local 16 29: iconst_1
istore 20
start local 20 30: goto 33
31: StackMap locals: char[] byte[] int int int int byte[] int int int byte[] int int byte[] byte[] java.security.MessageDigest byte[] byte[] byte[] int int
StackMap stack:
aload 15
aload 16
invokevirtual java.security.MessageDigest.digest:([B)[B
astore 16
32: iinc 20 1
StackMap locals:
StackMap stack:
33: iload 20
iload 2
if_icmplt 31
end local 20 34: aload 16
iconst_0
aload 14
iload 8
iload 19
imul
iload 3
iload 8
invokestatic java.lang.Math.min:(II)I
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
35: iload 19
iconst_1
iadd
iload 9
if_icmpne 37
36: goto 60
37: StackMap locals:
StackMap stack:
aload 16
aload 17
iconst_0
aload 17
arraylength
invokestatic com.sun.crypto.provider.PKCS12PBECipherCore.concat:([B[BII)V
38: new java.math.BigInteger
dup
iconst_1
aload 17
invokespecial java.math.BigInteger.<init>:(I[B)V
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 20
start local 20 39: iconst_0
istore 21
start local 21 40: goto 55
41: StackMap locals: java.math.BigInteger int
StackMap stack:
aload 18
arraylength
iload 7
if_icmpeq 43
42: iload 7
newarray 8
astore 18
43: StackMap locals:
StackMap stack:
aload 13
iload 21
aload 18
iconst_0
iload 7
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
44: new java.math.BigInteger
dup
iconst_1
aload 18
invokespecial java.math.BigInteger.<init>:(I[B)V
astore 22
start local 22 45: aload 22
aload 20
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 22
46: aload 22
invokevirtual java.math.BigInteger.toByteArray:()[B
astore 18
47: aload 18
arraylength
iload 7
isub
istore 23
start local 23 48: iload 23
iflt 51
49: aload 18
iload 23
aload 13
iload 21
iload 7
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
50: goto 54
StackMap locals: java.math.BigInteger int
StackMap stack:
51: iload 23
ifge 54
52: aload 13
iload 21
iload 21
iload 23
ineg
iadd
iconst_0
invokestatic java.util.Arrays.fill:([BIIB)V
53: aload 18
iconst_0
aload 13
iload 21
iload 23
ineg
iadd
aload 18
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
end local 23 end local 22 54: StackMap locals:
StackMap stack:
iload 21
iload 7
iadd
istore 21
StackMap locals:
StackMap stack:
55: iload 21
aload 13
arraylength
if_icmplt 41
end local 21 end local 20 56: iinc 19 1
iload 3
iload 8
isub
istore 3
end local 16 57: goto 26
end local 19 end local 18 end local 17 end local 15 58: StackMap locals: char[] byte[] int int int int byte[] int int int byte[] int int byte[] byte[]
StackMap stack: java.lang.Exception
astore 15
start local 15 59: new java.lang.RuntimeException
dup
new java.lang.StringBuilder
dup
ldc "internal error: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 15
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
end local 15 60: StackMap locals:
StackMap stack:
aload 14
areturn
end local 14 end local 13 end local 12 end local 11 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 61 0 chars [C
0 61 1 salt [B
0 61 2 ic I
0 61 3 n I
0 61 4 type I
1 61 5 length I
4 61 6 passwd [B
5 11 7 i I
6 11 8 j I
12 61 7 v I
13 61 8 u I
14 61 9 c I
15 61 10 D [B
16 61 11 s I
17 61 12 p I
18 61 13 I [B
19 61 14 key [B
23 58 15 sha Ljava/security/MessageDigest;
29 57 16 Ai [B
24 58 17 B [B
25 58 18 tmp [B
26 58 19 i I
30 34 20 r I
39 56 20 B1 Ljava/math/BigInteger;
40 56 21 j I
45 54 22 Ij Ljava/math/BigInteger;
48 54 23 trunc I
59 60 15 e Ljava/lang/Exception;
Exception table:
from to target type
22 58 58 Class java.lang.Exception
MethodParameters:
Name Flags
chars
salt
ic
n
type
private static int roundup(int, int);
descriptor: (II)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: iload 0
iload 1
iconst_1
isub
iadd
iload 1
idiv
iload 1
imul
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 x I
0 1 1 y I
MethodParameters:
Name Flags
x
y
private static void concat(byte[], byte[], int, int);
descriptor: ([B[BII)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=7, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iload 3
aload 0
arraylength
idiv
istore 4
start local 4 1: iconst_0
istore 6
start local 6 2: iconst_0
istore 5
start local 5 3: goto 6
4: StackMap locals: int int int
StackMap stack:
aload 0
iconst_0
aload 1
iload 5
iload 2
iadd
aload 0
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
5: iinc 6 1
iload 5
aload 0
arraylength
iadd
istore 5
StackMap locals:
StackMap stack:
6: iload 6
iload 4
if_icmplt 4
7: aload 0
iconst_0
aload 1
iload 5
iload 2
iadd
iload 3
iload 5
isub
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
8: return
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 9 0 src [B
0 9 1 dst [B
0 9 2 start I
0 9 3 len I
1 9 4 loop I
3 9 5 off I
2 9 6 i I
MethodParameters:
Name Flags
src
dst
start
len
void <init>(java.lang.String, int);
descriptor: (Ljava/lang/String;I)V
flags: (0x0000)
Code:
stack=5, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aconst_null
putfield com.sun.crypto.provider.PKCS12PBECipherCore.algo:Ljava/lang/String;
2: aload 0
aconst_null
putfield com.sun.crypto.provider.PKCS12PBECipherCore.salt:[B
3: aload 0
iconst_0
putfield com.sun.crypto.provider.PKCS12PBECipherCore.iCount:I
4: aload 0
aload 1
putfield com.sun.crypto.provider.PKCS12PBECipherCore.algo:Ljava/lang/String;
5: aconst_null
astore 3
start local 3 6: aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.algo:Ljava/lang/String;
ldc "DESede"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 9
7: new com.sun.crypto.provider.DESedeCrypt
dup
invokespecial com.sun.crypto.provider.DESedeCrypt.<init>:()V
astore 3
8: goto 15
StackMap locals: com.sun.crypto.provider.PKCS12PBECipherCore java.lang.String int com.sun.crypto.provider.SymmetricCipher
StackMap stack:
9: aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.algo:Ljava/lang/String;
ldc "RC2"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 12
10: new com.sun.crypto.provider.RC2Crypt
dup
invokespecial com.sun.crypto.provider.RC2Crypt.<init>:()V
astore 3
11: goto 15
12: StackMap locals:
StackMap stack:
new java.security.NoSuchAlgorithmException
dup
new java.lang.StringBuilder
dup
ldc "No Cipher implementation for PBEWithSHA1And"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
13: aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.algo:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
14: invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;)V
athrow
15: StackMap locals:
StackMap stack:
aload 0
aload 3
invokevirtual com.sun.crypto.provider.SymmetricCipher.getBlockSize:()I
putfield com.sun.crypto.provider.PKCS12PBECipherCore.blockSize:I
16: aload 0
new com.sun.crypto.provider.CipherCore
dup
aload 3
aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.blockSize:I
invokespecial com.sun.crypto.provider.CipherCore.<init>:(Lcom/sun/crypto/provider/SymmetricCipher;I)V
putfield com.sun.crypto.provider.PKCS12PBECipherCore.cipher:Lcom/sun/crypto/provider/CipherCore;
17: aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.cipher:Lcom/sun/crypto/provider/CipherCore;
ldc "CBC"
invokevirtual com.sun.crypto.provider.CipherCore.setMode:(Ljava/lang/String;)V
18: aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.cipher:Lcom/sun/crypto/provider/CipherCore;
ldc "PKCS5Padding"
invokevirtual com.sun.crypto.provider.CipherCore.setPadding:(Ljava/lang/String;)V
19: goto 21
StackMap locals:
StackMap stack: javax.crypto.NoSuchPaddingException
20: pop
21: StackMap locals:
StackMap stack:
aload 0
iload 2
putfield com.sun.crypto.provider.PKCS12PBECipherCore.keySize:I
22: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 23 0 this Lcom/sun/crypto/provider/PKCS12PBECipherCore;
0 23 1 symmCipherAlg Ljava/lang/String;
0 23 2 defKeySize I
6 23 3 symmCipher Lcom/sun/crypto/provider/SymmetricCipher;
Exception table:
from to target type
18 19 20 Class javax.crypto.NoSuchPaddingException
Exceptions:
throws java.security.NoSuchAlgorithmException
MethodParameters:
Name Flags
symmCipherAlg
defKeySize
void implSetMode(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 1
ifnull 4
aload 1
ldc "CBC"
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifne 4
1: new java.security.NoSuchAlgorithmException
dup
new java.lang.StringBuilder
dup
ldc "Invalid cipher mode: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
2: aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
3: invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/sun/crypto/provider/PKCS12PBECipherCore;
0 5 1 mode Ljava/lang/String;
Exceptions:
throws java.security.NoSuchAlgorithmException
MethodParameters:
Name Flags
mode
void implSetPadding(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 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/PKCS12PBECipherCore;
0 6 1 padding Ljava/lang/String;
Exceptions:
throws javax.crypto.NoSuchPaddingException
MethodParameters:
Name Flags
padding
int implGetBlockSize();
descriptor: ()I
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.blockSize:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/sun/crypto/provider/PKCS12PBECipherCore;
int implGetOutputSize(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.PKCS12PBECipherCore.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/PKCS12PBECipherCore;
0 1 1 inLen I
MethodParameters:
Name Flags
inLen
byte[] implGetIV();
descriptor: ()[B
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.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/PKCS12PBECipherCore;
java.security.AlgorithmParameters implGetParameters();
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.PKCS12PBECipherCore.salt:[B
ifnonnull 5
2: aload 0
bipush 20
newarray 8
putfield com.sun.crypto.provider.PKCS12PBECipherCore.salt:[B
3: getstatic com.sun.crypto.provider.SunJCE.RANDOM:Ljava/security/SecureRandom;
aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.salt:[B
invokevirtual java.security.SecureRandom.nextBytes:([B)V
4: aload 0
sipush 1024
putfield com.sun.crypto.provider.PKCS12PBECipherCore.iCount:I
5: StackMap locals: java.security.AlgorithmParameters
StackMap stack:
new javax.crypto.spec.PBEParameterSpec
dup
aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.salt:[B
aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.iCount:I
invokespecial javax.crypto.spec.PBEParameterSpec.<init>:([BI)V
astore 2
start local 2 6: new java.lang.StringBuilder
dup
ldc "PBEWithSHA1And"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
7: aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.algo:Ljava/lang/String;
ldc "RC2"
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifeq 8
ldc "RC2_40"
goto 9
StackMap locals: com.sun.crypto.provider.PKCS12PBECipherCore java.security.AlgorithmParameters javax.crypto.spec.PBEParameterSpec
StackMap stack: java.lang.StringBuilder
8: aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.algo:Ljava/lang/String;
StackMap locals: com.sun.crypto.provider.PKCS12PBECipherCore java.security.AlgorithmParameters javax.crypto.spec.PBEParameterSpec
StackMap stack: java.lang.StringBuilder java.lang.String
9: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
10: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
11: ldc "SunJCE"
12: invokestatic java.security.AlgorithmParameters.getInstance:(Ljava/lang/String;Ljava/lang/String;)Ljava/security/AlgorithmParameters;
astore 1
13: goto 16
StackMap locals:
StackMap stack: java.security.GeneralSecurityException
14: pop
15: new java.lang.RuntimeException
dup
ldc "SunJCE provider is not configured properly"
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
16: StackMap locals:
StackMap stack:
aload 1
aload 2
invokevirtual java.security.AlgorithmParameters.init:(Ljava/security/spec/AlgorithmParameterSpec;)V
17: goto 20
StackMap locals:
StackMap stack: java.security.spec.InvalidParameterSpecException
18: pop
19: new java.lang.RuntimeException
dup
ldc "PBEParameterSpec not supported"
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
20: StackMap locals:
StackMap stack:
aload 1
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 this Lcom/sun/crypto/provider/PKCS12PBECipherCore;
1 21 1 params Ljava/security/AlgorithmParameters;
6 21 2 pbeSpec Ljavax/crypto/spec/PBEParameterSpec;
Exception table:
from to target type
6 13 14 Class java.security.GeneralSecurityException
16 17 18 Class java.security.spec.InvalidParameterSpecException
void implInit(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=10, 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 0
aconst_null
putfield com.sun.crypto.provider.PKCS12PBECipherCore.salt:[B
2: aload 0
iconst_0
putfield com.sun.crypto.provider.PKCS12PBECipherCore.iCount:I
3: aload 2
instanceof javax.crypto.interfaces.PBEKey
ifeq 10
4: aload 2
checkcast javax.crypto.interfaces.PBEKey
5: astore 6
start local 6 6: aload 6
invokeinterface javax.crypto.interfaces.PBEKey.getPassword:()[C
astore 5
7: aload 0
aload 6
invokeinterface javax.crypto.interfaces.PBEKey.getSalt:()[B
putfield com.sun.crypto.provider.PKCS12PBECipherCore.salt:[B
8: aload 0
aload 6
invokeinterface javax.crypto.interfaces.PBEKey.getIterationCount:()I
putfield com.sun.crypto.provider.PKCS12PBECipherCore.iCount:I
end local 6 9: goto 23
StackMap locals: char[]
StackMap stack:
10: aload 2
instanceof javax.crypto.SecretKey
ifeq 22
11: aload 2
invokeinterface java.security.Key.getEncoded:()[B
astore 6
start local 6 12: aload 6
ifnull 14
13: 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 15
14: StackMap locals: byte[]
StackMap stack:
new java.security.InvalidKeyException
dup
ldc "Missing password"
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
athrow
15: StackMap locals:
StackMap stack:
aload 6
arraylength
newarray 5
astore 5
16: iconst_0
istore 7
start local 7 17: goto 20
18: StackMap locals: int
StackMap stack:
aload 5
iload 7
aload 6
iload 7
baload
bipush 127
iand
i2c
castore
19: iinc 7 1
StackMap locals:
StackMap stack:
20: iload 7
aload 5
arraylength
if_icmplt 18
end local 7 end local 6 21: goto 23
22: StackMap locals:
StackMap stack:
new java.security.InvalidKeyException
dup
ldc "SecretKey of PBE type required"
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
athrow
23: StackMap locals:
StackMap stack:
iload 1
iconst_2
if_icmpeq 25
24: iload 1
iconst_4
if_icmpne 29
25: StackMap locals:
StackMap stack:
aload 3
ifnonnull 29
aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.salt:[B
ifnull 26
aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.iCount:I
ifne 29
26: StackMap locals:
StackMap stack:
new java.security.InvalidAlgorithmParameterException
dup
27: ldc "Parameters missing"
28: invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
29: StackMap locals:
StackMap stack:
aload 3
ifnonnull 38
30: aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.salt:[B
ifnonnull 36
31: aload 0
bipush 20
newarray 8
putfield com.sun.crypto.provider.PKCS12PBECipherCore.salt:[B
32: aload 4
ifnull 35
33: aload 4
aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.salt:[B
invokevirtual java.security.SecureRandom.nextBytes:([B)V
34: goto 36
35: StackMap locals:
StackMap stack:
getstatic com.sun.crypto.provider.SunJCE.RANDOM:Ljava/security/SecureRandom;
aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.salt:[B
invokevirtual java.security.SecureRandom.nextBytes:([B)V
36: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.iCount:I
ifne 55
aload 0
sipush 1024
putfield com.sun.crypto.provider.PKCS12PBECipherCore.iCount:I
37: goto 55
StackMap locals:
StackMap stack:
38: aload 3
instanceof javax.crypto.spec.PBEParameterSpec
ifne 42
39: new java.security.InvalidAlgorithmParameterException
dup
40: ldc "PBEParameterSpec type required"
41: invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
42: StackMap locals:
StackMap stack:
aload 3
checkcast javax.crypto.spec.PBEParameterSpec
astore 6
start local 6 43: aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.salt:[B
ifnull 48
44: aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.salt:[B
aload 6
invokevirtual javax.crypto.spec.PBEParameterSpec.getSalt:()[B
invokestatic java.util.Arrays.equals:([B[B)Z
ifne 49
45: new java.security.InvalidAlgorithmParameterException
dup
46: ldc "Inconsistent value of salt between key and params"
47: invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
48: StackMap locals: javax.crypto.spec.PBEParameterSpec
StackMap stack:
aload 0
aload 6
invokevirtual javax.crypto.spec.PBEParameterSpec.getSalt:()[B
putfield com.sun.crypto.provider.PKCS12PBECipherCore.salt:[B
49: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.iCount:I
ifeq 54
50: aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.iCount:I
aload 6
invokevirtual javax.crypto.spec.PBEParameterSpec.getIterationCount:()I
if_icmpeq 55
51: new java.security.InvalidAlgorithmParameterException
dup
52: ldc "Different iteration count between key and params"
53: invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
54: StackMap locals:
StackMap stack:
aload 0
aload 6
invokevirtual javax.crypto.spec.PBEParameterSpec.getIterationCount:()I
putfield com.sun.crypto.provider.PKCS12PBECipherCore.iCount:I
end local 6 55: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.salt:[B
arraylength
bipush 8
if_icmpge 59
56: new java.security.InvalidAlgorithmParameterException
dup
57: ldc "Salt must be at least 8 bytes long"
58: invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
59: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.iCount:I
ifgt 63
60: new java.security.InvalidAlgorithmParameterException
dup
61: ldc "IterationCount must be a positive number"
62: invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
63: StackMap locals:
StackMap stack:
aload 5
aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.salt:[B
aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.iCount:I
64: aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.keySize:I
iconst_1
65: invokestatic com.sun.crypto.provider.PKCS12PBECipherCore.derive:([C[BIII)[B
astore 6
start local 6 66: new javax.crypto.spec.SecretKeySpec
dup
aload 6
aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.algo:Ljava/lang/String;
invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
astore 7
start local 7 67: aload 5
aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.salt:[B
aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.iCount:I
bipush 8
68: iconst_2
69: invokestatic com.sun.crypto.provider.PKCS12PBECipherCore.derive:([C[BIII)[B
astore 8
start local 8 70: new javax.crypto.spec.IvParameterSpec
dup
aload 8
iconst_0
bipush 8
invokespecial javax.crypto.spec.IvParameterSpec.<init>:([BII)V
astore 9
start local 9 71: aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.cipher:Lcom/sun/crypto/provider/CipherCore;
iload 1
aload 7
aload 9
aload 4
invokevirtual com.sun.crypto.provider.CipherCore.init:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
72: return
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 73 0 this Lcom/sun/crypto/provider/PKCS12PBECipherCore;
0 73 1 opmode I
0 73 2 key Ljava/security/Key;
0 73 3 params Ljava/security/spec/AlgorithmParameterSpec;
0 73 4 random Ljava/security/SecureRandom;
1 73 5 passwdChars [C
6 9 6 pbeKey Ljavax/crypto/interfaces/PBEKey;
12 21 6 passwdBytes [B
17 21 7 i I
43 55 6 pbeParams Ljavax/crypto/spec/PBEParameterSpec;
66 73 6 derivedKey [B
67 73 7 cipherKey Ljavax/crypto/SecretKey;
70 73 8 derivedIv [B
71 73 9 ivSpec Ljavax/crypto/spec/IvParameterSpec;
Exceptions:
throws java.security.InvalidKeyException, java.security.InvalidAlgorithmParameterException
MethodParameters:
Name Flags
opmode
key
params
random
void implInit(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;
astore 5
3: goto 6
StackMap locals: com.sun.crypto.provider.PKCS12PBECipherCore 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
ldc "requires PBE parameters"
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.PKCS12PBECipherCore.implInit:(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/PKCS12PBECipherCore;
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 paramSpec 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
void implInit(int, java.security.Key, java.security.SecureRandom);
descriptor: (ILjava/security/Key;Ljava/security/SecureRandom;)V
flags: (0x0000)
Code:
stack=5, locals=4, 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.PKCS12PBECipherCore.implInit:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
1: goto 4
StackMap locals:
StackMap stack: java.security.InvalidAlgorithmParameterException
2: pop
3: new java.security.InvalidKeyException
dup
ldc "requires PBE parameters"
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/sun/crypto/provider/PKCS12PBECipherCore;
0 5 1 opmode I
0 5 2 key Ljava/security/Key;
0 5 3 random Ljava/security/SecureRandom;
Exception table:
from to target type
0 1 2 Class java.security.InvalidAlgorithmParameterException
Exceptions:
throws java.security.InvalidKeyException
MethodParameters:
Name Flags
opmode
key
random
byte[] implUpdate(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.PKCS12PBECipherCore.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/PKCS12PBECipherCore;
0 1 1 in [B
0 1 2 inOff I
0 1 3 inLen I
MethodParameters:
Name Flags
in
inOff
inLen
int implUpdate(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.PKCS12PBECipherCore.cipher:Lcom/sun/crypto/provider/CipherCore;
aload 1
iload 2
iload 3
aload 4
iload 5
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 1 0 this Lcom/sun/crypto/provider/PKCS12PBECipherCore;
0 1 1 in [B
0 1 2 inOff I
0 1 3 inLen I
0 1 4 out [B
0 1 5 outOff I
Exceptions:
throws javax.crypto.ShortBufferException
MethodParameters:
Name Flags
in
inOff
inLen
out
outOff
byte[] implDoFinal(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.PKCS12PBECipherCore.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/PKCS12PBECipherCore;
0 1 1 in [B
0 1 2 inOff I
0 1 3 inLen I
Exceptions:
throws javax.crypto.IllegalBlockSizeException, javax.crypto.BadPaddingException
MethodParameters:
Name Flags
in
inOff
inLen
int implDoFinal(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.PKCS12PBECipherCore.cipher:Lcom/sun/crypto/provider/CipherCore;
aload 1
iload 2
iload 3
aload 4
iload 5
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 1 0 this Lcom/sun/crypto/provider/PKCS12PBECipherCore;
0 1 1 in [B
0 1 2 inOff I
0 1 3 inLen I
0 1 4 out [B
0 1 5 outOff I
Exceptions:
throws javax.crypto.ShortBufferException, javax.crypto.IllegalBlockSizeException, javax.crypto.BadPaddingException
MethodParameters:
Name Flags
in
inOff
inLen
out
outOff
int implGetKeySize(java.security.Key);
descriptor: (Ljava/security/Key;)I
flags: (0x0000)
Code:
stack=1, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.keySize:I
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/sun/crypto/provider/PKCS12PBECipherCore;
0 1 1 key Ljava/security/Key;
Exceptions:
throws java.security.InvalidKeyException
MethodParameters:
Name Flags
key
byte[] implWrap(java.security.Key);
descriptor: (Ljava/security/Key;)[B
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.sun.crypto.provider.PKCS12PBECipherCore.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/PKCS12PBECipherCore;
0 1 1 key Ljava/security/Key;
Exceptions:
throws javax.crypto.IllegalBlockSizeException, java.security.InvalidKeyException
MethodParameters:
Name Flags
key
java.security.Key implUnwrap(byte[], java.lang.String, int);
descriptor: ([BLjava/lang/String;I)Ljava/security/Key;
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.PKCS12PBECipherCore.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/PKCS12PBECipherCore;
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: "PKCS12PBECipherCore.java"
NestMembers:
com.sun.crypto.provider.PKCS12PBECipherCore$PBEWithSHA1AndDESede com.sun.crypto.provider.PKCS12PBECipherCore$PBEWithSHA1AndRC2_40
InnerClasses:
public final PBEWithSHA1AndDESede = com.sun.crypto.provider.PKCS12PBECipherCore$PBEWithSHA1AndDESede of com.sun.crypto.provider.PKCS12PBECipherCore
public final PBEWithSHA1AndRC2_40 = com.sun.crypto.provider.PKCS12PBECipherCore$PBEWithSHA1AndRC2_40 of com.sun.crypto.provider.PKCS12PBECipherCore