encrypt.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.EncryptJWT = void 0;
  4. const encrypt_js_1 = require("../jwe/compact/encrypt.js");
  5. const buffer_utils_js_1 = require("../lib/buffer_utils.js");
  6. const produce_js_1 = require("./produce.js");
  7. class EncryptJWT extends produce_js_1.ProduceJWT {
  8. setProtectedHeader(protectedHeader) {
  9. if (this._protectedHeader) {
  10. throw new TypeError('setProtectedHeader can only be called once');
  11. }
  12. this._protectedHeader = protectedHeader;
  13. return this;
  14. }
  15. setKeyManagementParameters(parameters) {
  16. if (this._keyManagementParameters) {
  17. throw new TypeError('setKeyManagementParameters can only be called once');
  18. }
  19. this._keyManagementParameters = parameters;
  20. return this;
  21. }
  22. setContentEncryptionKey(cek) {
  23. if (this._cek) {
  24. throw new TypeError('setContentEncryptionKey can only be called once');
  25. }
  26. this._cek = cek;
  27. return this;
  28. }
  29. setInitializationVector(iv) {
  30. if (this._iv) {
  31. throw new TypeError('setInitializationVector can only be called once');
  32. }
  33. this._iv = iv;
  34. return this;
  35. }
  36. replicateIssuerAsHeader() {
  37. this._replicateIssuerAsHeader = true;
  38. return this;
  39. }
  40. replicateSubjectAsHeader() {
  41. this._replicateSubjectAsHeader = true;
  42. return this;
  43. }
  44. replicateAudienceAsHeader() {
  45. this._replicateAudienceAsHeader = true;
  46. return this;
  47. }
  48. async encrypt(key, options) {
  49. const enc = new encrypt_js_1.CompactEncrypt(buffer_utils_js_1.encoder.encode(JSON.stringify(this._payload)));
  50. if (this._replicateIssuerAsHeader) {
  51. this._protectedHeader = { ...this._protectedHeader, iss: this._payload.iss };
  52. }
  53. if (this._replicateSubjectAsHeader) {
  54. this._protectedHeader = { ...this._protectedHeader, sub: this._payload.sub };
  55. }
  56. if (this._replicateAudienceAsHeader) {
  57. this._protectedHeader = { ...this._protectedHeader, aud: this._payload.aud };
  58. }
  59. enc.setProtectedHeader(this._protectedHeader);
  60. if (this._iv) {
  61. enc.setInitializationVector(this._iv);
  62. }
  63. if (this._cek) {
  64. enc.setContentEncryptionKey(this._cek);
  65. }
  66. if (this._keyManagementParameters) {
  67. enc.setKeyManagementParameters(this._keyManagementParameters);
  68. }
  69. return enc.encrypt(key, options);
  70. }
  71. }
  72. exports.EncryptJWT = EncryptJWT;