abstract class com.sun.crypto.provider.PBMAC1Core extends com.sun.crypto.provider.HmacCore
minor version: 0
major version: 59
flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
this_class: com.sun.crypto.provider.PBMAC1Core
super_class: com.sun.crypto.provider.HmacCore
{
private final java.lang.String kdfAlgo;
descriptor: Ljava/lang/String;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.lang.String hashAlgo;
descriptor: Ljava/lang/String;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int blockLength;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
void <init>(java.lang.String, java.lang.String, int);
descriptor: (Ljava/lang/String;Ljava/lang/String;I)V
flags: (0x0000)
Code:
stack=3, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 2
iload 3
invokespecial com.sun.crypto.provider.HmacCore.<init>:(Ljava/lang/String;I)V
1: aload 0
aload 1
putfield com.sun.crypto.provider.PBMAC1Core.kdfAlgo:Ljava/lang/String;
2: aload 0
aload 2
putfield com.sun.crypto.provider.PBMAC1Core.hashAlgo:Ljava/lang/String;
3: aload 0
iload 3
putfield com.sun.crypto.provider.PBMAC1Core.blockLength:I
4: 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/PBMAC1Core;
0 5 1 kdfAlgo Ljava/lang/String;
0 5 2 hashAlgo Ljava/lang/String;
0 5 3 blockLength I
Exceptions:
throws java.security.NoSuchAlgorithmException
MethodParameters:
Name Flags
kdfAlgo
hashAlgo
blockLength
private static com.sun.crypto.provider.PBKDF2Core getKDFImpl(java.lang.String);
descriptor: (Ljava/lang/String;)Lcom/sun/crypto/provider/PBKDF2Core;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=3, args_size=1
start local 0 0: aconst_null
astore 1
start local 1 1: aload 0
dup
astore 2
invokevirtual java.lang.String.hashCode:()I
lookupswitch { // 5
954016943: 2
954017038: 3
954018090: 4
954019793: 5
1752946092: 6
default: 17
}
StackMap locals: com.sun.crypto.provider.PBKDF2Core java.lang.String
StackMap stack:
2: aload 2
ldc "HmacSHA224"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 9
goto 17
StackMap locals:
StackMap stack:
3: aload 2
ldc "HmacSHA256"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 11
goto 17
StackMap locals:
StackMap stack:
4: aload 2
ldc "HmacSHA384"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 13
goto 17
StackMap locals:
StackMap stack:
5: aload 2
ldc "HmacSHA512"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 15
goto 17
StackMap locals:
StackMap stack:
6: aload 2
ldc "HmacSHA1"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 7
goto 17
7: StackMap locals:
StackMap stack:
new com.sun.crypto.provider.PBKDF2Core$HmacSHA1
dup
invokespecial com.sun.crypto.provider.PBKDF2Core$HmacSHA1.<init>:()V
astore 1
8: goto 20
9: StackMap locals:
StackMap stack:
new com.sun.crypto.provider.PBKDF2Core$HmacSHA224
dup
invokespecial com.sun.crypto.provider.PBKDF2Core$HmacSHA224.<init>:()V
astore 1
10: goto 20
11: StackMap locals:
StackMap stack:
new com.sun.crypto.provider.PBKDF2Core$HmacSHA256
dup
invokespecial com.sun.crypto.provider.PBKDF2Core$HmacSHA256.<init>:()V
astore 1
12: goto 20
13: StackMap locals:
StackMap stack:
new com.sun.crypto.provider.PBKDF2Core$HmacSHA384
dup
invokespecial com.sun.crypto.provider.PBKDF2Core$HmacSHA384.<init>:()V
astore 1
14: goto 20
15: StackMap locals:
StackMap stack:
new com.sun.crypto.provider.PBKDF2Core$HmacSHA512
dup
invokespecial com.sun.crypto.provider.PBKDF2Core$HmacSHA512.<init>:()V
astore 1
16: goto 20
17: StackMap locals:
StackMap stack:
new java.security.ProviderException
dup
18: new java.lang.StringBuilder
dup
ldc "No MAC implementation for "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
19: invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;)V
athrow
20: StackMap locals:
StackMap stack:
aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 algo Ljava/lang/String;
1 21 1 kdf Lcom/sun/crypto/provider/PBKDF2Core;
MethodParameters:
Name Flags
algo
protected void engineInit(java.security.Key, java.security.spec.AlgorithmParameterSpec);
descriptor: (Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=6, locals=11, args_size=3
start local 0 start local 1 start local 2 0: aconst_null
astore 4
start local 4 1: iconst_0
istore 5
start local 5 2: aload 1
instanceof javax.crypto.interfaces.PBEKey
ifeq 9
3: aload 1
checkcast javax.crypto.interfaces.PBEKey
4: astore 6
start local 6 5: aload 6
invokeinterface javax.crypto.interfaces.PBEKey.getPassword:()[C
astore 3
start local 3 6: aload 6
invokeinterface javax.crypto.interfaces.PBEKey.getSalt:()[B
astore 4
7: aload 6
invokeinterface javax.crypto.interfaces.PBEKey.getIterationCount:()I
istore 5
end local 6 8: goto 22
end local 3 StackMap locals: com.sun.crypto.provider.PBMAC1Core java.security.Key java.security.spec.AlgorithmParameterSpec top byte[] int
StackMap stack:
9: aload 1
instanceof javax.crypto.SecretKey
ifeq 21
10: aload 1
invokeinterface java.security.Key.getEncoded:()[B
astore 6
start local 6 11: aload 6
ifnull 13
12: aload 1
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 14
13: StackMap locals: byte[]
StackMap stack:
new java.security.InvalidKeyException
dup
ldc "Missing password"
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
athrow
14: StackMap locals:
StackMap stack:
aload 6
arraylength
newarray 5
astore 3
start local 3 15: iconst_0
istore 7
start local 7 16: goto 19
17: StackMap locals: com.sun.crypto.provider.PBMAC1Core java.security.Key java.security.spec.AlgorithmParameterSpec char[] byte[] int byte[] int
StackMap stack:
aload 3
iload 7
aload 6
iload 7
baload
bipush 127
iand
i2c
castore
18: iinc 7 1
StackMap locals:
StackMap stack:
19: iload 7
aload 3
arraylength
if_icmplt 17
end local 7 end local 6 20: goto 22
end local 3 21: StackMap locals: com.sun.crypto.provider.PBMAC1Core java.security.Key java.security.spec.AlgorithmParameterSpec top byte[] int
StackMap stack:
new java.security.InvalidKeyException
dup
ldc "SecretKey of PBE type required"
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
athrow
start local 3 22: StackMap locals: com.sun.crypto.provider.PBMAC1Core java.security.Key java.security.spec.AlgorithmParameterSpec char[] byte[] int
StackMap stack:
aload 2
ifnonnull 27
23: aload 4
ifnull 24
iload 5
ifne 44
24: StackMap locals:
StackMap stack:
new java.security.InvalidAlgorithmParameterException
dup
25: ldc "PBEParameterSpec required for salt and iteration count"
26: invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
27: StackMap locals:
StackMap stack:
aload 2
instanceof javax.crypto.spec.PBEParameterSpec
ifne 31
28: new java.security.InvalidAlgorithmParameterException
dup
29: ldc "PBEParameterSpec type required"
30: invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
31: StackMap locals:
StackMap stack:
aload 2
checkcast javax.crypto.spec.PBEParameterSpec
astore 6
start local 6 32: aload 4
ifnull 37
33: aload 4
aload 6
invokevirtual javax.crypto.spec.PBEParameterSpec.getSalt:()[B
invokestatic java.util.Arrays.equals:([B[B)Z
ifne 38
34: new java.security.InvalidAlgorithmParameterException
dup
35: ldc "Inconsistent value of salt between key and params"
36: invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
37: StackMap locals: javax.crypto.spec.PBEParameterSpec
StackMap stack:
aload 6
invokevirtual javax.crypto.spec.PBEParameterSpec.getSalt:()[B
astore 4
38: StackMap locals:
StackMap stack:
iload 5
ifeq 43
39: iload 5
aload 6
invokevirtual javax.crypto.spec.PBEParameterSpec.getIterationCount:()I
if_icmpeq 44
40: new java.security.InvalidAlgorithmParameterException
dup
41: ldc "Different iteration count between key and params"
42: invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
43: StackMap locals:
StackMap stack:
aload 6
invokevirtual javax.crypto.spec.PBEParameterSpec.getIterationCount:()I
istore 5
end local 6 44: StackMap locals:
StackMap stack:
aload 4
arraylength
bipush 8
if_icmpge 48
45: new java.security.InvalidAlgorithmParameterException
dup
46: ldc "Salt must be at least 8 bytes long"
47: invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
48: StackMap locals:
StackMap stack:
iload 5
ifgt 52
49: new java.security.InvalidAlgorithmParameterException
dup
50: ldc "IterationCount must be a positive number"
51: invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
52: StackMap locals:
StackMap stack:
new javax.crypto.spec.PBEKeySpec
dup
aload 3
aload 4
iload 5
aload 0
getfield com.sun.crypto.provider.PBMAC1Core.blockLength:I
invokespecial javax.crypto.spec.PBEKeySpec.<init>:([C[BII)V
53: astore 6
start local 6 54: aload 3
bipush 32
invokestatic java.util.Arrays.fill:([CC)V
55: aconst_null
astore 7
start local 7 56: aload 0
getfield com.sun.crypto.provider.PBMAC1Core.kdfAlgo:Ljava/lang/String;
invokestatic com.sun.crypto.provider.PBMAC1Core.getKDFImpl:(Ljava/lang/String;)Lcom/sun/crypto/provider/PBKDF2Core;
astore 8
start local 8 57: aload 8
aload 6
invokevirtual com.sun.crypto.provider.PBKDF2Core.engineGenerateSecret:(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;
astore 7
58: goto 64
StackMap locals: com.sun.crypto.provider.PBMAC1Core java.security.Key java.security.spec.AlgorithmParameterSpec char[] byte[] int javax.crypto.spec.PBEKeySpec javax.crypto.SecretKey com.sun.crypto.provider.PBKDF2Core
StackMap stack: java.security.spec.InvalidKeySpecException
59: astore 9
start local 9 60: new java.security.InvalidKeyException
dup
ldc "Cannot construct PBE key"
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
61: astore 10
start local 10 62: aload 10
aload 9
invokevirtual java.security.InvalidKeyException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
pop
63: aload 10
athrow
end local 10 end local 9 64: StackMap locals:
StackMap stack:
aload 7
invokeinterface javax.crypto.SecretKey.getEncoded:()[B
astore 9
start local 9 65: new javax.crypto.spec.SecretKeySpec
dup
aload 9
aload 0
getfield com.sun.crypto.provider.PBMAC1Core.kdfAlgo:Ljava/lang/String;
invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
astore 10
start local 10 66: aload 0
aload 10
aconst_null
invokespecial com.sun.crypto.provider.HmacCore.engineInit:(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
67: 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 68 0 this Lcom/sun/crypto/provider/PBMAC1Core;
0 68 1 key Ljava/security/Key;
0 68 2 params Ljava/security/spec/AlgorithmParameterSpec;
6 9 3 passwdChars [C
15 21 3 passwdChars [C
22 68 3 passwdChars [C
1 68 4 salt [B
2 68 5 iCount I
5 8 6 pbeKey Ljavax/crypto/interfaces/PBEKey;
11 20 6 passwdBytes [B
16 20 7 i I
32 44 6 pbeParams Ljavax/crypto/spec/PBEParameterSpec;
54 68 6 pbeSpec Ljavax/crypto/spec/PBEKeySpec;
56 68 7 s Ljavax/crypto/SecretKey;
57 68 8 kdf Lcom/sun/crypto/provider/PBKDF2Core;
60 64 9 ikse Ljava/security/spec/InvalidKeySpecException;
62 64 10 ike Ljava/security/InvalidKeyException;
65 68 9 derivedKey [B
66 68 10 cipherKey Ljavax/crypto/SecretKey;
Exception table:
from to target type
57 58 59 Class java.security.spec.InvalidKeySpecException
Exceptions:
throws java.security.InvalidKeyException, java.security.InvalidAlgorithmParameterException
MethodParameters:
Name Flags
key
params
}
SourceFile: "PBMAC1Core.java"
NestMembers:
com.sun.crypto.provider.PBMAC1Core$HmacSHA1 com.sun.crypto.provider.PBMAC1Core$HmacSHA224 com.sun.crypto.provider.PBMAC1Core$HmacSHA256 com.sun.crypto.provider.PBMAC1Core$HmacSHA384 com.sun.crypto.provider.PBMAC1Core$HmacSHA512
InnerClasses:
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
public final HmacSHA1 = com.sun.crypto.provider.PBMAC1Core$HmacSHA1 of com.sun.crypto.provider.PBMAC1Core
public final HmacSHA224 = com.sun.crypto.provider.PBMAC1Core$HmacSHA224 of com.sun.crypto.provider.PBMAC1Core
public final HmacSHA256 = com.sun.crypto.provider.PBMAC1Core$HmacSHA256 of com.sun.crypto.provider.PBMAC1Core
public final HmacSHA384 = com.sun.crypto.provider.PBMAC1Core$HmacSHA384 of com.sun.crypto.provider.PBMAC1Core
public final HmacSHA512 = com.sun.crypto.provider.PBMAC1Core$HmacSHA512 of com.sun.crypto.provider.PBMAC1Core