@docknetwork/wallet-sdk-wasm 1.5.8 → 1.5.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/core/format-utils.js +0 -28
- package/lib/core/format-utils.mjs +1 -24
- package/lib/core/validation.js +1 -24
- package/lib/core/validation.mjs +2 -21
- package/lib/index.js +13 -32
- package/lib/index.mjs +13 -32
- package/lib/rpc-server.js +13 -32
- package/lib/rpc-server.mjs +13 -32
- package/lib/rpc-util.js +14 -0
- package/lib/rpc-util.mjs +14 -0
- package/lib/services/blockchain/index.js +3 -8
- package/lib/services/blockchain/index.mjs +3 -8
- package/lib/services/blockchain/service.js +37 -80
- package/lib/services/blockchain/service.mjs +38 -81
- package/lib/services/credential/bbs-revocation.js +4 -9
- package/lib/services/credential/bbs-revocation.mjs +3 -8
- package/lib/services/credential/bound-check.js +9 -4
- package/lib/services/credential/bound-check.mjs +9 -4
- package/lib/services/credential/index.js +11 -15
- package/lib/services/credential/index.mjs +11 -15
- package/lib/services/credential/service.js +18 -20
- package/lib/services/credential/service.mjs +15 -17
- package/lib/services/credential/utils.js +65 -28
- package/lib/services/credential/utils.mjs +62 -32
- package/lib/services/dids/index.js +11 -16
- package/lib/services/dids/index.mjs +11 -16
- package/lib/services/dids/keypair-utils.js +142 -0
- package/lib/services/dids/keypair-utils.mjs +113 -0
- package/lib/services/dids/service.js +16 -37
- package/lib/services/dids/service.mjs +16 -37
- package/lib/services/edv/index.js +8 -16
- package/lib/services/edv/index.mjs +8 -16
- package/lib/services/edv/service.js +10 -24
- package/lib/services/edv/service.mjs +10 -24
- package/lib/services/index.js +13 -37
- package/lib/services/index.mjs +13 -37
- package/lib/services/pex/service.js +2 -1
- package/lib/services/pex/service.mjs +2 -1
- package/lib/services/relay-service/configs.js +0 -1
- package/lib/services/relay-service/configs.mjs +0 -1
- package/lib/services/relay-service/index.android.js +0 -1
- package/lib/services/relay-service/index.android.mjs +0 -1
- package/lib/services/relay-service/index.ios.js +0 -1
- package/lib/services/relay-service/index.ios.mjs +0 -1
- package/lib/services/relay-service/index.js +0 -1
- package/lib/services/relay-service/index.mjs +0 -1
- package/lib/services/relay-service/service-rpc.js +0 -1
- package/lib/services/relay-service/service-rpc.mjs +0 -1
- package/lib/services/relay-service/service.js +0 -1
- package/lib/services/relay-service/service.mjs +0 -1
- package/lib/services/test-utils.js +0 -239
- package/lib/services/test-utils.mjs +1 -234
- package/lib/services/util-crypto/configs.js +0 -12
- package/lib/services/util-crypto/configs.mjs +0 -12
- package/lib/services/util-crypto/index.android.js +0 -3
- package/lib/services/util-crypto/index.android.mjs +0 -3
- package/lib/services/util-crypto/index.ios.js +0 -3
- package/lib/services/util-crypto/index.ios.mjs +0 -3
- package/lib/services/util-crypto/index.js +4 -7
- package/lib/services/util-crypto/index.mjs +4 -7
- package/lib/services/util-crypto/service-rpc.js +0 -23
- package/lib/services/util-crypto/service-rpc.mjs +0 -23
- package/lib/services/util-crypto/service.js +68 -61
- package/lib/services/util-crypto/service.mjs +50 -59
- package/lib/services/wallet/configs.js +0 -63
- package/lib/services/wallet/configs.mjs +1 -64
- package/lib/services/wallet/index.android.js +0 -1
- package/lib/services/wallet/index.android.mjs +0 -1
- package/lib/services/wallet/index.ios.js +0 -1
- package/lib/services/wallet/index.ios.mjs +0 -1
- package/lib/services/wallet/index.js +2 -12
- package/lib/services/wallet/index.mjs +2 -12
- package/lib/services/wallet/service-rpc.js +0 -77
- package/lib/services/wallet/service-rpc.mjs +0 -77
- package/lib/services/wallet/service.js +1 -215
- package/lib/services/wallet/service.mjs +1 -211
- package/lib/setup-nodejs.js +13 -32
- package/lib/setup-nodejs.mjs +13 -32
- package/lib/setup-tests.js +13 -32
- package/lib/setup-tests.mjs +13 -32
- package/lib/src/core/format-utils.d.ts +0 -5
- package/lib/src/core/format-utils.d.ts.map +1 -1
- package/lib/src/core/validation.d.ts +0 -3
- package/lib/src/core/validation.d.ts.map +1 -1
- package/lib/src/rpc-util.d.ts.map +1 -1
- package/lib/src/services/blockchain/service.d.ts +7 -3
- package/lib/src/services/blockchain/service.d.ts.map +1 -1
- package/lib/src/services/credential/bbs-revocation.d.ts.map +1 -1
- package/lib/src/services/credential/bound-check.d.ts +1 -1
- package/lib/src/services/credential/bound-check.d.ts.map +1 -1
- package/lib/src/services/credential/service.d.ts.map +1 -1
- package/lib/src/services/credential/utils.d.ts +2 -1
- package/lib/src/services/credential/utils.d.ts.map +1 -1
- package/lib/src/services/dids/keypair-utils.d.ts +15 -0
- package/lib/src/services/dids/keypair-utils.d.ts.map +1 -0
- package/lib/src/services/dids/service.d.ts +6 -6
- package/lib/src/services/dids/service.d.ts.map +1 -1
- package/lib/src/services/edv/service.d.ts.map +1 -1
- package/lib/src/services/pex/service.d.ts.map +1 -1
- package/lib/src/services/util-crypto/configs.d.ts +0 -3
- package/lib/src/services/util-crypto/configs.d.ts.map +1 -1
- package/lib/src/services/util-crypto/service.d.ts +3 -8
- package/lib/src/services/util-crypto/service.d.ts.map +1 -1
- package/lib/src/services/wallet/configs.d.ts +13 -0
- package/lib/src/services/wallet/configs.d.ts.map +1 -0
- package/lib/src/services/wallet/service.d.ts +1 -44
- package/lib/src/services/wallet/service.d.ts.map +1 -1
- package/lib/test-utils.js +0 -4
- package/lib/test-utils.mjs +1 -4
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -27
- package/readme.md +0 -61
- package/src/core/format-utils.test.js +1 -28
- package/src/core/format-utils.ts +0 -33
- package/src/core/validation.test.js +1 -33
- package/src/core/validation.ts +1 -25
- package/src/rpc-server.test.js +2 -9
- package/src/rpc-util.js +14 -0
- package/src/services/blockchain/index.test.js +4 -15
- package/src/services/blockchain/service.ts +39 -98
- package/src/services/credential/bbs-revocation.ts +2 -1
- package/src/services/credential/bound-check.test.ts +6 -6
- package/src/services/credential/bound-check.ts +4 -4
- package/src/services/credential/index.test.js +0 -2
- package/src/services/credential/service.ts +5 -2
- package/src/services/credential/utils.js +65 -23
- package/src/services/dids/index.test.js +9 -20
- package/src/services/dids/keypair-utils.js +111 -0
- package/src/services/dids/service.ts +7 -26
- package/src/services/edv/service.ts +2 -9
- package/src/services/index.js +0 -8
- package/src/services/pex/service.ts +7 -1
- package/src/services/test-utils.js +0 -207
- package/src/services/util-crypto/configs.ts +0 -12
- package/src/services/util-crypto/index.test.js +6 -83
- package/src/services/util-crypto/service-rpc.js +0 -20
- package/src/services/util-crypto/service.ts +62 -75
- package/src/services/wallet/configs.ts +1 -113
- package/src/services/wallet/index.test.js +0 -159
- package/src/services/wallet/service-rpc.js +1 -88
- package/src/services/wallet/service.ts +0 -258
- package/src/test-utils.js +0 -13
- package/lib/account-8fa95046.js +0 -774
- package/lib/account-e7156c51.js +0 -764
- package/lib/core/polkadot-utils.js +0 -119
- package/lib/core/polkadot-utils.mjs +0 -94
- package/lib/core/realm-schemas.js +0 -50
- package/lib/core/realm-schemas.mjs +0 -44
- package/lib/core/subscan.js +0 -75
- package/lib/core/subscan.mjs +0 -64
- package/lib/fixtures.js +0 -56
- package/lib/fixtures.mjs +0 -52
- package/lib/modules/account.js +0 -55
- package/lib/modules/account.mjs +0 -47
- package/lib/modules/accounts.js +0 -56
- package/lib/modules/accounts.mjs +0 -47
- package/lib/modules/data-migration.js +0 -72
- package/lib/modules/data-migration.mjs +0 -68
- package/lib/modules/wallet-backup.js +0 -82
- package/lib/modules/wallet-backup.mjs +0 -71
- package/lib/modules/wallet.js +0 -56
- package/lib/modules/wallet.mjs +0 -47
- package/lib/services/example/configs.js +0 -21
- package/lib/services/example/configs.mjs +0 -13
- package/lib/services/example/index.js +0 -18
- package/lib/services/example/index.mjs +0 -14
- package/lib/services/example/service-rpc.js +0 -25
- package/lib/services/example/service-rpc.mjs +0 -21
- package/lib/services/example/service.js +0 -25
- package/lib/services/example/service.mjs +0 -20
- package/lib/services/keyring/configs.js +0 -70
- package/lib/services/keyring/configs.mjs +0 -61
- package/lib/services/keyring/index.android.js +0 -22
- package/lib/services/keyring/index.android.mjs +0 -18
- package/lib/services/keyring/index.ios.js +0 -22
- package/lib/services/keyring/index.ios.mjs +0 -18
- package/lib/services/keyring/index.js +0 -16
- package/lib/services/keyring/index.mjs +0 -8
- package/lib/services/keyring/service-rpc.js +0 -65
- package/lib/services/keyring/service-rpc.mjs +0 -61
- package/lib/services/keyring/service.js +0 -84
- package/lib/services/keyring/service.mjs +0 -74
- package/lib/services/polkadot/configs.js +0 -17
- package/lib/services/polkadot/configs.mjs +0 -13
- package/lib/services/polkadot/index.android.js +0 -22
- package/lib/services/polkadot/index.android.mjs +0 -18
- package/lib/services/polkadot/index.ios.js +0 -22
- package/lib/services/polkadot/index.ios.mjs +0 -18
- package/lib/services/polkadot/index.js +0 -15
- package/lib/services/polkadot/index.mjs +0 -7
- package/lib/services/polkadot/service-rpc.js +0 -30
- package/lib/services/polkadot/service-rpc.mjs +0 -26
- package/lib/services/polkadot/service.js +0 -28
- package/lib/services/polkadot/service.mjs +0 -23
- package/lib/services/substrate/api-utils.js +0 -85
- package/lib/services/substrate/api-utils.mjs +0 -74
- package/lib/services/substrate/configs.js +0 -30
- package/lib/services/substrate/configs.mjs +0 -21
- package/lib/services/substrate/index.android.js +0 -22
- package/lib/services/substrate/index.android.mjs +0 -18
- package/lib/services/substrate/index.ios.js +0 -22
- package/lib/services/substrate/index.ios.mjs +0 -18
- package/lib/services/substrate/index.js +0 -37
- package/lib/services/substrate/index.mjs +0 -29
- package/lib/services/substrate/service-rpc.js +0 -37
- package/lib/services/substrate/service-rpc.mjs +0 -33
- package/lib/services/substrate/service.js +0 -115
- package/lib/services/substrate/service.mjs +0 -102
- package/lib/services/trust-registry/configs.js +0 -25
- package/lib/services/trust-registry/configs.mjs +0 -16
- package/lib/services/trust-registry/index.android.js +0 -19
- package/lib/services/trust-registry/index.android.mjs +0 -15
- package/lib/services/trust-registry/index.ios.js +0 -19
- package/lib/services/trust-registry/index.ios.mjs +0 -15
- package/lib/services/trust-registry/index.js +0 -33
- package/lib/services/trust-registry/index.mjs +0 -25
- package/lib/services/trust-registry/service-rpc.js +0 -29
- package/lib/services/trust-registry/service-rpc.mjs +0 -25
- package/lib/services/trust-registry/service.js +0 -89
- package/lib/services/trust-registry/service.mjs +0 -85
- package/lib/src/core/polkadot-utils.d.ts +0 -11
- package/lib/src/core/polkadot-utils.d.ts.map +0 -1
- package/lib/src/modules/account.d.ts +0 -60
- package/lib/src/modules/account.d.ts.map +0 -1
- package/lib/src/modules/accounts.d.ts +0 -49
- package/lib/src/modules/accounts.d.ts.map +0 -1
- package/lib/src/modules/data-migration.d.ts +0 -7
- package/lib/src/modules/data-migration.d.ts.map +0 -1
- package/lib/src/modules/wallet-backup.d.ts +0 -12
- package/lib/src/modules/wallet-backup.d.ts.map +0 -1
- package/lib/src/modules/wallet.d.ts +0 -134
- package/lib/src/modules/wallet.d.ts.map +0 -1
- package/lib/src/services/blockchain/index.d.ts +0 -2
- package/lib/src/services/blockchain/index.d.ts.map +0 -1
- package/lib/src/services/example/configs.d.ts +0 -9
- package/lib/src/services/example/configs.d.ts.map +0 -1
- package/lib/src/services/example/service.d.ts +0 -8
- package/lib/src/services/example/service.d.ts.map +0 -1
- package/lib/src/services/keyring/configs.d.ts +0 -39
- package/lib/src/services/keyring/configs.d.ts.map +0 -1
- package/lib/src/services/keyring/index.d.ts +0 -2
- package/lib/src/services/keyring/index.d.ts.map +0 -1
- package/lib/src/services/polkadot/configs.d.ts +0 -8
- package/lib/src/services/polkadot/configs.d.ts.map +0 -1
- package/lib/src/services/polkadot/index.d.ts +0 -2
- package/lib/src/services/polkadot/index.d.ts.map +0 -1
- package/lib/src/services/polkadot/service.d.ts +0 -8
- package/lib/src/services/polkadot/service.d.ts.map +0 -1
- package/lib/src/services/substrate/api-utils.d.ts +0 -14
- package/lib/src/services/substrate/api-utils.d.ts.map +0 -1
- package/lib/src/services/substrate/configs.d.ts +0 -16
- package/lib/src/services/substrate/configs.d.ts.map +0 -1
- package/lib/src/services/substrate/index.d.ts +0 -2
- package/lib/src/services/substrate/index.d.ts.map +0 -1
- package/lib/src/services/substrate/service.d.ts +0 -13
- package/lib/src/services/substrate/service.d.ts.map +0 -1
- package/lib/src/services/trust-registry/configs.d.ts +0 -6
- package/lib/src/services/trust-registry/configs.d.ts.map +0 -1
- package/lib/src/services/trust-registry/service.d.ts +0 -25
- package/lib/src/services/trust-registry/service.d.ts.map +0 -1
- package/lib/src/services/wallet/index.d.ts +0 -2
- package/lib/src/services/wallet/index.d.ts.map +0 -1
- package/lib/test/axiosMocks.js +0 -431
- package/lib/test/axiosMocks.mjs +0 -420
- package/lib/test/setup-test-state.js +0 -93
- package/lib/test/setup-test-state.mjs +0 -85
- package/src/core/polkadot-utils.js +0 -99
- package/src/core/realm-schemas.js +0 -42
- package/src/core/subscan.js +0 -62
- package/src/core/subscan.test.js +0 -56
- package/src/fixtures.js +0 -43
- package/src/modules/account.test.js +0 -56
- package/src/modules/account.ts +0 -128
- package/src/modules/accounts.test.js +0 -88
- package/src/modules/accounts.ts +0 -264
- package/src/modules/data-migration.test.js +0 -72
- package/src/modules/data-migration.ts +0 -86
- package/src/modules/wallet-backup.test.js +0 -24
- package/src/modules/wallet-backup.ts +0 -68
- package/src/modules/wallet.test.js +0 -227
- package/src/modules/wallet.ts +0 -424
- package/src/services/example/configs.js +0 -14
- package/src/services/example/index.js +0 -3
- package/src/services/example/index.test.js +0 -28
- package/src/services/example/service-rpc.js +0 -11
- package/src/services/example/service.ts +0 -18
- package/src/services/keyring/configs.ts +0 -110
- package/src/services/keyring/index.android.js +0 -3
- package/src/services/keyring/index.ios.js +0 -3
- package/src/services/keyring/index.js +0 -1
- package/src/services/keyring/index.test.js +0 -48
- package/src/services/keyring/service-rpc.js +0 -56
- package/src/services/keyring/service.ts +0 -111
- package/src/services/polkadot/configs.ts +0 -13
- package/src/services/polkadot/index.android.js +0 -3
- package/src/services/polkadot/index.ios.js +0 -3
- package/src/services/polkadot/index.js +0 -1
- package/src/services/polkadot/index.test.js +0 -52
- package/src/services/polkadot/service-rpc.js +0 -13
- package/src/services/polkadot/service.ts +0 -21
- package/src/services/substrate/api-utils.test.js +0 -73
- package/src/services/substrate/api-utils.ts +0 -66
- package/src/services/substrate/configs.ts +0 -34
- package/src/services/substrate/index.android.js +0 -3
- package/src/services/substrate/index.ios.js +0 -3
- package/src/services/substrate/index.js +0 -1
- package/src/services/substrate/index.test.js +0 -116
- package/src/services/substrate/service-rpc.js +0 -24
- package/src/services/substrate/service.ts +0 -117
- package/src/services/trust-registry/configs.ts +0 -14
- package/src/services/trust-registry/index.android.js +0 -3
- package/src/services/trust-registry/index.ios.js +0 -3
- package/src/services/trust-registry/index.js +0 -1
- package/src/services/trust-registry/index.test.js +0 -67
- package/src/services/trust-registry/service-rpc.js +0 -15
- package/src/services/trust-registry/service.ts +0 -94
- package/src/test/axiosMocks.js +0 -20
- package/src/test/fixtures/subscan-failure.json +0 -5
- package/src/test/fixtures/subscan-success.json +0 -370
- package/src/test/fixtures/subscan-too-many-requests.json +0 -9
- package/src/test/setup-test-state.js +0 -37
- package/src/test/test-wallet.test.js +0 -15
|
@@ -3,14 +3,6 @@ import assert from 'assert';
|
|
|
3
3
|
import {assertAddress} from '../../core/validation';
|
|
4
4
|
|
|
5
5
|
export const validation = {
|
|
6
|
-
deriveValidate(uri: string) {
|
|
7
|
-
assert(!!uri, 'uri is required');
|
|
8
|
-
},
|
|
9
|
-
|
|
10
|
-
isAddressValid(address: string) {
|
|
11
|
-
assertAddress(address);
|
|
12
|
-
},
|
|
13
|
-
|
|
14
6
|
mnemonicGenerate(numWords: number) {
|
|
15
7
|
if (numWords) {
|
|
16
8
|
assert(typeof numWords === 'number', 'invalid number of words');
|
|
@@ -20,8 +12,4 @@ export const validation = {
|
|
|
20
12
|
mnemonicToMiniSecret(phrase: string) {
|
|
21
13
|
assert(typeof phrase === 'string', 'invalid mnemonic phrase');
|
|
22
14
|
},
|
|
23
|
-
|
|
24
|
-
mnemonicValidate(phrase: string) {
|
|
25
|
-
assert(typeof phrase === 'string', 'invalid mnemonic phrase');
|
|
26
|
-
},
|
|
27
15
|
};
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {assertRpcService, getPromiseError} from '../test-utils';
|
|
1
|
+
import {assertRpcService} from '../test-utils';
|
|
3
2
|
import {validation} from './configs';
|
|
4
3
|
import {utilCryptoService as service} from './service';
|
|
5
4
|
import {UtilCryptoServiceRpc} from './service-rpc';
|
|
@@ -10,71 +9,19 @@ describe('UtilCryptoService', () => {
|
|
|
10
9
|
});
|
|
11
10
|
|
|
12
11
|
describe('service', () => {
|
|
13
|
-
beforeAll(async () => {
|
|
14
|
-
await cryptoWaitReady();
|
|
15
|
-
});
|
|
16
|
-
|
|
17
12
|
it('mnemonicGenerate', () => {
|
|
18
13
|
const result = service.mnemonicGenerate(12);
|
|
19
14
|
expect(typeof result).toBe('string');
|
|
20
15
|
});
|
|
21
16
|
|
|
22
|
-
it('isAddressValid', async () => {
|
|
23
|
-
expect(
|
|
24
|
-
await service.isAddressValid(
|
|
25
|
-
'3HM9DYxHe5tAwh2cuErNHiLxSMDJhetxaVGCDTYXiwyuuHN6',
|
|
26
|
-
),
|
|
27
|
-
).toBe(true);
|
|
28
|
-
|
|
29
|
-
expect(await service.isAddressValid('wrong value')).toBe(false);
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
describe('mnemonicValidate', () => {
|
|
33
|
-
it('expect mnemonic to be valid', async () => {
|
|
34
|
-
const phrase = await service.mnemonicGenerate(12);
|
|
35
|
-
const isValid = await service.mnemonicValidate(phrase);
|
|
36
|
-
|
|
37
|
-
expect(isValid).toBe(true);
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
it('expect mnemonic to be invalid', async () => {
|
|
41
|
-
const isValid = await service.mnemonicValidate('invalid mnemonic');
|
|
42
|
-
|
|
43
|
-
expect(isValid).toBe(false);
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
describe('deriveValidate', () => {
|
|
48
|
-
let phrase;
|
|
49
|
-
|
|
50
|
-
beforeAll(async () => {
|
|
51
|
-
phrase = await service.mnemonicGenerate(12);
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
it('expect derive path to be valid', async () => {
|
|
55
|
-
const result = await service.deriveValidate(`${phrase}/stuff/stuff`);
|
|
56
|
-
expect(result).toStrictEqual({});
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
it('expect derive path to not be valid', async () => {
|
|
60
|
-
const error = await getPromiseError(() =>
|
|
61
|
-
service.deriveValidate('wrong phrase'),
|
|
62
|
-
);
|
|
63
|
-
expect(error.message).toBe('invalid derive path');
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
it('expect derive path to have warning', async () => {
|
|
67
|
-
const result = await service.deriveValidate(
|
|
68
|
-
`${phrase}/stuff///pass/tst`,
|
|
69
|
-
);
|
|
70
|
-
|
|
71
|
-
expect(result.warning).toBe('slash password detected');
|
|
72
|
-
});
|
|
73
|
-
});
|
|
74
|
-
|
|
75
17
|
describe('isBase64', () => {
|
|
76
18
|
it('expect to be base64', async () => {
|
|
77
19
|
expect(await service.isBase64('dGVzdA==')).toBe(true);
|
|
20
|
+
expect(
|
|
21
|
+
await service.isBase64(
|
|
22
|
+
'eyJ0eXAiOiJhcHBsaWNhdGlvbi9kaWRjb21tLWVuY3J5cHRlZCtqc29uIiwicHJvdGVjdGVkIjoiZXlKbGJtTWlPaUpZUXpJd1VDSjkiLCJyZWNpcGllbnRzIjpbeyJoZWFkZXIiOnsia2lkIjoiZGlkOmtleTp6Nk1raE43UEJqV2dTTVEyNEJlYmRwdnZ3OGZWUnY3bTZNSERxaXdUS296ekJnckojejZMU29qOXpqWmhBcDdNUFFjUndDMnludUJYdXk5YkVnVks1aDNzVFo5c01nMUdtIiwiYWxnIjoiRUNESC0xUFUrQTI1NktXIiwiZXBrIjp7Imt0eSI6Ik9LUCIsImNydiI6IlgyNTUxOSIsIngiOiJoLXE4elVXVkt2VE9GQWNYUVRRbllvckhBQlk0Y044ZVNkRy1yT0JjWlFvIn0sImFwdSI6IlpHbGtPbXRsZVRwNk5rMXJhRTQzVUVKcVYyZFRUVkV5TkVKbFltUndkblozT0daV1VuWTNiVFpOU0VSeGFYZFVTMjk2ZWtKbmNrb2plalpNVTI5cU9YcHFXbWhCY0RkTlVGRmpVbmRETW5sdWRVSllkWGs1WWtWblZrczFhRE56VkZvNWMwMW5NVWR0IiwiYXB2IjoiWkdsa09tdGxlVHA2TmsxcmFFNDNVRUpxVjJkVFRWRXlORUpsWW1Sd2RuWjNPR1pXVW5ZM2JUWk5TRVJ4YVhkVVMyOTZla0puY2tvamVqWk1VMjlxT1hwcVdtaEJjRGROVUZGalVuZERNbmx1ZFVKWWRYazVZa1ZuVmtzMWFETnpWRm81YzAxbk1VZHQiLCJza2lkIjoiZGlkOmtleTp6Nk1raE43UEJqV2dTTVEyNEJlYmRwdnZ3OGZWUnY3bTZNSERxaXdUS296ekJnckojejZMU29qOXpqWmhBcDdNUFFjUndDMnludUJYdXk5YkVnVks1aDNzVFo5c01nMUdtIn0sImVuY3J5cHRlZF9rZXkiOiJNSUxvRFFBWEFFV0xTamdSVnZ3WlduLXE4RUlBUGtCUURpNWEtZDJvX084NW12OERnUncyZHcifV0sIml2IjoiT2FLY21DbW9GTDZiLVRxcVluQ1NUMGFLSkhoUTUwSW4iLCJjaXBoZXJ0ZXh0IjoiTkx4UkkxZjhaNVpQNTVjZVVubHk3SVBKOWpvbXItYUk5RkhlNW9xZHQ5cmNTb3h3RC1CdHItSHdvWmZRZFlPbVRzVndEaVpoQmdmT0ZMeVgtMExlbDl1U3piYjk3SzljQ3h2djBDVnF5a1lNQmpaTno2QWtVek9uS1p0ZWRrWnE3UXFRb2ZNMXoyOEt4SXc5emdSaDNDcWJ0MmpPbTZiMUxfbnkwOWF0TXdob2hZdUpPVko0R2FBdTBBZXJDaURjaDZsNFVGbzU3U2FEdWFvZ3VoTGZ4eUMzZjRFbGVpYUFOcTdmWmhYOEV5ZkxELWpqaEY0RlZocUhXbk5aRTRRbm5JdHhlblRtWi02b0hETDNnaUJCTXFlaXJpcTFFcWpFM1JfVUVqVlJJclEzTmZwSmZqc3V4MnBpY0k5RXp5ZUhMQSIsInRhZyI6IkVDX2NnZzVWSVdfWUNYdno3MzgyUHcifQ',
|
|
23
|
+
),
|
|
24
|
+
).toBe(true);
|
|
78
25
|
});
|
|
79
26
|
|
|
80
27
|
it('expect to not be base64', async () => {
|
|
@@ -82,29 +29,5 @@ describe('UtilCryptoService', () => {
|
|
|
82
29
|
expect(await service.isBase64('Test')).toBe(false);
|
|
83
30
|
});
|
|
84
31
|
});
|
|
85
|
-
|
|
86
|
-
describe('getAddressPrefix', () => {
|
|
87
|
-
const MAINNET_PREFIX = 22;
|
|
88
|
-
const TESTNET_PREFIX = 21;
|
|
89
|
-
it('expect to match mainnet prefix', () => {
|
|
90
|
-
const result = service.getAddressPrefix({
|
|
91
|
-
address: '3EGurYbWGtyVfouDTZjxz1t2jiV3voU9N6sSDAvhHyxaqf8L',
|
|
92
|
-
startPrefix: TESTNET_PREFIX,
|
|
93
|
-
endPrefix: MAINNET_PREFIX,
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
expect(result).toBe(MAINNET_PREFIX);
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
it('expect to match testnet prefix', () => {
|
|
100
|
-
const result = service.getAddressPrefix({
|
|
101
|
-
address: '37PsGbLmrTfV6VVknkrh6LKACXuC9LuSCwuxhk6ajGDjNCwc',
|
|
102
|
-
startPrefix: TESTNET_PREFIX,
|
|
103
|
-
endPrefix: MAINNET_PREFIX,
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
expect(result).toBe(TESTNET_PREFIX);
|
|
107
|
-
});
|
|
108
|
-
});
|
|
109
32
|
});
|
|
110
33
|
});
|
|
@@ -18,26 +18,6 @@ export class UtilCryptoServiceRpc extends RpcService {
|
|
|
18
18
|
return this.call('mnemonicToMiniSecret', phrase);
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
mnemonicValidate(phrase: string): Promise<any> {
|
|
22
|
-
validation.mnemonicValidate(phrase);
|
|
23
|
-
|
|
24
|
-
return this.call('mnemonicValidate', phrase);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
cryptoWaitReady(): Promise<any> {
|
|
28
|
-
return this.call('cryptoWaitReady');
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
cryptoIsReady(): Promise<any> {
|
|
32
|
-
return this.call('cryptoIsReady');
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
isAddressValid(address: string): Promise<any> {
|
|
36
|
-
validation.deriveValidate(address);
|
|
37
|
-
|
|
38
|
-
return this.call('isAddressValid', address);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
21
|
deriveValidate(uri: string): Promise<any> {
|
|
42
22
|
validation.deriveValidate(uri);
|
|
43
23
|
return this.call('deriveValidate', uri);
|
|
@@ -1,44 +1,66 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
cryptoIsReady,
|
|
6
|
-
cryptoWaitReady,
|
|
7
|
-
keyExtractSuri,
|
|
8
|
-
mnemonicGenerate,
|
|
9
|
-
mnemonicToMiniSecret,
|
|
10
|
-
mnemonicValidate,
|
|
11
|
-
} from '@polkadot/util-crypto';
|
|
2
|
+
import {hexToU8a, u8aToString} from '@docknetwork/credential-sdk/utils';
|
|
3
|
+
import * as bip39 from '@scure/bip39';
|
|
4
|
+
import {wordlist} from '@scure/bip39/wordlists/english';
|
|
12
5
|
import assert from 'assert';
|
|
13
6
|
import {validation} from './configs';
|
|
14
7
|
|
|
8
|
+
function isHex(value: string) {
|
|
9
|
+
const isDefinitelyHexString = value.startsWith('0x');
|
|
10
|
+
const isHex =
|
|
11
|
+
isDefinitelyHexString || (/^[0-9a-fA-F]+$/.test(value) && value.length % 2 === 0);
|
|
12
|
+
|
|
13
|
+
return isHex;
|
|
14
|
+
}
|
|
15
|
+
|
|
15
16
|
export class UtilCryptoService {
|
|
16
17
|
rpcMethods = [
|
|
17
18
|
UtilCryptoService.prototype.mnemonicGenerate,
|
|
18
19
|
UtilCryptoService.prototype.mnemonicToMiniSecret,
|
|
19
|
-
UtilCryptoService.prototype.mnemonicValidate,
|
|
20
|
-
UtilCryptoService.prototype.cryptoWaitReady,
|
|
21
|
-
UtilCryptoService.prototype.cryptoIsReady,
|
|
22
|
-
UtilCryptoService.prototype.isAddressValid,
|
|
23
|
-
UtilCryptoService.prototype.deriveValidate,
|
|
24
20
|
UtilCryptoService.prototype.isBase64,
|
|
25
|
-
UtilCryptoService.prototype.
|
|
21
|
+
UtilCryptoService.prototype.hexToString,
|
|
26
22
|
];
|
|
27
23
|
|
|
28
24
|
constructor() {
|
|
29
25
|
this.name = 'utilCrypto';
|
|
30
26
|
}
|
|
31
27
|
|
|
32
|
-
mnemonicGenerate(numWords) {
|
|
28
|
+
mnemonicGenerate(numWords = 12) {
|
|
33
29
|
validation.mnemonicGenerate(numWords);
|
|
34
30
|
|
|
35
|
-
|
|
31
|
+
// @scure/bip39 uses strength in bits, not number of words
|
|
32
|
+
// 12 words = 128 bits, 15 words = 160 bits, 18 words = 192 bits, 21 words = 224 bits, 24 words = 256 bits
|
|
33
|
+
const strengthMap = {
|
|
34
|
+
12: 128,
|
|
35
|
+
15: 160,
|
|
36
|
+
18: 192,
|
|
37
|
+
21: 224,
|
|
38
|
+
24: 256
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const strength = strengthMap[numWords];
|
|
42
|
+
if (!strength) {
|
|
43
|
+
throw new Error(`Invalid number of words: ${numWords}. Supported values: 12, 15, 18, 21, 24`);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return bip39.generateMnemonic(wordlist, strength);
|
|
36
47
|
}
|
|
37
48
|
|
|
38
49
|
mnemonicToMiniSecret(phrase) {
|
|
39
50
|
validation.mnemonicToMiniSecret(phrase);
|
|
40
51
|
|
|
41
|
-
|
|
52
|
+
// Convert mnemonic to entropy which gives us a 32-byte mini secret for 12-word mnemonics
|
|
53
|
+
// This matches the behavior of Polkadot's mnemonicToMiniSecret
|
|
54
|
+
const entropy = bip39.mnemonicToEntropy(phrase, wordlist);
|
|
55
|
+
|
|
56
|
+
// For 12-word mnemonics, entropy is already 16 bytes (128 bits)
|
|
57
|
+
// We need to pad it to 32 bytes to match Polkadot's mini secret size
|
|
58
|
+
// Polkadot uses PBKDF2 with specific parameters, but for compatibility
|
|
59
|
+
// we can use the seed derivation and take the first 32 bytes
|
|
60
|
+
const seed = bip39.mnemonicToSeedSync(phrase);
|
|
61
|
+
|
|
62
|
+
// Return first 32 bytes as Uint8Array to match the expected mini secret format
|
|
63
|
+
return new Uint8Array(seed.slice(0, 32));
|
|
42
64
|
}
|
|
43
65
|
|
|
44
66
|
isBase64(value) {
|
|
@@ -46,72 +68,37 @@ export class UtilCryptoService {
|
|
|
46
68
|
return false;
|
|
47
69
|
}
|
|
48
70
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
return value === encoded2;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
mnemonicValidate(phrase) {
|
|
55
|
-
validation.mnemonicValidate(phrase);
|
|
56
|
-
|
|
57
|
-
return mnemonicValidate(phrase);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
cryptoWaitReady() {
|
|
61
|
-
return cryptoWaitReady();
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
cryptoIsReady(...args) {
|
|
65
|
-
return cryptoIsReady();
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
getAddressPrefix(params) {
|
|
69
|
-
const {address, startPrefix, endPrefix} = params;
|
|
70
|
-
|
|
71
|
-
for (let prefix = startPrefix; prefix <= endPrefix; prefix++) {
|
|
72
|
-
try {
|
|
73
|
-
const decoded = decodeAddress(address);
|
|
74
|
-
const reencoded = encodeAddress(decoded, prefix);
|
|
75
|
-
|
|
76
|
-
if (reencoded === address) {
|
|
77
|
-
return prefix;
|
|
78
|
-
}
|
|
79
|
-
} catch (err) {
|
|
80
|
-
// Ignore invalid prefixes
|
|
81
|
-
}
|
|
71
|
+
if (value === '') {
|
|
72
|
+
return false;
|
|
82
73
|
}
|
|
83
74
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
validation.isAddressValid(address);
|
|
75
|
+
const regex = '(?:[A-Za-z0-9+\\/]{4})*(?:[A-Za-z0-9+\\/]{2}(==)?|[A-Za-z0-9+\\/]{3}=?)?';
|
|
76
|
+
if (!(new RegExp('^' + regex + '$', 'gi')).test(value)) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
89
79
|
|
|
90
80
|
try {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
);
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
81
|
+
const decoded = Buffer.from(value, 'base64');
|
|
82
|
+
const asUtf8 = decoded.toString('utf8');
|
|
83
|
+
const reencoded = Buffer.from(asUtf8, 'utf8').toString('base64');
|
|
84
|
+
|
|
85
|
+
const normalize = (str) => str.replace(/=+$/, '');
|
|
86
|
+
|
|
87
|
+
return normalize(value) === normalize(reencoded);
|
|
88
|
+
} catch (e) {
|
|
97
89
|
return false;
|
|
98
90
|
}
|
|
99
91
|
}
|
|
100
92
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
assert(path.length, 'invalid derive path');
|
|
108
|
-
|
|
109
|
-
// show a warning in case the password contains an unintended / character
|
|
110
|
-
if (password && password.includes('/')) {
|
|
111
|
-
result = {warning: 'slash password detected'};
|
|
93
|
+
hexToString(hex: string): string {
|
|
94
|
+
try {
|
|
95
|
+
const bytes = hexToU8a(hex);
|
|
96
|
+
return u8aToString(bytes);
|
|
97
|
+
} catch (e) {
|
|
98
|
+
console.log('error: ', e);
|
|
112
99
|
}
|
|
113
100
|
|
|
114
|
-
return
|
|
101
|
+
return '';
|
|
115
102
|
}
|
|
116
103
|
}
|
|
117
104
|
|
|
@@ -1,59 +1,8 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
2
|
import assert from 'assert';
|
|
3
|
-
import {
|
|
4
|
-
assertAddress,
|
|
5
|
-
assertKeyType,
|
|
6
|
-
assertPassword,
|
|
7
|
-
} from '../../core/validation';
|
|
8
|
-
import {KeypairType} from '../../types';
|
|
9
|
-
|
|
10
|
-
function assertContent(content: WalletContent) {
|
|
11
|
-
assert(typeof content === 'object', 'invalid wallet content');
|
|
12
|
-
assert(typeof content.id === 'string', `invalid content id ${content.id}`);
|
|
13
|
-
assert(
|
|
14
|
-
typeof content.type === 'string',
|
|
15
|
-
`invalid content type ${content.type}`,
|
|
16
|
-
);
|
|
17
|
-
}
|
|
3
|
+
import {assertPassword} from '../../core/validation';
|
|
18
4
|
|
|
19
5
|
export const validation = {
|
|
20
|
-
getDocumentById(id: string) {
|
|
21
|
-
assert(typeof id === 'string', 'invalid documentId');
|
|
22
|
-
assert(!!id, 'documentId is required');
|
|
23
|
-
},
|
|
24
|
-
resolveCorrelations(address) {
|
|
25
|
-
assert(typeof address === 'string', 'invalid documentId');
|
|
26
|
-
assert(!!address, 'documentId is required');
|
|
27
|
-
},
|
|
28
|
-
exportAccount({address, password}: ExportAccountParams) {
|
|
29
|
-
assertAddress(address);
|
|
30
|
-
assertPassword(password);
|
|
31
|
-
},
|
|
32
|
-
create({walletId}: CreateParams): Promise<any> {
|
|
33
|
-
assert(typeof walletId === 'string', `invalid walletId ${walletId}`);
|
|
34
|
-
},
|
|
35
|
-
lock(password: string) {
|
|
36
|
-
assertPassword(password);
|
|
37
|
-
},
|
|
38
|
-
unlock(password: string) {
|
|
39
|
-
assertPassword(password);
|
|
40
|
-
},
|
|
41
|
-
add(params: AddParams) {
|
|
42
|
-
assertContent(params);
|
|
43
|
-
},
|
|
44
|
-
remove(id: string) {
|
|
45
|
-
assert(typeof id === 'string', 'invalid documentId');
|
|
46
|
-
assert(!!id, 'documentId is required');
|
|
47
|
-
},
|
|
48
|
-
update(params: UpdateParams) {
|
|
49
|
-
assertContent(params);
|
|
50
|
-
},
|
|
51
|
-
query(params: QueryParams) {
|
|
52
|
-
assert(typeof params === 'object', 'invalid query');
|
|
53
|
-
},
|
|
54
|
-
exportWallet(password: string) {
|
|
55
|
-
assertPassword(password);
|
|
56
|
-
},
|
|
57
6
|
getDocumentsFromEncryptedWallet({
|
|
58
7
|
encryptedJSONWallet,
|
|
59
8
|
password,
|
|
@@ -64,10 +13,6 @@ export const validation = {
|
|
|
64
13
|
);
|
|
65
14
|
assertPassword(password);
|
|
66
15
|
},
|
|
67
|
-
importWallet({json, password}: ImportWalletParams) {
|
|
68
|
-
assert(typeof json === 'object', `invalid json data: ${json}`);
|
|
69
|
-
assertPassword(password);
|
|
70
|
-
},
|
|
71
16
|
exportDocuments({documents, password}: ExportDocuments) {
|
|
72
17
|
assert(Array.isArray(documents), 'Invalid Documents');
|
|
73
18
|
assert(documents.length > 0, 'Cannot export empty documents');
|
|
@@ -81,50 +26,10 @@ export const validation = {
|
|
|
81
26
|
|
|
82
27
|
assertPassword(password);
|
|
83
28
|
},
|
|
84
|
-
createAccountDocuments(params: CreateAccountDocumentsParams) {
|
|
85
|
-
const {name, json, password, mnemonic, type} = params;
|
|
86
|
-
|
|
87
|
-
// Property derivationPath was replaced by derivePath
|
|
88
|
-
assert(
|
|
89
|
-
!params.derivationPath,
|
|
90
|
-
'invalid parameter derivationPath, it should be derivePath instead',
|
|
91
|
-
);
|
|
92
|
-
|
|
93
|
-
assert(typeof name === 'string', `invalid account name: ${name}`);
|
|
94
|
-
|
|
95
|
-
if (json) {
|
|
96
|
-
assert(typeof json === 'object', `invalid json: ${password}`);
|
|
97
|
-
assert(typeof password === 'string', `invalid password: ${password}`);
|
|
98
|
-
} else {
|
|
99
|
-
assert(typeof mnemonic === 'string', `invalid mnemonic: ${mnemonic}`);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
if (type) {
|
|
103
|
-
assertKeyType(type);
|
|
104
|
-
}
|
|
105
|
-
},
|
|
106
29
|
};
|
|
107
30
|
|
|
108
31
|
export const serviceName = 'wallet';
|
|
109
32
|
|
|
110
|
-
export type WalletContent = {
|
|
111
|
-
'@context'?: string[],
|
|
112
|
-
name?: any,
|
|
113
|
-
id: any,
|
|
114
|
-
type: DocumentType,
|
|
115
|
-
value?: any,
|
|
116
|
-
correlation?: any[],
|
|
117
|
-
};
|
|
118
|
-
|
|
119
|
-
export type CreateAccountDocumentsParams = {
|
|
120
|
-
name: string,
|
|
121
|
-
json?: string,
|
|
122
|
-
password?: string,
|
|
123
|
-
mnemonic?: string,
|
|
124
|
-
type?: KeypairType,
|
|
125
|
-
derivePath?: string,
|
|
126
|
-
};
|
|
127
|
-
|
|
128
33
|
export type GetDocumentsFromEncryptedWallet = {
|
|
129
34
|
encryptedJSONWallet: any,
|
|
130
35
|
password: string,
|
|
@@ -133,20 +38,3 @@ export type GetDocumentsFromEncryptedWallet = {
|
|
|
133
38
|
export type ExportDocuments = {
|
|
134
39
|
documents: Array<any>,
|
|
135
40
|
};
|
|
136
|
-
|
|
137
|
-
export type QueryParams = any;
|
|
138
|
-
export type AddParams = WalletContenxt;
|
|
139
|
-
export type UpdateParams = WalletContent;
|
|
140
|
-
export type RemoveParams = string;
|
|
141
|
-
export type ImportWalletParams = {
|
|
142
|
-
json: string,
|
|
143
|
-
password: string,
|
|
144
|
-
};
|
|
145
|
-
export type ExportAccountParams = {
|
|
146
|
-
address: string,
|
|
147
|
-
password: string,
|
|
148
|
-
};
|
|
149
|
-
export type CreateParams = {
|
|
150
|
-
walletId: string,
|
|
151
|
-
type: string,
|
|
152
|
-
};
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import {mnemonicGenerate} from '@polkadot/util-crypto';
|
|
2
|
-
import {NetworkManager} from '../../modules/network-manager';
|
|
3
|
-
import {keyringService} from '../keyring/service';
|
|
4
1
|
import {assertRpcService, getPromiseError} from '../test-utils';
|
|
5
2
|
import {validation} from './configs';
|
|
6
3
|
import {walletService as service, walletService} from './service';
|
|
@@ -11,163 +8,7 @@ describe('WalletService', () => {
|
|
|
11
8
|
assertRpcService(WalletServiceRpc, service, validation);
|
|
12
9
|
});
|
|
13
10
|
|
|
14
|
-
let accountDocuments;
|
|
15
|
-
let testAccount;
|
|
16
|
-
|
|
17
11
|
describe('service', () => {
|
|
18
|
-
beforeAll(async () => {
|
|
19
|
-
await keyringService.initialize({
|
|
20
|
-
ss58Format: NetworkManager.getInstance().getNetworkInfo().addressPrefix,
|
|
21
|
-
});
|
|
22
|
-
await service.create({
|
|
23
|
-
walletId: 'test',
|
|
24
|
-
type: 'memory',
|
|
25
|
-
});
|
|
26
|
-
await service.load();
|
|
27
|
-
await service.sync();
|
|
28
|
-
accountDocuments = await service.createAccountDocuments({
|
|
29
|
-
mnemonic: mnemonicGenerate(12),
|
|
30
|
-
name: 'test',
|
|
31
|
-
type: 'sr25519',
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
testAccount = accountDocuments[0];
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
describe('getDocumentById', () => {
|
|
38
|
-
it('expect to sum numbers', async () => {
|
|
39
|
-
const result = await service.getDocumentById(testAccount.id);
|
|
40
|
-
expect(result.id).toBe(testAccount.id);
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
it('expect to validate params', async () => {
|
|
44
|
-
const error = await getPromiseError(() =>
|
|
45
|
-
service.getDocumentById(null),
|
|
46
|
-
);
|
|
47
|
-
|
|
48
|
-
expect(error.message).toBe('invalid documentId');
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
describe('getAccountKeypair', () => {
|
|
53
|
-
it('expect to validate params', async () => {
|
|
54
|
-
const error = await getPromiseError(() =>
|
|
55
|
-
service.getDocumentById(null),
|
|
56
|
-
);
|
|
57
|
-
|
|
58
|
-
expect(error.message).toBe('invalid documentId');
|
|
59
|
-
});
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
describe('createAccountDocuments', () => {
|
|
63
|
-
const params = {
|
|
64
|
-
derivationPath: '',
|
|
65
|
-
mnemonic: mnemonicGenerate(12),
|
|
66
|
-
type: 'sr25519',
|
|
67
|
-
name: 'Test account',
|
|
68
|
-
};
|
|
69
|
-
let documents;
|
|
70
|
-
let correlation;
|
|
71
|
-
|
|
72
|
-
beforeAll(async () => {
|
|
73
|
-
documents = await service.createAccountDocuments(params);
|
|
74
|
-
correlation = await service.resolveCorrelations(documents[0].id);
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
it('expect to create 4 documents', () => {
|
|
78
|
-
expect(documents.length).toBe(4);
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
it('expect to create address document ', () => {
|
|
82
|
-
const document = correlation.find(doc => doc.type === 'Address');
|
|
83
|
-
expect(document.value).toBe(documents[0].id);
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
it('expect to create mnemonic document', () => {
|
|
87
|
-
const document = correlation.find(doc => doc.type === 'Mnemonic');
|
|
88
|
-
expect(document.value).toBe(params.mnemonic);
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
it('expect to create keyringPair document', () => {
|
|
92
|
-
const document = correlation.find(doc => doc.type === 'KeyringPair');
|
|
93
|
-
const keyringPairJson = document.value;
|
|
94
|
-
const keyringPair = keyringService.decryptKeyPair({
|
|
95
|
-
jsonData: keyringPairJson,
|
|
96
|
-
password: '',
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
expect(keyringPair.address).toBe(documents[0].value);
|
|
100
|
-
expect(keyringPair.type).toBe(params.type);
|
|
101
|
-
});
|
|
102
|
-
|
|
103
|
-
it('expect to create DOCK currency document', () => {
|
|
104
|
-
const document = correlation.find(doc => doc.type === 'Currency');
|
|
105
|
-
expect(document.value).toBe(0);
|
|
106
|
-
expect(document.symbol).toBe('DOCK');
|
|
107
|
-
});
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
describe('exportAccount', () => {
|
|
111
|
-
it('expect to export account', async () => {
|
|
112
|
-
const result = await service.exportAccount({
|
|
113
|
-
address: testAccount.id,
|
|
114
|
-
password: '123',
|
|
115
|
-
});
|
|
116
|
-
expect(result.address).toBe(testAccount.id);
|
|
117
|
-
const pair = keyringService.addFromJson({
|
|
118
|
-
jsonData: result,
|
|
119
|
-
password: '123',
|
|
120
|
-
});
|
|
121
|
-
expect(pair.address).toBe(testAccount.id);
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
it('expect to validate params', async () => {
|
|
125
|
-
const error = await getPromiseError(() =>
|
|
126
|
-
service.exportAccount({
|
|
127
|
-
address: undefined,
|
|
128
|
-
password: null,
|
|
129
|
-
}),
|
|
130
|
-
);
|
|
131
|
-
expect(error.message).toBe('invalid address: undefined');
|
|
132
|
-
});
|
|
133
|
-
});
|
|
134
|
-
|
|
135
|
-
describe('exportWallet', () => {
|
|
136
|
-
it('expect to export account', async () => {
|
|
137
|
-
const result = await service.exportWallet('123');
|
|
138
|
-
expect(result.id).toBeDefined();
|
|
139
|
-
expect(result['@context']).toBeDefined();
|
|
140
|
-
expect(result.type).toBeDefined();
|
|
141
|
-
});
|
|
142
|
-
|
|
143
|
-
it('expect to validate params', async () => {
|
|
144
|
-
const error = await getPromiseError(() =>
|
|
145
|
-
service.exportWallet(undefined),
|
|
146
|
-
);
|
|
147
|
-
expect(error.message).toBe('invalid password: undefined');
|
|
148
|
-
});
|
|
149
|
-
});
|
|
150
|
-
|
|
151
|
-
describe('importWallet', () => {
|
|
152
|
-
it('expect to export account', async () => {
|
|
153
|
-
const json = await service.exportWallet('123');
|
|
154
|
-
await walletService.removeAll();
|
|
155
|
-
await service.importWallet({json, password: '123'});
|
|
156
|
-
for (let doc of accountDocuments) {
|
|
157
|
-
const walletDoc = await walletService.getDocumentById(doc.id);
|
|
158
|
-
delete walletDoc.hasBackup;
|
|
159
|
-
delete doc.hasBackup;
|
|
160
|
-
expect(walletDoc).toStrictEqual(doc);
|
|
161
|
-
}
|
|
162
|
-
});
|
|
163
|
-
|
|
164
|
-
it('expect to validate params', async () => {
|
|
165
|
-
const error = await getPromiseError(() =>
|
|
166
|
-
service.importWallet({json: undefined}),
|
|
167
|
-
);
|
|
168
|
-
expect(error.message).toBe('invalid json data: undefined');
|
|
169
|
-
});
|
|
170
|
-
});
|
|
171
12
|
describe('getDocumentsFromEncryptedWallet', () => {
|
|
172
13
|
it('expect to validate params', async () => {
|
|
173
14
|
const error = await getPromiseError(() =>
|