[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |