JS: Fix erroneous base58 decoding and add tests for issue.

This commit is contained in:
Stefan Thomas
2013-02-26 13:56:40 +01:00
parent 380523a462
commit 0ad2d77d02
3 changed files with 49 additions and 1 deletions

View File

@@ -130,7 +130,11 @@ Base.decode_check = function (version, input, alphabet) {
if (computed[i] !== checksum[i])
return NaN;
return new BigInteger(buffer.slice(1, -4));
// We'll use the version byte to add a leading zero, this ensures JSBN doesn't
// intrepret the value as a negative number
buffer[0] = 0;
return new BigInteger(buffer.slice(0, -4), 256);
}
exports.Base = Base;

20
test/base58-test.js Normal file
View File

@@ -0,0 +1,20 @@
var buster = require("buster");
var Seed = require("../src/js/seed").Seed;
var config = require('../src/js/config').load(require('./config'));
buster.testCase("Base58", {
"Seed" : {
"saESc82Vun7Ta5EJRzGJbrXb5HNYk" : function () {
var seed = Seed.from_json("saESc82Vun7Ta5EJRzGJbrXb5HNYk");
buster.assert.equals(seed.to_hex(), "FF1CF838D02B2CF7B45BAC27F5F24F4F");
},
"sp6iDHnmiPN7tQFHm5sCW59ax3hfE" : function () {
var seed = Seed.from_json("sp6iDHnmiPN7tQFHm5sCW59ax3hfE");
buster.assert.equals(seed.to_hex(), "00AD8DA764C3C8AF5F9B8D51C94B9E49");
}
}
});
// vim:sw=2:sts=2:ts=8:et

24
test/sign-test.js Normal file
View File

@@ -0,0 +1,24 @@
var buster = require("buster");
var Seed = require("../src/js/seed").Seed;
var config = require('../src/js/config').load(require('./config'));
buster.testCase("Signing", {
"Keys" : {
"SigningPubKey 1 (ripple-client issue #245)" : function () {
var seed = Seed.from_json("saESc82Vun7Ta5EJRzGJbrXb5HNYk");
var key = seed.get_key("rBZ4j6MsoctipM6GEyHSjQKzXG3yambDnZ");
var pub = key.to_hex_pub();
buster.assert.equals(pub, "0396941B22791A448E5877A44CE98434DB217D6FB97D63F0DAD23BE49ED45173C9");
},
"SigningPubKey 2 (master seed)" : function () {
var seed = Seed.from_json("snoPBrXtMeMyMHUVTgbuqAfg1SUTb");
var key = seed.get_key("rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh");
var pub = key.to_hex_pub();
buster.assert.equals(pub, "0330E7FC9D56BB25D6893BA3F317AE5BCF33B3291BD63DB32654A313222F7FD020");
}
}
});
// vim:sw=2:sts=2:ts=8:et