verify.js 737 B

123456789101112131415
  1. import { compactVerify } from '../jws/compact/verify.js';
  2. import { validateClaimsSet } from '../lib/jwt_claims_set.js';
  3. import { JWTInvalid } from '../util/errors.js';
  4. export async function jwtVerify(jwt, key, options) {
  5. const verified = await compactVerify(jwt, key, options);
  6. if (verified.protectedHeader.crit?.includes('b64') && verified.protectedHeader.b64 === false) {
  7. throw new JWTInvalid('JWTs MUST NOT use unencoded payload');
  8. }
  9. const payload = validateClaimsSet(verified.protectedHeader, verified.payload, options);
  10. const result = { payload, protectedHeader: verified.protectedHeader };
  11. if (typeof key === 'function') {
  12. return { ...result, key: verified.key };
  13. }
  14. return result;
  15. }