diff --git a/crans_utils.py b/crans_utils.py index 15a6a95..d86bf07 100644 --- a/crans_utils.py +++ b/crans_utils.py @@ -37,6 +37,8 @@ import time import smtplib import sys import os +import base64 +import hashlib import ldap.filter sys.path.append('/usr/scripts/gestion') import config @@ -153,9 +155,9 @@ def strip_accents(a): res = normalize('NFKD', a).encode('ASCII', 'ignore') return unicode(res) -def strip_spaces(a): +def strip_spaces(a, by=u'_'): """ Suppression des espaces et des apostrophes""" - return a.replace(u' ', u'_').replace(u"'", u'') + return a.replace(u' ', by).replace(u"'", u'') def mailexist(mail): """Vérifie si une adresse mail existe ou non grace à la commande @@ -232,3 +234,12 @@ def escape(chaine): """Renvoie une chaîne échapée pour pouvoir la mettre en toute sécurité dans une requête ldap.""" return ldap.filter.escape_filter_chars(chaine) + + +def hash_password(password, salt=None): + if salt is None: + salt = os.urandom(8) + elif len(salt)<8: + raise ValueError("salt devrait faire au moins 8 octets") + + return '{SSHA}' + base64.b64encode(hashlib.sha1(password + salt).digest() + salt)