public class org.bouncycastle.jce.provider.BrokenKDF2BytesGenerator implements org.bouncycastle.crypto.DerivationFunction
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.bouncycastle.jce.provider.BrokenKDF2BytesGenerator
super_class: java.lang.Object
{
private org.bouncycastle.crypto.Digest digest;
descriptor: Lorg/bouncycastle/crypto/Digest;
flags: (0x0002) ACC_PRIVATE
private byte[] shared;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private byte[] iv;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
public void <init>(org.bouncycastle.crypto.Digest);
descriptor: (Lorg/bouncycastle/crypto/Digest;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
putfield org.bouncycastle.jce.provider.BrokenKDF2BytesGenerator.digest:Lorg/bouncycastle/crypto/Digest;
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/bouncycastle/jce/provider/BrokenKDF2BytesGenerator;
0 3 1 digest Lorg/bouncycastle/crypto/Digest;
MethodParameters:
Name Flags
digest
public void init(org.bouncycastle.crypto.DerivationParameters);
descriptor: (Lorg/bouncycastle/crypto/DerivationParameters;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 1
instanceof org.bouncycastle.crypto.params.KDFParameters
ifne 2
1: new java.lang.IllegalArgumentException
dup
ldc "KDF parameters required for KDF2Generator"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 1
checkcast org.bouncycastle.crypto.params.KDFParameters
astore 2
start local 2 3: aload 0
aload 2
invokevirtual org.bouncycastle.crypto.params.KDFParameters.getSharedSecret:()[B
putfield org.bouncycastle.jce.provider.BrokenKDF2BytesGenerator.shared:[B
4: aload 0
aload 2
invokevirtual org.bouncycastle.crypto.params.KDFParameters.getIV:()[B
putfield org.bouncycastle.jce.provider.BrokenKDF2BytesGenerator.iv:[B
5: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/bouncycastle/jce/provider/BrokenKDF2BytesGenerator;
0 6 1 param Lorg/bouncycastle/crypto/DerivationParameters;
3 6 2 p Lorg/bouncycastle/crypto/params/KDFParameters;
MethodParameters:
Name Flags
param
public org.bouncycastle.crypto.Digest getDigest();
descriptor: ()Lorg/bouncycastle/crypto/Digest;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.bouncycastle.jce.provider.BrokenKDF2BytesGenerator.digest:Lorg/bouncycastle/crypto/Digest;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/bouncycastle/jce/provider/BrokenKDF2BytesGenerator;
public int generateBytes(byte[], int, int);
descriptor: ([BII)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=9, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
arraylength
iload 3
isub
iload 2
if_icmpge 2
1: new org.bouncycastle.crypto.DataLengthException
dup
ldc "output buffer too small"
invokespecial org.bouncycastle.crypto.DataLengthException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
iload 3
bipush 8
imul
i2l
lstore 4
start local 4 3: lload 4
aload 0
getfield org.bouncycastle.jce.provider.BrokenKDF2BytesGenerator.digest:Lorg/bouncycastle/crypto/Digest;
invokeinterface org.bouncycastle.crypto.Digest.getDigestSize:()I
bipush 8
imul
i2l
ldc 29
lmul
lcmp
ifle 5
4: new java.lang.IllegalArgumentException
ldc "Output length to large"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
5: StackMap locals: long
StackMap stack:
lload 4
aload 0
getfield org.bouncycastle.jce.provider.BrokenKDF2BytesGenerator.digest:Lorg/bouncycastle/crypto/Digest;
invokeinterface org.bouncycastle.crypto.Digest.getDigestSize:()I
i2l
ldiv
l2i
istore 6
start local 6 6: aconst_null
astore 7
start local 7 7: aload 0
getfield org.bouncycastle.jce.provider.BrokenKDF2BytesGenerator.digest:Lorg/bouncycastle/crypto/Digest;
invokeinterface org.bouncycastle.crypto.Digest.getDigestSize:()I
newarray 8
astore 7
8: iconst_1
istore 8
start local 8 9: goto 23
10: StackMap locals: int byte[] int
StackMap stack:
aload 0
getfield org.bouncycastle.jce.provider.BrokenKDF2BytesGenerator.digest:Lorg/bouncycastle/crypto/Digest;
aload 0
getfield org.bouncycastle.jce.provider.BrokenKDF2BytesGenerator.shared:[B
iconst_0
aload 0
getfield org.bouncycastle.jce.provider.BrokenKDF2BytesGenerator.shared:[B
arraylength
invokeinterface org.bouncycastle.crypto.Digest.update:([BII)V
11: aload 0
getfield org.bouncycastle.jce.provider.BrokenKDF2BytesGenerator.digest:Lorg/bouncycastle/crypto/Digest;
iload 8
sipush 255
iand
i2b
invokeinterface org.bouncycastle.crypto.Digest.update:(B)V
12: aload 0
getfield org.bouncycastle.jce.provider.BrokenKDF2BytesGenerator.digest:Lorg/bouncycastle/crypto/Digest;
iload 8
bipush 8
ishr
sipush 255
iand
i2b
invokeinterface org.bouncycastle.crypto.Digest.update:(B)V
13: aload 0
getfield org.bouncycastle.jce.provider.BrokenKDF2BytesGenerator.digest:Lorg/bouncycastle/crypto/Digest;
iload 8
bipush 16
ishr
sipush 255
iand
i2b
invokeinterface org.bouncycastle.crypto.Digest.update:(B)V
14: aload 0
getfield org.bouncycastle.jce.provider.BrokenKDF2BytesGenerator.digest:Lorg/bouncycastle/crypto/Digest;
iload 8
bipush 24
ishr
sipush 255
iand
i2b
invokeinterface org.bouncycastle.crypto.Digest.update:(B)V
15: aload 0
getfield org.bouncycastle.jce.provider.BrokenKDF2BytesGenerator.digest:Lorg/bouncycastle/crypto/Digest;
aload 0
getfield org.bouncycastle.jce.provider.BrokenKDF2BytesGenerator.iv:[B
iconst_0
aload 0
getfield org.bouncycastle.jce.provider.BrokenKDF2BytesGenerator.iv:[B
arraylength
invokeinterface org.bouncycastle.crypto.Digest.update:([BII)V
16: aload 0
getfield org.bouncycastle.jce.provider.BrokenKDF2BytesGenerator.digest:Lorg/bouncycastle/crypto/Digest;
aload 7
iconst_0
invokeinterface org.bouncycastle.crypto.Digest.doFinal:([BI)I
pop
17: iload 3
iload 2
isub
aload 7
arraylength
if_icmple 21
18: aload 7
iconst_0
aload 1
iload 2
aload 7
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
19: iload 2
aload 7
arraylength
iadd
istore 2
20: goto 22
21: StackMap locals:
StackMap stack:
aload 7
iconst_0
aload 1
iload 2
iload 3
iload 2
isub
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
22: StackMap locals:
StackMap stack:
iinc 8 1
StackMap locals:
StackMap stack:
23: iload 8
iload 6
if_icmple 10
end local 8 24: aload 0
getfield org.bouncycastle.jce.provider.BrokenKDF2BytesGenerator.digest:Lorg/bouncycastle/crypto/Digest;
invokeinterface org.bouncycastle.crypto.Digest.reset:()V
25: iload 3
ireturn
end local 7 end local 6 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 26 0 this Lorg/bouncycastle/jce/provider/BrokenKDF2BytesGenerator;
0 26 1 out [B
0 26 2 outOff I
0 26 3 len I
3 26 4 oBits J
6 26 6 cThreshold I
7 26 7 dig [B
9 24 8 counter I
Exceptions:
throws org.bouncycastle.crypto.DataLengthException, java.lang.IllegalArgumentException
MethodParameters:
Name Flags
out
outOff
len
}
SourceFile: "BrokenKDF2BytesGenerator.java"