home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / java / security / SecureRandom.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  3.2 KB  |  155 lines

  1. package java.security;
  2.  
  3. import java.util.Enumeration;
  4. import java.util.Random;
  5. import sun.security.provider.Sun;
  6.  
  7. public class SecureRandom extends Random {
  8.    private Provider provider = null;
  9.    private SecureRandomSpi secureRandomSpi = null;
  10.    private static SecureRandom seedGenerator = null;
  11.    static final long serialVersionUID = 4940670005562187L;
  12.    private byte[] state;
  13.    private MessageDigest digest = null;
  14.    private byte[] randomBytes;
  15.    private int randomBytesUsed;
  16.    private long counter;
  17.  
  18.    public SecureRandom() {
  19.       super(0L);
  20.       String var1 = getPrngAlgorithm();
  21.       if (var1 == null) {
  22.          this.secureRandomSpi = new sun.security.provider.SecureRandom();
  23.          this.provider = new Sun();
  24.       } else {
  25.          try {
  26.             SecureRandom var2 = getInstance(var1);
  27.             this.secureRandomSpi = var2.getSecureRandomSpi();
  28.             this.provider = var2.getProvider();
  29.          } catch (NoSuchAlgorithmException var3) {
  30.          }
  31.       }
  32.  
  33.    }
  34.  
  35.    public SecureRandom(byte[] var1) {
  36.       super(0L);
  37.       String var2 = getPrngAlgorithm();
  38.       if (var2 == null) {
  39.          this.secureRandomSpi = new sun.security.provider.SecureRandom();
  40.          this.provider = new Sun();
  41.          this.secureRandomSpi.engineSetSeed(var1);
  42.       } else {
  43.          try {
  44.             SecureRandom var3 = getInstance(var2);
  45.             this.secureRandomSpi = var3.getSecureRandomSpi();
  46.             this.provider = var3.getProvider();
  47.             this.secureRandomSpi.engineSetSeed(var1);
  48.          } catch (NoSuchAlgorithmException var4) {
  49.          }
  50.       }
  51.  
  52.    }
  53.  
  54.    protected SecureRandom(SecureRandomSpi var1, Provider var2) {
  55.       super(0L);
  56.       this.secureRandomSpi = var1;
  57.       this.provider = var2;
  58.    }
  59.  
  60.    public static SecureRandom getInstance(String var0) throws NoSuchAlgorithmException {
  61.       try {
  62.          Object[] var1 = Security.getImpl(var0, "SecureRandom", (String)null);
  63.          return new SecureRandom((SecureRandomSpi)var1[0], (Provider)var1[1]);
  64.       } catch (NoSuchProviderException var2) {
  65.          throw new NoSuchAlgorithmException(var0 + " not found");
  66.       }
  67.    }
  68.  
  69.    public static SecureRandom getInstance(String var0, String var1) throws NoSuchAlgorithmException, NoSuchProviderException {
  70.       if (var1 != null && var1.length() != 0) {
  71.          Object[] var2 = Security.getImpl(var0, "SecureRandom", var1);
  72.          return new SecureRandom((SecureRandomSpi)var2[0], (Provider)var2[1]);
  73.       } else {
  74.          throw new IllegalArgumentException("missing provider");
  75.       }
  76.    }
  77.  
  78.    SecureRandomSpi getSecureRandomSpi() {
  79.       return this.secureRandomSpi;
  80.    }
  81.  
  82.    public final Provider getProvider() {
  83.       return this.provider;
  84.    }
  85.  
  86.    public synchronized void setSeed(byte[] var1) {
  87.       this.secureRandomSpi.engineSetSeed(var1);
  88.    }
  89.  
  90.    public void setSeed(long var1) {
  91.       if (var1 != 0L) {
  92.          this.secureRandomSpi.engineSetSeed(longToByteArray(var1));
  93.       }
  94.  
  95.    }
  96.  
  97.    public synchronized void nextBytes(byte[] var1) {
  98.       this.secureRandomSpi.engineNextBytes(var1);
  99.    }
  100.  
  101.    protected final int next(int var1) {
  102.       int var2 = (var1 + 7) / 8;
  103.       byte[] var3 = new byte[var2];
  104.       int var4 = 0;
  105.       this.nextBytes(var3);
  106.  
  107.       for(int var5 = 0; var5 < var2; ++var5) {
  108.          var4 = (var4 << 8) + (var3[var5] & 255);
  109.       }
  110.  
  111.       return var4 >>> var2 * 8 - var1;
  112.    }
  113.  
  114.    public static byte[] getSeed(int var0) {
  115.       if (seedGenerator == null) {
  116.          seedGenerator = new SecureRandom();
  117.       }
  118.  
  119.       return seedGenerator.generateSeed(var0);
  120.    }
  121.  
  122.    public byte[] generateSeed(int var1) {
  123.       return this.secureRandomSpi.engineGenerateSeed(var1);
  124.    }
  125.  
  126.    private static byte[] longToByteArray(long var0) {
  127.       byte[] var2 = new byte[8];
  128.  
  129.       for(int var3 = 0; var3 < 8; ++var3) {
  130.          var2[var3] = (byte)((int)var0);
  131.          var0 >>= 8;
  132.       }
  133.  
  134.       return var2;
  135.    }
  136.  
  137.    private static String getPrngAlgorithm() {
  138.       Provider[] var0 = Security.getProviders();
  139.  
  140.       for(int var1 = 0; var1 < var0.length; ++var1) {
  141.          Enumeration var2 = var0[var1].propertyNames();
  142.  
  143.          while(var2.hasMoreElements()) {
  144.             String var3 = (String)var2.nextElement();
  145.             if (var3.startsWith("SecureRandom.")) {
  146.                int var4 = var3.indexOf(".", 0);
  147.                return var3.substring(var4 + 1);
  148.             }
  149.          }
  150.       }
  151.  
  152.       return null;
  153.    }
  154. }
  155.