Add (wallet|validatorKeys)FromPhrase functions

This commit is contained in:
Nicholas Dudfield
2015-08-11 15:54:49 +07:00
parent abe8d54401
commit 05240e143b
2 changed files with 48 additions and 0 deletions

View File

@@ -42,6 +42,10 @@ function walletFromSeed(seed) {
return deriveWallet(type, bytes); return deriveWallet(type, bytes);
} }
function walletFromPhrase(phrase, type='secp256k1') {
return deriveWallet(type, seedFromPhrase(phrase));
}
function deriveValidator(seedBytes) { function deriveValidator(seedBytes) {
const pair = K256Pair.fromSeed(seedBytes, {validator: true}); const pair = K256Pair.fromSeed(seedBytes, {validator: true});
return { return {
@@ -67,6 +71,10 @@ function validatorKeysFromSeed(seed) {
return deriveValidator(bytes); return deriveValidator(bytes);
} }
function validatorKeysFromPhrase(phrase) {
return deriveValidator(seedFromPhrase(phrase));
}
module.exports = { module.exports = {
KeyPair, KeyPair,
K256Pair, K256Pair,
@@ -78,6 +86,8 @@ module.exports = {
generateWallet, generateWallet,
generateValidatorKeys, generateValidatorKeys,
walletFromSeed, walletFromSeed,
walletFromPhrase,
validatorKeysFromSeed, validatorKeysFromSeed,
validatorKeysFromPhrase,
nodePublicAccountID nodePublicAccountID
}; };

View File

@@ -13,8 +13,10 @@ const {
keyPairFromSeed, keyPairFromSeed,
generateWallet, generateWallet,
walletFromSeed, walletFromSeed,
walletFromPhrase,
generateValidatorKeys, generateValidatorKeys,
validatorKeysFromSeed, validatorKeysFromSeed,
validatorKeysFromPhrase,
nodePublicAccountID nodePublicAccountID
} = keypairs; } = keypairs;
@@ -100,6 +102,42 @@ describe('keyPairFromSeed', function() {
}); });
}); });
describe('walletFromPhrase', function() {
it('can gan generate ed25519 wallets', function() {
const expected = {
seed: 'sEd7rBGm5kxzauRTAV2hbsNz7N45X91',
accountID: 'rJZdUusLDtY9NEsGea7ijqhVrXv98rYBYN',
publicKey:
'ED' +
'D3993CDC6647896C455F136648B7750723B011475547AF60691AA3D7438E021D'
};
const wallet = walletFromPhrase('niq', 'ed25519');
assert.deepEqual(wallet, expected);
});
it('generates secp256k1 wallets by default', function() {
const expected = {
seed: 'shQUG1pmPYrcnSUGeuJFJTA1b3JSL',
accountID: 'rNvfq2SVbCiio1zkN5WwLQW8CHgy2dUoQi',
publicKey:
'02' +
'1E788CDEB9104C9179C3869250A89999C1AFF92D2C3FF7925A1696835EA3D840'
};
const wallet = walletFromPhrase('niq');
assert.deepEqual(wallet, expected);
});
});
describe('validatorKeysFromPhrase', function() {
it('generates keys used by peer nodes/validators', function() {
const expected = {
seed: 'shQUG1pmPYrcnSUGeuJFJTA1b3JSL',
publicKey: 'n9KNees3ippJvi7ZT1GqHMCmEmmkCVPxQRPfU5tPzmg9MtWevpjP'
};
const wallet = validatorKeysFromPhrase('niq');
assert.deepEqual(wallet, expected);
});
});
describe('generateWallet', function() { describe('generateWallet', function() {
function randGen(len) { function randGen(len) {
return _.fill(Array(len), 0); return _.fill(Array(len), 0);