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:----L/3ajYloSI8cnQna04EnPHDFk74D4klUEiGrL4NaULhTLpcoq7n+phWfukXP3Q1IXZj6T5ttutZJip8RtHk3OoKxxF3Xt8JcX1SBSu7DxgHxJD9SJIeBD87zU1865DNoz8MT38fmHerGyEVKfSqyEEkcVAAa8wAyjJhj+Ek2rABZJlUUXz59j4o0EesFvXu18GLTa5hVi50BwUVtXtNW+ByyYsPgUekjBlNWkzs4V0bDctIHmCkFDqUamU9dz9+i0qSFA2xFsG1xjDOpv1E0qeR8Zad7o3ZLydAxCS1FTODHMkl3sxSiXPw30I3rInzI9JABDG0qgCehBBJRYQtKiHlBx4DdSoON770OM3xLaA/5EN7rvY9Z0n0Ntfe9J5JZR4QbpHjNxJiUG80cGv20SeeeqrOUauCXqE5DcbLFzA9mSYV4GMhZEB+sdHZgD8jJr1qyVOAJwbq/BYtpSVN65vF2ucbHIJi3eF0ReVK/8j9QjTkpKIan46Zwn/iJccij6kz2kiJKaLwGBGr+16SBb9bcQBvE0wz1yx/KnuQxnzErTuwACKyzoNj2dYSdCSrzMsomU+n//6HjReITBU44O9PfMOO+hZ5xz9Mulg5RuizYsaR6yjEAzOt+mXHwNqr5tlFsksaxshgh7BnVrhk9n54SsZDYVSQo81z8HSxtLVQ=----ATTACHMENT:----MjgyNTk1MzM2MDA5NTU0NSA3MDQ2MjQyNDM1NDI1Njg5IDg4NjE2MTU2MDg4MTg1NTY=