Fix Address#ripe/Address#getShortRipe API
This commit is contained in:
parent
ceceaee721
commit
4610701a3e
|
@ -90,26 +90,19 @@ function getaddrchecksum(data) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculate the ripe hash of the address.
|
* Get the ripe hash of the address without prefix zeroes.
|
||||||
* @param {?Object} opts - Options
|
* @return {Buffer} A short ripe hash.
|
||||||
* @return {Buffer} Resulting ripe hash.
|
|
||||||
*/
|
*/
|
||||||
Address.prototype.getRipe = function(opts) {
|
Address.prototype.getShortRipe = function() {
|
||||||
opts = opts || {};
|
|
||||||
var ripe = this.ripe;
|
var ripe = this.ripe;
|
||||||
if (opts.short) {
|
|
||||||
return ripe.slice(20 - getripelen(ripe));
|
return ripe.slice(20 - getripelen(ripe));
|
||||||
} else {
|
|
||||||
return ripe;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
function getdoublehash(addr) {
|
function getdoublehash(addr) {
|
||||||
var ripe = addr.getRipe();
|
|
||||||
var dataToHash = Buffer.concat([
|
var dataToHash = Buffer.concat([
|
||||||
var_int.encode(addr.version),
|
var_int.encode(addr.version),
|
||||||
var_int.encode(addr.stream),
|
var_int.encode(addr.stream),
|
||||||
ripe,
|
addr.ripe,
|
||||||
]);
|
]);
|
||||||
return bmcrypto.sha512(bmcrypto.sha512(dataToHash));
|
return bmcrypto.sha512(bmcrypto.sha512(dataToHash));
|
||||||
}
|
}
|
||||||
|
@ -187,11 +180,10 @@ function checkripelen(ripelen, version) {
|
||||||
* @return {string} Address string.
|
* @return {string} Address string.
|
||||||
*/
|
*/
|
||||||
Address.prototype.encode = function() {
|
Address.prototype.encode = function() {
|
||||||
var ripe = this.getRipe({short: true});
|
|
||||||
var data = Buffer.concat([
|
var data = Buffer.concat([
|
||||||
var_int.encode(this.version),
|
var_int.encode(this.version),
|
||||||
var_int.encode(this.stream),
|
var_int.encode(this.stream),
|
||||||
ripe,
|
this.getShortRipe(),
|
||||||
]);
|
]);
|
||||||
var addr = Buffer.concat([data, getaddrchecksum(data)]);
|
var addr = Buffer.concat([data, getaddrchecksum(data)]);
|
||||||
return "BM-" + bs58.encode(addr);
|
return "BM-" + bs58.encode(addr);
|
||||||
|
|
|
@ -139,7 +139,7 @@ var getpubkey = exports.getpubkey = {
|
||||||
assert(to.version <= 4, "Address version is too high");
|
assert(to.version <= 4, "Address version is too high");
|
||||||
opts.version = to.version;
|
opts.version = to.version;
|
||||||
opts.stream = to.stream;
|
opts.stream = to.stream;
|
||||||
opts.objectPayload = to.version < 4 ? to.getRipe() : to.getTag();
|
opts.objectPayload = to.version < 4 ? to.ripe : to.getTag();
|
||||||
// POW calculation here.
|
// POW calculation here.
|
||||||
var nonce = new Buffer(8);
|
var nonce = new Buffer(8);
|
||||||
opts.nonce = nonce;
|
opts.nonce = nonce;
|
||||||
|
|
10
test.js
10
test.js
|
@ -743,7 +743,7 @@ describe("High-level classes", function() {
|
||||||
expect(addr.stream).to.equal(1);
|
expect(addr.stream).to.equal(1);
|
||||||
expect(bufferEqual(addr.signPrivateKey, WIF.decode("5JY1CFeeyN4eyfL35guWAuUqu5VLmd7LojtkNP6wmt5msZxxZ57"))).to.be.true;
|
expect(bufferEqual(addr.signPrivateKey, WIF.decode("5JY1CFeeyN4eyfL35guWAuUqu5VLmd7LojtkNP6wmt5msZxxZ57"))).to.be.true;
|
||||||
expect(bufferEqual(addr.encPrivateKey, WIF.decode("5J1oDgZDicNhUgbfzBDQqi2m5jUPnDrfZinnTqEEEaLv63jVFTM"))).to.be.true;
|
expect(bufferEqual(addr.encPrivateKey, WIF.decode("5J1oDgZDicNhUgbfzBDQqi2m5jUPnDrfZinnTqEEEaLv63jVFTM"))).to.be.true;
|
||||||
expect(addr.getRipe().toString("hex")).to.equal("00ac14944b00decea5628eb40d0ff4b0f9ee9eca");
|
expect(addr.ripe.toString("hex")).to.equal("00ac14944b00decea5628eb40d0ff4b0f9ee9eca");
|
||||||
expect(addr.encode()).to.equal("BM-2cWFkyuXXFw6d393RGnin2RpSXj8wxtt6F");
|
expect(addr.encode()).to.equal("BM-2cWFkyuXXFw6d393RGnin2RpSXj8wxtt6F");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -754,7 +754,7 @@ describe("High-level classes", function() {
|
||||||
expect(addr.stream).to.equal(1);
|
expect(addr.stream).to.equal(1);
|
||||||
expect(bufferEqual(addr.signPrivateKey, WIF.decode("5JY1CFeeyN4eyfL35guWAuUqu5VLmd7LojtkNP6wmt5msZxxZ57"))).to.be.true;
|
expect(bufferEqual(addr.signPrivateKey, WIF.decode("5JY1CFeeyN4eyfL35guWAuUqu5VLmd7LojtkNP6wmt5msZxxZ57"))).to.be.true;
|
||||||
expect(bufferEqual(addr.encPrivateKey, WIF.decode("5J1oDgZDicNhUgbfzBDQqi2m5jUPnDrfZinnTqEEEaLv63jVFTM"))).to.be.true;
|
expect(bufferEqual(addr.encPrivateKey, WIF.decode("5J1oDgZDicNhUgbfzBDQqi2m5jUPnDrfZinnTqEEEaLv63jVFTM"))).to.be.true;
|
||||||
expect(addr.getRipe().toString("hex")).to.equal("00ac14944b00decea5628eb40d0ff4b0f9ee9eca");
|
expect(addr.ripe.toString("hex")).to.equal("00ac14944b00decea5628eb40d0ff4b0f9ee9eca");
|
||||||
expect(addr.encode()).to.equal("BM-2cWFkyuXXFw6d393RGnin2RpSXj8wxtt6F");
|
expect(addr.encode()).to.equal("BM-2cWFkyuXXFw6d393RGnin2RpSXj8wxtt6F");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -788,9 +788,9 @@ describe("High-level classes", function() {
|
||||||
addr.encPrivateKey = Buffer("9f9969c93c2d186787a7653f70e49be34c03c4a853e6ad0c867db0946bc433c6", "hex");
|
addr.encPrivateKey = Buffer("9f9969c93c2d186787a7653f70e49be34c03c4a853e6ad0c867db0946bc433c6", "hex");
|
||||||
expect(addr.encPublicKey.toString("hex")).to.equal("04c6ed1b56f2da97fec1b762d43364566faf082c1e4918ae1dbb41757cad41b03b2cc5087f341414e63f6eee72a1fbf0b5f346a1bb3ba944cad204ca597db2bfc8");
|
expect(addr.encPublicKey.toString("hex")).to.equal("04c6ed1b56f2da97fec1b762d43364566faf082c1e4918ae1dbb41757cad41b03b2cc5087f341414e63f6eee72a1fbf0b5f346a1bb3ba944cad204ca597db2bfc8");
|
||||||
expect(addr.ripe.toString("hex")).to.equal("003ab6655de4bd8c603eba9b00dd5970725fdd56");
|
expect(addr.ripe.toString("hex")).to.equal("003ab6655de4bd8c603eba9b00dd5970725fdd56");
|
||||||
expect(addr.getRipe({short: true}).toString("hex")).to.equal("3ab6655de4bd8c603eba9b00dd5970725fdd56");
|
expect(addr.getShortRipe().toString("hex")).to.equal("3ab6655de4bd8c603eba9b00dd5970725fdd56");
|
||||||
addr.encPrivateKey = Buffer("009969c93c2d186787a7653f70e49be34c03c4a853e6ad0c867db0946bc433c6", "hex");
|
addr.encPrivateKey = Buffer("009969c93c2d186787a7653f70e49be34c03c4a853e6ad0c867db0946bc433c6", "hex");
|
||||||
expect(addr.getRipe({short: true}).toString("hex")).to.equal("69617ddb1946dc327cadffcf33889fed587fc1e7");
|
expect(addr.getShortRipe().toString("hex")).to.equal("69617ddb1946dc327cadffcf33889fed587fc1e7");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should implement isAddress method", function() {
|
it("should implement isAddress method", function() {
|
||||||
|
@ -806,7 +806,7 @@ describe("High-level classes", function() {
|
||||||
it("should allow to generate shorter address", function() {
|
it("should allow to generate shorter address", function() {
|
||||||
this.timeout(300000);
|
this.timeout(300000);
|
||||||
var addr = Address.fromRandom({ripeLength: 18});
|
var addr = Address.fromRandom({ripeLength: 18});
|
||||||
var ripe = addr.getRipe({short: true});
|
var ripe = addr.getShortRipe();
|
||||||
expect(ripe.length).to.be.at.most(18);
|
expect(ripe.length).to.be.at.most(18);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user