UNPKG

blockstack

Version:

The Blockstack Javascript library for authentication, identity, and storage.

73 lines (63 loc) 4.33 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.runWalletTests = runWalletTests; var _tape = require('tape-promise/tape'); var _tape2 = _interopRequireDefault(_tape); var _lib = require('../../../lib'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function testsBlockstackWallet() { var testSeedHex = 'f17a104387a5b9c67d7c1c17a1a4724a16fdf830e5bbd6fdd214c0e08d9530aeb' + 'dd82b89f79dd437c6e9631ee0e3a8bf1a798921bea5528f7213861598ae82ea'; var testSeedB58 = 'xprv9s21ZrQH143K2CAwLa4tExWuD7SFXfobGmrrEv2oNK2T7xNeDhP9TzjMJQCok' + '8LtGVCC2YnnS6oqCpZhLrg47aDUHSApjCHBEuTrdpipBDp'; var identityXPUB = 'xpub6AbghT45LYjE6By2mnYQHzcMbpeCwoHFFTCZak74P7pDoh372EA8Mm18oNSH' + 'PeMyBWoMdr8ZFK3gXYYYjHszxvabSS7AH5FX5KaJMe6D1cB'; var bitcoinXPUB = 'xpub6BmWvbzfwJMy4nxkWeHmxsJghoEa1gBBimGStKj36hsaZz6VGkXVnwig3cPeU' + 'm69UZ6TwePZRVKrzpBTc4a2CECMwVFhNo5vhEDie1KYsCj'; var bitcoinAddress = '1QU3Q5CAXAbfKBg52wWYUjhBEcfBy8bUR'; var identityKeyPairs = [{ address: '1E3DgiNVoRQH32VW6T6USsAgcLroquV9xy', appsNodeKey: 'xprvA1bXJqMaKqHFnYB3LyLmtJMXgpCKisknF2EuVBrNs6UkvR3U4W2vtdEK9' + 'ESFx82YoX6Xi491prYxxbhFDhEjyRTsjdjFkhPPhRQQQbz92Qh', key: 'd15b27a6ee8d03fce15ed2a4dbe7fa9c815f579b8c9d3216b17e34453001d382', keyID: '0371807cd3c27d0432001964e98df7d1891a95eb7898f1ec1f04441068c8f0c780', salt: 'e61f9eb10842fc3e237fba6319947de93fb630df963342914339b96790563a5a' }, { address: '1LXzzDwbERa58j5yxGhnMzXRqmQ7VvRgp2', appsNodeKey: 'xprvA27uFVTAx5ysXnsN8k37NtfKjaTyUXV7BZpKos9F46pto1RoinJXT2e1b' + 'ndpbUAzGYBXywDqgGzFahjjn6CHzp28QwPpoWkDo7KUiFM8m1c', key: '7ca8429187ffebd3338df6d52a5ae61b4a11dc841dfc85a36917a4b84f2867f7', keyID: '03e383deae2bf5c012201cfd6055553df9af2faa25d9c10621e0320715f874977f', salt: 'e61f9eb10842fc3e237fba6319947de93fb630df963342914339b96790563a5a' }, { address: '1MrxgFwM5togyBu33D1mVhmvwow6aad4yh', appsNodeKey: 'xprvA2E794MSWMUyXQpG5FpXggAWHqoUtETNGRsT6YXzhB9w4grfrPUBHDryh' + 'T797Zfyt3oTw13VmgtnezzxyZRYpMNUxEQ7gU8ovX3oBALrNhn', key: '71fd05726002fba53eb7aa96d2a88509993a1defc9a244bc1a6463cc08b6577b', keyID: '02ba6e095fd2022e4a232c13546e660f8b08df8a1591705ebc2f71d0de34d5c8e5', salt: 'e61f9eb10842fc3e237fba6319947de93fb630df963342914339b96790563a5a' }, { address: '16GoKCtovu6a5qf2ufzZzrMJ4jofVDhagz', appsNodeKey: 'xprv9zyD1NBWffvSp5iWVkeUW7kPRsMwUMdd17pmAZHNg4ijVHnx4JaW7bQf' + 'NJjvjZSq9LA3NqYsGfwHVuvBiJi5iPTRYCntahTFsggoW4HtT6y', key: '4925cc9d9d286c9ab5013618c67beea7e105b156ad481c2fcc26342d0ee661d9', keyID: '03b26b91d716c4aa2e1b1bd526b7151f897a01c6d2bc4140a10e2f0758971cbc98', salt: 'e61f9eb10842fc3e237fba6319947de93fb630df963342914339b96790563a5a' }]; var expectedLegacyAppSK = 'b21aaf76b684cc1b6bf8c48bcec5df1adb68a7a6970e66c86fc0e86e09b4d244'; // I derived the following expected App SK by manually computing the derivation path from the // sha256 output. var expectedNewAppSK = '3168aefff6aa53959a002112821384c41f39f538c0e8727a798bb40beb62ca5e'; var wallets = [_lib.BlockstackWallet.fromSeedBuffer(Buffer.from(testSeedHex, 'hex')), _lib.BlockstackWallet.fromBase58(testSeedB58)]; wallets.forEach(function (wallet) { (0, _tape2.default)('wallet matches browser 0.26.2 implementation', function (t) { t.plan(6); t.equals(wallet.getIdentityPublicKeychain().toBase58(), identityXPUB, 'id xpub is correct'); t.equals(wallet.getBitcoinPublicKeychain().toBase58(), bitcoinXPUB, 'btc xpub is correct'); t.equals(wallet.getBitcoinAddress(0), bitcoinAddress, 'btc address correct'); t.deepEquals([0, 1, 2, 3].map(function (index) { return wallet.getIdentityKeyPair(index, true); }), identityKeyPairs, 'keypairs generated correctly'); var idKeyPair = wallet.getIdentityKeyPair(0, false); t.equals(_lib.BlockstackWallet.getLegacyAppPrivateKey(idKeyPair.appsNodeKey, idKeyPair.salt, 'https://blockstack-todos.appartisan.com'), expectedLegacyAppSK, 'blockstack-todos app legacy private key correct'); t.equals(_lib.BlockstackWallet.getAppPrivateKey(idKeyPair.appsNodeKey, 'potato potato', 'carrot carrot carrot'), expectedNewAppSK, 'blockstack-todos app private key correct'); }); }); } function runWalletTests() { testsBlockstackWallet(); }