final class sun.security.pkcs11.P11SecureRandom extends java.security.SecureRandomSpi
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.security.pkcs11.P11SecureRandom
  super_class: java.security.SecureRandomSpi
{
  private static final long serialVersionUID;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: -8939510236124553291

  private final sun.security.pkcs11.Token token;
    descriptor: Lsun/security/pkcs11/Token;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private volatile java.security.SecureRandom mixRandom;
    descriptor: Ljava/security/SecureRandom;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private byte[] mixBuffer;
    descriptor: [B
    flags: (0x0002) ACC_PRIVATE

  private int buffered;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private static final long MAX_IBUFFER_TIME;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 100

  private static final int IBUFFER_SIZE;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 32

  private transient byte[] iBuffer;
    descriptor: [B
    flags: (0x0082) ACC_PRIVATE, ACC_TRANSIENT

  private transient int ibuffered;
    descriptor: I
    flags: (0x0082) ACC_PRIVATE, ACC_TRANSIENT

  private transient long lastRead;
    descriptor: J
    flags: (0x0082) ACC_PRIVATE, ACC_TRANSIENT

  void <init>(sun.security.pkcs11.Token);
    descriptor: (Lsun/security/pkcs11/Token;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // sun.security.pkcs11.P11SecureRandom this
        start local 1 // sun.security.pkcs11.Token token
         0: .line 86
            aload 0 /* this */
            invokespecial java.security.SecureRandomSpi.<init>:()V
         1: .line 78
            aload 0 /* this */
            bipush 32
            newarray 8
            putfield sun.security.pkcs11.P11SecureRandom.iBuffer:[B
         2: .line 81
            aload 0 /* this */
            iconst_0
            putfield sun.security.pkcs11.P11SecureRandom.ibuffered:I
         3: .line 84
            aload 0 /* this */
            lconst_0
            putfield sun.security.pkcs11.P11SecureRandom.lastRead:J
         4: .line 87
            aload 0 /* this */
            aload 1 /* token */
            putfield sun.security.pkcs11.P11SecureRandom.token:Lsun/security/pkcs11/Token;
         5: .line 88
            return
        end local 1 // sun.security.pkcs11.Token token
        end local 0 // sun.security.pkcs11.P11SecureRandom this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Lsun/security/pkcs11/P11SecureRandom;
            0    6     1  token  Lsun/security/pkcs11/Token;
    MethodParameters:
       Name  Flags
      token  

  protected synchronized void engineSetSeed(byte[]);
    descriptor: ([B)V
    flags: (0x0024) ACC_PROTECTED, ACC_SYNCHRONIZED
    Code:
      stack=4, locals=6, args_size=2
        start local 0 // sun.security.pkcs11.P11SecureRandom this
        start local 1 // byte[] seed
         0: .line 92
            aload 1 /* seed */
            ifnonnull 2
         1: .line 93
            new java.lang.NullPointerException
            dup
            ldc "seed must not be null"
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 95
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 2 /* session */
        start local 2 // sun.security.pkcs11.Session session
         3: .line 97
            aload 0 /* this */
            getfield sun.security.pkcs11.P11SecureRandom.token:Lsun/security/pkcs11/Token;
            invokevirtual sun.security.pkcs11.Token.getOpSession:()Lsun/security/pkcs11/Session;
            astore 2 /* session */
         4: .line 98
            aload 0 /* this */
            getfield sun.security.pkcs11.P11SecureRandom.token:Lsun/security/pkcs11/Token;
            getfield sun.security.pkcs11.Token.p11:Lsun/security/pkcs11/wrapper/PKCS11;
            aload 2 /* session */
            invokevirtual sun.security.pkcs11.Session.id:()J
            aload 1 /* seed */
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_SeedRandom:(J[B)V
         5: .line 99
            goto 22
      StackMap locals: sun.security.pkcs11.P11SecureRandom byte[] sun.security.pkcs11.Session
      StackMap stack: sun.security.pkcs11.wrapper.PKCS11Exception
         6: pop
         7: .line 102
            aload 0 /* this */
            getfield sun.security.pkcs11.P11SecureRandom.mixRandom:Ljava/security/SecureRandom;
            astore 3 /* random */
        start local 3 // java.security.SecureRandom random
         8: .line 103
            aload 3 /* random */
            ifnull 11
         9: .line 104
            aload 3 /* random */
            aload 1 /* seed */
            invokevirtual java.security.SecureRandom.setSeed:([B)V
        10: .line 105
            goto 18
        11: .line 107
      StackMap locals: java.security.SecureRandom
      StackMap stack:
            aload 0 /* this */
            bipush 20
            newarray 8
            putfield sun.security.pkcs11.P11SecureRandom.mixBuffer:[B
        12: .line 108
            ldc "SHA1PRNG"
            invokestatic java.security.SecureRandom.getInstance:(Ljava/lang/String;)Ljava/security/SecureRandom;
            astore 3 /* random */
        13: .line 110
            aload 3 /* random */
            aload 1 /* seed */
            invokevirtual java.security.SecureRandom.setSeed:([B)V
        14: .line 111
            aload 0 /* this */
            aload 3 /* random */
            putfield sun.security.pkcs11.P11SecureRandom.mixRandom:Ljava/security/SecureRandom;
        15: .line 112
            goto 18
      StackMap locals:
      StackMap stack: java.security.NoSuchAlgorithmException
        16: astore 4 /* ee */
        start local 4 // java.security.NoSuchAlgorithmException ee
        17: .line 113
            new java.security.ProviderException
            dup
            aload 4 /* ee */
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.security.NoSuchAlgorithmException ee
        end local 3 // java.security.SecureRandom random
        18: .line 117
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.pkcs11.P11SecureRandom.token:Lsun/security/pkcs11/Token;
            aload 2 /* session */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
            goto 23
        19: .line 116
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 5
        20: .line 117
            aload 0 /* this */
            getfield sun.security.pkcs11.P11SecureRandom.token:Lsun/security/pkcs11/Token;
            aload 2 /* session */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        21: .line 118
            aload 5
            athrow
        22: .line 117
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.pkcs11.P11SecureRandom.token:Lsun/security/pkcs11/Token;
            aload 2 /* session */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        23: .line 119
      StackMap locals:
      StackMap stack:
            return
        end local 2 // sun.security.pkcs11.Session session
        end local 1 // byte[] seed
        end local 0 // sun.security.pkcs11.P11SecureRandom this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   24     0     this  Lsun/security/pkcs11/P11SecureRandom;
            0   24     1     seed  [B
            3   24     2  session  Lsun/security/pkcs11/Session;
            8   18     3   random  Ljava/security/SecureRandom;
           17   18     4       ee  Ljava/security/NoSuchAlgorithmException;
      Exception table:
        from    to  target  type
           3     5       6  Class sun.security.pkcs11.wrapper.PKCS11Exception
          11    15      16  Class java.security.NoSuchAlgorithmException
           3    18      19  any
    MethodParameters:
      Name  Flags
      seed  

  protected void engineNextBytes(byte[]);
    descriptor: ([B)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=8, locals=6, args_size=2
        start local 0 // sun.security.pkcs11.P11SecureRandom this
        start local 1 // byte[] bytes
         0: .line 123
            aload 1 /* bytes */
            ifnull 1
            aload 1 /* bytes */
            arraylength
            ifne 2
         1: .line 124
      StackMap locals:
      StackMap stack:
            return
         2: .line 126
      StackMap locals:
      StackMap stack:
            aload 1 /* bytes */
            arraylength
            bipush 32
            if_icmpgt 20
         3: .line 127
            iconst_0
            istore 2 /* ofs */
        start local 2 // int ofs
         4: .line 128
            aload 0 /* this */
            getfield sun.security.pkcs11.P11SecureRandom.iBuffer:[B
            dup
            astore 3
            monitorenter
         5: .line 129
            goto 15
         6: .line 130
      StackMap locals: int byte[]
      StackMap stack:
            invokestatic java.lang.System.currentTimeMillis:()J
            lstore 4 /* time */
        start local 4 // long time
         7: .line 132
            aload 0 /* this */
            getfield sun.security.pkcs11.P11SecureRandom.ibuffered:I
            ifeq 9
         8: .line 133
            lload 4 /* time */
            aload 0 /* this */
            getfield sun.security.pkcs11.P11SecureRandom.lastRead:J
            lsub
            ldc 100
            lcmp
            iflt 14
         9: .line 134
      StackMap locals: long
      StackMap stack:
            aload 0 /* this */
            lload 4 /* time */
            putfield sun.security.pkcs11.P11SecureRandom.lastRead:J
        10: .line 135
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.security.pkcs11.P11SecureRandom.iBuffer:[B
            invokevirtual sun.security.pkcs11.P11SecureRandom.implNextBytes:([B)V
        11: .line 136
            aload 0 /* this */
            bipush 32
            putfield sun.security.pkcs11.P11SecureRandom.ibuffered:I
        12: .line 139
            goto 14
        13: .line 140
      StackMap locals:
      StackMap stack:
            aload 1 /* bytes */
            iload 2 /* ofs */
            iinc 2 /* ofs */ 1
            aload 0 /* this */
            getfield sun.security.pkcs11.P11SecureRandom.iBuffer:[B
            bipush 32
            aload 0 /* this */
            dup
            getfield sun.security.pkcs11.P11SecureRandom.ibuffered:I
            dup_x1
            iconst_1
            isub
            putfield sun.security.pkcs11.P11SecureRandom.ibuffered:I
            isub
            baload
            bastore
        14: .line 139
      StackMap locals:
      StackMap stack:
            iload 2 /* ofs */
            aload 1 /* bytes */
            arraylength
            if_icmpge 15
            aload 0 /* this */
            getfield sun.security.pkcs11.P11SecureRandom.ibuffered:I
            ifgt 13
        end local 4 // long time
        15: .line 129
      StackMap locals:
      StackMap stack:
            iload 2 /* ofs */
            aload 1 /* bytes */
            arraylength
            if_icmplt 6
        16: .line 128
            aload 3
            monitorexit
        17: goto 21
      StackMap locals:
      StackMap stack: java.lang.Throwable
        18: aload 3
            monitorexit
        19: athrow
        end local 2 // int ofs
        20: .line 146
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* bytes */
            invokevirtual sun.security.pkcs11.P11SecureRandom.implNextBytes:([B)V
        21: .line 149
      StackMap locals:
      StackMap stack:
            return
        end local 1 // byte[] bytes
        end local 0 // sun.security.pkcs11.P11SecureRandom this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   22     0   this  Lsun/security/pkcs11/P11SecureRandom;
            0   22     1  bytes  [B
            4   20     2    ofs  I
            7   15     4   time  J
      Exception table:
        from    to  target  type
           5    17      18  any
          18    19      18  any
    MethodParameters:
       Name  Flags
      bytes  

  protected byte[] engineGenerateSeed(int);
    descriptor: (I)[B
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // sun.security.pkcs11.P11SecureRandom this
        start local 1 // int numBytes
         0: .line 153
            iload 1 /* numBytes */
            newarray 8
            astore 2 /* b */
        start local 2 // byte[] b
         1: .line 154
            aload 0 /* this */
            aload 2 /* b */
            invokevirtual sun.security.pkcs11.P11SecureRandom.engineNextBytes:([B)V
         2: .line 155
            aload 2 /* b */
            areturn
        end local 2 // byte[] b
        end local 1 // int numBytes
        end local 0 // sun.security.pkcs11.P11SecureRandom this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lsun/security/pkcs11/P11SecureRandom;
            0    3     1  numBytes  I
            1    3     2         b  [B
    MethodParameters:
          Name  Flags
      numBytes  

  private void mix(byte[]);
    descriptor: ([B)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=6, args_size=2
        start local 0 // sun.security.pkcs11.P11SecureRandom this
        start local 1 // byte[] b
         0: .line 159
            aload 0 /* this */
            getfield sun.security.pkcs11.P11SecureRandom.mixRandom:Ljava/security/SecureRandom;
            astore 2 /* random */
        start local 2 // java.security.SecureRandom random
         1: .line 160
            aload 2 /* random */
            ifnonnull 3
         2: .line 162
            return
         3: .line 164
      StackMap locals: java.security.SecureRandom
      StackMap stack:
            aload 0 /* this */
            dup
            astore 3
            monitorenter
         4: .line 165
            iconst_0
            istore 4 /* ofs */
        start local 4 // int ofs
         5: .line 166
            aload 1 /* b */
            arraylength
            istore 5 /* len */
        start local 5 // int len
         6: .line 167
            goto 12
         7: .line 168
      StackMap locals: sun.security.pkcs11.P11SecureRandom int int
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.pkcs11.P11SecureRandom.buffered:I
            ifne 10
         8: .line 169
            aload 2 /* random */
            aload 0 /* this */
            getfield sun.security.pkcs11.P11SecureRandom.mixBuffer:[B
            invokevirtual java.security.SecureRandom.nextBytes:([B)V
         9: .line 170
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.security.pkcs11.P11SecureRandom.mixBuffer:[B
            arraylength
            putfield sun.security.pkcs11.P11SecureRandom.buffered:I
        10: .line 172
      StackMap locals:
      StackMap stack:
            aload 1 /* b */
            iload 4 /* ofs */
            iinc 4 /* ofs */ 1
            dup2
            baload
            aload 0 /* this */
            getfield sun.security.pkcs11.P11SecureRandom.mixBuffer:[B
            aload 0 /* this */
            getfield sun.security.pkcs11.P11SecureRandom.mixBuffer:[B
            arraylength
            aload 0 /* this */
            getfield sun.security.pkcs11.P11SecureRandom.buffered:I
            isub
            baload
            ixor
            i2b
            bastore
        11: .line 173
            aload 0 /* this */
            dup
            getfield sun.security.pkcs11.P11SecureRandom.buffered:I
            iconst_1
            isub
            putfield sun.security.pkcs11.P11SecureRandom.buffered:I
        12: .line 167
      StackMap locals:
      StackMap stack:
            iload 5 /* len */
            iinc 5 /* len */ -1
            ifgt 7
        end local 5 // int len
        end local 4 // int ofs
        13: .line 164
            aload 3
            monitorexit
        14: goto 17
      StackMap locals: sun.security.pkcs11.P11SecureRandom byte[] java.security.SecureRandom sun.security.pkcs11.P11SecureRandom
      StackMap stack: java.lang.Throwable
        15: aload 3
            monitorexit
        16: athrow
        17: .line 176
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.security.SecureRandom random
        end local 1 // byte[] b
        end local 0 // sun.security.pkcs11.P11SecureRandom this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   18     0    this  Lsun/security/pkcs11/P11SecureRandom;
            0   18     1       b  [B
            1   18     2  random  Ljava/security/SecureRandom;
            5   13     4     ofs  I
            6   13     5     len  I
      Exception table:
        from    to  target  type
           4    14      15  any
          15    16      15  any
    MethodParameters:
      Name  Flags
      b     

  private void implNextBytes(byte[]);
    descriptor: ([B)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // sun.security.pkcs11.P11SecureRandom this
        start local 1 // byte[] bytes
         0: .line 180
            aconst_null
            astore 2 /* session */
        start local 2 // sun.security.pkcs11.Session session
         1: .line 182
            aload 0 /* this */
            getfield sun.security.pkcs11.P11SecureRandom.token:Lsun/security/pkcs11/Token;
            invokevirtual sun.security.pkcs11.Token.getOpSession:()Lsun/security/pkcs11/Session;
            astore 2 /* session */
         2: .line 183
            aload 0 /* this */
            getfield sun.security.pkcs11.P11SecureRandom.token:Lsun/security/pkcs11/Token;
            getfield sun.security.pkcs11.Token.p11:Lsun/security/pkcs11/wrapper/PKCS11;
            aload 2 /* session */
            invokevirtual sun.security.pkcs11.Session.id:()J
            aload 1 /* bytes */
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_GenerateRandom:(J[B)V
         3: .line 184
            aload 0 /* this */
            aload 1 /* bytes */
            invokevirtual sun.security.pkcs11.P11SecureRandom.mix:([B)V
         4: .line 185
            goto 10
      StackMap locals: sun.security.pkcs11.P11SecureRandom byte[] sun.security.pkcs11.Session
      StackMap stack: sun.security.pkcs11.wrapper.PKCS11Exception
         5: astore 3 /* e */
        start local 3 // sun.security.pkcs11.wrapper.PKCS11Exception e
         6: .line 186
            new java.security.ProviderException
            dup
            ldc "nextBytes() failed"
            aload 3 /* e */
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // sun.security.pkcs11.wrapper.PKCS11Exception e
         7: .line 187
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4
         8: .line 188
            aload 0 /* this */
            getfield sun.security.pkcs11.P11SecureRandom.token:Lsun/security/pkcs11/Token;
            aload 2 /* session */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
         9: .line 189
            aload 4
            athrow
        10: .line 188
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.pkcs11.P11SecureRandom.token:Lsun/security/pkcs11/Token;
            aload 2 /* session */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        11: .line 190
            return
        end local 2 // sun.security.pkcs11.Session session
        end local 1 // byte[] bytes
        end local 0 // sun.security.pkcs11.P11SecureRandom this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   12     0     this  Lsun/security/pkcs11/P11SecureRandom;
            0   12     1    bytes  [B
            1   12     2  session  Lsun/security/pkcs11/Session;
            6    7     3        e  Lsun/security/pkcs11/wrapper/PKCS11Exception;
      Exception table:
        from    to  target  type
           1     4       5  Class sun.security.pkcs11.wrapper.PKCS11Exception
           1     7       7  any
    MethodParameters:
       Name  Flags
      bytes  

  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 // sun.security.pkcs11.P11SecureRandom this
        start local 1 // java.io.ObjectInputStream in
         0: .line 194
            aload 1 /* in */
            invokevirtual java.io.ObjectInputStream.defaultReadObject:()V
         1: .line 196
            aload 0 /* this */
            bipush 32
            newarray 8
            putfield sun.security.pkcs11.P11SecureRandom.iBuffer:[B
         2: .line 197
            aload 0 /* this */
            iconst_0
            putfield sun.security.pkcs11.P11SecureRandom.ibuffered:I
         3: .line 198
            aload 0 /* this */
            lconst_0
            putfield sun.security.pkcs11.P11SecureRandom.lastRead:J
         4: .line 199
            return
        end local 1 // java.io.ObjectInputStream in
        end local 0 // sun.security.pkcs11.P11SecureRandom this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lsun/security/pkcs11/P11SecureRandom;
            0    5     1    in  Ljava/io/ObjectInputStream;
    Exceptions:
      throws java.io.IOException, java.lang.ClassNotFoundException
    MethodParameters:
      Name  Flags
      in    
}
SourceFile: "P11SecureRandom.java"