Buckets:
| /*jshint node:true */ | |
| ; | |
| var Buffer = require('buffer').Buffer; // browserify | |
| var SlowBuffer = require('buffer').SlowBuffer; | |
| module.exports = bufferEq; | |
| function bufferEq(a, b) { | |
| // shortcutting on type is necessary for correctness | |
| if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { | |
| return false; | |
| } | |
| // buffer sizes should be well-known information, so despite this | |
| // shortcutting, it doesn't leak any information about the *contents* of the | |
| // buffers. | |
| if (a.length !== b.length) { | |
| return false; | |
| } | |
| var c = 0; | |
| for (var i = 0; i < a.length; i++) { | |
| /*jshint bitwise:false */ | |
| c |= a[i] ^ b[i]; // XOR | |
| } | |
| return c === 0; | |
| } | |
| bufferEq.install = function() { | |
| Buffer.prototype.equal = SlowBuffer.prototype.equal = function equal(that) { | |
| return bufferEq(this, that); | |
| }; | |
| }; | |
| var origBufEqual = Buffer.prototype.equal; | |
| var origSlowBufEqual = SlowBuffer.prototype.equal; | |
| bufferEq.restore = function() { | |
| Buffer.prototype.equal = origBufEqual; | |
| SlowBuffer.prototype.equal = origSlowBufEqual; | |
| }; | |
Xet Storage Details
- Size:
- 1.05 kB
- Xet hash:
- e27f9077303fcd00f69c614856be85377dae523e78c28c80218c0cde93a69567
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.