2
logger = logging.getLogger(__name__) # pylint: disable=C0103
4
from keystone.backends import models
5
import keystone.backends as backends
6
# pylint: disable=E0611
8
from passlib.hash import sha512_crypt as sc
9
except ImportError as exc:
14
def __get_hashed_password(password):
16
return __make_password(password)
21
def set_hashed_password(values):
23
Sets hashed password for password.
25
if backends.SHOULD_HASH_PASSWORD:
26
if isinstance(values, dict) and 'password' in values.keys():
27
values['password'] = __get_hashed_password(values['password'])
28
elif isinstance(values, models.User):
29
values.password = __get_hashed_password(values.password)
31
logger.warn("Could not hash password on unsupported type: %s" %
35
def check_password(raw_password, enc_password):
37
Compares raw password and encoded password.
41
if backends.SHOULD_HASH_PASSWORD:
42
return sc.verify(raw_password, enc_password)
44
return enc_password == raw_password
47
def __make_password(raw_password):
49
Produce a new encoded password.
51
if raw_password is None:
53
hsh = __get_hexdigest(raw_password)
57
#Refer http://packages.python.org/passlib/lib/passlib.hash.sha512_crypt.html
58
#Using the default properties as of now.Salt gets generated automatically.
59
def __get_hexdigest(raw_password):
60
return sc.encrypt(raw_password)