mirror of
https://github.com/Xahau/xahau.js.git
synced 2025-11-17 19:05:47 +00:00
84 lines
3.5 KiB
JavaScript
84 lines
3.5 KiB
JavaScript
/* eslint max-len: 0 */
|
|
'use strict';
|
|
var assert = require('assert');
|
|
var Seed = require('ripple-lib').Seed;
|
|
|
|
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);
|
|
}
|
|
|
|
describe('Seed', function() {
|
|
it('saESc82Vun7Ta5EJRzGJbrXb5HNYk', function () {
|
|
var seed = Seed.from_json('saESc82Vun7Ta5EJRzGJbrXb5HNYk');
|
|
assert.strictEqual(seed.to_hex(), 'FF1CF838D02B2CF7B45BAC27F5F24F4F');
|
|
});
|
|
it('sp6iDHnmiPN7tQFHm5sCW59ax3hfE', function () {
|
|
var seed = Seed.from_json('sp6iDHnmiPN7tQFHm5sCW59ax3hfE');
|
|
assert.strictEqual(seed.to_hex(), '00AD8DA764C3C8AF5F9B8D51C94B9E49');
|
|
});
|
|
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']
|
|
];
|
|
|
|
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
|