home *** CD-ROM | disk | FTP | other *** search
/ PC User 2003 May / Disc 2 / PCU0503CD2.iso / Crystal / 3rdparty / JavaVM / Plug-in / jplugin.exe / rt.jar / java / security / SeedGenerator.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-16  |  1.6 KB  |  59 lines

  1. package java.security;
  2.  
  3. class SeedGenerator {
  4.    private static int sleepTime;
  5.    private static final int TARGET_SPIN_COUNT = 55000;
  6.    private static final int MIN_SPIN_COUNT = 33000;
  7.    private static final int MAX_SPIN_COUNT = 110000;
  8.    private static final int MAX_SLEEP_TIME = 30000;
  9.    private static final int MAX_ATTEMPTS = 5;
  10.  
  11.    private static void setSleepTime() {
  12.       sleepTime = 55000000 / genSeed(1000);
  13.       if (sleepTime > 30000) {
  14.          sleepTime = 30000;
  15.       }
  16.  
  17.       Security.debug("Resetting sleep time for seed generation: " + sleepTime + " ms.");
  18.    }
  19.  
  20.    public static synchronized int genSeed() {
  21.       int var0 = genSeed(sleepTime);
  22.  
  23.       int var1;
  24.       for(var1 = 0; var0 < 33000 && var1 < 5; ++var1) {
  25.          Security.debug("Candidate seed too low: " + var0 + " ms.");
  26.          setSleepTime();
  27.          var0 = genSeed(sleepTime);
  28.       }
  29.  
  30.       if (var1 > 5) {
  31.          throw new SecurityException("unable to generate a quality seed");
  32.       } else {
  33.          if (var0 > 110000) {
  34.             Security.debug("Candidate seed too high: " + var0 + " ms.");
  35.             setSleepTime();
  36.          }
  37.  
  38.          return var0;
  39.       }
  40.    }
  41.  
  42.    private static int genSeed(int var0) {
  43.       int var1 = 0;
  44.       Sleeper var2 = new Sleeper(var0);
  45.       ((Thread)var2).start();
  46.  
  47.       while(((Thread)var2).isAlive()) {
  48.          ++var1;
  49.          Thread.yield();
  50.       }
  51.  
  52.       return var1;
  53.    }
  54.  
  55.    static {
  56.       setSleepTime();
  57.    }
  58. }
  59.