diff options
author | Erik Johnston <erikj@jki.re> | 2016-07-05 11:26:22 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-07-05 11:26:22 +0100 |
commit | e34cb5e7dc0c4858e955eace999499fcc46a404b (patch) | |
tree | dea95524ba78e288645ecc49571e5df43f2f7765 | |
parent | Merge pull request #905 from KentShikama/add-password-hash (diff) | |
parent | Remove default password pepper string (diff) | |
download | synapse-e34cb5e7dc0c4858e955eace999499fcc46a404b.tar.xz |
Merge pull request #907 from KentShikama/pepper
Add pepper to password hashing
-rw-r--r-- | synapse/config/password.py | 4 | ||||
-rw-r--r-- | synapse/handlers/auth.py | 6 |
2 files changed, 8 insertions, 2 deletions
diff --git a/synapse/config/password.py b/synapse/config/password.py index dec801ef41..66f0d93eea 100644 --- a/synapse/config/password.py +++ b/synapse/config/password.py @@ -23,10 +23,14 @@ class PasswordConfig(Config): def read_config(self, config): password_config = config.get("password_config", {}) self.password_enabled = password_config.get("enabled", True) + self.password_pepper = password_config.get("pepper", "") def default_config(self, config_dir_path, server_name, **kwargs): return """ # Enable password for login. password_config: enabled: true + # Change to a secret random string. + # DO NOT CHANGE THIS AFTER INITIAL SETUP! + #pepper: "" """ diff --git a/synapse/handlers/auth.py b/synapse/handlers/auth.py index 968095c141..e259213a36 100644 --- a/synapse/handlers/auth.py +++ b/synapse/handlers/auth.py @@ -750,7 +750,8 @@ class AuthHandler(BaseHandler): Returns: Hashed password (str). """ - return bcrypt.hashpw(password, bcrypt.gensalt(self.bcrypt_rounds)) + return bcrypt.hashpw(password + self.hs.config.password_pepper, + bcrypt.gensalt(self.bcrypt_rounds)) def validate_hash(self, password, stored_hash): """Validates that self.hash(password) == stored_hash. @@ -763,6 +764,7 @@ class AuthHandler(BaseHandler): Whether self.hash(password) == stored_hash (bool). """ if stored_hash: - return bcrypt.hashpw(password, stored_hash.encode('utf-8')) == stored_hash + return bcrypt.hashpw(password + self.hs.config.password_pepper, + stored_hash.encode('utf-8')) == stored_hash else: return False |