@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
@@ -9,6 +9,7 @@ import {
9
9
  import {OpenID4VCIClientV1_0_13} from '@sphereon/oid4vci-client';
10
10
  import {Alg} from '@sphereon/oid4vci-common';
11
11
  import {getKeypairFromDoc} from '@docknetwork/universal-wallet/methods/keypairs';
12
+ import {hexToU8a} from '@docknetwork/credential-sdk/utils';
12
13
  import {
13
14
  VerifiablePresentation,
14
15
  Presentation,
@@ -117,13 +118,15 @@ class CredentialService {
117
118
  vp.setHolder(keyDoc.controller);
118
119
  }
119
120
 
120
- keyDoc.keypair = keyDocToKeypair(keyDoc, blockchainService.dock);
121
+ const keyPair = getKeypairFromDoc(keyDoc);
122
+ keyPair.signer = keyPair.signer();
123
+ const suite = await getSuiteFromKeyDoc(keyPair);
121
124
 
122
125
  if (shouldSkipSigning) {
123
126
  return vp.toJSON();
124
127
  }
125
128
 
126
- return vp.sign(keyDoc, challenge, domain, blockchainService.resolver);
129
+ return vp.sign(suite, challenge, domain, blockchainService.resolver);
127
130
  }
128
131
 
129
132
  async verifyPresentation({ presentation, options }: any) {
@@ -1,13 +1,22 @@
1
1
  import * as bs58 from 'base58-universal';
2
- import {Bls12381G2KeyPairDock2022} from '@docknetwork/credential-sdk/vc/crypto';
3
- import {getKeyring} from '../keyring/service';
2
+ import {
3
+ Bls12381BBSKeyPairDock2023,
4
+ Bls12381G2KeyPairDock2022,
5
+ Bls12381BBDT16KeyPairDock2024,
6
+ } from '@docknetwork/credential-sdk/vc/crypto';
7
+ import {randomAsHex} from '@docknetwork/credential-sdk/utils';
8
+ import x25519KeyAgreementKey2020 from '@digitalbazaar/x25519-key-agreement-key-2020';
9
+ import x25519KeyAgreementKey2019 from '@digitalbazaar/x25519-key-agreement-key-2019';
10
+ import ed25519VerificationKey2018 from '@digitalbazaar/ed25519-verification-key-2018';
11
+ import ed25519VerificationKey2020 from '@digitalbazaar/ed25519-verification-key-2020';
12
+
13
+ import {Ed25519Keypair} from '@docknetwork/credential-sdk/keypairs';
14
+
15
+ export async function keyDocToKeypair(keyDoc) {
16
+ if (keyDoc.keypair) {
17
+ return keyDoc;
18
+ }
4
19
 
5
- const docToKeyMap = {
6
- Sr25519VerificationKey2020: 'sr25519',
7
- Ed25519VerificationKey2018: 'ed25519',
8
- };
9
- export function keyDocToKeypair(keyDoc, dock) {
10
- // For now we expect multibase to just be b58, this needs fixing later if/when we support more keys
11
20
  const {
12
21
  type,
13
22
  privateKeyBase58,
@@ -15,25 +24,58 @@ export function keyDocToKeypair(keyDoc, dock) {
15
24
  privateKeyMultibase,
16
25
  publicKeyMultibase,
17
26
  } = keyDoc;
18
- const privateKeyEncoded = privateKeyBase58 || privateKeyMultibase.substr(1);
27
+
28
+ const publicKeyEncoded = publicKeyBase58 || publicKeyMultibase.substr(1);
29
+ const privateKeyEncoded =
30
+ privateKeyBase58 || (privateKeyMultibase && privateKeyMultibase.substr(1));
31
+ if (!privateKeyEncoded) {
32
+ throw new Error(
33
+ `No private key in document found, this should not happen. Got: ${JSON.stringify(
34
+ keyDoc,
35
+ null,
36
+ 2,
37
+ )}`,
38
+ );
39
+ }
40
+
19
41
  const privateKeyBytes = bs58.decode(privateKeyEncoded);
42
+ const publicKeyBytes = bs58.decode(publicKeyEncoded);
20
43
 
21
44
  if (type === 'Bls12381G2VerificationKeyDock2022') {
22
45
  return new Bls12381G2KeyPairDock2022(keyDoc);
46
+ } else if (type === 'Bls12381BBSVerificationKeyDock2023') {
47
+ return new Bls12381BBSKeyPairDock2023(keyDoc);
48
+ } else if (type === 'Bls12381BBDT16VerificationKeyDock2024') {
49
+ return new Bls12381BBDT16KeyPairDock2024(keyDoc);
50
+ } else if (
51
+ type === 'Ed25519VerificationKey2020' ||
52
+ type === 'Ed25519VerificationKey2018'
53
+ ) {
54
+ const key = new Ed25519Keypair(randomAsHex(32));
55
+ key.keyPair.publicKey = publicKeyBytes;
56
+ key.keyPair.secretKey = privateKeyBytes;
57
+ return key;
23
58
  } else {
24
- const publicKeyEncoded = publicKeyBase58 || publicKeyMultibase.substr(1);
25
- const keyType = docToKeyMap[type];
26
- if (!keyType) {
27
- throw new Error(`Unsupported key type: ${type}`);
28
- }
29
-
30
- return getKeyring().createFromPair(
31
- {
32
- publicKey: bs58.decode(publicKeyEncoded),
33
- secretKey: privateKeyBytes,
34
- },
35
- {},
36
- keyType,
37
- );
59
+ throw new Error(`Unsupported key type: ${type}`);
60
+ }
61
+ }
62
+
63
+ const keyConstructors = {
64
+ Ed25519VerificationKey2018: keypairOptions =>
65
+ new ed25519VerificationKey2018.Ed25519VerificationKey2018(keypairOptions),
66
+ Ed25519VerificationKey2020: keypairOptions =>
67
+ new ed25519VerificationKey2020.Ed25519VerificationKey2020(keypairOptions),
68
+ X25519KeyAgreementKey2019: keypairOptions =>
69
+ new x25519KeyAgreementKey2019.X25519KeyAgreementKey2019(keypairOptions),
70
+ X25519KeyAgreementKey2020: keypairOptions =>
71
+ new x25519KeyAgreementKey2020.X25519KeyAgreementKey2020(keypairOptions),
72
+ };
73
+
74
+ export function getKeypairFromDoc(keypairOptions) {
75
+ const {type} = keypairOptions;
76
+ const keyConstructor = keyConstructors[type];
77
+ if (!keyConstructor) {
78
+ throw new Error(`Unrecognized keypair type to construct: ${type}`);
38
79
  }
80
+ return keyConstructor(keypairOptions);
39
81
  }
@@ -3,14 +3,10 @@ import {DIDServiceRPC} from './service-rpc';
3
3
  import {didService as service} from './service';
4
4
  import {validation} from './config';
5
5
  import {DIDKeyManager} from '@docknetwork/wallet-sdk-dids/src';
6
- import {getTestWallet} from '../../test/setup-test-state';
7
6
  import {blockchainService} from '../blockchain/service';
7
+ import {Ed25519Keypair} from '@docknetwork/credential-sdk/keypairs';
8
8
 
9
9
  describe('DID Service', () => {
10
- beforeAll(async () => {
11
- await getTestWallet();
12
- });
13
-
14
10
  it('ServiceRpc', () => {
15
11
  assertRpcService(DIDServiceRPC, service, validation);
16
12
  });
@@ -100,7 +96,7 @@ describe('DID Service', () => {
100
96
  it('expect to get did document', async () => {
101
97
  const document = 'document';
102
98
  jest
103
- .spyOn(blockchainService.didModule, 'getDocument')
99
+ .spyOn(blockchainService.modules.did, 'getDocument')
104
100
  .mockResolvedValue(document);
105
101
 
106
102
  const result = await service.getDidDockDocument(
@@ -121,25 +117,18 @@ describe('DID Service', () => {
121
117
  expect(keyDoc.privateKeyMultibase).toBeDefined();
122
118
  });
123
119
 
124
- it('expect to generateKeyDoc with keyPair', async () => {
120
+ it('expect to deriveKeyDoc', async () => {
125
121
  const controller =
126
122
  'did:dock:5HL5XB7CHcHT2ZUKjY2SCJvDAK11qoa1exgfVnVTHRbmjJQ';
127
- const keyPairJSON = {
128
- encoded:
129
- 'MFMCAQEwBQYDK2VwBCIEIJDIpsaUjZCkVkPmBPqKD0dgu59F8ks4yepJKNFQkz+A/fYvnshD7g1RpaSXuGcLytu6fN/P/PGt2ahhH2Bkh0GhIwMhAP32L57IQ+4NUaWkl7hnC8rbunzfz/zxrdmoYR9gZIdB',
130
- encoding: {content: ['pkcs8', 'ed25519'], type: ['none'], version: '3'},
131
- address: '3CGqgBTzZEPyhVTjpWdX5z2uDQ6hxEUALcZ6HthscNnVrKy7',
132
- meta: {},
133
- };
134
123
 
135
- const keyDoc = await service.generateKeyDoc({
124
+ const {keyPair} = Ed25519Keypair.random();
125
+
126
+ const derivedKeyDoc = await service.deriveKeyDoc({
136
127
  controller,
137
- keyPairJSON,
128
+ pair: keyPair,
138
129
  });
139
130
 
140
- expect(keyDoc.controller).toEqual(controller);
141
- expect(keyDoc.privateKeyMultibase).toEqual(
142
- 'z3ttk77Si8AUHHGAGLWue3qZacSgZDtRRCbd75Bmujx2qstznWv4ZRWtCjEKcJAUUufQpSsurEAJ47mYYKPwQnA2C',
143
- );
131
+ expect(derivedKeyDoc.controller).toEqual(controller);
132
+ expect(derivedKeyDoc.privateKeyMultibase).toBeDefined();
144
133
  });
145
134
  });
@@ -0,0 +1,111 @@
1
+ /**
2
+ * This code is based on the implementation from truvera api
3
+ * https://github.com/docknetwork/web/blob/3c706c5dc5de4ae63f548c76ec6edeb17533a0c9/apps/api/src/utils/key-manager.js
4
+ */
5
+ import {Ed25519Keypair} from '@docknetwork/credential-sdk/keypairs';
6
+ import {hexToU8a, u8aToHex, u8aToU8a} from '@docknetwork/credential-sdk/utils';
7
+ // import {encodeBase58} from './dock-shared';
8
+ import * as bs58 from 'base58-universal';
9
+
10
+ export function getKeyPairType(key) {
11
+ const keyType = key.type || key.constructor.VerKeyType;
12
+ if (keyType) {
13
+ return keyType;
14
+ }
15
+
16
+ if (key instanceof Ed25519Keypair) {
17
+ return 'Ed25519VerificationKey2018';
18
+ }
19
+
20
+ throw new Error(`Unknown key type for ${key.constructor.name}`);
21
+ }
22
+
23
+ export const MULTIBASE_BASE58BTC_HEADER = 'z';
24
+ export const MULTICODEC_ED25519_PUB_HEADER = new Uint8Array([0xed, 0x01]);
25
+ export const MULTICODEC_ED25519_PRIV_HEADER = new Uint8Array([0x80, 0x26]);
26
+
27
+ export function encodeMbKey(header, key) {
28
+ const mbKey = new Uint8Array(header.length + key.length);
29
+ mbKey.set(header);
30
+ mbKey.set(key, header.length);
31
+ return MULTIBASE_BASE58BTC_HEADER + bs58.encode(mbKey);
32
+ }
33
+
34
+ function getKeyFingerprint(keyType, publicKey) {
35
+ if (keyType.startsWith('Ed25519')) {
36
+ return encodeMbKey(MULTICODEC_ED25519_PUB_HEADER, publicKey);
37
+ } else {
38
+ throw new Error(`Cannot detect key type for fingerprint: ${keyType}`);
39
+ }
40
+ }
41
+
42
+ const keyTypeToDocType = {
43
+ bjj: 'BJJVerificationKey2021',
44
+ secp256k1: 'EcdsaSecp256k1VerificationKey2019',
45
+ };
46
+
47
+ export function keypairToKeydoc(key, controller, id = undefined) {
48
+ const keyType = getKeyPairType(key);
49
+ let keyDoc;
50
+ if (
51
+ keyType === 'Ed25519VerificationKey2020' ||
52
+ keyType === 'Ed25519VerificationKey2018'
53
+ ) {
54
+ const publicKey = u8aToU8a(
55
+ (key.keyPair &&
56
+ key.keyPair.publicKey &&
57
+ u8aToU8a(key.keyPair.publicKey)) ||
58
+ key.publicKeyBuffer ||
59
+ (key.pk && key.pk.value),
60
+ );
61
+
62
+ if (!publicKey) {
63
+ throw new Error('Cannot find public key');
64
+ }
65
+
66
+ const pk = u8aToU8a(
67
+ (key.keyPair && key.keyPair.secretKey) ||
68
+ key.privateKeyBuffer ||
69
+ (key.sk &&
70
+ (typeof key.sk === 'string'
71
+ ? hexToU8a(key.sk)
72
+ : key.sk.value || key.sk)) ||
73
+ hexToU8a(key.pk),
74
+ );
75
+
76
+ const publicKeyBase58 = bs58.encode(publicKey);
77
+ const privateKeyBase58 = bs58.encode(pk);
78
+
79
+ const fingerprint =
80
+ (key.fingerprint && key.fingerprint()) ||
81
+ getKeyFingerprint(keyType, publicKey);
82
+
83
+ // auto create controller
84
+ if (!controller) {
85
+ controller = `did:key:${fingerprint}`;
86
+ id = id || key.id || `${controller}#${fingerprint}`;
87
+ }
88
+
89
+ const keyId = id || key.id || `${controller}#${fingerprint}`;
90
+ const type = keyTypeToDocType[keyType] || keyType;
91
+ keyDoc = {
92
+ controller,
93
+ type,
94
+ id: keyId,
95
+ publicKeyMultibase: encodeMbKey(MULTICODEC_ED25519_PUB_HEADER, publicKey),
96
+ privateKeyMultibase: encodeMbKey(MULTICODEC_ED25519_PRIV_HEADER, pk),
97
+ privateKeyBase58,
98
+ publicKeyBase58,
99
+ };
100
+
101
+ if (key.seed) {
102
+ keyDoc.seed = u8aToHex(key.seed);
103
+ }
104
+ } else {
105
+ throw new Error(`Unknown keypairToKeydoc type: ${keyType}`);
106
+ }
107
+
108
+ keyDoc['@context'] = ['https://w3id.org/wallet/v1'];
109
+
110
+ return keyDoc;
111
+ }
@@ -6,7 +6,6 @@ import {
6
6
  KeypairToDIDKeyDocumentParams,
7
7
  GetDIDResolutionParams,
8
8
  } from './config';
9
- import {keyringService} from '../keyring/service';
10
9
  import {utilCryptoService} from '../util-crypto/service';
11
10
  import assert from 'assert';
12
11
  import {blockchainService, getDock} from '../blockchain/service';
@@ -20,13 +19,13 @@ import {
20
19
  import {Ed25519Keypair} from '@docknetwork/credential-sdk/keypairs';
21
20
 
22
21
  import {Logger} from '../../core/logger';
23
- import {polkadotToKeydoc} from '../../core/polkadot-utils';
24
22
  import base64url from 'base64url';
25
23
  import {keyDocToKeypair} from '../credential/utils';
26
24
  import {
27
25
  Ed25519Signature2020,
28
26
  EcdsaSecp256k1Signature2019,
29
27
  } from '@docknetwork/credential-sdk/vc/crypto';
28
+ import { keypairToKeydoc } from './keypair-utils';
30
29
 
31
30
  async function getSignerKeypair(privateKeyDoc) {
32
31
  const privateKey =
@@ -84,34 +83,16 @@ class DIDService {
84
83
 
85
84
  async generateKeyDoc(params) {
86
85
  validation.generateKeyDoc(params);
87
- const {derivePath = '', type = 'ed25519', keyPairJSON} = params;
88
- let keyring;
89
-
90
- if (keyPairJSON) {
91
- keyring = keyringService.keyring.addFromJson(keyPairJSON);
92
- keyring.unlock('');
93
- } else {
94
- const mnemonic = await utilCryptoService.mnemonicGenerate(12);
95
- keyring = keyringService.getKeyringPair({
96
- mnemonic,
97
- derivePath,
98
- type,
99
- });
100
- }
101
-
102
- return polkadotToKeydoc(keyring, params.controller);
86
+ const {derivePath = '', type = 'ed25519'} = params;
87
+ const keyPair = Ed25519Keypair.random()
88
+ return keypairToKeydoc(keyPair, params.controller);
103
89
  }
104
90
 
105
91
  async deriveKeyDoc(params) {
106
92
  validation.deriveKeyDoc(params);
107
93
  const { pair, type = 'ed25519' } = params;
108
-
109
- const keyring = keyringService.createFromPair({
110
- pair,
111
- type,
112
- });
113
-
114
- return polkadotToKeydoc(keyring, params.controller);
94
+ const keyPair = new Ed25519Keypair(pair.secretKey, 'private')
95
+ return keypairToKeydoc(keyPair, params.controller);
115
96
  }
116
97
 
117
98
  async createSignedJWT({payload, privateKeyDoc, headerInput}) {
@@ -137,7 +118,7 @@ class DIDService {
137
118
  async getDidDockDocument(did) {
138
119
  assert(!!did, 'DID is required');
139
120
  const dock = blockchainService.dock;
140
- const result = await blockchainService.didModule.getDocument(did);
121
+ const result = await blockchainService.modules.did.getDocument(did);
141
122
  return result;
142
123
  }
143
124
  }
@@ -8,8 +8,7 @@ import {X25519KeyAgreementKey2020} from '@digitalbazaar/x25519-key-agreement-key
8
8
  import {getKeypairFromDoc} from '@docknetwork/universal-wallet/methods/keypairs';
9
9
  import {logger} from '@docknetwork/wallet-sdk-data-store/src/logger';
10
10
  import {didService} from '@docknetwork/wallet-sdk-wasm/src/services/dids/service';
11
- import {keyringService} from '@docknetwork/wallet-sdk-wasm/src/services/keyring';
12
- import {ed25519PairFromSeed} from '@polkadot/util-crypto';
11
+ import {Ed25519Keypair} from '@docknetwork/credential-sdk/keypairs';
13
12
 
14
13
  /**
15
14
  * EDVService
@@ -97,9 +96,6 @@ export class EDVService {
97
96
  }
98
97
 
99
98
  async generateKeys() {
100
- await keyringService.initialize({
101
- ss58Format: 22,
102
- });
103
99
  const keyPair = await didService.generateKeyDoc({});
104
100
 
105
101
  const verificationKey = await Ed25519VerificationKey2018.generate({
@@ -116,10 +112,7 @@ export class EDVService {
116
112
  }
117
113
 
118
114
  async deriveKeys(masterKey: Uint8Array) {
119
- await keyringService.initialize({
120
- ss58Format: 22,
121
- });
122
- const pair = ed25519PairFromSeed(masterKey);
115
+ const {keyPair: pair} = new Ed25519Keypair(masterKey, 'seed');
123
116
 
124
117
  const keyPair = await didService.deriveKeyDoc({ pair });
125
118
 
@@ -1,29 +1,21 @@
1
- import {keyringService} from './keyring/service';
2
1
  import {blockchainService} from './blockchain/service';
3
- import {substrateService} from './substrate/service';
4
2
  import {walletService} from './wallet/service';
5
- import {polkadotService} from './polkadot/service';
6
3
  import {utilCryptoService} from './util-crypto/service';
7
4
  import {storageService} from './storage/service';
8
5
  import {didService} from './dids/service';
9
6
  import {credentialService} from './credential/service';
10
7
  import {relayService} from './relay-service/service';
11
8
  import {pexService} from './pex/service';
12
- import {trustRegistryService} from './trust-registry/service';
13
9
  import {edvService} from './edv/service';
14
10
 
15
11
  export default [
16
- keyringService,
17
12
  blockchainService,
18
- substrateService,
19
13
  walletService,
20
- polkadotService,
21
14
  utilCryptoService,
22
15
  storageService,
23
16
  didService,
24
17
  credentialService,
25
18
  relayService,
26
19
  pexService,
27
- trustRegistryService,
28
20
  edvService,
29
21
  ];
@@ -105,12 +105,18 @@ class PEXService {
105
105
 
106
106
  presentationFrom(params: CreatePresentationParams) {
107
107
  const {credentials, presentationDefinition, holderDID} = params;
108
- const result: IPresentation = pex.presentationFrom(
108
+ const evaluateResult = pex.evaluateCredentials(
109
109
  removeOptionalAttribute(presentationDefinition),
110
110
  credentials,
111
111
  holderDID,
112
112
  );
113
113
 
114
+ const result: IPresentation = pex.presentationFrom(
115
+ presentationDefinition,
116
+ evaluateResult.verifiableCredential,
117
+ holderDID,
118
+ );
119
+
114
120
  return result;
115
121
  }
116
122
  }
@@ -1,22 +1,6 @@
1
- import {cryptoWaitReady} from '@polkadot/util-crypto';
2
1
  import assert from 'assert';
3
- import BigNumber from 'bignumber.js';
4
- import {DOCK_TOKEN_UNIT} from '../core/format-utils';
5
- import {TestFixtures} from '../fixtures';
6
2
  import {NetworkManager} from '../modules/network-manager';
7
- import {keyringService} from './keyring';
8
3
  import {RpcService} from './rpc-service-client';
9
- import {walletService} from './wallet';
10
- import Keyring from '@polkadot/keyring';
11
- import {blockchainService} from './blockchain/service';
12
-
13
- export async function initializeWalletService() {
14
- await cryptoWaitReady();
15
- await keyringService.initialize({
16
- ss58Format: 21,
17
- });
18
- await walletService.create('test-wallet', 'memory');
19
- }
20
4
 
21
5
  export const TEST_FEE_AMOUNT = 2.48;
22
6
  export const API_MOCK_DISABLED = process.env.API_MOCK_DISABLED === 'true';
@@ -34,105 +18,6 @@ export const TEST_SCHEMA_METADATA = {
34
18
  },
35
19
  };
36
20
 
37
- let mockTransactionError;
38
-
39
- export const setMockTransactionError = error => {
40
- mockTransactionError = error;
41
- };
42
-
43
- export async function mockDockService() {
44
- await cryptoWaitReady();
45
-
46
- await keyringService.initialize({
47
- ss58Format: NetworkManager.getInstance().getNetworkInfo().addressPrefix,
48
- });
49
-
50
- let sdkMock;
51
-
52
- if (API_MOCK_DISABLED) {
53
- return blockchainService.init({
54
- address: NetworkManager.getInstance().getNetworkInfo().substrateUrl,
55
- });
56
- } else {
57
- sdkMock = mockDockSdkConnection();
58
- await blockchainService.init({
59
- address: NetworkManager.getInstance().getNetworkInfo().substrateUrl,
60
- });
61
- }
62
-
63
- const _dockSdk = blockchainService.dock;
64
-
65
- blockchainService.isDockReady = true;
66
-
67
- blockchainService.dock = {
68
- api: {
69
- events: {
70
- system: {
71
- ExtrinsicFailed: {
72
- is: event => !!mockTransactionError,
73
- },
74
- },
75
- },
76
- query: {
77
- system: {
78
- account: jest.fn().mockImplementation(() => ({
79
- data: {
80
- free: BigNumber(TestFixtures.account1.balance * DOCK_TOKEN_UNIT),
81
- },
82
- })),
83
- },
84
- },
85
- revocation: {
86
- getIsRevoked: jest.fn().mockImplementation(() => false),
87
- },
88
- tx: {
89
- balances: {
90
- transfer: jest.fn().mockImplementation(() => ({
91
- paymentInfo: () => ({
92
- partialFee: BigNumber(TEST_FEE_AMOUNT * DOCK_TOKEN_UNIT),
93
- }),
94
- signAndSend: (account, callback) => {
95
- callback({
96
- status: {
97
- isInBlock: true,
98
- isFinalized: true,
99
- toHex: () => 'hash',
100
- },
101
- events: [
102
- {
103
- event: {
104
- data: [mockTransactionError],
105
- },
106
- },
107
- ],
108
- });
109
-
110
- return Promise.resolve({});
111
- },
112
- })),
113
- },
114
- },
115
- },
116
- trustRegistry: {
117
- registriesInfo: jest.fn().mockImplementation(() => TEST_TRUST_REGISTRIES),
118
- registrySchemasMetadata: jest
119
- .fn()
120
- .mockImplementation(() => TEST_SCHEMA_METADATA),
121
- },
122
- init: jest.fn().mockImplementation(() => Promise.resolve({})),
123
- disconnect: jest.fn(),
124
- setAccount: jest.fn(),
125
- };
126
-
127
- return () => {
128
- blockchainService.dock = _dockSdk;
129
- if (sdkMock) {
130
- sdkMock.clear();
131
- }
132
- blockchainService.disconnect();
133
- };
134
- }
135
-
136
21
  let walletCreated;
137
22
 
138
23
  export async function setupTestWallet() {
@@ -142,101 +27,9 @@ export async function setupTestWallet() {
142
27
 
143
28
  NetworkManager.getInstance().setNetworkId('testnet');
144
29
 
145
- await cryptoWaitReady();
146
- await keyringService.initialize({
147
- ss58Format: NetworkManager.getInstance().getNetworkInfo().addressPrefix,
148
- });
149
- await walletService.create({
150
- walletId: 'test-wallet',
151
- type: 'memory',
152
- });
153
- await walletService.createAccountDocuments({
154
- mnemonic: TestFixtures.account1.mnemonic,
155
- name: TestFixtures.account1.name,
156
- });
157
- await walletService.createAccountDocuments({
158
- mnemonic: TestFixtures.account2.mnemonic,
159
- name: TestFixtures.account2.name,
160
- });
161
-
162
30
  walletCreated = true;
163
31
  }
164
32
 
165
- export function mockDockSdkConnection(connectionError) {
166
- const result = 'result';
167
- const dock = blockchainService.dock;
168
- const mocks = [
169
- jest.spyOn(dock, 'init').mockImplementation(() => {
170
- if (connectionError) {
171
- return Promise.reject(connectionError);
172
- }
173
-
174
- return Promise.resolve(result);
175
- }),
176
- jest.spyOn(dock, 'disconnect').mockReturnValue(Promise.resolve(true)),
177
- ];
178
-
179
- let currentAccount;
180
-
181
- blockchainService.dock = {
182
- ...dock,
183
- setAccount(account) {
184
- currentAccount = account;
185
- },
186
- did: {
187
- new: () => {
188
- if (
189
- currentAccount &&
190
- currentAccount.address === TestFixtures.noBalanceAccount.address
191
- ) {
192
- throw new Error(
193
- '1010: Invalid Transaction: Inability to pay some fees , e.g. account balance too low',
194
- );
195
- }
196
- return {
197
- txHash: 'hash',
198
- };
199
- },
200
- getDocument: () => ({
201
- '@context': ['https://www.w3.org/ns/did/v1'],
202
- assertionMethod: [
203
- 'did:dock:5HL5XB7CHcHT2ZUKjY2SCJvDAK11qoa1exgfVnVTHRbmjJQi#keys-1',
204
- ],
205
- authentication: [
206
- 'did:dock:5HL5XB7CHcHT2ZUKjY2SCJvDAK11qoa1exgfVnVTHRbmjJQi#keys-1',
207
- ],
208
- capabilityInvocation: [
209
- 'did:dock:5HL5XB7CHcHT2ZUKjY2SCJvDAK11qoa1exgfVnVTHRbmjJQi#keys-1',
210
- ],
211
- controller: [
212
- 'did:dock:5HL5XB7CHcHT2ZUKjY2SCJvDAK11qoa1exgfVnVTHRbmjJQi',
213
- ],
214
- id: 'did:dock:5HL5XB7CHcHT2ZUKjY2SCJvDAK11qoa1exgfVnVTHRbmjJQi',
215
- publicKey: [
216
- {
217
- controller:
218
- 'did:dock:5HL5XB7CHcHT2ZUKjY2SCJvDAK11qoa1exgfVnVTHRbmjJQi',
219
- id: 'did:dock:5HL5XB7CHcHT2ZUKjY2SCJvDAK11qoa1exgfVnVTHRbmjJQi#keys-1',
220
- publicKeyBase58: '8UDojkFBh5RopLKZredz8uVZV5U579voUwQFyYDmgBM3',
221
- type: 'Sr25519VerificationKey2020',
222
- },
223
- ],
224
- }),
225
- },
226
- keyring: {
227
- createFromPair: jest.fn(() => {
228
- const kr = new Keyring();
229
- return kr.createFromUri('//Alice');
230
- }),
231
- },
232
- };
233
-
234
- return {
235
- result,
236
- clear: () => mocks.forEach(mock => mock.mockClear()),
237
- };
238
- }
239
-
240
33
  export async function getPromiseError(func) {
241
34
  try {
242
35
  return await func();