utils: start using binet.
This commit is contained in:
parent
d4685e6e6c
commit
77403b0a3e
@ -5,7 +5,7 @@ const net = require('net');
|
||||
const EventEmitter = require('events');
|
||||
const bsock = require('bsock');
|
||||
const digest = require('bcrypto/lib/digest');
|
||||
const IP = require('../lib/utils/ip');
|
||||
const IP = require('binet');
|
||||
const BufferWriter = require('bbuf/lib/writer');
|
||||
|
||||
const TARGET = Buffer.from(
|
||||
|
||||
@ -21,7 +21,7 @@ const secp256k1 = require('bcrypto/lib/secp256k1');
|
||||
const StaticWriter = require('bbuf/lib/staticwriter');
|
||||
const base58 = require('bstr/lib/base58');
|
||||
const encoding = require('bbuf/lib/encoding');
|
||||
const IP = require('../utils/ip');
|
||||
const IP = require('binet');
|
||||
const dns = require('./dns');
|
||||
const Logger = require('../node/logger');
|
||||
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
'use strict';
|
||||
|
||||
const breq = require('breq');
|
||||
const IP = require('../utils/ip');
|
||||
const IP = require('binet');
|
||||
|
||||
/**
|
||||
* @exports net/external
|
||||
|
||||
@ -11,7 +11,7 @@ const path = require('path');
|
||||
const fs = require('bfile');
|
||||
const murmur3 = require('bfilter/lib/murmur3');
|
||||
const util = require('../utils/util');
|
||||
const IP = require('../utils/ip');
|
||||
const IP = require('binet');
|
||||
const co = require('../utils/co');
|
||||
const Network = require('../protocol/network');
|
||||
const NetAddress = require('../primitives/netaddress');
|
||||
|
||||
@ -11,7 +11,7 @@ const assert = require('assert');
|
||||
const EventEmitter = require('events');
|
||||
const AsyncObject = require('../utils/asyncobject');
|
||||
const util = require('../utils/util');
|
||||
const IP = require('../utils/ip');
|
||||
const IP = require('binet');
|
||||
const co = require('../utils/co');
|
||||
const common = require('./common');
|
||||
const chainCommon = require('../blockchain/common');
|
||||
|
||||
@ -14,7 +14,7 @@ const assert = require('assert');
|
||||
const EventEmitter = require('events');
|
||||
const net = require('net');
|
||||
const {format} = require('util');
|
||||
const IP = require('../utils/ip');
|
||||
const IP = require('binet');
|
||||
const StaticWriter = require('bbuf/lib/staticwriter');
|
||||
const BufferReader = require('bbuf/lib/reader');
|
||||
|
||||
|
||||
@ -12,7 +12,7 @@ const url = require('url');
|
||||
const breq = require('breq');
|
||||
const co = require('../utils/co');
|
||||
const Lock = require('../utils/lock');
|
||||
const IP = require('../utils/ip');
|
||||
const IP = require('binet');
|
||||
|
||||
/**
|
||||
* UPNP
|
||||
|
||||
@ -28,7 +28,7 @@ const Network = require('../protocol/network');
|
||||
const Outpoint = require('../primitives/outpoint');
|
||||
const Output = require('../primitives/output');
|
||||
const TX = require('../primitives/tx');
|
||||
const IP = require('../utils/ip');
|
||||
const IP = require('binet');
|
||||
const encoding = require('bbuf/lib/encoding');
|
||||
const consensus = require('../protocol/consensus');
|
||||
const Validator = require('../utils/validator');
|
||||
|
||||
@ -10,7 +10,7 @@ const assert = require('assert');
|
||||
const common = require('../net/common');
|
||||
const Network = require('../protocol/network');
|
||||
const util = require('../utils/util');
|
||||
const IP = require('../utils/ip');
|
||||
const IP = require('binet');
|
||||
const StaticWriter = require('bbuf/lib/staticwriter');
|
||||
const BufferReader = require('bbuf/lib/reader');
|
||||
|
||||
|
||||
@ -1,191 +0,0 @@
|
||||
/*!
|
||||
* base32.js - base32 for bcoin
|
||||
* Copyright (c) 2014-2017, Christopher Jeffrey (MIT License).
|
||||
* https://github.com/bcoin-org/bcoin
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* @module utils/base32
|
||||
*/
|
||||
|
||||
const assert = require('assert');
|
||||
const base32 = 'abcdefghijklmnopqrstuvwxyz234567';
|
||||
const padding = [0, 6, 4, 3, 1];
|
||||
const unbase32 = {};
|
||||
|
||||
for (let i = 0; i < base32.length; i++)
|
||||
unbase32[base32[i]] = i;
|
||||
|
||||
/**
|
||||
* Encode a base32 string.
|
||||
* @param {Buffer} data
|
||||
* @returns {String}
|
||||
*/
|
||||
|
||||
exports.encode = function encode(data) {
|
||||
assert(Buffer.isBuffer(data));
|
||||
|
||||
let str = '';
|
||||
let mode = 0;
|
||||
let left = 0;
|
||||
|
||||
for (let i = 0; i < data.length; i++) {
|
||||
const ch = data[i];
|
||||
switch (mode) {
|
||||
case 0:
|
||||
str += base32[ch >>> 3];
|
||||
left = (ch & 7) << 2;
|
||||
mode = 1;
|
||||
break;
|
||||
case 1:
|
||||
str += base32[left | (ch >>> 6)];
|
||||
str += base32[(ch >>> 1) & 31];
|
||||
left = (ch & 1) << 4;
|
||||
mode = 2;
|
||||
break;
|
||||
case 2:
|
||||
str += base32[left | (ch >>> 4)];
|
||||
left = (ch & 15) << 1;
|
||||
mode = 3;
|
||||
break;
|
||||
case 3:
|
||||
str += base32[left | (ch >>> 7)];
|
||||
str += base32[(ch >>> 2) & 31];
|
||||
left = (ch & 3) << 3;
|
||||
mode = 4;
|
||||
break;
|
||||
case 4:
|
||||
str += base32[left | (ch >>> 5)];
|
||||
str += base32[ch & 31];
|
||||
mode = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (mode > 0) {
|
||||
str += base32[left];
|
||||
for (let i = 0; i < padding[mode]; i++)
|
||||
str += '=';
|
||||
}
|
||||
|
||||
return str;
|
||||
};
|
||||
|
||||
/**
|
||||
* Decode a base32 string.
|
||||
* @param {String} str
|
||||
* @returns {Buffer}
|
||||
*/
|
||||
|
||||
exports.decode = function decode(str) {
|
||||
assert(typeof str === 'string');
|
||||
|
||||
const data = Buffer.allocUnsafe(str.length * 5 / 8 | 0);
|
||||
let mode = 0;
|
||||
let left = 0;
|
||||
let j = 0;
|
||||
let i;
|
||||
|
||||
for (i = 0; i < str.length; i++) {
|
||||
const ch = unbase32[str[i]];
|
||||
|
||||
if (ch == null)
|
||||
break;
|
||||
|
||||
switch (mode) {
|
||||
case 0:
|
||||
left = ch;
|
||||
mode = 1;
|
||||
break;
|
||||
case 1:
|
||||
data[j++] = (left << 3) | (ch >>> 2);
|
||||
left = ch & 3;
|
||||
mode = 2;
|
||||
break;
|
||||
case 2:
|
||||
left = left << 5 | ch;
|
||||
mode = 3;
|
||||
break;
|
||||
case 3:
|
||||
data[j++] = (left << 1) | (ch >>> 4);
|
||||
left = ch & 15;
|
||||
mode = 4;
|
||||
break;
|
||||
case 4:
|
||||
data[j++] = (left << 4) | (ch >>> 1);
|
||||
left = ch & 1;
|
||||
mode = 5;
|
||||
break;
|
||||
case 5:
|
||||
left = left << 5 | ch;
|
||||
mode = 6;
|
||||
break;
|
||||
case 6:
|
||||
data[j++] = (left << 2) | (ch >>> 3);
|
||||
left = ch & 7;
|
||||
mode = 7;
|
||||
break;
|
||||
case 7:
|
||||
data[j++] = (left << 5) | ch;
|
||||
mode = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
switch (mode) {
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
case 3:
|
||||
case 6:
|
||||
throw new Error('Invalid base32 string.');
|
||||
case 2:
|
||||
if (left > 0)
|
||||
throw new Error('Invalid padding.');
|
||||
|
||||
if (str.slice(i, i + 6) !== '======')
|
||||
throw new Error('Invalid base32 character.');
|
||||
|
||||
if (unbase32[str[i + 6]] != null)
|
||||
throw new Error('Invalid padding.');
|
||||
|
||||
break;
|
||||
case 4:
|
||||
if (left > 0)
|
||||
throw new Error('Invalid padding.');
|
||||
|
||||
if (str.slice(i, i + 4) !== '====')
|
||||
throw new Error('Invalid base32 character.');
|
||||
|
||||
if (unbase32[str[i + 4]] != null)
|
||||
throw new Error('Invalid padding.');
|
||||
|
||||
break;
|
||||
case 5:
|
||||
if (left > 0)
|
||||
throw new Error('Invalid padding.');
|
||||
|
||||
if (str.slice(i, i + 3) !== '===')
|
||||
throw new Error('Invalid base32 character.');
|
||||
|
||||
if (unbase32[str[i + 3]] != null)
|
||||
throw new Error('Invalid padding.');
|
||||
|
||||
break;
|
||||
case 7:
|
||||
if (left > 0)
|
||||
throw new Error('Invalid padding.');
|
||||
|
||||
if (str[i] !== '=')
|
||||
throw new Error('Invalid base32 character.');
|
||||
|
||||
if (unbase32[str[i + 1]] != null)
|
||||
throw new Error('Invalid padding.');
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
return data.slice(0, j);
|
||||
};
|
||||
@ -1,500 +0,0 @@
|
||||
/*!
|
||||
* staticwriter.js - buffer writer for bcoin
|
||||
* Copyright (c) 2014-2017, Christopher Jeffrey (MIT License).
|
||||
* https://github.com/bcoin-org/bcoin
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
const assert = require('assert');
|
||||
const encoding = require('bbuf/lib/encoding');
|
||||
|
||||
const POOL0 = Buffer.allocUnsafe(0);
|
||||
const POOL8 = Buffer.allocUnsafe(1);
|
||||
const POOL16 = Buffer.allocUnsafe(2);
|
||||
const POOL24 = Buffer.allocUnsafe(3);
|
||||
const POOL32 = Buffer.allocUnsafe(4);
|
||||
const POOL40 = Buffer.allocUnsafe(5);
|
||||
const POOL48 = Buffer.allocUnsafe(6);
|
||||
const POOL56 = Buffer.allocUnsafe(7);
|
||||
const POOL64 = Buffer.allocUnsafe(8);
|
||||
const POOL72 = Buffer.allocUnsafe(9);
|
||||
const POOL256 = Buffer.allocUnsafe(32);
|
||||
|
||||
const poolBySize = [
|
||||
POOL0,
|
||||
POOL8,
|
||||
POOL16,
|
||||
POOL24,
|
||||
POOL32,
|
||||
POOL40,
|
||||
POOL48,
|
||||
POOL56,
|
||||
POOL64,
|
||||
POOL72
|
||||
];
|
||||
|
||||
/**
|
||||
* Statically allocated buffer writer.
|
||||
* @alias module:utils.HashWriter
|
||||
* @constructor
|
||||
* @param {Number} size
|
||||
*/
|
||||
|
||||
function HashWriter(Hash, ...args) {
|
||||
if (!(this instanceof HashWriter))
|
||||
return new HashWriter(Hash, ...args);
|
||||
|
||||
this.ctx = new Hash().init(...args);
|
||||
}
|
||||
|
||||
/**
|
||||
* Allocate and render the final buffer.
|
||||
* @returns {Buffer} Rendered buffer.
|
||||
*/
|
||||
|
||||
HashWriter.prototype.init = function init(...args) {
|
||||
return this.ctx.init(...args);
|
||||
};
|
||||
|
||||
/**
|
||||
* Allocate and render the final buffer.
|
||||
* @returns {Buffer} Rendered buffer.
|
||||
*/
|
||||
|
||||
HashWriter.prototype.update = function update(data) {
|
||||
return this.ctx.update(data);
|
||||
};
|
||||
|
||||
/**
|
||||
* Allocate and render the final buffer.
|
||||
* @returns {Buffer} Rendered buffer.
|
||||
*/
|
||||
|
||||
HashWriter.prototype.final = function final() {
|
||||
return this.ctx.final();
|
||||
};
|
||||
|
||||
/**
|
||||
* Get size of data written so far.
|
||||
* @returns {Number}
|
||||
*/
|
||||
|
||||
HashWriter.prototype.getSize = function getSize() {
|
||||
assert(false);
|
||||
};
|
||||
|
||||
/**
|
||||
* Seek to relative offset.
|
||||
* @param {Number} offset
|
||||
*/
|
||||
|
||||
HashWriter.prototype.seek = function seek(offset) {
|
||||
assert(false);
|
||||
};
|
||||
|
||||
/**
|
||||
* Destroy the buffer writer.
|
||||
*/
|
||||
|
||||
HashWriter.prototype.destroy = function destroy() {
|
||||
assert(false);
|
||||
};
|
||||
|
||||
/**
|
||||
* Write uint8.
|
||||
* @param {Number} value
|
||||
*/
|
||||
|
||||
HashWriter.prototype.writeU8 = function writeU8(value) {
|
||||
POOL8.writeUInt8(value, 0, true);
|
||||
this.ctx.update(POOL8);
|
||||
};
|
||||
|
||||
/**
|
||||
* Write uint16le.
|
||||
* @param {Number} value
|
||||
*/
|
||||
|
||||
HashWriter.prototype.writeU16 = function writeU16(value) {
|
||||
POOL16.writeUInt16LE(value, 0, true);
|
||||
this.ctx.update(POOL16);
|
||||
};
|
||||
|
||||
/**
|
||||
* Write uint16be.
|
||||
* @param {Number} value
|
||||
*/
|
||||
|
||||
HashWriter.prototype.writeU16BE = function writeU16BE(value) {
|
||||
POOL16.writeUInt16BE(value, 0, true);
|
||||
this.ctx.update(POOL16);
|
||||
};
|
||||
|
||||
/**
|
||||
* Write uint32le.
|
||||
* @param {Number} value
|
||||
*/
|
||||
|
||||
HashWriter.prototype.writeU32 = function writeU32(value) {
|
||||
POOL32.writeUInt32LE(value, 0, true);
|
||||
this.ctx.update(POOL32);
|
||||
};
|
||||
|
||||
/**
|
||||
* Write uint32be.
|
||||
* @param {Number} value
|
||||
*/
|
||||
|
||||
HashWriter.prototype.writeU32BE = function writeU32BE(value) {
|
||||
POOL32.writeUInt32BE(value, 0, true);
|
||||
this.ctx.update(POOL32);
|
||||
};
|
||||
|
||||
/**
|
||||
* Write uint64le.
|
||||
* @param {Number} value
|
||||
*/
|
||||
|
||||
HashWriter.prototype.writeU64 = function writeU64(value) {
|
||||
encoding.writeU64(POOL64, value, 0);
|
||||
this.ctx.update(POOL64);
|
||||
};
|
||||
|
||||
/**
|
||||
* Write uint64be.
|
||||
* @param {Number} value
|
||||
*/
|
||||
|
||||
HashWriter.prototype.writeU64BE = function writeU64BE(value) {
|
||||
encoding.writeU64BE(POOL64, value, 0);
|
||||
this.ctx.update(POOL64);
|
||||
};
|
||||
|
||||
/**
|
||||
* Write uint64le.
|
||||
* @param {U64} value
|
||||
*/
|
||||
|
||||
HashWriter.prototype.writeU64N = function writeU64N(value) {
|
||||
encoding.writeU64N(POOL64, value, 0);
|
||||
this.ctx.update(POOL64);
|
||||
};
|
||||
|
||||
/**
|
||||
* Write uint64be.
|
||||
* @param {U64} value
|
||||
*/
|
||||
|
||||
HashWriter.prototype.writeU64BEN = function writeU64BEN(value) {
|
||||
encoding.writeU64BEN(POOL64, value, 0);
|
||||
this.ctx.update(POOL64);
|
||||
};
|
||||
|
||||
/**
|
||||
* Write int8.
|
||||
* @param {Number} value
|
||||
*/
|
||||
|
||||
HashWriter.prototype.writeI8 = function writeI8(value) {
|
||||
POOL8.writeInt8(value, 0, true);
|
||||
this.ctx.update(POOL8);
|
||||
};
|
||||
|
||||
/**
|
||||
* Write int16le.
|
||||
* @param {Number} value
|
||||
*/
|
||||
|
||||
HashWriter.prototype.writeI16 = function writeI16(value) {
|
||||
POOL16.writeInt16LE(value, 0, true);
|
||||
this.ctx.update(POOL16);
|
||||
};
|
||||
|
||||
/**
|
||||
* Write int16be.
|
||||
* @param {Number} value
|
||||
*/
|
||||
|
||||
HashWriter.prototype.writeI16BE = function writeI16BE(value) {
|
||||
POOL16.writeInt16BE(value, 0, true);
|
||||
this.ctx.update(POOL16);
|
||||
};
|
||||
|
||||
/**
|
||||
* Write int32le.
|
||||
* @param {Number} value
|
||||
*/
|
||||
|
||||
HashWriter.prototype.writeI32 = function writeI32(value) {
|
||||
POOL32.writeInt32LE(value, 0, true);
|
||||
this.ctx.update(POOL32);
|
||||
};
|
||||
|
||||
/**
|
||||
* Write int32be.
|
||||
* @param {Number} value
|
||||
*/
|
||||
|
||||
HashWriter.prototype.writeI32BE = function writeI32BE(value) {
|
||||
POOL32.writeInt32BE(value, 0, true);
|
||||
this.ctx.update(POOL32);
|
||||
};
|
||||
|
||||
/**
|
||||
* Write int64le.
|
||||
* @param {Number} value
|
||||
*/
|
||||
|
||||
HashWriter.prototype.writeI64 = function writeI64(value) {
|
||||
encoding.writeI64(POOL64, value, 0);
|
||||
this.ctx.update(POOL64);
|
||||
};
|
||||
|
||||
/**
|
||||
* Write int64be.
|
||||
* @param {Number} value
|
||||
*/
|
||||
|
||||
HashWriter.prototype.writeI64BE = function writeI64BE(value) {
|
||||
encoding.writeI64BE(POOL64, value, 0);
|
||||
this.ctx.update(POOL64);
|
||||
};
|
||||
|
||||
/**
|
||||
* Write int64le.
|
||||
* @param {I64} value
|
||||
*/
|
||||
|
||||
HashWriter.prototype.writeI64N = function writeI64N(value) {
|
||||
encoding.writeI64N(POOL64, value, 0);
|
||||
this.ctx.update(POOL64);
|
||||
};
|
||||
|
||||
/**
|
||||
* Write int64be.
|
||||
* @param {I64} value
|
||||
*/
|
||||
|
||||
HashWriter.prototype.writeI64BEN = function writeI64BEN(value) {
|
||||
encoding.writeI64BEN(POOL64, value, 0);
|
||||
this.ctx.update(POOL64);
|
||||
};
|
||||
|
||||
/**
|
||||
* Write float le.
|
||||
* @param {Number} value
|
||||
*/
|
||||
|
||||
HashWriter.prototype.writeFloat = function writeFloat(value) {
|
||||
POOL32.writeFloatLE(value, 0, true);
|
||||
this.ctx.update(POOL32);
|
||||
};
|
||||
|
||||
/**
|
||||
* Write float be.
|
||||
* @param {Number} value
|
||||
*/
|
||||
|
||||
HashWriter.prototype.writeFloatBE = function writeFloatBE(value) {
|
||||
POOL32.writeFloatBE(value, 0, true);
|
||||
this.ctx.update(POOL32);
|
||||
};
|
||||
|
||||
/**
|
||||
* Write double le.
|
||||
* @param {Number} value
|
||||
*/
|
||||
|
||||
HashWriter.prototype.writeDouble = function writeDouble(value) {
|
||||
POOL64.writeDoubleLE(value, 0, true);
|
||||
this.ctx.update(POOL64);
|
||||
};
|
||||
|
||||
/**
|
||||
* Write double be.
|
||||
* @param {Number} value
|
||||
*/
|
||||
|
||||
HashWriter.prototype.writeDoubleBE = function writeDoubleBE(value) {
|
||||
POOL64.writeDoubleBE(value, 0, true);
|
||||
this.ctx.update(POOL64);
|
||||
};
|
||||
|
||||
/**
|
||||
* Write a varint.
|
||||
* @param {Number} value
|
||||
*/
|
||||
|
||||
HashWriter.prototype.writeVarint = function writeVarint(value) {
|
||||
const size = encoding.sizeVarint(value);
|
||||
const pool = poolBySize[size];
|
||||
encoding.writeVarint(pool, value, 0);
|
||||
this.ctx.update(pool);
|
||||
};
|
||||
|
||||
/**
|
||||
* Write a varint.
|
||||
* @param {U64} value
|
||||
*/
|
||||
|
||||
HashWriter.prototype.writeVarintN = function writeVarintN(value) {
|
||||
const size = encoding.sizeVarintN(value);
|
||||
const pool = poolBySize[size];
|
||||
encoding.writeVarintN(pool, value, 0);
|
||||
this.ctx.update(pool);
|
||||
};
|
||||
|
||||
/**
|
||||
* Write a varint (type 2).
|
||||
* @param {Number} value
|
||||
*/
|
||||
|
||||
HashWriter.prototype.writeVarint2 = function writeVarint2(value) {
|
||||
const size = encoding.sizeVarint2(value);
|
||||
const pool = poolBySize[size];
|
||||
encoding.writeVarint2(pool, value, 0);
|
||||
this.ctx.update(pool);
|
||||
};
|
||||
|
||||
/**
|
||||
* Write a varint (type 2).
|
||||
* @param {U64} value
|
||||
*/
|
||||
|
||||
HashWriter.prototype.writeVarint2N = function writeVarint2N(value) {
|
||||
const size = encoding.sizeVarint2N(value);
|
||||
const pool = poolBySize[size];
|
||||
encoding.writeVarint2N(pool, value, 0);
|
||||
this.ctx.update(pool);
|
||||
};
|
||||
|
||||
/**
|
||||
* Write bytes.
|
||||
* @param {Buffer} value
|
||||
*/
|
||||
|
||||
HashWriter.prototype.writeBytes = function writeBytes(value) {
|
||||
this.ctx.update(value);
|
||||
};
|
||||
|
||||
/**
|
||||
* Write bytes with a varint length before them.
|
||||
* @param {Buffer} value
|
||||
*/
|
||||
|
||||
HashWriter.prototype.writeVarBytes = function writeVarBytes(value) {
|
||||
this.writeVarint(value.length);
|
||||
this.writeBytes(value);
|
||||
};
|
||||
|
||||
/**
|
||||
* Copy bytes.
|
||||
* @param {Buffer} value
|
||||
* @param {Number} start
|
||||
* @param {Number} end
|
||||
*/
|
||||
|
||||
HashWriter.prototype.copy = function copy(value, start, end) {
|
||||
this.ctx.update(value.slice(start, end));
|
||||
};
|
||||
|
||||
/**
|
||||
* Write string to buffer.
|
||||
* @param {String} value
|
||||
* @param {String?} enc - Any buffer-supported encoding.
|
||||
*/
|
||||
|
||||
HashWriter.prototype.writeString = function writeString(value, enc) {
|
||||
if (value.length === 0)
|
||||
return;
|
||||
|
||||
if (typeof value === 'string')
|
||||
value = Buffer.from(value, enc);
|
||||
|
||||
this.ctx.update(value);
|
||||
};
|
||||
|
||||
/**
|
||||
* Write a 32 byte hash.
|
||||
* @param {Hash} value
|
||||
*/
|
||||
|
||||
HashWriter.prototype.writeHash = function writeHash(value) {
|
||||
if (typeof value !== 'string') {
|
||||
assert(value.length === 32);
|
||||
this.writeBytes(value);
|
||||
return;
|
||||
}
|
||||
assert(value.length === 64);
|
||||
POOL256.write(value, 0, 'hex');
|
||||
this.ctx.update(POOL256);
|
||||
};
|
||||
|
||||
/**
|
||||
* Write a string with a varint length before it.
|
||||
* @param {String}
|
||||
* @param {String?} enc - Any buffer-supported encoding.
|
||||
*/
|
||||
|
||||
HashWriter.prototype.writeVarString = function writeVarString(value, enc) {
|
||||
if (value.length === 0) {
|
||||
this.writeVarint(0);
|
||||
return;
|
||||
}
|
||||
|
||||
const size = Buffer.byteLength(value, enc);
|
||||
|
||||
this.writeVarint(size);
|
||||
this.ctx.update(value, enc);
|
||||
};
|
||||
|
||||
/**
|
||||
* Write a null-terminated string.
|
||||
* @param {String|Buffer}
|
||||
* @param {String?} enc - Any buffer-supported encoding.
|
||||
*/
|
||||
|
||||
HashWriter.prototype.writeNullString = function writeNullString(value, enc) {
|
||||
this.writeString(value, enc);
|
||||
this.writeU8(0);
|
||||
};
|
||||
|
||||
/**
|
||||
* Calculate and write a checksum for the data written so far.
|
||||
*/
|
||||
|
||||
HashWriter.prototype.writeChecksum = function writeChecksum() {
|
||||
assert(false);
|
||||
};
|
||||
|
||||
/**
|
||||
* Fill N bytes with value.
|
||||
* @param {Number} value
|
||||
* @param {Number} size
|
||||
*/
|
||||
|
||||
HashWriter.prototype.fill = function fill(value, size) {
|
||||
assert(size >= 0);
|
||||
|
||||
if (size === 0)
|
||||
return;
|
||||
|
||||
if (size <= 32) {
|
||||
const data = POOL256.slice(0, size);
|
||||
data.fill(value);
|
||||
this.ctx.update(data);
|
||||
return;
|
||||
}
|
||||
|
||||
const data = Buffer.allocUnsafe(size);
|
||||
data.fill(value);
|
||||
|
||||
this.ctx.update(data);
|
||||
};
|
||||
|
||||
/*
|
||||
* Expose
|
||||
*/
|
||||
|
||||
module.exports = HashWriter;
|
||||
@ -12,13 +12,11 @@
|
||||
|
||||
exports.AsyncEmitter = require('./asyncemitter');
|
||||
exports.AsyncObject = require('./asyncobject');
|
||||
exports.base32 = require('./base32');
|
||||
exports.binary = require('./binary');
|
||||
exports.co = require('./co');
|
||||
exports.enforce = require('./enforce');
|
||||
exports.fixed = require('./fixed');
|
||||
exports.Heap = require('./heap');
|
||||
exports.IP = require('./ip');
|
||||
exports.List = require('./list');
|
||||
exports.Lock = require('./lock');
|
||||
exports.LRU = require('./lru');
|
||||
|
||||
@ -1,9 +0,0 @@
|
||||
/*!
|
||||
* int64.js - int64s for bcoin
|
||||
* Copyright (c) 2017, Christopher Jeffrey (MIT License).
|
||||
* https://github.com/bcoin-org/bcoin
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
module.exports = require('n64');
|
||||
1067
lib/utils/ip.js
1067
lib/utils/ip.js
File diff suppressed because it is too large
Load Diff
@ -29,6 +29,7 @@
|
||||
"bdb": "^0.0.1",
|
||||
"bfile": "^0.0.1",
|
||||
"bfilter": "^0.0.1",
|
||||
"binet": "^0.0.1",
|
||||
"breq": "^0.0.1",
|
||||
"bsock": "^0.0.1",
|
||||
"bstr": "^0.0.1",
|
||||
|
||||
Loading…
Reference in New Issue
Block a user