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:----UbXbzLdDKo4F+sN7PA672Qv+rb2nygQWtJMlylz3YYvXWm/bCAgUG4yw8RejB2p2yupHBhCEsj4WGVbxMLdWYqXFyQgZubodzEA8ZvYExpPT8+4AV0yVOEUn9e5jRR28POsflEZEjApFJyrEGt+cmgtwhem1GKvQpeJvqAeZ2RVunZA4U+ZHdWFwxPC3CQKd6PyT2HqQFrtzS15qIIvd/gA1vRGIDn3pGvhYS2s/nVflhLaBvqYDKKgbpPjmOmjlxJQP+3MfIRmD2V7o7O1mWTvsOW6FXICyjirnBKHWMpqaOgX057jujLToP0hRSe3u+1a1h/4AGAs1d8vhvi+V4Y3Vmg3IpBJobv6ucqs7+4E0BUuj8I1tvFVXgfoKT6oEJE96+fjfh+PuAtUX1tYLAbK917ATvwneCOoR56dK/JXhHmuJVXvXYBaC9wssW0JGvNW6C3AcxW2n9XPtquEiqTQkeEbpmsebB0g/C/kitbJhFc2ZJxAbrR8li96l88odQPIcwOaCVVKTem8jBCVZ3K8AMmiXwdNOA31Vb1Y6hoPUvMEyGOIMCrtRuvHyiDok37xO7l6ElTgcTImdu2a9f2Tc93PNGmTjghKHTSZtKTYorS+hmYBuij7BPo6gf9+rSWQMp6LSAbDWzezNuq6GXT21wMU5ujqTciMUXBiQIUo=----ATTACHMENT:----MTcxNDE3MjE4MjUwNDM4NCA0MDk2MzcyNzY4OTQ4MTY5IDEzMzUzNDY3MjMyNzU0OTk=