unsecured.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.UnsecuredJWT = void 0;
  4. const base64url = require("../runtime/base64url.js");
  5. const buffer_utils_js_1 = require("../lib/buffer_utils.js");
  6. const errors_js_1 = require("../util/errors.js");
  7. const jwt_claims_set_js_1 = require("../lib/jwt_claims_set.js");
  8. const produce_js_1 = require("./produce.js");
  9. class UnsecuredJWT extends produce_js_1.ProduceJWT {
  10. encode() {
  11. const header = base64url.encode(JSON.stringify({ alg: 'none' }));
  12. const payload = base64url.encode(JSON.stringify(this._payload));
  13. return `${header}.${payload}.`;
  14. }
  15. static decode(jwt, options) {
  16. if (typeof jwt !== 'string') {
  17. throw new errors_js_1.JWTInvalid('Unsecured JWT must be a string');
  18. }
  19. const { 0: encodedHeader, 1: encodedPayload, 2: signature, length } = jwt.split('.');
  20. if (length !== 3 || signature !== '') {
  21. throw new errors_js_1.JWTInvalid('Invalid Unsecured JWT');
  22. }
  23. let header;
  24. try {
  25. header = JSON.parse(buffer_utils_js_1.decoder.decode(base64url.decode(encodedHeader)));
  26. if (header.alg !== 'none')
  27. throw new Error();
  28. }
  29. catch {
  30. throw new errors_js_1.JWTInvalid('Invalid Unsecured JWT');
  31. }
  32. const payload = (0, jwt_claims_set_js_1.default)(header, base64url.decode(encodedPayload), options);
  33. return { payload, header };
  34. }
  35. }
  36. exports.UnsecuredJWT = UnsecuredJWT;