. */ namespace SP\Domain\Account\Services; use SP\Util\PasswordUtil; /** * Class PublicLinkKey * * @package SP\Domain\Common\Services\PublicLink */ final class PublicLinkKey { private string $hash; private string $salt; /** * PublicLinkKey constructor. * * @throws \Defuse\Crypto\Exception\EnvironmentIsBrokenException */ public function __construct(string $salt, ?string $hash = null) { $this->salt = $salt; if ($hash === null) { $this->hash = PasswordUtil::generateRandomBytes(); } else { $this->hash = $hash; } } public function getKey(): string { return sha1($this->salt.$this->hash); } public function getHash(): string { return $this->hash; } public function getSalt(): string { return $this->salt; } }