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

View File

@@ -13,8 +13,10 @@ const {
keyPairFromSeed,
generateWallet,
walletFromSeed,
walletFromPhrase,
generateValidatorKeys,
validatorKeysFromSeed,
validatorKeysFromPhrase,
nodePublicAccountID
} = 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() {
function randGen(len) {
return _.fill(Array(len), 0);