@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.
Files changed (322) hide show
  1. package/lib/core/format-utils.js +0 -28
  2. package/lib/core/format-utils.mjs +1 -24
  3. package/lib/core/validation.js +1 -24
  4. package/lib/core/validation.mjs +2 -21
  5. package/lib/index.js +13 -32
  6. package/lib/index.mjs +13 -32
  7. package/lib/rpc-server.js +13 -32
  8. package/lib/rpc-server.mjs +13 -32
  9. package/lib/rpc-util.js +14 -0
  10. package/lib/rpc-util.mjs +14 -0
  11. package/lib/services/blockchain/index.js +3 -8
  12. package/lib/services/blockchain/index.mjs +3 -8
  13. package/lib/services/blockchain/service.js +37 -80
  14. package/lib/services/blockchain/service.mjs +38 -81
  15. package/lib/services/credential/bbs-revocation.js +4 -9
  16. package/lib/services/credential/bbs-revocation.mjs +3 -8
  17. package/lib/services/credential/bound-check.js +9 -4
  18. package/lib/services/credential/bound-check.mjs +9 -4
  19. package/lib/services/credential/index.js +11 -15
  20. package/lib/services/credential/index.mjs +11 -15
  21. package/lib/services/credential/service.js +18 -20
  22. package/lib/services/credential/service.mjs +15 -17
  23. package/lib/services/credential/utils.js +65 -28
  24. package/lib/services/credential/utils.mjs +62 -32
  25. package/lib/services/dids/index.js +11 -16
  26. package/lib/services/dids/index.mjs +11 -16
  27. package/lib/services/dids/keypair-utils.js +142 -0
  28. package/lib/services/dids/keypair-utils.mjs +113 -0
  29. package/lib/services/dids/service.js +16 -37
  30. package/lib/services/dids/service.mjs +16 -37
  31. package/lib/services/edv/index.js +8 -16
  32. package/lib/services/edv/index.mjs +8 -16
  33. package/lib/services/edv/service.js +10 -24
  34. package/lib/services/edv/service.mjs +10 -24
  35. package/lib/services/index.js +13 -37
  36. package/lib/services/index.mjs +13 -37
  37. package/lib/services/pex/service.js +2 -1
  38. package/lib/services/pex/service.mjs +2 -1
  39. package/lib/services/relay-service/configs.js +0 -1
  40. package/lib/services/relay-service/configs.mjs +0 -1
  41. package/lib/services/relay-service/index.android.js +0 -1
  42. package/lib/services/relay-service/index.android.mjs +0 -1
  43. package/lib/services/relay-service/index.ios.js +0 -1
  44. package/lib/services/relay-service/index.ios.mjs +0 -1
  45. package/lib/services/relay-service/index.js +0 -1
  46. package/lib/services/relay-service/index.mjs +0 -1
  47. package/lib/services/relay-service/service-rpc.js +0 -1
  48. package/lib/services/relay-service/service-rpc.mjs +0 -1
  49. package/lib/services/relay-service/service.js +0 -1
  50. package/lib/services/relay-service/service.mjs +0 -1
  51. package/lib/services/test-utils.js +0 -239
  52. package/lib/services/test-utils.mjs +1 -234
  53. package/lib/services/util-crypto/configs.js +0 -12
  54. package/lib/services/util-crypto/configs.mjs +0 -12
  55. package/lib/services/util-crypto/index.android.js +0 -3
  56. package/lib/services/util-crypto/index.android.mjs +0 -3
  57. package/lib/services/util-crypto/index.ios.js +0 -3
  58. package/lib/services/util-crypto/index.ios.mjs +0 -3
  59. package/lib/services/util-crypto/index.js +4 -7
  60. package/lib/services/util-crypto/index.mjs +4 -7
  61. package/lib/services/util-crypto/service-rpc.js +0 -23
  62. package/lib/services/util-crypto/service-rpc.mjs +0 -23
  63. package/lib/services/util-crypto/service.js +68 -61
  64. package/lib/services/util-crypto/service.mjs +50 -59
  65. package/lib/services/wallet/configs.js +0 -63
  66. package/lib/services/wallet/configs.mjs +1 -64
  67. package/lib/services/wallet/index.android.js +0 -1
  68. package/lib/services/wallet/index.android.mjs +0 -1
  69. package/lib/services/wallet/index.ios.js +0 -1
  70. package/lib/services/wallet/index.ios.mjs +0 -1
  71. package/lib/services/wallet/index.js +2 -12
  72. package/lib/services/wallet/index.mjs +2 -12
  73. package/lib/services/wallet/service-rpc.js +0 -77
  74. package/lib/services/wallet/service-rpc.mjs +0 -77
  75. package/lib/services/wallet/service.js +1 -215
  76. package/lib/services/wallet/service.mjs +1 -211
  77. package/lib/setup-nodejs.js +13 -32
  78. package/lib/setup-nodejs.mjs +13 -32
  79. package/lib/setup-tests.js +13 -32
  80. package/lib/setup-tests.mjs +13 -32
  81. package/lib/src/core/format-utils.d.ts +0 -5
  82. package/lib/src/core/format-utils.d.ts.map +1 -1
  83. package/lib/src/core/validation.d.ts +0 -3
  84. package/lib/src/core/validation.d.ts.map +1 -1
  85. package/lib/src/rpc-util.d.ts.map +1 -1
  86. package/lib/src/services/blockchain/service.d.ts +7 -3
  87. package/lib/src/services/blockchain/service.d.ts.map +1 -1
  88. package/lib/src/services/credential/bbs-revocation.d.ts.map +1 -1
  89. package/lib/src/services/credential/bound-check.d.ts +1 -1
  90. package/lib/src/services/credential/bound-check.d.ts.map +1 -1
  91. package/lib/src/services/credential/service.d.ts.map +1 -1
  92. package/lib/src/services/credential/utils.d.ts +2 -1
  93. package/lib/src/services/credential/utils.d.ts.map +1 -1
  94. package/lib/src/services/dids/keypair-utils.d.ts +15 -0
  95. package/lib/src/services/dids/keypair-utils.d.ts.map +1 -0
  96. package/lib/src/services/dids/service.d.ts +6 -6
  97. package/lib/src/services/dids/service.d.ts.map +1 -1
  98. package/lib/src/services/edv/service.d.ts.map +1 -1
  99. package/lib/src/services/pex/service.d.ts.map +1 -1
  100. package/lib/src/services/util-crypto/configs.d.ts +0 -3
  101. package/lib/src/services/util-crypto/configs.d.ts.map +1 -1
  102. package/lib/src/services/util-crypto/service.d.ts +3 -8
  103. package/lib/src/services/util-crypto/service.d.ts.map +1 -1
  104. package/lib/src/services/wallet/configs.d.ts +13 -0
  105. package/lib/src/services/wallet/configs.d.ts.map +1 -0
  106. package/lib/src/services/wallet/service.d.ts +1 -44
  107. package/lib/src/services/wallet/service.d.ts.map +1 -1
  108. package/lib/test-utils.js +0 -4
  109. package/lib/test-utils.mjs +1 -4
  110. package/lib/tsconfig.tsbuildinfo +1 -1
  111. package/package.json +6 -27
  112. package/readme.md +0 -61
  113. package/src/core/format-utils.test.js +1 -28
  114. package/src/core/format-utils.ts +0 -33
  115. package/src/core/validation.test.js +1 -33
  116. package/src/core/validation.ts +1 -25
  117. package/src/rpc-server.test.js +2 -9
  118. package/src/rpc-util.js +14 -0
  119. package/src/services/blockchain/index.test.js +4 -15
  120. package/src/services/blockchain/service.ts +39 -98
  121. package/src/services/credential/bbs-revocation.ts +2 -1
  122. package/src/services/credential/bound-check.test.ts +6 -6
  123. package/src/services/credential/bound-check.ts +4 -4
  124. package/src/services/credential/index.test.js +0 -2
  125. package/src/services/credential/service.ts +5 -2
  126. package/src/services/credential/utils.js +65 -23
  127. package/src/services/dids/index.test.js +9 -20
  128. package/src/services/dids/keypair-utils.js +111 -0
  129. package/src/services/dids/service.ts +7 -26
  130. package/src/services/edv/service.ts +2 -9
  131. package/src/services/index.js +0 -8
  132. package/src/services/pex/service.ts +7 -1
  133. package/src/services/test-utils.js +0 -207
  134. package/src/services/util-crypto/configs.ts +0 -12
  135. package/src/services/util-crypto/index.test.js +6 -83
  136. package/src/services/util-crypto/service-rpc.js +0 -20
  137. package/src/services/util-crypto/service.ts +62 -75
  138. package/src/services/wallet/configs.ts +1 -113
  139. package/src/services/wallet/index.test.js +0 -159
  140. package/src/services/wallet/service-rpc.js +1 -88
  141. package/src/services/wallet/service.ts +0 -258
  142. package/src/test-utils.js +0 -13
  143. package/lib/account-8fa95046.js +0 -774
  144. package/lib/account-e7156c51.js +0 -764
  145. package/lib/core/polkadot-utils.js +0 -119
  146. package/lib/core/polkadot-utils.mjs +0 -94
  147. package/lib/core/realm-schemas.js +0 -50
  148. package/lib/core/realm-schemas.mjs +0 -44
  149. package/lib/core/subscan.js +0 -75
  150. package/lib/core/subscan.mjs +0 -64
  151. package/lib/fixtures.js +0 -56
  152. package/lib/fixtures.mjs +0 -52
  153. package/lib/modules/account.js +0 -55
  154. package/lib/modules/account.mjs +0 -47
  155. package/lib/modules/accounts.js +0 -56
  156. package/lib/modules/accounts.mjs +0 -47
  157. package/lib/modules/data-migration.js +0 -72
  158. package/lib/modules/data-migration.mjs +0 -68
  159. package/lib/modules/wallet-backup.js +0 -82
  160. package/lib/modules/wallet-backup.mjs +0 -71
  161. package/lib/modules/wallet.js +0 -56
  162. package/lib/modules/wallet.mjs +0 -47
  163. package/lib/services/example/configs.js +0 -21
  164. package/lib/services/example/configs.mjs +0 -13
  165. package/lib/services/example/index.js +0 -18
  166. package/lib/services/example/index.mjs +0 -14
  167. package/lib/services/example/service-rpc.js +0 -25
  168. package/lib/services/example/service-rpc.mjs +0 -21
  169. package/lib/services/example/service.js +0 -25
  170. package/lib/services/example/service.mjs +0 -20
  171. package/lib/services/keyring/configs.js +0 -70
  172. package/lib/services/keyring/configs.mjs +0 -61
  173. package/lib/services/keyring/index.android.js +0 -22
  174. package/lib/services/keyring/index.android.mjs +0 -18
  175. package/lib/services/keyring/index.ios.js +0 -22
  176. package/lib/services/keyring/index.ios.mjs +0 -18
  177. package/lib/services/keyring/index.js +0 -16
  178. package/lib/services/keyring/index.mjs +0 -8
  179. package/lib/services/keyring/service-rpc.js +0 -65
  180. package/lib/services/keyring/service-rpc.mjs +0 -61
  181. package/lib/services/keyring/service.js +0 -84
  182. package/lib/services/keyring/service.mjs +0 -74
  183. package/lib/services/polkadot/configs.js +0 -17
  184. package/lib/services/polkadot/configs.mjs +0 -13
  185. package/lib/services/polkadot/index.android.js +0 -22
  186. package/lib/services/polkadot/index.android.mjs +0 -18
  187. package/lib/services/polkadot/index.ios.js +0 -22
  188. package/lib/services/polkadot/index.ios.mjs +0 -18
  189. package/lib/services/polkadot/index.js +0 -15
  190. package/lib/services/polkadot/index.mjs +0 -7
  191. package/lib/services/polkadot/service-rpc.js +0 -30
  192. package/lib/services/polkadot/service-rpc.mjs +0 -26
  193. package/lib/services/polkadot/service.js +0 -28
  194. package/lib/services/polkadot/service.mjs +0 -23
  195. package/lib/services/substrate/api-utils.js +0 -85
  196. package/lib/services/substrate/api-utils.mjs +0 -74
  197. package/lib/services/substrate/configs.js +0 -30
  198. package/lib/services/substrate/configs.mjs +0 -21
  199. package/lib/services/substrate/index.android.js +0 -22
  200. package/lib/services/substrate/index.android.mjs +0 -18
  201. package/lib/services/substrate/index.ios.js +0 -22
  202. package/lib/services/substrate/index.ios.mjs +0 -18
  203. package/lib/services/substrate/index.js +0 -37
  204. package/lib/services/substrate/index.mjs +0 -29
  205. package/lib/services/substrate/service-rpc.js +0 -37
  206. package/lib/services/substrate/service-rpc.mjs +0 -33
  207. package/lib/services/substrate/service.js +0 -115
  208. package/lib/services/substrate/service.mjs +0 -102
  209. package/lib/services/trust-registry/configs.js +0 -25
  210. package/lib/services/trust-registry/configs.mjs +0 -16
  211. package/lib/services/trust-registry/index.android.js +0 -19
  212. package/lib/services/trust-registry/index.android.mjs +0 -15
  213. package/lib/services/trust-registry/index.ios.js +0 -19
  214. package/lib/services/trust-registry/index.ios.mjs +0 -15
  215. package/lib/services/trust-registry/index.js +0 -33
  216. package/lib/services/trust-registry/index.mjs +0 -25
  217. package/lib/services/trust-registry/service-rpc.js +0 -29
  218. package/lib/services/trust-registry/service-rpc.mjs +0 -25
  219. package/lib/services/trust-registry/service.js +0 -89
  220. package/lib/services/trust-registry/service.mjs +0 -85
  221. package/lib/src/core/polkadot-utils.d.ts +0 -11
  222. package/lib/src/core/polkadot-utils.d.ts.map +0 -1
  223. package/lib/src/modules/account.d.ts +0 -60
  224. package/lib/src/modules/account.d.ts.map +0 -1
  225. package/lib/src/modules/accounts.d.ts +0 -49
  226. package/lib/src/modules/accounts.d.ts.map +0 -1
  227. package/lib/src/modules/data-migration.d.ts +0 -7
  228. package/lib/src/modules/data-migration.d.ts.map +0 -1
  229. package/lib/src/modules/wallet-backup.d.ts +0 -12
  230. package/lib/src/modules/wallet-backup.d.ts.map +0 -1
  231. package/lib/src/modules/wallet.d.ts +0 -134
  232. package/lib/src/modules/wallet.d.ts.map +0 -1
  233. package/lib/src/services/blockchain/index.d.ts +0 -2
  234. package/lib/src/services/blockchain/index.d.ts.map +0 -1
  235. package/lib/src/services/example/configs.d.ts +0 -9
  236. package/lib/src/services/example/configs.d.ts.map +0 -1
  237. package/lib/src/services/example/service.d.ts +0 -8
  238. package/lib/src/services/example/service.d.ts.map +0 -1
  239. package/lib/src/services/keyring/configs.d.ts +0 -39
  240. package/lib/src/services/keyring/configs.d.ts.map +0 -1
  241. package/lib/src/services/keyring/index.d.ts +0 -2
  242. package/lib/src/services/keyring/index.d.ts.map +0 -1
  243. package/lib/src/services/polkadot/configs.d.ts +0 -8
  244. package/lib/src/services/polkadot/configs.d.ts.map +0 -1
  245. package/lib/src/services/polkadot/index.d.ts +0 -2
  246. package/lib/src/services/polkadot/index.d.ts.map +0 -1
  247. package/lib/src/services/polkadot/service.d.ts +0 -8
  248. package/lib/src/services/polkadot/service.d.ts.map +0 -1
  249. package/lib/src/services/substrate/api-utils.d.ts +0 -14
  250. package/lib/src/services/substrate/api-utils.d.ts.map +0 -1
  251. package/lib/src/services/substrate/configs.d.ts +0 -16
  252. package/lib/src/services/substrate/configs.d.ts.map +0 -1
  253. package/lib/src/services/substrate/index.d.ts +0 -2
  254. package/lib/src/services/substrate/index.d.ts.map +0 -1
  255. package/lib/src/services/substrate/service.d.ts +0 -13
  256. package/lib/src/services/substrate/service.d.ts.map +0 -1
  257. package/lib/src/services/trust-registry/configs.d.ts +0 -6
  258. package/lib/src/services/trust-registry/configs.d.ts.map +0 -1
  259. package/lib/src/services/trust-registry/service.d.ts +0 -25
  260. package/lib/src/services/trust-registry/service.d.ts.map +0 -1
  261. package/lib/src/services/wallet/index.d.ts +0 -2
  262. package/lib/src/services/wallet/index.d.ts.map +0 -1
  263. package/lib/test/axiosMocks.js +0 -431
  264. package/lib/test/axiosMocks.mjs +0 -420
  265. package/lib/test/setup-test-state.js +0 -93
  266. package/lib/test/setup-test-state.mjs +0 -85
  267. package/src/core/polkadot-utils.js +0 -99
  268. package/src/core/realm-schemas.js +0 -42
  269. package/src/core/subscan.js +0 -62
  270. package/src/core/subscan.test.js +0 -56
  271. package/src/fixtures.js +0 -43
  272. package/src/modules/account.test.js +0 -56
  273. package/src/modules/account.ts +0 -128
  274. package/src/modules/accounts.test.js +0 -88
  275. package/src/modules/accounts.ts +0 -264
  276. package/src/modules/data-migration.test.js +0 -72
  277. package/src/modules/data-migration.ts +0 -86
  278. package/src/modules/wallet-backup.test.js +0 -24
  279. package/src/modules/wallet-backup.ts +0 -68
  280. package/src/modules/wallet.test.js +0 -227
  281. package/src/modules/wallet.ts +0 -424
  282. package/src/services/example/configs.js +0 -14
  283. package/src/services/example/index.js +0 -3
  284. package/src/services/example/index.test.js +0 -28
  285. package/src/services/example/service-rpc.js +0 -11
  286. package/src/services/example/service.ts +0 -18
  287. package/src/services/keyring/configs.ts +0 -110
  288. package/src/services/keyring/index.android.js +0 -3
  289. package/src/services/keyring/index.ios.js +0 -3
  290. package/src/services/keyring/index.js +0 -1
  291. package/src/services/keyring/index.test.js +0 -48
  292. package/src/services/keyring/service-rpc.js +0 -56
  293. package/src/services/keyring/service.ts +0 -111
  294. package/src/services/polkadot/configs.ts +0 -13
  295. package/src/services/polkadot/index.android.js +0 -3
  296. package/src/services/polkadot/index.ios.js +0 -3
  297. package/src/services/polkadot/index.js +0 -1
  298. package/src/services/polkadot/index.test.js +0 -52
  299. package/src/services/polkadot/service-rpc.js +0 -13
  300. package/src/services/polkadot/service.ts +0 -21
  301. package/src/services/substrate/api-utils.test.js +0 -73
  302. package/src/services/substrate/api-utils.ts +0 -66
  303. package/src/services/substrate/configs.ts +0 -34
  304. package/src/services/substrate/index.android.js +0 -3
  305. package/src/services/substrate/index.ios.js +0 -3
  306. package/src/services/substrate/index.js +0 -1
  307. package/src/services/substrate/index.test.js +0 -116
  308. package/src/services/substrate/service-rpc.js +0 -24
  309. package/src/services/substrate/service.ts +0 -117
  310. package/src/services/trust-registry/configs.ts +0 -14
  311. package/src/services/trust-registry/index.android.js +0 -3
  312. package/src/services/trust-registry/index.ios.js +0 -3
  313. package/src/services/trust-registry/index.js +0 -1
  314. package/src/services/trust-registry/index.test.js +0 -67
  315. package/src/services/trust-registry/service-rpc.js +0 -15
  316. package/src/services/trust-registry/service.ts +0 -94
  317. package/src/test/axiosMocks.js +0 -20
  318. package/src/test/fixtures/subscan-failure.json +0 -5
  319. package/src/test/fixtures/subscan-success.json +0 -370
  320. package/src/test/fixtures/subscan-too-many-requests.json +0 -9
  321. package/src/test/setup-test-state.js +0 -37
  322. 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 {cryptoWaitReady} from '@polkadot/util-crypto';
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 {decodeAddress, encodeAddress} from '@polkadot/keyring';
3
- import {hexToU8a, isHex} from '@polkadot/util';
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.getAddressPrefix,
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
- return mnemonicGenerate(numWords);
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
- return mnemonicToMiniSecret(phrase);
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
- const decoded1 = Buffer.from(value, 'base64').toString('utf8');
50
- const encoded2 = Buffer.from(decoded1, 'binary').toString('base64');
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
- return null;
85
- }
86
-
87
- isAddressValid(address) {
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
- encodeAddress(
92
- isHex(address) ? hexToU8a(address) : decodeAddress(address),
93
- );
94
-
95
- return true;
96
- } catch (error) {
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
- deriveValidate(uri: string) {
102
- validation.deriveValidate(uri);
103
-
104
- const {password, path} = keyExtractSuri(uri);
105
- let result = {};
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 result;
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(() =>