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 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 4
3: aload 0
ldc "file:/dev/urandom"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 16
4: StackMap locals: java.lang.String
StackMap stack:
new sun.security.provider.NativeSeedGenerator
dup
aload 0
invokespecial sun.security.provider.NativeSeedGenerator.<init>:(Ljava/lang/String;)V
putstatic sun.security.provider.SeedGenerator.instance:Lsun/security/provider/SeedGenerator;
5: getstatic sun.security.provider.SeedGenerator.debug:Lsun/security/util/Debug;
ifnull 28
6: getstatic sun.security.provider.SeedGenerator.debug:Lsun/security/util/Debug;
7: new java.lang.StringBuilder
dup
ldc "Using operating system seed generator"
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;
8: invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
9: goto 28
StackMap locals:
StackMap stack: java.io.IOException
10: astore 1
start local 1 11: getstatic sun.security.provider.SeedGenerator.debug:Lsun/security/util/Debug;
ifnull 28
12: 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
13: 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;
14: invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
end local 1 15: goto 28
StackMap locals:
StackMap stack:
16: aload 0
invokevirtual java.lang.String.isEmpty:()Z
ifne 28
17: 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;
18: getstatic sun.security.provider.SeedGenerator.debug:Lsun/security/util/Debug;
ifnull 28
19: 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
20: aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
21: invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
22: goto 28
StackMap locals:
StackMap stack: java.io.IOException
23: astore 1
start local 1 24: getstatic sun.security.provider.SeedGenerator.debug:Lsun/security/util/Debug;
ifnull 28
25: 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
26: 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;
27: invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
end local 1 28: StackMap locals:
StackMap stack:
getstatic sun.security.provider.SeedGenerator.instance:Lsun/security/provider/SeedGenerator;
ifnonnull 32
29: getstatic sun.security.provider.SeedGenerator.debug:Lsun/security/util/Debug;
ifnull 31
30: 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
31: 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 32: StackMap locals:
StackMap stack:
return
LocalVariableTable:
Start End Slot Name Signature
2 32 0 egdSource Ljava/lang/String;
11 15 1 e Ljava/io/IOException;
24 28 1 e Ljava/io/IOException;
Exception table:
from to target type
4 9 10 Class java.io.IOException
17 22 23 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=4, 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 6
end local 0 StackMap locals:
StackMap stack: java.security.NoSuchAlgorithmException
2: astore 1
start local 1 3: new java.lang.InternalError
dup
ldc "internal error: SHA-1 not available."
4: aload 1
5: invokespecial java.lang.InternalError.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 1 start local 0 6: StackMap locals: java.security.MessageDigest
StackMap stack:
invokestatic java.lang.System.currentTimeMillis:()J
l2i
i2b
istore 1
start local 1 7: aload 0
iload 1
invokevirtual java.security.MessageDigest.update:(B)V
8: new sun.security.provider.SeedGenerator$1
dup
aload 0
invokespecial sun.security.provider.SeedGenerator$1.<init>:(Ljava/security/MessageDigest;)V
9: invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
pop
10: 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;
6 11 0 md Ljava/security/MessageDigest;
3 6 1 nsae Ljava/security/NoSuchAlgorithmException;
7 11 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