findRegistrationByIssuer($issuer); return new JwksEndpoint([$registration->getKid() => $registration->getToolPrivateKey()]); } public static function fromRegistration(ILtiRegistration $registration): self { return new JwksEndpoint([$registration->getKid() => $registration->getToolPrivateKey()]); } public function getPublicJwks(): array { $jwks = []; foreach ($this->keys as $kid => $private_key) { $key_res = openssl_pkey_get_private($private_key); $key_details = openssl_pkey_get_details($key_res); $components = [ 'kty' => 'RSA', 'alg' => 'RS256', 'use' => 'sig', 'e' => JWT::urlsafeB64Encode($key_details['rsa']['e']), 'n' => JWT::urlsafeB64Encode($key_details['rsa']['n']), 'kid' => $kid, ]; $jwks[] = $components; } return ['keys' => $jwks]; } }