padding.js 992 B

12345678910111213141516171819202122232425262728293031
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.pkcs7Strip = exports.pkcs7Pad = void 0;
  4. function pkcs7Pad(data) {
  5. const padder = 16 - (data.length % 16);
  6. const result = new Uint8Array(data.length + padder);
  7. result.set(data);
  8. for (let i = data.length; i < result.length; i++) {
  9. result[i] = padder;
  10. }
  11. return result;
  12. }
  13. exports.pkcs7Pad = pkcs7Pad;
  14. function pkcs7Strip(data) {
  15. if (data.length < 16) {
  16. throw new TypeError('PKCS#7 invalid length');
  17. }
  18. const padder = data[data.length - 1];
  19. if (padder > 16) {
  20. throw new TypeError('PKCS#7 padding byte out of range');
  21. }
  22. const length = data.length - padder;
  23. for (let i = 0; i < padder; i++) {
  24. if (data[length + i] !== padder) {
  25. throw new TypeError('PKCS#7 invalid padding byte');
  26. }
  27. }
  28. return new Uint8Array(data.subarray(0, length));
  29. }
  30. exports.pkcs7Strip = pkcs7Strip;
  31. //# sourceMappingURL=padding.js.map