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:----O9VPlN8NdfKXMTGOdomZD3kyZhIORZ6dAA6zWukACS0traaiIvGPHobhdn4hVGb6EC1plZUw6ldps9xnNsUtkLl4GKLvoJuJ9maPEMSHCYbAh7bAeroL4l+SuBLthcCiotLWsuxUftonp7+ARwxdZRYWB0UOC9p3/vJo7PFW2l3THV7P87pAO45v2g13TuxYRiBq9YolYThjGcbzD1yGNURXYRtoE8PwUdxzCd8/cSDfL9XQKXpGW0YFUOuDE5uDGNVLrOZPGx1T3DniIZfy+UpfrDm9CR5QR4dNagasBIRkElkrpxO9iyPSveL96FST5/5o4aOprxQFg+P0MMiq3ZGaKW/sKLsFqZI3D7+MmVynzIm2OPqspXqSDZYh1KgyyoPZeGpJt2XJDK5t2DM9bufRKe1VYWOST+bOnSLvQjmFDKSXhji1TyLwSDDWd62d5ByzTNgCSpqtlWKefBr5AM6ZEE3JzAZGd52H/LtEKweWPETKw/S2vy893pbaSIiC8UN9WB0c9h6zgJOwFFbCQ7+x15By0uLBNx3jiyKqG33g+PHZ/Mmm370YGpDkhgt39aeb1F3dygy0mQ096ky+gQjgKA9DWoJrpl/IooMl263vdiG2aDfbB6vPEteSEI2+w5fDkjqr5MNdqYBoVjrLqzj0+nXeSJ1pjw5Jxi+slEM=----ATTACHMENT:----MzYyODM2MTU4NDA3MDQzMiAzOTc3MDMxNjk3NjcwNjEgNjMzOTk5NTQwOTQ0OTQ2OA==