| 123456789101112131415161718192021222324252627282930313233 | 'use strict'const crypto = require('crypto')const scmpCompare = require('./lib/scmpCompare')/** * Does a constant-time Buffer comparison by not short-circuiting * on first sign of non-equivalency. * * @param {Buffer} a The first Buffer to be compared against the second * @param {Buffer} b The second Buffer to be compared against the first * @return {Boolean} */module.exports = function scmp (a, b) {  // check that both inputs are buffers  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {    throw new Error('Both scmp args must be Buffers')  }  // return early here if buffer lengths are not equal since timingSafeEqual  // will throw if buffer lengths are not equal  if (a.length !== b.length) {    return false  }  // use crypto.timingSafeEqual if available (since Node.js v6.6.0),  // otherwise use our own scmp-internal function.  if (crypto.timingSafeEqual) {    return crypto.timingSafeEqual(a, b)  }  return scmpCompare(a, b)}
 |