diff options
author | Mark Washenberger <mark.washenberger@rackspace.com> | 2011-03-16 15:16:16 -0400 |
---|---|---|
committer | Mark Washenberger <mark.washenberger@rackspace.com> | 2011-03-16 15:16:16 -0400 |
commit | 19a2f8ce5174fa758de9031d64f1bed0f7c44788 (patch) | |
tree | 7e0427cf065faf6829b1bcb6af444796bc2b8ce2 /nova/utils.py | |
parent | fc07caece79e379b6d6f2a3220806af9271e349b (diff) | |
parent | 7dbda7ca270ee5109f307be3d0f1fb7c0336ce21 (diff) | |
download | nova-19a2f8ce5174fa758de9031d64f1bed0f7c44788.tar.gz nova-19a2f8ce5174fa758de9031d64f1bed0f7c44788.tar.xz nova-19a2f8ce5174fa758de9031d64f1bed0f7c44788.zip |
merge lp:nova and resolve conflicts
Diffstat (limited to 'nova/utils.py')
-rw-r--r-- | nova/utils.py | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/nova/utils.py b/nova/utils.py index e99e71715..f8160c0b6 100644 --- a/nova/utils.py +++ b/nova/utils.py @@ -262,13 +262,25 @@ def generate_mac(): return ':'.join(map(lambda x: "%02x" % x, mac)) -def generate_password(length=20): - """Generate a random sequence of letters and digits - to be used as a password. Note that this is not intended - to represent the ultimate in security. +# Default symbols to use for passwords. Avoids visually confusing characters. +# ~6 bits per symbol +DEFAULT_PASSWORD_SYMBOLS = ("23456789" # Removed: 0,1 + "ABCDEFGHJKLMNPQRSTUVWXYZ" # Removed: I, O + "abcdefghijkmnopqrstuvwxyz") # Removed: l + + +# ~5 bits per symbol +EASIER_PASSWORD_SYMBOLS = ("23456789" # Removed: 0, 1 + "ABCDEFGHJKLMNPQRSTUVWXYZ") # Removed: I, O + + +def generate_password(length=20, symbols=DEFAULT_PASSWORD_SYMBOLS): + """Generate a random password from the supplied symbols. + + Believed to be reasonably secure (with a reasonable password length!) """ - chrs = string.letters + string.digits - return "".join([random.choice(chrs) for i in xrange(length)]) + r = random.SystemRandom() + return "".join([r.choice(symbols) for _i in xrange(length)]) def last_octet(address): |