public class org.bouncycastle.jce.provider.BrokenPBE$Util
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.bouncycastle.jce.provider.BrokenPBE$Util
super_class: java.lang.Object
{
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/bouncycastle/jce/provider/BrokenPBE$Util;
private static void setOddParity(byte[]);
descriptor: ([B)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=3, args_size=1
start local 0 0: iconst_0
istore 1
start local 1 1: goto 21
2: StackMap locals: int
StackMap stack:
aload 0
iload 1
baload
istore 2
start local 2 3: aload 0
iload 1
iload 2
sipush 254
iand
4: iload 2
iconst_1
ishr
5: iload 2
iconst_2
ishr
6: ixor
7: iload 2
iconst_3
ishr
8: ixor
9: iload 2
iconst_4
ishr
10: ixor
11: iload 2
iconst_5
ishr
12: ixor
13: iload 2
bipush 6
ishr
14: ixor
15: iload 2
bipush 7
ishr
16: ixor
17: iconst_1
18: ixor
ior
i2b
19: bastore
end local 2 20: iinc 1 1
StackMap locals:
StackMap stack:
21: iload 1
aload 0
arraylength
if_icmplt 2
end local 1 22: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 23 0 bytes [B
1 22 1 i I
3 20 2 b I
MethodParameters:
Name Flags
bytes
private static org.bouncycastle.crypto.PBEParametersGenerator makePBEGenerator(int, int);
descriptor: (II)Lorg/bouncycastle/crypto/PBEParametersGenerator;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: iload 0
ifne 8
1: iload 1
tableswitch { // 0 - 1
0: 2
1: 4
default: 6
}
2: StackMap locals:
StackMap stack:
new org.bouncycastle.crypto.generators.PKCS5S1ParametersGenerator
dup
new org.bouncycastle.crypto.digests.MD5Digest
dup
invokespecial org.bouncycastle.crypto.digests.MD5Digest.<init>:()V
invokespecial org.bouncycastle.crypto.generators.PKCS5S1ParametersGenerator.<init>:(Lorg/bouncycastle/crypto/Digest;)V
astore 2
start local 2 3: goto 29
end local 2 4: StackMap locals:
StackMap stack:
new org.bouncycastle.crypto.generators.PKCS5S1ParametersGenerator
dup
new org.bouncycastle.crypto.digests.SHA1Digest
dup
invokespecial org.bouncycastle.crypto.digests.SHA1Digest.<init>:()V
invokespecial org.bouncycastle.crypto.generators.PKCS5S1ParametersGenerator.<init>:(Lorg/bouncycastle/crypto/Digest;)V
astore 2
start local 2 5: goto 29
end local 2 6: StackMap locals:
StackMap stack:
new java.lang.IllegalStateException
dup
ldc "PKCS5 scheme 1 only supports only MD5 and SHA1."
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
start local 2 7: StackMap locals: org.bouncycastle.crypto.PBEParametersGenerator
StackMap stack:
goto 29
end local 2 8: StackMap locals:
StackMap stack:
iload 0
iconst_1
if_icmpne 11
9: new org.bouncycastle.crypto.generators.PKCS5S2ParametersGenerator
dup
invokespecial org.bouncycastle.crypto.generators.PKCS5S2ParametersGenerator.<init>:()V
astore 2
start local 2 10: goto 29
end local 2 11: StackMap locals:
StackMap stack:
iload 0
iconst_3
if_icmpne 21
12: iload 1
tableswitch { // 0 - 2
0: 13
1: 15
2: 17
default: 19
}
13: StackMap locals:
StackMap stack:
new org.bouncycastle.jce.provider.OldPKCS12ParametersGenerator
dup
new org.bouncycastle.crypto.digests.MD5Digest
dup
invokespecial org.bouncycastle.crypto.digests.MD5Digest.<init>:()V
invokespecial org.bouncycastle.jce.provider.OldPKCS12ParametersGenerator.<init>:(Lorg/bouncycastle/crypto/Digest;)V
astore 2
start local 2 14: goto 29
end local 2 15: StackMap locals:
StackMap stack:
new org.bouncycastle.jce.provider.OldPKCS12ParametersGenerator
dup
new org.bouncycastle.crypto.digests.SHA1Digest
dup
invokespecial org.bouncycastle.crypto.digests.SHA1Digest.<init>:()V
invokespecial org.bouncycastle.jce.provider.OldPKCS12ParametersGenerator.<init>:(Lorg/bouncycastle/crypto/Digest;)V
astore 2
start local 2 16: goto 29
end local 2 17: StackMap locals:
StackMap stack:
new org.bouncycastle.jce.provider.OldPKCS12ParametersGenerator
dup
new org.bouncycastle.crypto.digests.RIPEMD160Digest
dup
invokespecial org.bouncycastle.crypto.digests.RIPEMD160Digest.<init>:()V
invokespecial org.bouncycastle.jce.provider.OldPKCS12ParametersGenerator.<init>:(Lorg/bouncycastle/crypto/Digest;)V
astore 2
start local 2 18: goto 29
end local 2 19: StackMap locals:
StackMap stack:
new java.lang.IllegalStateException
dup
ldc "unknown digest scheme for PBE encryption."
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
start local 2 20: StackMap locals: org.bouncycastle.crypto.PBEParametersGenerator
StackMap stack:
goto 29
end local 2 21: StackMap locals:
StackMap stack:
iload 1
tableswitch { // 0 - 2
0: 22
1: 24
2: 26
default: 28
}
22: StackMap locals:
StackMap stack:
new org.bouncycastle.crypto.generators.PKCS12ParametersGenerator
dup
new org.bouncycastle.crypto.digests.MD5Digest
dup
invokespecial org.bouncycastle.crypto.digests.MD5Digest.<init>:()V
invokespecial org.bouncycastle.crypto.generators.PKCS12ParametersGenerator.<init>:(Lorg/bouncycastle/crypto/Digest;)V
astore 2
start local 2 23: goto 29
end local 2 24: StackMap locals:
StackMap stack:
new org.bouncycastle.crypto.generators.PKCS12ParametersGenerator
dup
new org.bouncycastle.crypto.digests.SHA1Digest
dup
invokespecial org.bouncycastle.crypto.digests.SHA1Digest.<init>:()V
invokespecial org.bouncycastle.crypto.generators.PKCS12ParametersGenerator.<init>:(Lorg/bouncycastle/crypto/Digest;)V
astore 2
start local 2 25: goto 29
end local 2 26: StackMap locals:
StackMap stack:
new org.bouncycastle.crypto.generators.PKCS12ParametersGenerator
dup
new org.bouncycastle.crypto.digests.RIPEMD160Digest
dup
invokespecial org.bouncycastle.crypto.digests.RIPEMD160Digest.<init>:()V
invokespecial org.bouncycastle.crypto.generators.PKCS12ParametersGenerator.<init>:(Lorg/bouncycastle/crypto/Digest;)V
astore 2
start local 2 27: goto 29
end local 2 28: StackMap locals:
StackMap stack:
new java.lang.IllegalStateException
dup
ldc "unknown digest scheme for PBE encryption."
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
start local 2 29: StackMap locals: org.bouncycastle.crypto.PBEParametersGenerator
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 30 0 type I
0 30 1 hash I
3 4 2 generator Lorg/bouncycastle/crypto/PBEParametersGenerator;
5 6 2 generator Lorg/bouncycastle/crypto/PBEParametersGenerator;
7 8 2 generator Lorg/bouncycastle/crypto/PBEParametersGenerator;
10 11 2 generator Lorg/bouncycastle/crypto/PBEParametersGenerator;
14 15 2 generator Lorg/bouncycastle/crypto/PBEParametersGenerator;
16 17 2 generator Lorg/bouncycastle/crypto/PBEParametersGenerator;
18 19 2 generator Lorg/bouncycastle/crypto/PBEParametersGenerator;
20 21 2 generator Lorg/bouncycastle/crypto/PBEParametersGenerator;
23 24 2 generator Lorg/bouncycastle/crypto/PBEParametersGenerator;
25 26 2 generator Lorg/bouncycastle/crypto/PBEParametersGenerator;
27 28 2 generator Lorg/bouncycastle/crypto/PBEParametersGenerator;
29 30 2 generator Lorg/bouncycastle/crypto/PBEParametersGenerator;
MethodParameters:
Name Flags
type
hash
static org.bouncycastle.crypto.CipherParameters makePBEParameters(org.bouncycastle.jce.provider.JCEPBEKey, java.security.spec.AlgorithmParameterSpec, int, int, java.lang.String, int, int);
descriptor: (Lorg/bouncycastle/jce/provider/JCEPBEKey;Ljava/security/spec/AlgorithmParameterSpec;IILjava/lang/String;II)Lorg/bouncycastle/crypto/CipherParameters;
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=12, args_size=7
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 0: aload 1
ifnull 1
aload 1
instanceof javax.crypto.spec.PBEParameterSpec
ifne 2
1: StackMap locals:
StackMap stack:
new java.lang.IllegalArgumentException
dup
ldc "Need a PBEParameter spec with a PBE key."
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 1
checkcast javax.crypto.spec.PBEParameterSpec
astore 7
start local 7 3: iload 2
iload 3
invokestatic org.bouncycastle.jce.provider.BrokenPBE$Util.makePBEGenerator:(II)Lorg/bouncycastle/crypto/PBEParametersGenerator;
astore 8
start local 8 4: aload 0
invokevirtual org.bouncycastle.jce.provider.JCEPBEKey.getEncoded:()[B
astore 9
start local 9 5: aload 8
aload 9
aload 7
invokevirtual javax.crypto.spec.PBEParameterSpec.getSalt:()[B
aload 7
invokevirtual javax.crypto.spec.PBEParameterSpec.getIterationCount:()I
invokevirtual org.bouncycastle.crypto.PBEParametersGenerator.init:([B[BI)V
6: iload 6
ifeq 9
7: aload 8
iload 5
iload 6
invokevirtual org.bouncycastle.crypto.PBEParametersGenerator.generateDerivedParameters:(II)Lorg/bouncycastle/crypto/CipherParameters;
astore 10
start local 10 8: goto 10
end local 10 9: StackMap locals: javax.crypto.spec.PBEParameterSpec org.bouncycastle.crypto.PBEParametersGenerator byte[]
StackMap stack:
aload 8
iload 5
invokevirtual org.bouncycastle.crypto.PBEParametersGenerator.generateDerivedParameters:(I)Lorg/bouncycastle/crypto/CipherParameters;
astore 10
start local 10 10: StackMap locals: org.bouncycastle.crypto.CipherParameters
StackMap stack:
aload 4
ldc "DES"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 17
11: aload 10
instanceof org.bouncycastle.crypto.params.ParametersWithIV
ifeq 15
12: aload 10
checkcast org.bouncycastle.crypto.params.ParametersWithIV
invokevirtual org.bouncycastle.crypto.params.ParametersWithIV.getParameters:()Lorg/bouncycastle/crypto/CipherParameters;
checkcast org.bouncycastle.crypto.params.KeyParameter
astore 11
start local 11 13: aload 11
invokevirtual org.bouncycastle.crypto.params.KeyParameter.getKey:()[B
invokestatic org.bouncycastle.jce.provider.BrokenPBE$Util.setOddParity:([B)V
end local 11 14: goto 17
15: StackMap locals:
StackMap stack:
aload 10
checkcast org.bouncycastle.crypto.params.KeyParameter
astore 11
start local 11 16: aload 11
invokevirtual org.bouncycastle.crypto.params.KeyParameter.getKey:()[B
invokestatic org.bouncycastle.jce.provider.BrokenPBE$Util.setOddParity:([B)V
end local 11 17: StackMap locals:
StackMap stack:
iconst_0
istore 11
start local 11 18: goto 21
19: StackMap locals: int
StackMap stack:
aload 9
iload 11
iconst_0
bastore
20: iinc 11 1
StackMap locals:
StackMap stack:
21: iload 11
aload 9
arraylength
if_icmpne 19
end local 11 22: aload 10
areturn
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 23 0 pbeKey Lorg/bouncycastle/jce/provider/JCEPBEKey;
0 23 1 spec Ljava/security/spec/AlgorithmParameterSpec;
0 23 2 type I
0 23 3 hash I
0 23 4 targetAlgorithm Ljava/lang/String;
0 23 5 keySize I
0 23 6 ivSize I
3 23 7 pbeParam Ljavax/crypto/spec/PBEParameterSpec;
4 23 8 generator Lorg/bouncycastle/crypto/PBEParametersGenerator;
5 23 9 key [B
8 9 10 param Lorg/bouncycastle/crypto/CipherParameters;
10 23 10 param Lorg/bouncycastle/crypto/CipherParameters;
13 14 11 kParam Lorg/bouncycastle/crypto/params/KeyParameter;
16 17 11 kParam Lorg/bouncycastle/crypto/params/KeyParameter;
18 22 11 i I
MethodParameters:
Name Flags
pbeKey
spec
type
hash
targetAlgorithm
keySize
ivSize
static org.bouncycastle.crypto.CipherParameters makePBEMacParameters(org.bouncycastle.jce.provider.JCEPBEKey, java.security.spec.AlgorithmParameterSpec, int, int, int);
descriptor: (Lorg/bouncycastle/jce/provider/JCEPBEKey;Ljava/security/spec/AlgorithmParameterSpec;III)Lorg/bouncycastle/crypto/CipherParameters;
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=10, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 1
ifnull 1
aload 1
instanceof javax.crypto.spec.PBEParameterSpec
ifne 2
1: StackMap locals:
StackMap stack:
new java.lang.IllegalArgumentException
dup
ldc "Need a PBEParameter spec with a PBE key."
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 1
checkcast javax.crypto.spec.PBEParameterSpec
astore 5
start local 5 3: iload 2
iload 3
invokestatic org.bouncycastle.jce.provider.BrokenPBE$Util.makePBEGenerator:(II)Lorg/bouncycastle/crypto/PBEParametersGenerator;
astore 6
start local 6 4: aload 0
invokevirtual org.bouncycastle.jce.provider.JCEPBEKey.getEncoded:()[B
astore 7
start local 7 5: aload 6
aload 7
aload 5
invokevirtual javax.crypto.spec.PBEParameterSpec.getSalt:()[B
aload 5
invokevirtual javax.crypto.spec.PBEParameterSpec.getIterationCount:()I
invokevirtual org.bouncycastle.crypto.PBEParametersGenerator.init:([B[BI)V
6: aload 6
iload 4
invokevirtual org.bouncycastle.crypto.PBEParametersGenerator.generateDerivedMacParameters:(I)Lorg/bouncycastle/crypto/CipherParameters;
astore 8
start local 8 7: iconst_0
istore 9
start local 9 8: goto 11
9: StackMap locals: org.bouncycastle.jce.provider.JCEPBEKey java.security.spec.AlgorithmParameterSpec int int int javax.crypto.spec.PBEParameterSpec org.bouncycastle.crypto.PBEParametersGenerator byte[] org.bouncycastle.crypto.CipherParameters int
StackMap stack:
aload 7
iload 9
iconst_0
bastore
10: iinc 9 1
StackMap locals:
StackMap stack:
11: iload 9
aload 7
arraylength
if_icmpne 9
end local 9 12: aload 8
areturn
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 13 0 pbeKey Lorg/bouncycastle/jce/provider/JCEPBEKey;
0 13 1 spec Ljava/security/spec/AlgorithmParameterSpec;
0 13 2 type I
0 13 3 hash I
0 13 4 keySize I
3 13 5 pbeParam Ljavax/crypto/spec/PBEParameterSpec;
4 13 6 generator Lorg/bouncycastle/crypto/PBEParametersGenerator;
5 13 7 key [B
7 13 8 param Lorg/bouncycastle/crypto/CipherParameters;
8 12 9 i I
MethodParameters:
Name Flags
pbeKey
spec
type
hash
keySize
}
SourceFile: "BrokenPBE.java"
NestHost: org.bouncycastle.jce.provider.BrokenPBE
InnerClasses:
public Util = org.bouncycastle.jce.provider.BrokenPBE$Util of org.bouncycastle.jce.provider.BrokenPBE