Author: erodriguez
Date: Tue Nov  9 04:22:26 2004
New Revision: 57020

Modified:
   
incubator/directory/kerberos/trunk/kerberos/src/java/org/apache/kerberos/crypto/GlobalSequenceNumber.java
Log:
Removed dependency global sequence number had on confounder.

Modified: 
incubator/directory/kerberos/trunk/kerberos/src/java/org/apache/kerberos/crypto/GlobalSequenceNumber.java
==============================================================================
--- 
incubator/directory/kerberos/trunk/kerberos/src/java/org/apache/kerberos/crypto/GlobalSequenceNumber.java
   (original)
+++ 
incubator/directory/kerberos/trunk/kerberos/src/java/org/apache/kerberos/crypto/GlobalSequenceNumber.java
   Tue Nov  9 04:22:26 2004
@@ -16,28 +16,47 @@
  */
 package org.apache.kerberos.crypto;
 
-public class GlobalSequenceNumber implements SequenceNumber {
+import java.security.SecureRandom;
 
-       private int _sequenceNumber = Confounder.intValue();
+public class GlobalSequenceNumber implements SequenceNumber
+{
+    private static final SecureRandom random = new SecureRandom();
 
-       public GlobalSequenceNumber(int start) {
-               _sequenceNumber = start;
+       private int sequenceNumber = randomInt();
+
+       public GlobalSequenceNumber(int start)
+    {
+               sequenceNumber = start;
        }
        
-       public synchronized void init() {
-               _sequenceNumber = Confounder.intValue();
+       public synchronized void init()
+    {
+               sequenceNumber = randomInt();
        }
        
-       public synchronized int current() {
-               return _sequenceNumber;
+       public synchronized int current()
+    {
+               return sequenceNumber;
        }
 
-       public synchronized int next() {
-               return _sequenceNumber + 1;
+       public synchronized int next()
+    {
+               return sequenceNumber + 1;
        }
        
-       public synchronized void step() {
-               _sequenceNumber++;
+       public synchronized void step()
+    {
+               sequenceNumber++;
+       }
+
+       private int randomInt()
+    {
+        byte[] data = new byte[4];
+        random.nextBytes(data);
+               int result = 0;
+               for (int i = 0; i < 4; i++)
+                       result += data[i] * (16 ^ i);
+               return result;
        }
 }
 

Reply via email to