2017-09-09 13:53:58 -04:00
|
|
|
import scrypt # pip install scrypt
|
2017-10-09 19:48:10 -04:00
|
|
|
|
2017-09-12 21:43:24 -04:00
|
|
|
import sql
|
2017-09-09 13:53:58 -04:00
|
|
|
|
|
|
|
|
2017-10-09 19:48:10 -04:00
|
|
|
def get_verification_hash(password):
|
|
|
|
salt = sql.get_option('password_verification_salt')
|
|
|
|
|
|
|
|
return get_scrypt_hash(password, salt)
|
|
|
|
|
|
|
|
|
|
|
|
def get_password_derived_key(password):
|
|
|
|
salt = sql.get_option('password_derived_key_salt')
|
2017-09-09 13:53:58 -04:00
|
|
|
|
2017-10-09 19:48:10 -04:00
|
|
|
return get_scrypt_hash(password, salt)
|
2017-09-09 13:53:58 -04:00
|
|
|
|
|
|
|
|
2017-10-09 19:48:10 -04:00
|
|
|
def get_scrypt_hash(password, salt):
|
2017-09-12 22:23:57 -04:00
|
|
|
# scrypt doesn't like unicode strings
|
|
|
|
password = password.encode('ascii', 'ignore')
|
|
|
|
salt = salt.encode('ascii', 'ignore')
|
|
|
|
|
2017-09-09 13:53:58 -04:00
|
|
|
hashed = scrypt.hash(password=password,
|
2017-10-09 19:48:10 -04:00
|
|
|
salt=salt,
|
|
|
|
N=16384,
|
|
|
|
r=8,
|
|
|
|
p=1,
|
|
|
|
buflen=32)
|
2017-09-09 13:53:58 -04:00
|
|
|
|
2017-10-09 19:48:10 -04:00
|
|
|
return hashed
|