siphash: return objects instead of buffers.
This commit is contained in:
parent
5bde338a53
commit
015fb8b0b6
@ -83,7 +83,7 @@ function siphash24(data, key, shift) {
|
||||
v0.ixor(v2);
|
||||
v0.ixor(v3);
|
||||
|
||||
return v0.toRaw();
|
||||
return v0;
|
||||
}
|
||||
|
||||
function sipround(v0, v1, v2, v3) {
|
||||
@ -215,8 +215,8 @@ U64.prototype.irotl = function irotl(bits) {
|
||||
|
||||
U64.prototype.toRaw = function toRaw() {
|
||||
var data = Buffer.allocUnsafe(8);
|
||||
data.writeUInt32LE(this.hi >>> 0, 4, true);
|
||||
data.writeUInt32LE(this.lo >>> 0, 0, true);
|
||||
data.writeUInt32LE(this.hi >>> 0, 4, true);
|
||||
return data;
|
||||
};
|
||||
|
||||
@ -226,8 +226,8 @@ U64.fromRaw = function fromRaw(data, off) {
|
||||
if (!off)
|
||||
off = 0;
|
||||
|
||||
hi = data.readUInt32LE(off + 4, true);
|
||||
lo = data.readUInt32LE(off, true);
|
||||
hi = data.readUInt32LE(off + 4, true);
|
||||
|
||||
return new U64(hi, lo);
|
||||
};
|
||||
@ -236,7 +236,7 @@ U64.fromRaw = function fromRaw(data, off) {
|
||||
* Expose
|
||||
*/
|
||||
|
||||
exports = siphash256;
|
||||
exports = siphash;
|
||||
exports.siphash = siphash;
|
||||
exports.siphash256 = siphash256;
|
||||
exports.U64 = U64;
|
||||
|
||||
@ -18,7 +18,7 @@ var StaticWriter = require('../utils/staticwriter');
|
||||
var encoding = require('../utils/encoding');
|
||||
var consensus = require('../protocol/consensus');
|
||||
var crypto = require('../crypto/crypto');
|
||||
var siphash = require('../crypto/siphash');
|
||||
var siphash256 = require('../crypto/siphash').siphash256;
|
||||
var AbstractBlock = require('../primitives/abstractblock');
|
||||
var TX = require('../primitives/tx');
|
||||
var Headers = require('../primitives/headers');
|
||||
@ -387,10 +387,10 @@ CompactBlock.prototype.sid = function sid(hash) {
|
||||
if (typeof hash === 'string')
|
||||
hash = Buffer.from(hash, 'hex');
|
||||
|
||||
hash = siphash(hash, this.sipKey);
|
||||
hash = siphash256(hash, this.sipKey);
|
||||
|
||||
lo = hash.readUInt32LE(0, true);
|
||||
hi = hash.readUInt16LE(4, true);
|
||||
lo = hash.lo >>> 0;
|
||||
hi = hash.hi & 0xffff;
|
||||
|
||||
return hi * 0x100000000 + lo;
|
||||
};
|
||||
|
||||
@ -28,7 +28,7 @@
|
||||
"hmac-drbg": "^1.0.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"bcoin-native": "0.0.17",
|
||||
"bcoin-native": "0.0.18",
|
||||
"leveldown": "1.7.0-0",
|
||||
"secp256k1": "3.2.5",
|
||||
"socket.io": "2.0.1",
|
||||
|
||||
@ -2,14 +2,22 @@
|
||||
|
||||
var assert = require('assert');
|
||||
var siphash = require('../lib/crypto/siphash');
|
||||
var siphash256 = siphash.siphash256;
|
||||
var U64 = siphash.U64;
|
||||
|
||||
function toRaw(num) {
|
||||
var data = Buffer.allocUnsafe(8);
|
||||
data.writeUInt32LE(num.lo >>> 0, 0, true);
|
||||
data.writeUInt32LE(num.hi >>> 0, 4, true);
|
||||
return data;
|
||||
};
|
||||
|
||||
describe('SipHash', function() {
|
||||
it('should perform siphash with no data', function() {
|
||||
var k0 = U64(0x07060504, 0x03020100).toRaw();
|
||||
var k1 = U64(0x0f0e0d0c, 0x0b0a0908).toRaw();
|
||||
var key = Buffer.concat([k0, k1]);
|
||||
assert.equal(siphash(Buffer.alloc(0), key).toString('hex'), '310e0edd47db6f72');
|
||||
assert.equal(toRaw(siphash256(Buffer.alloc(0), key)).toString('hex'), '310e0edd47db6f72');
|
||||
});
|
||||
|
||||
it('should perform siphash with data', function() {
|
||||
@ -17,7 +25,7 @@ describe('SipHash', function() {
|
||||
var k1 = U64(0x0f0e0d0c, 0x0b0a0908).toRaw();
|
||||
var data = U64(0x07060504, 0x03020100).toRaw();
|
||||
var key = Buffer.concat([k0, k1]);
|
||||
assert.equal(siphash(data, key).toString('hex'), '6224939a79f5f593');
|
||||
assert.equal(toRaw(siphash256(data, key)).toString('hex'), '6224939a79f5f593');
|
||||
});
|
||||
|
||||
it('should perform siphash with uint256', function() {
|
||||
@ -25,6 +33,6 @@ describe('SipHash', function() {
|
||||
var k1 = U64(0x0f0e0d0c, 0x0b0a0908).toRaw();
|
||||
var hash = Buffer.from('000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f', 'hex');
|
||||
var key = Buffer.concat([k0, k1]);
|
||||
assert.equal(siphash(hash, key).toString('hex'), 'ce7cf2722f512771');
|
||||
assert.equal(toRaw(siphash256(hash, key)).toString('hex'), 'ce7cf2722f512771');
|
||||
});
|
||||
});
|
||||
|
||||
Loading…
Reference in New Issue
Block a user