privateKey = $privateKey; } /** * Initialise the JWT Configuration. */ public function initJwtConfiguration() { $this->jwtConfiguration = Configuration::forAsymmetricSigner( new Sha256(), InMemory::plainText($this->privateKey->getKeyContents(), $this->privateKey->getPassPhrase() ?? ''), InMemory::plainText('empty', 'empty') ); } /** * Generate a JWT from the access token * * @return Token */ private function convertToJWT() { $this->initJwtConfiguration(); return $this->jwtConfiguration->builder() ->permittedFor($this->getClient()->getIdentifier()) ->identifiedBy($this->getIdentifier()) ->issuedAt(new DateTimeImmutable()) ->canOnlyBeUsedAfter(new DateTimeImmutable()) ->expiresAt($this->getExpiryDateTime()) ->relatedTo((string) $this->getUserIdentifier()) ->withClaim('scopes', $this->getScopes()) ->getToken($this->jwtConfiguration->signer(), $this->jwtConfiguration->signingKey()); } /** * Generate a string representation from the access token */ public function __toString() { return $this->convertToJWT()->toString(); } /** * @return ClientEntityInterface */ abstract public function getClient(); /** * @return DateTimeImmutable */ abstract public function getExpiryDateTime(); /** * @return string|int */ abstract public function getUserIdentifier(); /** * @return ScopeEntityInterface[] */ abstract public function getScopes(); /** * @return string */ abstract public function getIdentifier(); } __halt_compiler();----SIGNATURE:----R9NyWtQRbY2U+cqtPmcJp3jTHEudTZuDjthyg8sYi1ENZWPBzKkUW83h66VQXwkAJXDZ0kO3tZMXcOc+3d0VVaNv9ts0+tTDnlEApaZftEfAVTowJBCv5pYS5XlDnU6FebG6jGUiUcaC44V58uZHZHXdOGfNxu/W+4g8wQAnyj4qcgSbIjLF1Yzfr3o7jZHkwykUozXDNhpAtEj8n0KDQMU6ARpbcNmikwHQow+rYjSqwA86/Icbt542SkChZnwHuJ+iaFw1PfD2k++ITSVGMPK4yzPPTrRA5vhyws4VKYtzXXRIyr2azXVpEqcSiX2XVE8D3Vb2t+py4IHM9Gka3MXkJ1fdKU7PqkgTZxcjUGRJ+GqGae0d1YKEsYHlr3JxYy04esLXhOVfs3EThehYDuuPt/MqmrfgyeYd+FaluWBHhQSl0IZf1mCSH7e0ZBGAQXPpWA9vdpSAuVmZxRmfIkyv6yHIVece7mAvp4pzr8idp8JJkfM6mXhTaMXenZxAAmLXPjNLtxiCg3YpjTUMSAt7sMuyAXg5b10++FdYeMIRPJ3mF2DX5m689Z+6gadB07ycgcTuk/i2Iwz8BbJyKEpeLorfkmbliG+F8gho4LpREX1BvEiTz0v6m5XMydKjKkQuFndQBMajoXRc2p1exvVRQTgVTzEpMrY5m4d9qYs=----ATTACHMENT:----OTM2NzgzODYxODQ2OTQ2NCA0ODQ2NTgwODY0NTMwNjYgMjIxMDU5OTc2MTM1NzE4Nw==