mirror of
https://github.com/Xahau/xahau.js.git
synced 2025-11-15 10:05:48 +00:00
76 lines
3.2 KiB
JavaScript
76 lines
3.2 KiB
JavaScript
var assert = require('assert');
|
|
var utils = require('./testutils');
|
|
var Seed = utils.load_module('seed').Seed;
|
|
var config = require('./testutils').get_config();
|
|
|
|
describe('Seed', function() {
|
|
it('can generate many addresses', function () {
|
|
|
|
var test_data = [
|
|
// Format:
|
|
// [passphrase, address, nth-for-seed, expected-public-key]
|
|
["masterpassphrase", "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh", 0,
|
|
"0330E7FC9D56BB25D6893BA3F317AE5BCF33B3291BD63DB32654A313222F7FD020"],
|
|
["masterpassphrase", "r4bYF7SLUMD7QgSLLpgJx38WJSY12ViRjP", 1,
|
|
"02CD8C4CE87F86AAD1D9D18B03DE28E6E756F040BD72A9C127862833EB90D60BAD"],
|
|
["masterpassphrase", "rLpAd4peHUMBPbVJASMYK5GTBUSwXRD9nx", 2,
|
|
"0259A57642A6F4AEFC9B8062AF453FDEEEAC5572BA602BB1DBD5EF011394C6F9FC"],
|
|
["otherpassphrase", "rpe3YWSVwGU2PmUzebAPg2deBXHtmba7hJ", 0,
|
|
"022235A3DB2CAE57C60B7831929611D58867F86D28C0AD3C82473CC4A84990D01B"],
|
|
["otherpassphrase", "raAPC2gALSmsTkXR4wUwQcPgX66kJuLv2S", 5,
|
|
"03F0619AFABE08D22D98C8721895FE3673B6174168949976F2573CE1138C124994"],
|
|
["yetanotherpassphrase", "rKnM44fS48qrGiDxB5fB5u64vHVJwjDPUo", 0,
|
|
"0385AD049327EF7E5EC429350A15CEB23955037DE99660F6E70C11C5ABF4407036"],
|
|
["yetanotherpassphrase", "rMvkT1RHPfsZwTFbKDKBEisa5U4d2a9V8n", 1,
|
|
"023A2876EA130CBE7BBA0573C2DB4C4CEB9A7547666915BD40366CDC6150CF54DC"]
|
|
];
|
|
|
|
function assert_helper(seed_json, address_or_nth, expected) {
|
|
var seed = Seed.from_json(seed_json);
|
|
var keypair = seed.get_key(address_or_nth, 500);
|
|
assert.strictEqual(keypair.to_hex_pub(), expected);
|
|
}
|
|
|
|
for (var nth = 0; nth < test_data.length; nth++) {
|
|
var seed_json = test_data[nth][0];
|
|
var address = test_data[nth][1];
|
|
var nth_for_seed = test_data[nth][2];
|
|
var expected = test_data[nth][3];
|
|
|
|
//`seed.get_key($ripple_address)` is arguably an ill concieved feature
|
|
// as it needs to generate `nth` many keypairs and generate hashed public
|
|
// keys (addresses) for equality tests ??
|
|
// Would need remote.set_secret(address, private_key_not_seed) ??
|
|
assert_helper(seed_json, address, expected);
|
|
|
|
// This isn't too bad as it only needs to generate one keypair `seq`
|
|
assert_helper(seed_json, nth_for_seed, expected);
|
|
};
|
|
|
|
});
|
|
|
|
it('should return the key_pair for a valid account and secret pair', function() {
|
|
var address = 'r3GgMwvgvP8h4yVWvjH1dPZNvC37TjzBBE';
|
|
var seed = Seed.from_json('shsWGZcmZz6YsWWmcnpfr6fLTdtFV');
|
|
var keyPair = seed.get_key(address);
|
|
assert.strictEqual(keyPair.get_address().to_json(), address);
|
|
assert.strictEqual(keyPair.to_hex_pub(), '02F89EAEC7667B30F33D0687BBA86C3FE2A08CCA40A9186C5BDE2DAA6FA97A37D8');
|
|
});
|
|
|
|
it('should not find a KeyPair for a secret that does not belong to the given account', function() {
|
|
var address = 'r3GgMwvgvP8h4yVWvjH1dPZNvC37TjzBBE';
|
|
var secret = 'snoPBrXtMeMyMHUVTgbuqAfg1SUTb';
|
|
var seed = Seed.from_json('snoPBrXtMeMyMHUVTgbuqAfg1SUTb');
|
|
try {
|
|
seed.get_key(address);
|
|
assert(false, 'should throw an error');
|
|
} catch(e) {
|
|
assert.strictEqual(e.message, 'Too many loops looking for KeyPair yielding '+address+' from '+secret);
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
// vim:sw=2:sts=2:ts=8:et
|