[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] Remove code seeding RNG from /dev/urandom. The random module's default RNG is



# HG changeset patch
# User emellor@ewan
# Node ID 59440a003278185ad0846ac571da107a0c141b4c
# Parent  f15892b95965e1f7f2f636734c743c5919554cd7
Remove code seeding RNG from /dev/urandom.  The random module's default RNG is
already seeded from the clock, so this is unnecessary, non-portable, and
expensive.  This should improve start-up time of Xend.  Replace twisty maze of
code with something sensible.

Signed-off-by: Ewan Mellor <ewan@xxxxxxxxxxxxx>

diff -r f15892b95965 -r 59440a003278 tools/python/xen/xend/uuid.py
--- a/tools/python/xen/xend/uuid.py     Sun Oct  9 10:53:34 2005
+++ b/tools/python/xen/xend/uuid.py     Sun Oct  9 10:57:24 2005
@@ -13,14 +13,19 @@
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 #============================================================================
 # Copyright (C) 2005 Mike Wray <mike.wray@xxxxxx>
+# Copyright (C) 2005 XenSource Ltd
 #============================================================================
+
 
 """Universal(ly) Unique Identifiers (UUIDs).
 """
+
+
 import commands
 import random
 
-def uuidgen(random=True):
+
+def getUuidUuidgen(random = True):
     """Generate a UUID using the command uuidgen.
 
     If random is true (default) generates a random uuid.
@@ -33,50 +38,21 @@
         cmd += " -t"
     return commands.getoutput(cmd)
 
-class UuidFactoryUuidgen:
 
-    """A uuid factory using uuidgen."""
+def getUuidRandom():
+    """Generate a random UUID."""
+    
+    bytes = [ random.randint(0, 255) for i in range(0, 16) ]
+    # Encode the variant.
+    bytes[6] = (bytes[6] & 0x0f) | 0x40
+    bytes[8] = (bytes[8] & 0x3f) | 0x80
+    f = "%02x"
+    return ( "-".join([f*4, f*2, f*2, f*2, f*6]) % tuple(bytes) )
 
-    def __init__(self):
-        pass
 
-    def getUuid(self):
-        return uuidgen()
+#uuidFactory = getUuidUuidgen
+uuidFactory = getUuidRandom
 
-class UuidFactoryRandom:
-
-    """A random uuid factory."""
-
-    def __init__(self):
-        f = file("/dev/urandom", "r")
-        seed = f.read(16)
-        f.close()
-        self.rand = random.Random(seed)
-
-    def randBytes(self, n):
-        return [ self.rand.randint(0, 255) for i in range(0, n) ]
-
-    def getUuid(self):
-        bytes = self.randBytes(16)
-        # Encode the variant.
-        bytes[6] = (bytes[6] & 0x0f) | 0x40
-        bytes[8] = (bytes[8] & 0x3f) | 0x80
-        f = "%02x"
-        return ( "-".join([f*4, f*2, f*2, f*2, f*6]) % tuple(bytes) )
-
-def getFactory():
-    """Get the factory to use for creating uuids.
-    This is so it's easy to change the uuid factory.
-    For example, for testing we might want repeatable uuids
-    rather than the random ones we normally use.
-    """
-    global uuidFactory
-    try:
-        uuidFactory
-    except:
-        #uuidFactory = UuidFactoryUuidgen()
-        uuidFactory = UuidFactoryRandom()
-    return uuidFactory
 
 def getUuid():
-    return getFactory().getUuid()
+    return uuidFactory()

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.