equal.js 500 B

1234567891011121314
  1. import { toUint8Array } from "./buffer-source.js";
  2. export function equal(a, b, options = {}) {
  3. const left = toUint8Array(a);
  4. const right = toUint8Array(b);
  5. if (!options.constantTime && left.byteLength !== right.byteLength) {
  6. return false;
  7. }
  8. const length = Math.max(left.byteLength, right.byteLength);
  9. let diff = left.byteLength ^ right.byteLength;
  10. for (let i = 0; i < length; i++) {
  11. diff |= (left[i] ?? 0) ^ (right[i] ?? 0);
  12. }
  13. return diff === 0;
  14. }