async function decodeToken()

in auth.js [13:38]


async function decodeToken(token) {

  if (pems.length === 0) {
    const body = await getJWKs();
    const keys = body['keys'];
    for (let i = 0; i < keys.length; i++) {
      //Convert each key to PEM
      const key_id = keys[i].kid;
      const modulus = keys[i].n;
      const exponent = keys[i].e;
      const key_type = keys[i].kty;
      const jwk = {kty: key_type, n: modulus, e: exponent};
      pems[key_id] = jwkToPem(jwk);
    }
  }

  const decodedJwt = jwt.decode(token, {complete: true});

  if (!decodedJwt) {
    return new Error("Not a valid JWT token")
  }
  const kid = decodedJwt.header.kid;
  const pem = pems[kid];

  return jwt.verify(token, pem)
}