abstract class sun.security.provider.SeedGenerator
minor version: 0
major version: 59
flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
this_class: sun.security.provider.SeedGenerator
super_class: java.lang.Object
{
private static sun.security.provider.SeedGenerator instance;
descriptor: Lsun/security/provider/SeedGenerator;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private static final sun.security.util.Debug debug;
descriptor: Lsun/security/util/Debug;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static final java.lang.String URL_DEV_RANDOM;
descriptor: Ljava/lang/String;
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: "file:/dev/random"
static final java.lang.String URL_DEV_URANDOM;
descriptor: Ljava/lang/String;
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: "file:/dev/urandom"
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=2, args_size=0
0: ldc "provider"
invokestatic sun.security.util.Debug.getInstance:(Ljava/lang/String;)Lsun/security/util/Debug;
putstatic sun.security.provider.SeedGenerator.debug:Lsun/security/util/Debug;
1: invokestatic sun.security.provider.SunEntries.getSeedSource:()Ljava/lang/String;
astore 0
start local 0 2: aload 0
ldc "file:/dev/random"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 3
aload 0
ldc "file:/dev/urandom"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 13
3: StackMap locals: java.lang.String
StackMap stack:
new sun.security.provider.NativeSeedGenerator
dup
invokespecial sun.security.provider.NativeSeedGenerator.<init>:()V
putstatic sun.security.provider.SeedGenerator.instance:Lsun/security/provider/SeedGenerator;
4: getstatic sun.security.provider.SeedGenerator.debug:Lsun/security/util/Debug;
ifnull 25
5: getstatic sun.security.provider.SeedGenerator.debug:Lsun/security/util/Debug;
ldc "Using operating system seed generator"
invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
6: goto 25
StackMap locals:
StackMap stack: java.io.IOException
7: astore 1
start local 1 8: getstatic sun.security.provider.SeedGenerator.debug:Lsun/security/util/Debug;
ifnull 25
9: getstatic sun.security.provider.SeedGenerator.debug:Lsun/security/util/Debug;
new java.lang.StringBuilder
dup
ldc "Failed to use operating system seed generator: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
10: aload 1
invokevirtual java.io.IOException.toString:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
11: invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
end local 1 12: goto 25
StackMap locals:
StackMap stack:
13: aload 0
invokevirtual java.lang.String.length:()I
ifeq 25
14: new sun.security.provider.SeedGenerator$URLSeedGenerator
dup
aload 0
invokespecial sun.security.provider.SeedGenerator$URLSeedGenerator.<init>:(Ljava/lang/String;)V
putstatic sun.security.provider.SeedGenerator.instance:Lsun/security/provider/SeedGenerator;
15: getstatic sun.security.provider.SeedGenerator.debug:Lsun/security/util/Debug;
ifnull 25
16: getstatic sun.security.provider.SeedGenerator.debug:Lsun/security/util/Debug;
new java.lang.StringBuilder
dup
ldc "Using URL seed generator reading from "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
17: aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
18: invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
19: goto 25
StackMap locals:
StackMap stack: java.io.IOException
20: astore 1
start local 1 21: getstatic sun.security.provider.SeedGenerator.debug:Lsun/security/util/Debug;
ifnull 25
22: getstatic sun.security.provider.SeedGenerator.debug:Lsun/security/util/Debug;
new java.lang.StringBuilder
dup
ldc "Failed to create seed generator with "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
23: aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc ": "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 1
invokevirtual java.io.IOException.toString:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
24: invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
end local 1 25: StackMap locals:
StackMap stack:
getstatic sun.security.provider.SeedGenerator.instance:Lsun/security/provider/SeedGenerator;
ifnonnull 29
26: getstatic sun.security.provider.SeedGenerator.debug:Lsun/security/util/Debug;
ifnull 28
27: getstatic sun.security.provider.SeedGenerator.debug:Lsun/security/util/Debug;
ldc "Using default threaded seed generator"
invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
28: StackMap locals:
StackMap stack:
new sun.security.provider.SeedGenerator$ThreadedSeedGenerator
dup
invokespecial sun.security.provider.SeedGenerator$ThreadedSeedGenerator.<init>:()V
putstatic sun.security.provider.SeedGenerator.instance:Lsun/security/provider/SeedGenerator;
end local 0 29: StackMap locals:
StackMap stack:
return
LocalVariableTable:
Start End Slot Name Signature
2 29 0 egdSource Ljava/lang/String;
8 12 1 e Ljava/io/IOException;
21 25 1 e Ljava/io/IOException;
Exception table:
from to target type
3 6 7 Class java.io.IOException
14 19 20 Class java.io.IOException
void <init>();
descriptor: ()V
flags: (0x0000)
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 Lsun/security/provider/SeedGenerator;
public static void generateSeed(byte[]);
descriptor: ([B)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: getstatic sun.security.provider.SeedGenerator.instance:Lsun/security/provider/SeedGenerator;
aload 0
invokevirtual sun.security.provider.SeedGenerator.getSeedBytes:([B)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 result [B
MethodParameters:
Name Flags
result
abstract void getSeedBytes(byte[]);
descriptor: ([B)V
flags: (0x0400) ACC_ABSTRACT
MethodParameters:
Name Flags
result
static byte[] getSystemEntropy();
descriptor: ()[B
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=2, args_size=0
0: ldc "SHA"
invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
astore 0
start local 0 1: goto 4
end local 0 StackMap locals:
StackMap stack: java.security.NoSuchAlgorithmException
2: pop
3: new java.lang.InternalError
dup
ldc "internal error: SHA-1 not available."
invokespecial java.lang.InternalError.<init>:(Ljava/lang/String;)V
athrow
start local 0 4: StackMap locals: java.security.MessageDigest
StackMap stack:
invokestatic java.lang.System.currentTimeMillis:()J
l2i
i2b
istore 1
start local 1 5: aload 0
iload 1
invokevirtual java.security.MessageDigest.update:(B)V
6: new sun.security.provider.SeedGenerator$1
dup
aload 0
invokespecial sun.security.provider.SeedGenerator$1.<init>:(Ljava/security/MessageDigest;)V
7: invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
pop
8: aload 0
invokevirtual java.security.MessageDigest.digest:()[B
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
1 2 0 md Ljava/security/MessageDigest;
4 9 0 md Ljava/security/MessageDigest;
5 9 1 b B
Exception table:
from to target type
0 1 2 Class java.security.NoSuchAlgorithmException
private static void addNetworkAdapterInfo(java.security.MessageDigest);
descriptor: (Ljava/security/MessageDigest;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=4, args_size=1
start local 0 0: invokestatic java.net.NetworkInterface.getNetworkInterfaces:()Ljava/util/Enumeration;
1: astore 1
start local 1 2: goto 10
3: StackMap locals: java.util.Enumeration
StackMap stack:
aload 1
invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
checkcast java.net.NetworkInterface
astore 2
start local 2 4: aload 0
aload 2
invokevirtual java.net.NetworkInterface.toString:()Ljava/lang/String;
invokevirtual java.lang.String.getBytes:()[B
invokevirtual java.security.MessageDigest.update:([B)V
5: aload 2
invokevirtual java.net.NetworkInterface.isVirtual:()Z
ifne 10
6: aload 2
invokevirtual java.net.NetworkInterface.getHardwareAddress:()[B
astore 3
start local 3 7: aload 3
ifnull 10
8: aload 0
aload 3
invokevirtual java.security.MessageDigest.update:([B)V
9: goto 13
end local 3 end local 2 10: StackMap locals:
StackMap stack:
aload 1
invokeinterface java.util.Enumeration.hasMoreElements:()Z
ifne 3
end local 1 11: goto 13
StackMap locals: java.security.MessageDigest
StackMap stack: java.lang.Exception
12: pop
13: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 md Ljava/security/MessageDigest;
2 11 1 ifcs Ljava/util/Enumeration<Ljava/net/NetworkInterface;>;
4 10 2 ifc Ljava/net/NetworkInterface;
7 10 3 bs [B
Exception table:
from to target type
0 11 12 Class java.lang.Exception
MethodParameters:
Name Flags
md
private static byte[] longToByteArray(long);
descriptor: (J)[B
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=4, args_size=1
start local 0 0: bipush 8
newarray 8
astore 2
start local 2 1: iconst_0
istore 3
start local 3 2: goto 6
3: StackMap locals: byte[] int
StackMap stack:
aload 2
iload 3
lload 0
l2i
i2b
bastore
4: lload 0
bipush 8
lshr
lstore 0
5: iinc 3 1
StackMap locals:
StackMap stack:
6: iload 3
bipush 8
if_icmplt 3
end local 3 7: aload 2
areturn
end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 l J
1 8 2 retVal [B
2 7 3 i I
MethodParameters:
Name Flags
l
}
SourceFile: "SeedGenerator.java"
NestMembers:
sun.security.provider.SeedGenerator$1 sun.security.provider.SeedGenerator$ThreadedSeedGenerator sun.security.provider.SeedGenerator$ThreadedSeedGenerator$1 sun.security.provider.SeedGenerator$ThreadedSeedGenerator$BogusThread sun.security.provider.SeedGenerator$URLSeedGenerator sun.security.provider.SeedGenerator$URLSeedGenerator$1
InnerClasses:
sun.security.provider.SeedGenerator$1
private ThreadedSeedGenerator = sun.security.provider.SeedGenerator$ThreadedSeedGenerator of sun.security.provider.SeedGenerator
URLSeedGenerator = sun.security.provider.SeedGenerator$URLSeedGenerator of sun.security.provider.SeedGenerator