refactor: replace util.equal with Buffer#equals.
This commit is contained in:
parent
be457ee581
commit
a3c7a49c80
@ -100,7 +100,7 @@ WSProxy.prototype._handleConnect = function _handleConnect(ws, port, host, nonce
|
|||||||
pow.writeString(host, 'ascii');
|
pow.writeString(host, 'ascii');
|
||||||
pow = pow.render();
|
pow = pow.render();
|
||||||
|
|
||||||
if (util.cmp(crypto.hash256(pow), this.target) > 0) {
|
if (crypto.hash256(pow).compare(this.target) > 0) {
|
||||||
this.log('Client did not solve proof of work (%s).', state.host);
|
this.log('Client did not solve proof of work (%s).', state.host);
|
||||||
ws.emit('tcp close');
|
ws.emit('tcp close');
|
||||||
ws.disconnect();
|
ws.disconnect();
|
||||||
|
|||||||
@ -366,7 +366,7 @@ Chain.prototype.verify = co(function* verify(block, prev, flags) {
|
|||||||
true);
|
true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!util.equal(commit, block.createCommitmentHash())) {
|
if (!commit.equals(block.createCommitmentHash())) {
|
||||||
throw new VerifyError(block,
|
throw new VerifyError(block,
|
||||||
'invalid',
|
'invalid',
|
||||||
'bad-witness-merkle-match',
|
'bad-witness-merkle-match',
|
||||||
|
|||||||
@ -219,7 +219,7 @@ crypto.createMerkleTree = function createMerkleTree(leaves) {
|
|||||||
right = nodes[j + k];
|
right = nodes[j + k];
|
||||||
|
|
||||||
if (k === i + 1 && k + 1 === size
|
if (k === i + 1 && k + 1 === size
|
||||||
&& left.compare(right) === 0) {
|
&& left.equals(right)) {
|
||||||
malleated = true;
|
malleated = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -259,12 +259,12 @@ ec.isLowS = function isLowS(sig) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (util.equal(s, ZERO_S))
|
if (s.equals(ZERO_S))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// If S is greater than half the order,
|
// If S is greater than half the order,
|
||||||
// it's too high.
|
// it's too high.
|
||||||
if (util.cmp(s, HALF_ORDER) > 0)
|
if (s.compare(HALF_ORDER) > 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@ -27,7 +27,7 @@ function MemDB(location) {
|
|||||||
|
|
||||||
this.location = location || 'memory';
|
this.location = location || 'memory';
|
||||||
this.options = {};
|
this.options = {};
|
||||||
this.tree = new RBT(util.cmp, true);
|
this.tree = new RBT(cmp, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -679,6 +679,14 @@ IteratorOptions.prototype.fromOptions = function fromOptions(options) {
|
|||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Helpers
|
||||||
|
*/
|
||||||
|
|
||||||
|
function cmp(a, b) {
|
||||||
|
return a.compare(b);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Expose
|
* Expose
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -404,10 +404,10 @@ HDPrivateKey.prototype.equal = function equal(obj) {
|
|||||||
|
|
||||||
return this.network === obj.network
|
return this.network === obj.network
|
||||||
&& this.depth === obj.depth
|
&& this.depth === obj.depth
|
||||||
&& util.equal(this.parentFingerPrint, obj.parentFingerPrint)
|
&& this.parentFingerPrint.equals(obj.parentFingerPrint)
|
||||||
&& this.childIndex === obj.childIndex
|
&& this.childIndex === obj.childIndex
|
||||||
&& util.equal(this.chainCode, obj.chainCode)
|
&& this.chainCode.equals(obj.chainCode)
|
||||||
&& util.equal(this.privateKey, obj.privateKey);
|
&& this.privateKey.equals(obj.privateKey);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -426,7 +426,7 @@ HDPrivateKey.prototype.compare = function compare(key) {
|
|||||||
if (cmp !== 0)
|
if (cmp !== 0)
|
||||||
return cmp;
|
return cmp;
|
||||||
|
|
||||||
cmp = util.cmp(this.parentFingerPrint, key.parentFingerPrint);
|
cmp = this.parentFingerPrint.compare(key.parentFingerPrint);
|
||||||
|
|
||||||
if (cmp !== 0)
|
if (cmp !== 0)
|
||||||
return cmp;
|
return cmp;
|
||||||
@ -436,12 +436,12 @@ HDPrivateKey.prototype.compare = function compare(key) {
|
|||||||
if (cmp !== 0)
|
if (cmp !== 0)
|
||||||
return cmp;
|
return cmp;
|
||||||
|
|
||||||
cmp = util.cmp(this.chainCode, key.chainCode);
|
cmp = this.chainCode.compare(key.chainCode);
|
||||||
|
|
||||||
if (cmp !== 0)
|
if (cmp !== 0)
|
||||||
return cmp;
|
return cmp;
|
||||||
|
|
||||||
cmp = util.cmp(this.privateKey, key.privateKey);
|
cmp = this.privateKey.compare(key.privateKey);
|
||||||
|
|
||||||
if (cmp !== 0)
|
if (cmp !== 0)
|
||||||
return cmp;
|
return cmp;
|
||||||
|
|||||||
@ -320,10 +320,10 @@ HDPublicKey.prototype.equal = function equal(obj) {
|
|||||||
|
|
||||||
return this.network === obj.network
|
return this.network === obj.network
|
||||||
&& this.depth === obj.depth
|
&& this.depth === obj.depth
|
||||||
&& util.equal(this.parentFingerPrint, obj.parentFingerPrint)
|
&& this.parentFingerPrint.equals(obj.parentFingerPrint)
|
||||||
&& this.childIndex === obj.childIndex
|
&& this.childIndex === obj.childIndex
|
||||||
&& util.equal(this.chainCode, obj.chainCode)
|
&& this.chainCode.equals(obj.chainCode)
|
||||||
&& util.equal(this.publicKey, obj.publicKey);
|
&& this.publicKey.equals(obj.publicKey);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -342,7 +342,7 @@ HDPublicKey.prototype.compare = function compare(key) {
|
|||||||
if (cmp !== 0)
|
if (cmp !== 0)
|
||||||
return cmp;
|
return cmp;
|
||||||
|
|
||||||
cmp = util.cmp(this.parentFingerPrint, key.parentFingerPrint);
|
cmp = this.parentFingerPrint.compare(key.parentFingerPrint);
|
||||||
|
|
||||||
if (cmp !== 0)
|
if (cmp !== 0)
|
||||||
return cmp;
|
return cmp;
|
||||||
@ -352,12 +352,12 @@ HDPublicKey.prototype.compare = function compare(key) {
|
|||||||
if (cmp !== 0)
|
if (cmp !== 0)
|
||||||
return cmp;
|
return cmp;
|
||||||
|
|
||||||
cmp = util.cmp(this.chainCode, key.chainCode);
|
cmp = this.chainCode.compare(key.chainCode);
|
||||||
|
|
||||||
if (cmp !== 0)
|
if (cmp !== 0)
|
||||||
return cmp;
|
return cmp;
|
||||||
|
|
||||||
cmp = util.cmp(this.publicKey, key.publicKey);
|
cmp = this.publicKey.compare(key.publicKey);
|
||||||
|
|
||||||
if (cmp !== 0)
|
if (cmp !== 0)
|
||||||
return cmp;
|
return cmp;
|
||||||
|
|||||||
@ -125,7 +125,7 @@ BIP150.prototype.challenge = function challenge(hash) {
|
|||||||
assert(!this.challengeReceived, 'Peer challenged twice.');
|
assert(!this.challengeReceived, 'Peer challenged twice.');
|
||||||
this.challengeReceived = true;
|
this.challengeReceived = true;
|
||||||
|
|
||||||
if (util.equal(hash, encoding.ZERO_HASH))
|
if (hash.equals(encoding.ZERO_HASH))
|
||||||
throw new Error('Auth failure.');
|
throw new Error('Auth failure.');
|
||||||
|
|
||||||
msg = this.hash(this.input.sid, type, this.publicKey);
|
msg = this.hash(this.input.sid, type, this.publicKey);
|
||||||
@ -160,7 +160,7 @@ BIP150.prototype.reply = function reply(data) {
|
|||||||
assert(!this.replyReceived, 'Peer replied twice.');
|
assert(!this.replyReceived, 'Peer replied twice.');
|
||||||
this.replyReceived = true;
|
this.replyReceived = true;
|
||||||
|
|
||||||
if (util.equal(data, encoding.ZERO_SIG64))
|
if (data.equals(encoding.ZERO_SIG64))
|
||||||
throw new Error('Auth failure.');
|
throw new Error('Auth failure.');
|
||||||
|
|
||||||
if (!this.peerIdentity)
|
if (!this.peerIdentity)
|
||||||
|
|||||||
@ -434,7 +434,7 @@ BIP151.prototype.encinit = function encinit(publicKey, cipher) {
|
|||||||
BIP151.prototype.encack = function encack(publicKey) {
|
BIP151.prototype.encack = function encack(publicKey) {
|
||||||
assert(this.initSent, 'Unsolicited ACK.');
|
assert(this.initSent, 'Unsolicited ACK.');
|
||||||
|
|
||||||
if (util.equal(publicKey, encoding.ZERO_KEY)) {
|
if (publicKey.equals(encoding.ZERO_KEY)) {
|
||||||
assert(this.handshake, 'No initialization before rekey.');
|
assert(this.handshake, 'No initialization before rekey.');
|
||||||
|
|
||||||
if (this.bip150 && this.bip150.auth) {
|
if (this.bip150 && this.bip150.auth) {
|
||||||
|
|||||||
@ -1825,8 +1825,8 @@ Peer.prototype.handlePong = co(function* handlePong(packet) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!util.equal(nonce, this.challenge)) {
|
if (!nonce.equals(this.challenge)) {
|
||||||
if (util.equal(nonce, encoding.ZERO_U64)) {
|
if (nonce.equals(encoding.ZERO_U64)) {
|
||||||
this.logger.debug('Peer sent a zero nonce (%s).', this.hostname());
|
this.logger.debug('Peer sent a zero nonce (%s).', this.hostname());
|
||||||
this.challenge = null;
|
this.challenge = null;
|
||||||
return;
|
return;
|
||||||
|
|||||||
@ -129,7 +129,7 @@ ProxySocket.prototype.connect = function connect(port, host) {
|
|||||||
nonce++;
|
nonce++;
|
||||||
assert(nonce <= 0xffffffff, 'Could not create socket.');
|
assert(nonce <= 0xffffffff, 'Could not create socket.');
|
||||||
pow.writeUInt32LE(nonce, 0, true);
|
pow.writeUInt32LE(nonce, 0, true);
|
||||||
} while (util.cmp(crypto.hash256(pow), this.target) > 0);
|
} while (crypto.hash256(pow).compare(this.target) > 0);
|
||||||
|
|
||||||
util.log('Solved proof of work: %d', nonce);
|
util.log('Solved proof of work: %d', nonce);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -108,10 +108,10 @@ Address.prototype.isNull = function isNull() {
|
|||||||
var i;
|
var i;
|
||||||
|
|
||||||
if (this.hash.length === 20)
|
if (this.hash.length === 20)
|
||||||
return util.equal(this.hash, encoding.ZERO_HASH160);
|
return this.hash.equals(encoding.ZERO_HASH160);
|
||||||
|
|
||||||
if (this.hash.length === 32)
|
if (this.hash.length === 32)
|
||||||
return util.equal(this.hash, encoding.ZERO_HASH);
|
return this.hash.equals(encoding.ZERO_HASH);
|
||||||
|
|
||||||
for (i = 0; i < this.hash.length; i++) {
|
for (i = 0; i < this.hash.length; i++) {
|
||||||
if (this.hash[i] !== 0)
|
if (this.hash[i] !== 0)
|
||||||
|
|||||||
@ -637,16 +637,16 @@ KeyRing.prototype.ownHash = function ownHash(hash) {
|
|||||||
if (!hash)
|
if (!hash)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (util.equal(hash, this.getKeyHash()))
|
if (hash.equals(this.getKeyHash()))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (this.script) {
|
if (this.script) {
|
||||||
if (util.equal(hash, this.getScriptHash()))
|
if (hash.equals(this.getScriptHash()))
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.witness) {
|
if (this.witness) {
|
||||||
if (util.equal(hash, this.getNestedHash()))
|
if (hash.equals(this.getNestedHash()))
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -682,15 +682,15 @@ KeyRing.prototype.ownOutput = function ownOutput(tx, index) {
|
|||||||
|
|
||||||
KeyRing.prototype.getRedeem = function(hash) {
|
KeyRing.prototype.getRedeem = function(hash) {
|
||||||
if (this.witness) {
|
if (this.witness) {
|
||||||
if (util.equal(hash, this.getNestedHash()))
|
if (hash.equals(this.getNestedHash()))
|
||||||
return this.getProgram();
|
return this.getProgram();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.script) {
|
if (this.script) {
|
||||||
if (util.equal(hash, this.getScriptHash160()))
|
if (hash.equals(this.getScriptHash160()))
|
||||||
return this.script;
|
return this.script;
|
||||||
|
|
||||||
if (util.equal(hash, this.getScriptHash256()))
|
if (hash.equals(this.getScriptHash256()))
|
||||||
return this.script;
|
return this.script;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -234,7 +234,7 @@ MerkleBlock.prototype.extractTree = function extractTree() {
|
|||||||
left = traverse(height - 1, pos * 2);
|
left = traverse(height - 1, pos * 2);
|
||||||
if (pos * 2 + 1 < width(height - 1)) {
|
if (pos * 2 + 1 < width(height - 1)) {
|
||||||
right = traverse(height - 1, pos * 2 + 1);
|
right = traverse(height - 1, pos * 2 + 1);
|
||||||
if (util.equal(right, left))
|
if (right.equals(left))
|
||||||
failed = true;
|
failed = true;
|
||||||
} else {
|
} else {
|
||||||
right = left;
|
right = left;
|
||||||
|
|||||||
@ -515,7 +515,7 @@ MTX.prototype.scriptVector = function scriptVector(prev, vector, ring) {
|
|||||||
|
|
||||||
// P2PK
|
// P2PK
|
||||||
if (prev.isPubkey()) {
|
if (prev.isPubkey()) {
|
||||||
if (!util.equal(prev.get(0), ring.publicKey))
|
if (!prev.get(0).equals(ring.publicKey))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
vector.set(0, opcodes.OP_0);
|
vector.set(0, opcodes.OP_0);
|
||||||
@ -525,7 +525,7 @@ MTX.prototype.scriptVector = function scriptVector(prev, vector, ring) {
|
|||||||
|
|
||||||
// P2PKH
|
// P2PKH
|
||||||
if (prev.isPubkeyhash()) {
|
if (prev.isPubkeyhash()) {
|
||||||
if (!util.equal(prev.get(2), ring.getKeyHash()))
|
if (!prev.get(2).equals(ring.getKeyHash()))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
vector.set(0, opcodes.OP_0);
|
vector.set(0, opcodes.OP_0);
|
||||||
@ -653,7 +653,7 @@ MTX.prototype.signVector = function signVector(prev, vector, sig, ring) {
|
|||||||
// P2PK
|
// P2PK
|
||||||
if (prev.isPubkey()) {
|
if (prev.isPubkey()) {
|
||||||
// Make sure the pubkey is ours.
|
// Make sure the pubkey is ours.
|
||||||
if (!util.equal(ring.publicKey, prev.get(0)))
|
if (!ring.publicKey.equals(prev.get(0)))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// Already signed.
|
// Already signed.
|
||||||
@ -672,7 +672,7 @@ MTX.prototype.signVector = function signVector(prev, vector, sig, ring) {
|
|||||||
// P2PKH
|
// P2PKH
|
||||||
if (prev.isPubkeyhash()) {
|
if (prev.isPubkeyhash()) {
|
||||||
// Make sure the pubkey hash is ours.
|
// Make sure the pubkey hash is ours.
|
||||||
if (!util.equal(ring.getKeyHash(), prev.get(2)))
|
if (!ring.getKeyHash().equals(prev.get(2)))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// Already signed.
|
// Already signed.
|
||||||
@ -1867,7 +1867,7 @@ function sortOutputs(a, b) {
|
|||||||
if (cmp !== 0)
|
if (cmp !== 0)
|
||||||
return cmp;
|
return cmp;
|
||||||
|
|
||||||
return util.cmp(a.script.toRaw(), b.script.toRaw());
|
return a.script.raw.compare(b.script.raw);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@ -183,7 +183,7 @@ NetAddress.prototype.equal = function equal(addr) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
NetAddress.prototype.compare = function compare(addr) {
|
NetAddress.prototype.compare = function compare(addr) {
|
||||||
var cmp = util.cmp(this.raw, addr.raw);
|
var cmp = this.raw.compare(addr.raw);
|
||||||
|
|
||||||
if (cmp !== 0)
|
if (cmp !== 0)
|
||||||
return cmp;
|
return cmp;
|
||||||
|
|||||||
@ -896,7 +896,7 @@ Script.prototype.execute = function execute(stack, flags, tx, index, value, vers
|
|||||||
v1 = stack.top(-2);
|
v1 = stack.top(-2);
|
||||||
v2 = stack.top(-1);
|
v2 = stack.top(-1);
|
||||||
|
|
||||||
res = util.equal(v1, v2);
|
res = v1.equals(v2);
|
||||||
|
|
||||||
stack.pop();
|
stack.pop();
|
||||||
stack.pop();
|
stack.pop();
|
||||||
@ -1348,7 +1348,7 @@ Script.prototype.removeData = function removeData(data) {
|
|||||||
if (!op.isMinimal())
|
if (!op.isMinimal())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (util.equal(op.data, data))
|
if (op.data.equals(data))
|
||||||
index.push(i);
|
index.push(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1382,7 +1382,7 @@ Script.prototype.indexOf = function indexOf(data) {
|
|||||||
if (!op.data)
|
if (!op.data)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (util.equal(op.data, data))
|
if (op.data.equals(data))
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2349,7 +2349,7 @@ Script.getCoinbaseHeight = function getCoinbaseHeight(raw) {
|
|||||||
|
|
||||||
// Ensure the miner serialized the
|
// Ensure the miner serialized the
|
||||||
// number in the most minimal fashion.
|
// number in the most minimal fashion.
|
||||||
if (!util.equal(data, op.data))
|
if (!data.equals(op.data))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
return height.toNumber();
|
return height.toNumber();
|
||||||
@ -2867,7 +2867,7 @@ Script.verify = function verify(input, witness, output, tx, i, value, flags) {
|
|||||||
hadWitness = true;
|
hadWitness = true;
|
||||||
|
|
||||||
// Input script must be exactly one push of the redeem script.
|
// Input script must be exactly one push of the redeem script.
|
||||||
if (!util.equal(input.raw, Opcode.fromPush(raw).toRaw()))
|
if (!input.raw.equals(Opcode.fromPush(raw).toRaw()))
|
||||||
throw new ScriptError('WITNESS_MALLEATED_P2SH');
|
throw new ScriptError('WITNESS_MALLEATED_P2SH');
|
||||||
|
|
||||||
// Verify the program in the redeem script.
|
// Verify the program in the redeem script.
|
||||||
@ -2924,7 +2924,7 @@ Script.verifyProgram = function verifyProgram(witness, output, flags, tx, i, val
|
|||||||
|
|
||||||
witnessScript = stack.pop();
|
witnessScript = stack.pop();
|
||||||
|
|
||||||
if (!util.equal(crypto.sha256(witnessScript), program.data))
|
if (!crypto.sha256(witnessScript).equals(program.data))
|
||||||
throw new ScriptError('WITNESS_PROGRAM_MISMATCH');
|
throw new ScriptError('WITNESS_PROGRAM_MISMATCH');
|
||||||
|
|
||||||
redeem = new Script(witnessScript);
|
redeem = new Script(witnessScript);
|
||||||
@ -3084,7 +3084,7 @@ Script.verifyMast = function verifyMast(program, stack, output, flags, tx, i, va
|
|||||||
mastRoot.writeBytes(scriptRoot);
|
mastRoot.writeBytes(scriptRoot);
|
||||||
mastRoot = crypto.hash256(mastRoot.render());
|
mastRoot = crypto.hash256(mastRoot.render());
|
||||||
|
|
||||||
if (!util.equal(mastRoot, program.data))
|
if (!mastRoot.equals(program.data))
|
||||||
throw new ScriptError('WITNESS_PROGRAM_MISMATCH');
|
throw new ScriptError('WITNESS_PROGRAM_MISMATCH');
|
||||||
|
|
||||||
if (version === 0) {
|
if (version === 0) {
|
||||||
@ -3230,7 +3230,7 @@ Script.isScript = function isScript(obj) {
|
|||||||
|
|
||||||
function sortKeys(keys) {
|
function sortKeys(keys) {
|
||||||
return keys.slice().sort(function(a, b) {
|
return keys.slice().sort(function(a, b) {
|
||||||
return util.cmp(a, b);
|
return a.compare(b);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -147,7 +147,7 @@ function SigCacheEntry(sig, key) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
SigCacheEntry.prototype.equal = function equal(sig, key) {
|
SigCacheEntry.prototype.equal = function equal(sig, key) {
|
||||||
return util.equal(this.sig, sig) && util.equal(this.key, key);
|
return this.sig.equals(sig) && this.key.equals(key);
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@ -63,14 +63,10 @@ util.isBrowser =
|
|||||||
* @const {String}
|
* @const {String}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (os.homedir) {
|
util.HOME = '/';
|
||||||
|
|
||||||
|
if (os.homedir)
|
||||||
util.HOME = os.homedir();
|
util.HOME = os.homedir();
|
||||||
} else {
|
|
||||||
util.HOME = process.env.HOME
|
|
||||||
|| process.env.USERPROFILE
|
|
||||||
|| process.env.HOMEPATH
|
|
||||||
|| '/';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Global NOP function.
|
* Global NOP function.
|
||||||
@ -161,39 +157,6 @@ util.isHex = function isHex(obj) {
|
|||||||
&& obj.length % 2 === 0;
|
&& obj.length % 2 === 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* Test whether two buffers are equal.
|
|
||||||
* @param {Buffer?} a
|
|
||||||
* @param {Buffer?} b
|
|
||||||
* @returns {Boolean}
|
|
||||||
*/
|
|
||||||
|
|
||||||
util.equal = function equal(a, b) {
|
|
||||||
var i;
|
|
||||||
|
|
||||||
if (a == null)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if (b == null)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
assert(Buffer.isBuffer(a));
|
|
||||||
assert(Buffer.isBuffer(b));
|
|
||||||
|
|
||||||
if (a.compare)
|
|
||||||
return a.compare(b) === 0;
|
|
||||||
|
|
||||||
if (a.length !== b.length)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
for (i = 0; i < a.length; i++) {
|
|
||||||
if (a[i] !== b[i])
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Call `setImmediate`, `process.nextTick`,
|
* Call `setImmediate`, `process.nextTick`,
|
||||||
* or `setInterval` depending.
|
* or `setInterval` depending.
|
||||||
@ -483,27 +446,6 @@ util.error = function error() {
|
|||||||
process.stderr.write(msg + '\n');
|
process.stderr.write(msg + '\n');
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* Unique-ify an array of strings.
|
|
||||||
* @param {String[]} obj
|
|
||||||
* @returns {String[]}
|
|
||||||
*/
|
|
||||||
|
|
||||||
util.uniq = function uniq(obj) {
|
|
||||||
var table = {};
|
|
||||||
var out = [];
|
|
||||||
var i = 0;
|
|
||||||
|
|
||||||
for (; i < obj.length; i++) {
|
|
||||||
if (!table[obj[i]]) {
|
|
||||||
out.push(obj[i]);
|
|
||||||
table[obj[i]] = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return out;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get current time in unix time (seconds).
|
* Get current time in unix time (seconds).
|
||||||
* @returns {Number}
|
* @returns {Number}
|
||||||
@ -632,10 +574,6 @@ util.cmp = function cmp(a, b) {
|
|||||||
return a.compare(b);
|
return a.compare(b);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Warning: polymorphism.
|
|
||||||
if (!Buffer.prototype.compare)
|
|
||||||
util.cmp = util.strcmp;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert bytes to mb.
|
* Convert bytes to mb.
|
||||||
* @param {Number} size
|
* @param {Number} size
|
||||||
@ -648,28 +586,28 @@ util.mb = function mb(size) {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Inheritance.
|
* Inheritance.
|
||||||
* @param {Function} obj - Constructor to inherit.
|
* @param {Function} child - Constructor to inherit.
|
||||||
* @param {Function} from - Parent constructor.
|
* @param {Function} parent - Parent constructor.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
util.inherits = function inherits(obj, from) {
|
util.inherits = function inherits(child, parent) {
|
||||||
var f;
|
var f;
|
||||||
|
|
||||||
obj.super_ = from;
|
child.super_ = parent;
|
||||||
|
|
||||||
if (Object.setPrototypeOf) {
|
if (Object.setPrototypeOf) {
|
||||||
Object.setPrototypeOf(obj.prototype, from.prototype);
|
Object.setPrototypeOf(child.prototype, parent.prototype);
|
||||||
Object.defineProperty(obj.prototype, 'constructor', {
|
Object.defineProperty(child.prototype, 'constructor', {
|
||||||
value: obj,
|
value: child,
|
||||||
enumerable: false
|
enumerable: false
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Object.create) {
|
if (Object.create) {
|
||||||
obj.prototype = Object.create(from.prototype, {
|
child.prototype = Object.create(parent.prototype, {
|
||||||
constructor: {
|
constructor: {
|
||||||
value: obj,
|
value: child,
|
||||||
enumerable: false
|
enumerable: false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -677,9 +615,9 @@ util.inherits = function inherits(obj, from) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
f = function() {};
|
f = function() {};
|
||||||
f.prototype = from.prototype;
|
f.prototype = parent.prototype;
|
||||||
obj.prototype = new f;
|
child.prototype = new f();
|
||||||
obj.prototype.constructor = obj;
|
child.prototype.constructor = child;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -690,15 +628,17 @@ util.inherits = function inherits(obj, from) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
util.indexOf = function indexOf(obj, data) {
|
util.indexOf = function indexOf(obj, data) {
|
||||||
var i;
|
var i, chunk;
|
||||||
|
|
||||||
assert(Array.isArray(obj));
|
assert(Array.isArray(obj));
|
||||||
assert(Buffer.isBuffer(data));
|
assert(Buffer.isBuffer(data));
|
||||||
|
|
||||||
for (i = 0; i < obj.length; i++) {
|
for (i = 0; i < obj.length; i++) {
|
||||||
if (!Buffer.isBuffer(obj[i]))
|
chunk = obj[i];
|
||||||
continue;
|
|
||||||
if (util.equal(obj[i], data))
|
assert(Buffer.isBuffer(chunk));
|
||||||
|
|
||||||
|
if (chunk.equals(data))
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -939,40 +879,15 @@ util.binaryInsert = function binaryInsert(items, item, compare, uniq) {
|
|||||||
|
|
||||||
util.binaryRemove = function binaryRemove(items, item, compare) {
|
util.binaryRemove = function binaryRemove(items, item, compare) {
|
||||||
var i = util.binarySearch(items, item, compare, false);
|
var i = util.binarySearch(items, item, compare, false);
|
||||||
|
|
||||||
if (i === -1)
|
if (i === -1)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
items.splice(i, 1);
|
items.splice(i, 1);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* Unique-ify and sort an array of buffers.
|
|
||||||
* @param {Buffer[]} items
|
|
||||||
* @returns {Buffer[]}
|
|
||||||
*/
|
|
||||||
|
|
||||||
util.uniqBuffer = function uniqBuffer(items) {
|
|
||||||
var out = [];
|
|
||||||
var i, j, item;
|
|
||||||
|
|
||||||
for (i = 0; i < items.length; i++) {
|
|
||||||
item = items[i];
|
|
||||||
j = util.binarySearch(out, item, util.cmp, true);
|
|
||||||
|
|
||||||
if (j < out.length && util.cmp(out[j], item) === 0)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (j === 0)
|
|
||||||
out.unshift(item);
|
|
||||||
else if (j === out.length)
|
|
||||||
out.push(item);
|
|
||||||
else
|
|
||||||
out.splice(j, 0, item);
|
|
||||||
}
|
|
||||||
|
|
||||||
return out;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Normalize a path.
|
* Normalize a path.
|
||||||
* @param {String} path
|
* @param {String} path
|
||||||
|
|||||||
@ -657,7 +657,7 @@ TXDB.prototype.removeBlock = co(function* removeBlock(hash, height) {
|
|||||||
size = data.readUInt32LE(40, true);
|
size = data.readUInt32LE(40, true);
|
||||||
|
|
||||||
assert(size > 0);
|
assert(size > 0);
|
||||||
assert(util.equal(data.slice(-32), hash));
|
assert(data.slice(-32).equals(hash));
|
||||||
|
|
||||||
if (size === 1) {
|
if (size === 1) {
|
||||||
this.del(key);
|
this.del(key);
|
||||||
|
|||||||
@ -1237,7 +1237,7 @@ describe('Wallet', function() {
|
|||||||
assert(path.data && path.encrypted);
|
assert(path.data && path.encrypted);
|
||||||
d2 = path.data;
|
d2 = path.data;
|
||||||
|
|
||||||
assert(!util.equal(d1, d2));
|
assert(!d1.equals(d2));
|
||||||
|
|
||||||
k = yield w.getKey(addr);
|
k = yield w.getKey(addr);
|
||||||
assert(!k);
|
assert(!k);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user