diff --git a/config/services.yaml b/config/services.yaml index 2b7950e..19a755d 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -27,7 +27,7 @@ parameters: locales: '%env(APP_LOCALES)%' app.supported_locales: ~ - env(PEPPER): "257d62c24cd352c21b51c26dba678c8ff05011a89022aec106185bf67c69aa8b" + env(PEPPER): "" pepper: '%env(resolve:PEPPER)%' services: # default configuration for services in *this* file diff --git a/src/Security/Hasher/PasswordEncoder.php b/src/Security/Hasher/PasswordEncoder.php index be4fbc9..2317acf 100644 --- a/src/Security/Hasher/PasswordEncoder.php +++ b/src/Security/Hasher/PasswordEncoder.php @@ -47,6 +47,9 @@ class PasswordEncoder implements LegacyPasswordHasherInterface $completedPassword = $this->getPasswordToHash($plainPassword, $salt); foreach ($this->hashAlgoLegacy as $algo) { + if ('ssha' === $algo) { + return $this->compareSsha($hashedPassword, $completedPassword); + } if ($this->isObsoleteAlgo($algo)) { if (hash_equals(hash($algo, $completedPassword), $hashedPassword)) { return true; @@ -98,4 +101,17 @@ class PasswordEncoder implements LegacyPasswordHasherInterface return $completedPlainPassword; } + + protected function compareSsha($hashPassword, $plainPassword) + { + $base_64_hash_with_salt = substr($hashPassword, 6); + $hash_with_salt = base64_decode($base_64_hash_with_salt); + $hash = substr($hash_with_salt, 0, 20); + $salt = substr($hash_with_salt, 20); + + // hash given password + $hash_given = sha1($plainPassword.$salt, true); + + return $hash == $hash_given; + } }