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