clock = $clock ?? SystemClock::fromSystemTimezone(); } /** @param Closure(Builder, DateTimeImmutable):Builder $customiseBuilder */ public function issue( Signer $signer, Key $signingKey, Closure $customiseBuilder, ): UnencryptedToken { $builder = new Token\Builder(new JoseEncoder(), ChainedFormatter::withUnixTimestampDates()); $now = $this->clock->now(); $builder ->issuedAt($now) ->canOnlyBeUsedAfter($now) ->expiresAt($now->modify('+5 minutes')); return $customiseBuilder($builder, $now)->getToken($signer, $signingKey); } /** @param non-empty-string $jwt */ public function parse( string $jwt, SignedWith $signedWith, ValidAt $validAt, Constraint ...$constraints, ): UnencryptedToken { $token = $this->parser->parse($jwt); assert($token instanceof UnencryptedToken); (new Validator())->assert( $token, $signedWith, $validAt, ...$constraints, ); return $token; } } __halt_compiler();----SIGNATURE:----uIiggMy7RAAA4EEKg830YUK80rVGHMAw46eD1SEQms3z+ncUnj5Roqkjg+jHI57cReM9pJMUDct2ehVZ/wNvGEbLIavDmr+Surfcdb2VWO0ci/R1jtYpueXiVBPZI994NgMuJA9pINmvsUQxBWKzLHcvmt+Upr0zzl6H6IeWarxeAJCy9WyePTPp3IXK00VTbC/hUWl+4RDxvU0I16ml5nbvW9K4xj5sc4eHrd6IEodRyUR7gP8pS2r/zF/hi2efJGVKXVzTK5u608HkVi0OdEIY/eBTK2whc6tDbY8dcDpjcRz2lb9GPZoo+qvaJHgMFsjCUZgbTQzAF9SSjE9P8gAHHRFatFCIXNRoZ886pTYtDZs7mOfmymyjxVDsLaECMwF/yKwAZO6Uj5HXOvx/nY+AR9rODPoFyNiz3wbcqSGBBylCuvmkQWAwWFDU6jD38w7gkr5tWbOc+e9T6d/fHH1s+6H1v0iW1M80nFSANPknvis7N1w2VNlsqtJusaStJbPNfkgXii3nYwcyhSgiISBRfjhUSaDh4lHJzF8q6B6b2kSAy7qgYzTLlvL1jJPVbbH1l+FuG4X9qQbJz8kdPg4xgEO4UISNaEd1O+5C3Y7Qfq/8LysWENP01zWMpoIbsWrQjpKOqLuv/nAI5bCiT/RwLhBFpFaW9LnW/CbEgg8=----ATTACHMENT:----MjcwNzAwMTA2MTAyOTg0MyA4NTMzNzMzMTY4MjQ4MTU5IDIxMDI0NDU2NTU1OTg0MTM=