public final class sun.security.provider.SecureRandom extends java.security.SecureRandomSpi implements java.io.Serializable
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: sun.security.provider.SecureRandom
super_class: java.security.SecureRandomSpi
{
private static final long serialVersionUID;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 3581829991155417889
private static final int DIGEST_SIZE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 20
private transient java.security.MessageDigest digest;
descriptor: Ljava/security/MessageDigest;
flags: (0x0082) ACC_PRIVATE, ACC_TRANSIENT
private byte[] state;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private byte[] remainder;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private int remCount;
descriptor: I
flags: (0x0002) ACC_PRIVATE
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.security.SecureRandomSpi.<init>:()V
1: aload 0
aconst_null
invokevirtual sun.security.provider.SecureRandom.init:([B)V
2: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/security/provider/SecureRandom;
private void <init>(byte[]);
descriptor: ([B)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.security.SecureRandomSpi.<init>:()V
1: aload 0
aload 1
invokevirtual sun.security.provider.SecureRandom.init:([B)V
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/security/provider/SecureRandom;
0 3 1 seed [B
MethodParameters:
Name Flags
seed
private void init(byte[]);
descriptor: ([B)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
ldc "SHA"
ldc "SUN"
invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;Ljava/lang/String;)Ljava/security/MessageDigest;
putfield sun.security.provider.SecureRandom.digest:Ljava/security/MessageDigest;
1: goto 9
StackMap locals:
StackMap stack: java.security.GeneralSecurityException
2: pop
3: aload 0
ldc "SHA"
invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
putfield sun.security.provider.SecureRandom.digest:Ljava/security/MessageDigest;
4: goto 9
StackMap locals:
StackMap stack: java.security.NoSuchAlgorithmException
5: pop
6: new java.lang.InternalError
dup
7: ldc "internal error: SHA-1 not available."
8: invokespecial java.lang.InternalError.<init>:(Ljava/lang/String;)V
athrow
9: StackMap locals:
StackMap stack:
aload 1
ifnull 11
10: aload 0
aload 1
invokevirtual sun.security.provider.SecureRandom.engineSetSeed:([B)V
11: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lsun/security/provider/SecureRandom;
0 12 1 seed [B
Exception table:
from to target type
0 1 2 Class java.security.NoSuchProviderException
0 1 2 Class java.security.NoSuchAlgorithmException
3 4 5 Class java.security.NoSuchAlgorithmException
MethodParameters:
Name Flags
seed
public byte[] engineGenerateSeed(int);
descriptor: (I)[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=3, args_size=2
start local 0 start local 1 0: iload 1
newarray 8
astore 2
start local 2 1: aload 2
invokestatic sun.security.provider.SeedGenerator.generateSeed:([B)V
2: aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/security/provider/SecureRandom;
0 3 1 numBytes I
1 3 2 b [B
MethodParameters:
Name Flags
numBytes
public synchronized void engineSetSeed(byte[]);
descriptor: ([B)V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield sun.security.provider.SecureRandom.state:[B
ifnull 7
1: aload 0
getfield sun.security.provider.SecureRandom.digest:Ljava/security/MessageDigest;
aload 0
getfield sun.security.provider.SecureRandom.state:[B
invokevirtual java.security.MessageDigest.update:([B)V
2: iconst_0
istore 2
start local 2 3: goto 6
4: StackMap locals: int
StackMap stack:
aload 0
getfield sun.security.provider.SecureRandom.state:[B
iload 2
iconst_0
bastore
5: iinc 2 1
StackMap locals:
StackMap stack:
6: iload 2
aload 0
getfield sun.security.provider.SecureRandom.state:[B
arraylength
if_icmplt 4
end local 2 7: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield sun.security.provider.SecureRandom.digest:Ljava/security/MessageDigest;
aload 1
invokevirtual java.security.MessageDigest.digest:([B)[B
putfield sun.security.provider.SecureRandom.state:[B
8: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lsun/security/provider/SecureRandom;
0 9 1 seed [B
3 7 2 i I
MethodParameters:
Name Flags
seed
private static void updateState(byte[], byte[]);
descriptor: ([B[B)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=7, args_size=2
start local 0 start local 1 0: iconst_1
istore 2
start local 2 1: iconst_0
istore 3
start local 3 2: iconst_0
istore 4
start local 4 3: iconst_0
istore 5
start local 5 4: iconst_0
istore 6
start local 6 5: goto 14
6: StackMap locals: byte[] byte[] int int int int int
StackMap stack:
aload 0
iload 6
baload
aload 1
iload 6
baload
iadd
iload 2
iadd
istore 3
7: iload 3
i2b
istore 4
8: iload 5
aload 0
iload 6
baload
iload 4
if_icmpeq 9
iconst_1
goto 10
StackMap locals:
StackMap stack: int
9: iconst_0
StackMap locals: byte[] byte[] int int int int int
StackMap stack: int int
10: ior
istore 5
11: aload 0
iload 6
iload 4
bastore
12: iload 3
bipush 8
ishr
istore 2
13: iinc 6 1
StackMap locals:
StackMap stack:
14: iload 6
aload 0
arraylength
if_icmplt 6
end local 6 15: iload 5
ifne 17
16: aload 0
iconst_0
dup2
baload
iconst_1
iadd
i2b
bastore
17: StackMap locals:
StackMap stack:
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 18 0 state [B
0 18 1 output [B
1 18 2 last I
2 18 3 v I
3 18 4 t B
4 18 5 zf Z
5 15 6 i I
MethodParameters:
Name Flags
state
output
public synchronized void engineNextBytes(byte[]);
descriptor: ([B)V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=4, locals=7, args_size=2
start local 0 start local 1 0: iconst_0
istore 2
start local 2 1: aload 0
getfield sun.security.provider.SecureRandom.remainder:[B
astore 4
start local 4 2: aload 0
getfield sun.security.provider.SecureRandom.state:[B
ifnonnull 6
3: bipush 20
newarray 8
astore 5
start local 5 4: getstatic sun.security.provider.SecureRandom$SeederHolder.seeder:Lsun/security/provider/SecureRandom;
aload 5
invokevirtual sun.security.provider.SecureRandom.engineNextBytes:([B)V
5: aload 0
aload 0
getfield sun.security.provider.SecureRandom.digest:Ljava/security/MessageDigest;
aload 5
invokevirtual java.security.MessageDigest.digest:([B)[B
putfield sun.security.provider.SecureRandom.state:[B
end local 5 6: StackMap locals: sun.security.provider.SecureRandom byte[] int top byte[]
StackMap stack:
aload 0
getfield sun.security.provider.SecureRandom.remCount:I
istore 5
start local 5 7: iload 5
ifle 35
8: aload 1
arraylength
iload 2
isub
bipush 20
iload 5
isub
if_icmpge 10
9: aload 1
arraylength
iload 2
isub
goto 11
StackMap locals: int
StackMap stack:
10: bipush 20
iload 5
isub
11: StackMap locals:
StackMap stack: int
istore 3
start local 3 12: iconst_0
istore 6
start local 6 13: goto 17
14: StackMap locals: sun.security.provider.SecureRandom byte[] int int byte[] int int
StackMap stack:
aload 1
iload 6
aload 4
iload 5
baload
bastore
15: aload 4
iload 5
iinc 5 1
iconst_0
bastore
16: iinc 6 1
StackMap locals:
StackMap stack:
17: iload 6
iload 3
if_icmplt 14
end local 6 18: aload 0
dup
getfield sun.security.provider.SecureRandom.remCount:I
iload 3
iadd
putfield sun.security.provider.SecureRandom.remCount:I
19: iload 2
iload 3
iadd
istore 2
end local 3 20: goto 35
21: StackMap locals: sun.security.provider.SecureRandom byte[] int top byte[] int
StackMap stack:
aload 0
getfield sun.security.provider.SecureRandom.digest:Ljava/security/MessageDigest;
aload 0
getfield sun.security.provider.SecureRandom.state:[B
invokevirtual java.security.MessageDigest.update:([B)V
22: aload 0
getfield sun.security.provider.SecureRandom.digest:Ljava/security/MessageDigest;
invokevirtual java.security.MessageDigest.digest:()[B
astore 4
23: aload 0
getfield sun.security.provider.SecureRandom.state:[B
aload 4
invokestatic sun.security.provider.SecureRandom.updateState:([B[B)V
24: aload 1
arraylength
iload 2
isub
bipush 20
if_icmple 26
25: bipush 20
goto 27
StackMap locals:
StackMap stack:
26: aload 1
arraylength
iload 2
isub
27: StackMap locals:
StackMap stack: int
istore 3
start local 3 28: iconst_0
istore 6
start local 6 29: goto 33
30: StackMap locals: sun.security.provider.SecureRandom byte[] int int byte[] int int
StackMap stack:
aload 1
iload 2
iinc 2 1
aload 4
iload 6
baload
bastore
31: aload 4
iload 6
iconst_0
bastore
32: iinc 6 1
StackMap locals:
StackMap stack:
33: iload 6
iload 3
if_icmplt 30
end local 6 34: aload 0
dup
getfield sun.security.provider.SecureRandom.remCount:I
iload 3
iadd
putfield sun.security.provider.SecureRandom.remCount:I
end local 3 35: StackMap locals: sun.security.provider.SecureRandom byte[] int top byte[] int
StackMap stack:
iload 2
aload 1
arraylength
if_icmplt 21
36: aload 0
aload 4
putfield sun.security.provider.SecureRandom.remainder:[B
37: aload 0
dup
getfield sun.security.provider.SecureRandom.remCount:I
bipush 20
irem
putfield sun.security.provider.SecureRandom.remCount:I
38: return
end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 39 0 this Lsun/security/provider/SecureRandom;
0 39 1 result [B
1 39 2 index I
12 20 3 todo I
28 35 3 todo I
2 39 4 output [B
4 6 5 seed [B
7 39 5 r I
13 18 6 i I
29 34 6 i I
MethodParameters:
Name Flags
result
private void readObject(java.io.ObjectInputStream);
descriptor: (Ljava/io/ObjectInputStream;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual java.io.ObjectInputStream.defaultReadObject:()V
1: aload 0
ldc "SHA"
ldc "SUN"
invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;Ljava/lang/String;)Ljava/security/MessageDigest;
putfield sun.security.provider.SecureRandom.digest:Ljava/security/MessageDigest;
2: goto 10
StackMap locals:
StackMap stack: java.security.GeneralSecurityException
3: pop
4: aload 0
ldc "SHA"
invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
putfield sun.security.provider.SecureRandom.digest:Ljava/security/MessageDigest;
5: goto 10
StackMap locals:
StackMap stack: java.security.NoSuchAlgorithmException
6: pop
7: new java.lang.InternalError
dup
8: ldc "internal error: SHA-1 not available."
9: invokespecial java.lang.InternalError.<init>:(Ljava/lang/String;)V
athrow
10: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lsun/security/provider/SecureRandom;
0 11 1 s Ljava/io/ObjectInputStream;
Exception table:
from to target type
1 2 3 Class java.security.NoSuchProviderException
1 2 3 Class java.security.NoSuchAlgorithmException
4 5 6 Class java.security.NoSuchAlgorithmException
Exceptions:
throws java.io.IOException, java.lang.ClassNotFoundException
MethodParameters:
Name Flags
s
}
SourceFile: "SecureRandom.java"
NestMembers:
sun.security.provider.SecureRandom$SeederHolder
InnerClasses:
private SeederHolder = sun.security.provider.SecureRandom$SeederHolder of sun.security.provider.SecureRandom