summaryrefslogtreecommitdiffstats
path: root/nova/utils.py
diff options
context:
space:
mode:
authorMark Washenberger <mark.washenberger@rackspace.com>2011-03-16 15:16:16 -0400
committerMark Washenberger <mark.washenberger@rackspace.com>2011-03-16 15:16:16 -0400
commit19a2f8ce5174fa758de9031d64f1bed0f7c44788 (patch)
tree7e0427cf065faf6829b1bcb6af444796bc2b8ce2 /nova/utils.py
parentfc07caece79e379b6d6f2a3220806af9271e349b (diff)
parent7dbda7ca270ee5109f307be3d0f1fb7c0336ce21 (diff)
downloadnova-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.py24
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):