issuedAt($now->getTimestamp()) ->expiresAt($now->addHour()->getTimestamp()); foreach ($payloads as $claim => $value) { $builder->withClaim($claim, $value); } foreach ($headers as $claim => $value) { $builder->withHeader($claim, $value); } /** @noinspection PhpUnhandledExceptionInspection */ $algorithm = $this->getAlgorithmManager()->get(self::PREFERRED_ALGORITHM); return $builder->getToken($algorithm->getSigner(), $algorithm->getPrivateKey()); } /** * @param string $jwt * * @return Token * @throws \InvalidArgumentException */ public function parse(string $jwt): Token { return (new Parser())->parse($jwt); } public function verify(Token $token): bool { try { $algorithm = $this->getAlgorithmManager()->get($token->getHeader('alg')); return $token->verify($algorithm->getSigner(), $algorithm->getPublicKey()); } catch (Exception $e) { return false; } } private function getAlgorithmManager(): AlgorithmsManager { if ($this->algorithmManager === null) { $this->algorithmManager = new AlgorithmsManager([ new Algorithms\HS256($this->hmacKey), new Algorithms\ES256( "file://{$this->privateKeyPath}", $this->privateKeyPass, "file://{$this->publicKeyPath}" ), ]); } return $this->algorithmManager; } }