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