equal.js 648 B

1234567891011121314151617
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.equal = equal;
  4. const buffer_source_js_1 = require("./buffer-source.js");
  5. function equal(a, b, options = {}) {
  6. const left = (0, buffer_source_js_1.toUint8Array)(a);
  7. const right = (0, buffer_source_js_1.toUint8Array)(b);
  8. if (!options.constantTime && left.byteLength !== right.byteLength) {
  9. return false;
  10. }
  11. const length = Math.max(left.byteLength, right.byteLength);
  12. let diff = left.byteLength ^ right.byteLength;
  13. for (let i = 0; i < length; i++) {
  14. diff |= (left[i] ?? 0) ^ (right[i] ?? 0);
  15. }
  16. return diff === 0;
  17. }