fallback.js 1023 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. /*!
  2. * bufferutil: WebSocket buffer utils
  3. * Copyright(c) 2015 Einar Otto Stangvik <einaros@gmail.com>
  4. * MIT Licensed
  5. */
  6. 'use strict';
  7. /**
  8. * Masks a buffer using the given mask.
  9. *
  10. * @param {Buffer} source The buffer to mask
  11. * @param {Buffer} mask The mask to use
  12. * @param {Buffer} output The buffer where to store the result
  13. * @param {Number} offset The offset at which to start writing
  14. * @param {Number} length The number of bytes to mask.
  15. * @public
  16. */
  17. const mask = (source, mask, output, offset, length) => {
  18. for (var i = 0; i < length; i++) {
  19. output[offset + i] = source[i] ^ mask[i & 3];
  20. }
  21. };
  22. /**
  23. * Unmasks a buffer using the given mask.
  24. *
  25. * @param {Buffer} buffer The buffer to unmask
  26. * @param {Buffer} mask The mask to use
  27. * @public
  28. */
  29. const unmask = (buffer, mask) => {
  30. // Required until https://github.com/nodejs/node/issues/9006 is resolved.
  31. const length = buffer.length;
  32. for (var i = 0; i < length; i++) {
  33. buffer[i] ^= mask[i & 3];
  34. }
  35. };
  36. module.exports = { mask, unmask };