Mercurial > p > roundup > code
comparison roundup/password.py @ 1905:dc43e339e607
Centralised conversion of user-input data to hyperdb values
(bug [SF#802405], bug [SF#817217], rfe [SF#816994])
| author | Richard Jones <richard@users.sourceforge.net> |
|---|---|
| date | Tue, 11 Nov 2003 00:35:14 +0000 |
| parents | caae7d8934dc |
| children | fc52d57c6c3e |
comparison
equal
deleted
inserted
replaced
| 1904:9445caec3ff5 | 1905:dc43e339e607 |
|---|---|
| 13 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS | 13 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
| 14 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" | 14 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" |
| 15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, | 15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, |
| 16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. | 16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. |
| 17 # | 17 # |
| 18 # $Id: password.py,v 1.9 2003-04-10 05:12:41 richard Exp $ | 18 # $Id: password.py,v 1.10 2003-11-11 00:35:13 richard Exp $ |
| 19 | 19 |
| 20 __doc__ = """ | 20 __doc__ = """ |
| 21 Password handling (encoding, decoding). | 21 Password handling (encoding, decoding). |
| 22 """ | 22 """ |
| 23 | 23 |
| 24 import sha, re, string, random | 24 import sha, re, string, random |
| 25 try: | 25 try: |
| 26 import crypt | 26 import crypt |
| 27 except: | 27 except: |
| 28 crypt = None | 28 crypt = None |
| 29 pass | |
| 30 | |
| 31 class PasswordValueError(ValueError): | |
| 32 ''' The password value is not valid ''' | |
| 29 pass | 33 pass |
| 30 | 34 |
| 31 def encodePassword(plaintext, scheme, other=None): | 35 def encodePassword(plaintext, scheme, other=None): |
| 32 '''Encrypt the plaintext password. | 36 '''Encrypt the plaintext password. |
| 33 ''' | 37 ''' |
| 43 salt = random.choice(saltchars) + random.choice(saltchars) | 47 salt = random.choice(saltchars) + random.choice(saltchars) |
| 44 s = crypt.crypt(plaintext, salt) | 48 s = crypt.crypt(plaintext, salt) |
| 45 elif scheme == 'plaintext': | 49 elif scheme == 'plaintext': |
| 46 s = plaintext | 50 s = plaintext |
| 47 else: | 51 else: |
| 48 raise ValueError, 'Unknown encryption scheme "%s"'%scheme | 52 raise PasswordValueError, 'unknown encryption scheme %r'%scheme |
| 49 return s | 53 return s |
| 50 | 54 |
| 51 def generatePassword(length=8): | 55 def generatePassword(length=8): |
| 52 chars = string.letters+string.digits | 56 chars = string.letters+string.digits |
| 53 return ''.join([random.choice(chars) for x in range(length)]) | 57 return ''.join([random.choice(chars) for x in range(length)]) |
