@docknetwork/wallet-sdk-wasm 1.7.6 → 1.9.0

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 (327) hide show
  1. package/package.json +6 -7
  2. package/rollup.config.mjs +1 -0
  3. package/src/globals.d.ts +4 -1
  4. package/src/services/blockchain/cached-did-resolver.ts +4 -3
  5. package/src/services/blockchain/normalize-did-document.ts +73 -0
  6. package/src/services/blockchain/service.ts +0 -2
  7. package/src/services/credential/bbs-revocation.test.js +147 -0
  8. package/src/services/credential/bbs-revocation.ts +65 -18
  9. package/src/services/credential/config.ts +7 -0
  10. package/src/services/credential/index.test.js +261 -17
  11. package/src/services/credential/oid4vci.js +44 -0
  12. package/src/services/credential/oid4vci.test.js +162 -0
  13. package/src/services/credential/pex-helpers.js +77 -31
  14. package/src/services/credential/pex-helpers.test.js +4 -4
  15. package/src/services/credential/sd-jwt.ts +41 -5
  16. package/src/services/credential/service-rpc.js +6 -0
  17. package/src/services/credential/service.ts +171 -16
  18. package/src/services/credential/utils.js +3 -5
  19. package/src/services/delegation/index.android.js +3 -0
  20. package/src/services/delegation/index.ios.js +3 -0
  21. package/src/services/delegation/index.ts +1 -0
  22. package/src/services/delegation/service-rpc.ts +21 -0
  23. package/src/services/delegation/service.ts +59 -0
  24. package/src/services/edv/service-rpc.js +18 -2
  25. package/src/services/edv/service.test.js +327 -0
  26. package/src/services/edv/service.ts +103 -13
  27. package/src/services/index.js +2 -0
  28. package/src/wallet/rpc-storage-interface.js +9 -4
  29. package/lib/core/crypto.js +0 -45
  30. package/lib/core/crypto.mjs +0 -33
  31. package/lib/core/format-utils.js +0 -51
  32. package/lib/core/format-utils.mjs +0 -42
  33. package/lib/core/keychain.js +0 -61
  34. package/lib/core/keychain.mjs +0 -37
  35. package/lib/core/logger.js +0 -13
  36. package/lib/core/logger.mjs +0 -9
  37. package/lib/core/storage.js +0 -14
  38. package/lib/core/storage.mjs +0 -9
  39. package/lib/core/validation.js +0 -29
  40. package/lib/core/validation.mjs +0 -16
  41. package/lib/core/webview-logger.js +0 -49
  42. package/lib/core/webview-logger.mjs +0 -41
  43. package/lib/errors.js +0 -17
  44. package/lib/errors.mjs +0 -12
  45. package/lib/events.js +0 -18
  46. package/lib/events.mjs +0 -13
  47. package/lib/index.js +0 -146
  48. package/lib/index.mjs +0 -144
  49. package/lib/logger.js +0 -22
  50. package/lib/logger.mjs +0 -17
  51. package/lib/modules/event-manager.js +0 -46
  52. package/lib/modules/event-manager.mjs +0 -37
  53. package/lib/modules/network-manager.js +0 -80
  54. package/lib/modules/network-manager.mjs +0 -71
  55. package/lib/mrklt.js +0 -2
  56. package/lib/mrklt.mjs +0 -1
  57. package/lib/rpc-client.js +0 -83
  58. package/lib/rpc-client.mjs +0 -73
  59. package/lib/rpc-server.js +0 -97
  60. package/lib/rpc-server.mjs +0 -95
  61. package/lib/rpc-util.js +0 -113
  62. package/lib/rpc-util.mjs +0 -103
  63. package/lib/sandbox-rpc-server.js +0 -28
  64. package/lib/sandbox-rpc-server.mjs +0 -26
  65. package/lib/sandbox.js +0 -102
  66. package/lib/sandbox.mjs +0 -100
  67. package/lib/services/blockchain/cached-did-resolver.js +0 -113
  68. package/lib/services/blockchain/cached-did-resolver.mjs +0 -109
  69. package/lib/services/blockchain/configs.js +0 -7
  70. package/lib/services/blockchain/configs.mjs +0 -3
  71. package/lib/services/blockchain/index.android.js +0 -18
  72. package/lib/services/blockchain/index.android.mjs +0 -14
  73. package/lib/services/blockchain/index.ios.js +0 -18
  74. package/lib/services/blockchain/index.ios.mjs +0 -14
  75. package/lib/services/blockchain/index.js +0 -36
  76. package/lib/services/blockchain/index.mjs +0 -28
  77. package/lib/services/blockchain/service-rpc.js +0 -72
  78. package/lib/services/blockchain/service-rpc.mjs +0 -68
  79. package/lib/services/blockchain/service.js +0 -312
  80. package/lib/services/blockchain/service.mjs +0 -306
  81. package/lib/services/credential/bbs-revocation.js +0 -92
  82. package/lib/services/credential/bbs-revocation.mjs +0 -87
  83. package/lib/services/credential/bound-check.js +0 -77
  84. package/lib/services/credential/bound-check.mjs +0 -64
  85. package/lib/services/credential/config.js +0 -56
  86. package/lib/services/credential/config.mjs +0 -47
  87. package/lib/services/credential/delegatable-credentials.js +0 -300
  88. package/lib/services/credential/delegatable-credentials.mjs +0 -263
  89. package/lib/services/credential/index.android.js +0 -19
  90. package/lib/services/credential/index.android.mjs +0 -15
  91. package/lib/services/credential/index.ios.js +0 -19
  92. package/lib/services/credential/index.ios.mjs +0 -15
  93. package/lib/services/credential/index.js +0 -106
  94. package/lib/services/credential/index.mjs +0 -67
  95. package/lib/services/credential/pex-helpers.js +0 -333
  96. package/lib/services/credential/pex-helpers.mjs +0 -319
  97. package/lib/services/credential/range-proofs-example.js +0 -107
  98. package/lib/services/credential/range-proofs-example.mjs +0 -103
  99. package/lib/services/credential/sd-jwt.js +0 -214
  100. package/lib/services/credential/sd-jwt.mjs +0 -200
  101. package/lib/services/credential/service-rpc.js +0 -61
  102. package/lib/services/credential/service-rpc.mjs +0 -57
  103. package/lib/services/credential/service.js +0 -683
  104. package/lib/services/credential/service.mjs +0 -672
  105. package/lib/services/credential/utils.js +0 -103
  106. package/lib/services/credential/utils.mjs +0 -78
  107. package/lib/services/dids/config.js +0 -40
  108. package/lib/services/dids/config.mjs +0 -31
  109. package/lib/services/dids/index.android.js +0 -19
  110. package/lib/services/dids/index.android.mjs +0 -15
  111. package/lib/services/dids/index.ios.js +0 -19
  112. package/lib/services/dids/index.ios.mjs +0 -15
  113. package/lib/services/dids/index.js +0 -23
  114. package/lib/services/dids/index.mjs +0 -19
  115. package/lib/services/dids/keypair-utils.js +0 -142
  116. package/lib/services/dids/keypair-utils.mjs +0 -113
  117. package/lib/services/dids/service-rpc.js +0 -37
  118. package/lib/services/dids/service-rpc.mjs +0 -33
  119. package/lib/services/dids/service.js +0 -100
  120. package/lib/services/dids/service.mjs +0 -92
  121. package/lib/services/edv/configs.js +0 -25
  122. package/lib/services/edv/configs.mjs +0 -16
  123. package/lib/services/edv/hmac.js +0 -88
  124. package/lib/services/edv/hmac.mjs +0 -63
  125. package/lib/services/edv/index.android.js +0 -19
  126. package/lib/services/edv/index.android.mjs +0 -15
  127. package/lib/services/edv/index.ios.js +0 -19
  128. package/lib/services/edv/index.ios.mjs +0 -15
  129. package/lib/services/edv/index.js +0 -32
  130. package/lib/services/edv/index.mjs +0 -24
  131. package/lib/services/edv/service-rpc.js +0 -78
  132. package/lib/services/edv/service-rpc.mjs +0 -74
  133. package/lib/services/edv/service.js +0 -370
  134. package/lib/services/edv/service.mjs +0 -357
  135. package/lib/services/index.js +0 -94
  136. package/lib/services/index.mjs +0 -92
  137. package/lib/services/pex/config.js +0 -29
  138. package/lib/services/pex/config.mjs +0 -20
  139. package/lib/services/pex/index.android.js +0 -19
  140. package/lib/services/pex/index.android.mjs +0 -15
  141. package/lib/services/pex/index.ios.js +0 -19
  142. package/lib/services/pex/index.ios.mjs +0 -15
  143. package/lib/services/pex/index.js +0 -12
  144. package/lib/services/pex/index.mjs +0 -4
  145. package/lib/services/pex/service-rpc.js +0 -39
  146. package/lib/services/pex/service-rpc.mjs +0 -35
  147. package/lib/services/pex/service.js +0 -91
  148. package/lib/services/pex/service.mjs +0 -86
  149. package/lib/services/pex/tests/jest.config.js +0 -25
  150. package/lib/services/pex/tests/jest.config.mjs +0 -23
  151. package/lib/services/relay-service/configs.js +0 -45
  152. package/lib/services/relay-service/configs.mjs +0 -36
  153. package/lib/services/relay-service/index.android.js +0 -21
  154. package/lib/services/relay-service/index.android.mjs +0 -17
  155. package/lib/services/relay-service/index.ios.js +0 -21
  156. package/lib/services/relay-service/index.ios.mjs +0 -17
  157. package/lib/services/relay-service/index.js +0 -14
  158. package/lib/services/relay-service/index.mjs +0 -6
  159. package/lib/services/relay-service/service-rpc.js +0 -47
  160. package/lib/services/relay-service/service-rpc.mjs +0 -43
  161. package/lib/services/relay-service/service.js +0 -181
  162. package/lib/services/relay-service/service.mjs +0 -173
  163. package/lib/services/rpc-service-client.js +0 -36
  164. package/lib/services/rpc-service-client.mjs +0 -28
  165. package/lib/services/sandbox.js +0 -10
  166. package/lib/services/sandbox.mjs +0 -8
  167. package/lib/services/storage/configs.js +0 -7
  168. package/lib/services/storage/configs.mjs +0 -3
  169. package/lib/services/storage/index.android.js +0 -18
  170. package/lib/services/storage/index.android.mjs +0 -14
  171. package/lib/services/storage/index.ios.js +0 -18
  172. package/lib/services/storage/index.ios.mjs +0 -14
  173. package/lib/services/storage/index.js +0 -26
  174. package/lib/services/storage/index.mjs +0 -24
  175. package/lib/services/storage/service-rpc.js +0 -37
  176. package/lib/services/storage/service-rpc.mjs +0 -33
  177. package/lib/services/storage/service.js +0 -32
  178. package/lib/services/storage/service.mjs +0 -27
  179. package/lib/services/test-utils.js +0 -98
  180. package/lib/services/test-utils.mjs +0 -84
  181. package/lib/services/util-crypto/configs.js +0 -23
  182. package/lib/services/util-crypto/configs.mjs +0 -15
  183. package/lib/services/util-crypto/index.android.js +0 -19
  184. package/lib/services/util-crypto/index.android.mjs +0 -15
  185. package/lib/services/util-crypto/index.ios.js +0 -19
  186. package/lib/services/util-crypto/index.ios.mjs +0 -15
  187. package/lib/services/util-crypto/index.js +0 -14
  188. package/lib/services/util-crypto/index.mjs +0 -6
  189. package/lib/services/util-crypto/service-rpc.js +0 -42
  190. package/lib/services/util-crypto/service-rpc.mjs +0 -38
  191. package/lib/services/util-crypto/service.js +0 -108
  192. package/lib/services/util-crypto/service.mjs +0 -83
  193. package/lib/services/wallet/configs.js +0 -32
  194. package/lib/services/wallet/configs.mjs +0 -23
  195. package/lib/services/wallet/index.android.js +0 -21
  196. package/lib/services/wallet/index.android.mjs +0 -17
  197. package/lib/services/wallet/index.ios.js +0 -21
  198. package/lib/services/wallet/index.ios.mjs +0 -17
  199. package/lib/services/wallet/index.js +0 -17
  200. package/lib/services/wallet/index.mjs +0 -9
  201. package/lib/services/wallet/service-rpc.js +0 -33
  202. package/lib/services/wallet/service-rpc.mjs +0 -29
  203. package/lib/services/wallet/service.js +0 -62
  204. package/lib/services/wallet/service.mjs +0 -57
  205. package/lib/setup-nodejs.js +0 -93
  206. package/lib/setup-nodejs.mjs +0 -91
  207. package/lib/setup-tests.js +0 -92
  208. package/lib/setup-tests.mjs +0 -90
  209. package/lib/src/core/crypto.d.ts +0 -8
  210. package/lib/src/core/crypto.d.ts.map +0 -1
  211. package/lib/src/core/format-utils.d.ts +0 -26
  212. package/lib/src/core/format-utils.d.ts.map +0 -1
  213. package/lib/src/core/logger.d.ts +0 -3
  214. package/lib/src/core/logger.d.ts.map +0 -1
  215. package/lib/src/core/storage.d.ts +0 -8
  216. package/lib/src/core/storage.d.ts.map +0 -1
  217. package/lib/src/core/validation.d.ts +0 -6
  218. package/lib/src/core/validation.d.ts.map +0 -1
  219. package/lib/src/errors.d.ts +0 -7
  220. package/lib/src/errors.d.ts.map +0 -1
  221. package/lib/src/logger.d.ts +0 -5
  222. package/lib/src/logger.d.ts.map +0 -1
  223. package/lib/src/modules/event-manager.d.ts +0 -12
  224. package/lib/src/modules/event-manager.d.ts.map +0 -1
  225. package/lib/src/modules/network-manager.d.ts +0 -32
  226. package/lib/src/modules/network-manager.d.ts.map +0 -1
  227. package/lib/src/rpc-client.d.ts +0 -4
  228. package/lib/src/rpc-client.d.ts.map +0 -1
  229. package/lib/src/rpc-util.d.ts +0 -11
  230. package/lib/src/rpc-util.d.ts.map +0 -1
  231. package/lib/src/services/blockchain/cached-did-resolver.d.ts +0 -28
  232. package/lib/src/services/blockchain/cached-did-resolver.d.ts.map +0 -1
  233. package/lib/src/services/blockchain/cached-did-resolver.test.d.ts +0 -2
  234. package/lib/src/services/blockchain/cached-did-resolver.test.d.ts.map +0 -1
  235. package/lib/src/services/blockchain/configs.d.ts +0 -7
  236. package/lib/src/services/blockchain/configs.d.ts.map +0 -1
  237. package/lib/src/services/blockchain/service.d.ts +0 -155
  238. package/lib/src/services/blockchain/service.d.ts.map +0 -1
  239. package/lib/src/services/credential/bbs-revocation.d.ts +0 -10
  240. package/lib/src/services/credential/bbs-revocation.d.ts.map +0 -1
  241. package/lib/src/services/credential/bound-check.d.ts +0 -61
  242. package/lib/src/services/credential/bound-check.d.ts.map +0 -1
  243. package/lib/src/services/credential/bound-check.test.d.ts +0 -2
  244. package/lib/src/services/credential/bound-check.test.d.ts.map +0 -1
  245. package/lib/src/services/credential/config.d.ts +0 -10
  246. package/lib/src/services/credential/config.d.ts.map +0 -1
  247. package/lib/src/services/credential/delegatable-credentials.d.ts +0 -272
  248. package/lib/src/services/credential/delegatable-credentials.d.ts.map +0 -1
  249. package/lib/src/services/credential/index.d.ts +0 -35
  250. package/lib/src/services/credential/index.d.ts.map +0 -1
  251. package/lib/src/services/credential/pex-helpers.d.ts +0 -23
  252. package/lib/src/services/credential/pex-helpers.d.ts.map +0 -1
  253. package/lib/src/services/credential/range-proofs-example.d.ts +0 -2
  254. package/lib/src/services/credential/range-proofs-example.d.ts.map +0 -1
  255. package/lib/src/services/credential/sd-jwt.test.d.ts +0 -2
  256. package/lib/src/services/credential/sd-jwt.test.d.ts.map +0 -1
  257. package/lib/src/services/credential/service.d.ts +0 -313
  258. package/lib/src/services/credential/service.d.ts.map +0 -1
  259. package/lib/src/services/credential/utils.d.ts +0 -3
  260. package/lib/src/services/credential/utils.d.ts.map +0 -1
  261. package/lib/src/services/dids/config.d.ts +0 -24
  262. package/lib/src/services/dids/config.d.ts.map +0 -1
  263. package/lib/src/services/dids/keypair-utils.d.ts +0 -15
  264. package/lib/src/services/dids/keypair-utils.d.ts.map +0 -1
  265. package/lib/src/services/dids/service-rpc.d.ts +0 -11
  266. package/lib/src/services/dids/service-rpc.d.ts.map +0 -1
  267. package/lib/src/services/dids/service.d.ts +0 -70
  268. package/lib/src/services/dids/service.d.ts.map +0 -1
  269. package/lib/src/services/edv/configs.d.ts +0 -12
  270. package/lib/src/services/edv/configs.d.ts.map +0 -1
  271. package/lib/src/services/edv/hmac.d.ts +0 -29
  272. package/lib/src/services/edv/hmac.d.ts.map +0 -1
  273. package/lib/src/services/edv/service.d.ts +0 -229
  274. package/lib/src/services/edv/service.d.ts.map +0 -1
  275. package/lib/src/services/pex/config.d.ts +0 -21
  276. package/lib/src/services/pex/config.d.ts.map +0 -1
  277. package/lib/src/services/pex/service.d.ts +0 -21
  278. package/lib/src/services/pex/service.d.ts.map +0 -1
  279. package/lib/src/services/relay-service/configs.d.ts +0 -35
  280. package/lib/src/services/relay-service/configs.d.ts.map +0 -1
  281. package/lib/src/services/relay-service/service-rpc.d.ts +0 -12
  282. package/lib/src/services/relay-service/service-rpc.d.ts.map +0 -1
  283. package/lib/src/services/relay-service/service.d.ts +0 -159
  284. package/lib/src/services/relay-service/service.d.ts.map +0 -1
  285. package/lib/src/services/rpc-service-client.d.ts +0 -7
  286. package/lib/src/services/rpc-service-client.d.ts.map +0 -1
  287. package/lib/src/services/storage/configs.d.ts +0 -2
  288. package/lib/src/services/storage/configs.d.ts.map +0 -1
  289. package/lib/src/services/storage/index.d.ts +0 -2
  290. package/lib/src/services/storage/index.d.ts.map +0 -1
  291. package/lib/src/services/storage/service-rpc.d.ts +0 -9
  292. package/lib/src/services/storage/service-rpc.d.ts.map +0 -1
  293. package/lib/src/services/storage/service.d.ts +0 -10
  294. package/lib/src/services/storage/service.d.ts.map +0 -1
  295. package/lib/src/services/util-crypto/configs.d.ts +0 -5
  296. package/lib/src/services/util-crypto/configs.d.ts.map +0 -1
  297. package/lib/src/services/util-crypto/index.d.ts +0 -2
  298. package/lib/src/services/util-crypto/index.d.ts.map +0 -1
  299. package/lib/src/services/util-crypto/service.d.ts +0 -10
  300. package/lib/src/services/util-crypto/service.d.ts.map +0 -1
  301. package/lib/src/services/wallet/configs.d.ts +0 -13
  302. package/lib/src/services/wallet/configs.d.ts.map +0 -1
  303. package/lib/src/services/wallet/service.d.ts +0 -13
  304. package/lib/src/services/wallet/service.d.ts.map +0 -1
  305. package/lib/src/types.d.ts +0 -12
  306. package/lib/src/types.d.ts.map +0 -1
  307. package/lib/src/wallet/memory-storage-interface.d.ts +0 -31
  308. package/lib/src/wallet/memory-storage-interface.d.ts.map +0 -1
  309. package/lib/src/wallet/memory-storage-wallet.d.ts +0 -6
  310. package/lib/src/wallet/memory-storage-wallet.d.ts.map +0 -1
  311. package/lib/src/wallet/rpc-storage-interface.d.ts +0 -32
  312. package/lib/src/wallet/rpc-storage-interface.d.ts.map +0 -1
  313. package/lib/src/wallet/rpc-storage-wallet.d.ts +0 -6
  314. package/lib/src/wallet/rpc-storage-wallet.d.ts.map +0 -1
  315. package/lib/test-utils.js +0 -46
  316. package/lib/test-utils.mjs +0 -38
  317. package/lib/tsconfig.tsbuildinfo +0 -1
  318. package/lib/types.js +0 -7
  319. package/lib/types.mjs +0 -3
  320. package/lib/wallet/memory-storage-interface.js +0 -101
  321. package/lib/wallet/memory-storage-interface.mjs +0 -95
  322. package/lib/wallet/memory-storage-wallet.js +0 -30
  323. package/lib/wallet/memory-storage-wallet.mjs +0 -24
  324. package/lib/wallet/rpc-storage-interface.js +0 -134
  325. package/lib/wallet/rpc-storage-interface.mjs +0 -128
  326. package/lib/wallet/rpc-storage-wallet.js +0 -46
  327. package/lib/wallet/rpc-storage-wallet.mjs +0 -40
@@ -1,672 +0,0 @@
1
- import { serviceName, validation } from './config.mjs';
2
- import { Accumulator, WitnessUpdatePublicInfo, MembershipWitness, VB_ACCUMULATOR_22 } from '@docknetwork/crypto-wasm-ts';
3
- import { OpenID4VCIClientV1_0_13 } from '@sphereon/oid4vci-client';
4
- import { Alg } from '@sphereon/oid4vci-common';
5
- import { getKeypairFromDoc } from '@docknetwork/universal-wallet/methods/keypairs';
6
- import { hexToU8a } from '@docknetwork/credential-sdk/utils';
7
- import { VerifiableCredential, getSuiteFromKeyDoc, VerifiablePresentation, verifyPresentation, verifyCredential, Presentation } from '@docknetwork/credential-sdk/vc';
8
- import { PEX } from '@sphereon/pex';
9
- import { blockchainService } from '../blockchain/service.mjs';
10
- import { hasProvingKey, fetchProvingKey, applyEnforceBounds } from './bound-check.mjs';
11
- import assert from 'assert';
12
- import { getIsRevoked, getWitnessDetails } from './bbs-revocation.mjs';
13
- import { getPexRequiredAttributes, shouldSkipAttribute } from './pex-helpers.mjs';
14
- import { didService } from '../dids/service.mjs';
15
- import { createSDJWTPresentation, isSDJWTCredential, verifySDJWT, credentialToW3C } from './sd-jwt.mjs';
16
- import '@cosmjs/proto-signing';
17
- import '@docknetwork/cheqd-blockchain-api';
18
- import '@docknetwork/cheqd-blockchain-modules';
19
- import '@docknetwork/credential-sdk/modules';
20
- import '@docknetwork/credential-sdk/resolver';
21
- import '@docknetwork/crypto-wasm-ts/lib/index';
22
- import 'events';
23
- import '../../core/logger.mjs';
24
- import '../../modules/event-manager.mjs';
25
- import '../util-crypto/service.mjs';
26
- import '@scure/bip39';
27
- import '@scure/bip39/wordlists/english';
28
- import '../util-crypto/configs.mjs';
29
- import '@docknetwork/credential-sdk/types';
30
- import '../blockchain/cached-did-resolver.mjs';
31
- import '../storage/index.mjs';
32
- import '../storage/service.mjs';
33
- import '../storage/service-rpc.mjs';
34
- import '../rpc-service-client.mjs';
35
- import '../../rpc-client.mjs';
36
- import 'json-rpc-2.0';
37
- import '../../core/crypto.mjs';
38
- import 'crypto';
39
- import '../../logger.mjs';
40
- import '../../rpc-util.mjs';
41
- import '@docknetwork/crypto-wasm-ts/lib/legosnark';
42
- import 'base64url';
43
- import '@astronautlabs/jsonpath';
44
- import '@docknetwork/wallet-sdk-dids/lib';
45
- import '../dids/config.mjs';
46
- import '@docknetwork/credential-sdk/keypairs';
47
- import './utils.mjs';
48
- import 'base58-universal';
49
- import '@docknetwork/credential-sdk/vc/crypto';
50
- import '@digitalbazaar/x25519-key-agreement-key-2020';
51
- import '@digitalbazaar/x25519-key-agreement-key-2019';
52
- import '@digitalbazaar/ed25519-verification-key-2018';
53
- import '@digitalbazaar/ed25519-verification-key-2020';
54
- import '../dids/keypair-utils.mjs';
55
- import '@sd-jwt/sd-jwt-vc';
56
- import '@sd-jwt/crypto-nodejs';
57
-
58
- // @ts-nocheck
59
- /**
60
- * PEX (Presentation Exchange) instance for credential filtering
61
- * @private
62
- */
63
- const pex = new PEX();
64
- /**
65
- * Checks if a credential uses BBS+ signature
66
- * @param {Object} credential - The credential to check
67
- * @returns {boolean} True if the credential uses BBS+ signature
68
- * @example
69
- * const isBBS = isBBSPlusCredential(credential);
70
- * if (isBBS) {
71
- * console.log('This credential uses BBS+ signatures');
72
- * }
73
- */
74
- function isBBSPlusCredential(credential) {
75
- return ((typeof credential?.proof?.type === 'string' &&
76
- credential.proof.type.includes('BBS+SignatureDock')) ||
77
- (Array.isArray(credential['@context']) &&
78
- credential['@context'].find(context => typeof context === 'string' && context.indexOf('bbs') > -1)));
79
- }
80
- /**
81
- * Checks if a credential uses KVAC (BBDT16) signature
82
- * @param {Object} credential - The credential to check
83
- * @returns {boolean} True if the credential uses KVAC signature
84
- * @example
85
- * const isKVAC = isKvacCredential(credential);
86
- */
87
- function isKvacCredential(credential) {
88
- return (typeof credential?.proof?.type === 'string' &&
89
- credential.proof.type.toLowerCase().includes('bbdt16'));
90
- }
91
- /**
92
- * Checks if a credential is anonymous (BBS+ or KVAC)
93
- * @param {Object} credential - The credential to check
94
- * @returns {boolean} True if the credential is anonymous
95
- * @example
96
- * if (isAnnonymousCredential(credential)) {
97
- * console.log('This credential supports selective disclosure');
98
- * }
99
- */
100
- function isAnnonymousCredential(credential) {
101
- return isBBSPlusCredential(credential) || isKvacCredential(credential);
102
- }
103
- /**
104
- * Service class for managing verifiable credentials
105
- * @class
106
- * @description Provides methods for creating, signing, verifying, and presenting
107
- * verifiable credentials with support for various signature types
108
- */
109
- class CredentialService {
110
- /**
111
- * Creates a new CredentialService instance
112
- * @constructor
113
- */
114
- constructor() {
115
- this.name = serviceName;
116
- }
117
- rpcMethods = [
118
- CredentialService.prototype.generateCredential,
119
- CredentialService.prototype.signCredential,
120
- CredentialService.prototype.createPresentation,
121
- CredentialService.prototype.verifyCredential,
122
- CredentialService.prototype.createBBSPresentation,
123
- CredentialService.prototype.deriveVCFromPresentation,
124
- CredentialService.prototype.isBBSPlusCredential,
125
- CredentialService.prototype.isKvacCredential,
126
- CredentialService.prototype.isSDJWTCredential,
127
- CredentialService.prototype.credentialToW3C,
128
- CredentialService.prototype.createSDJWTPresentation,
129
- CredentialService.prototype.acquireOIDCredential,
130
- ];
131
- createSDJWTPresentation(params) {
132
- const { attributesToReveal, credential } = params;
133
- return createSDJWTPresentation({ attributesToReveal, credential });
134
- }
135
- /**
136
- * Generates a new verifiable credential template
137
- * @param {Object} [params={}] - Generation parameters
138
- * @param {Object} [params.subject] - The credential subject
139
- * @returns {VerifiableCredential} A new verifiable credential instance
140
- * @example
141
- * const credential = credentialService.generateCredential({
142
- * subject: { id: 'did:example:123', name: 'Alice' }
143
- * });
144
- */
145
- generateCredential(params = {}) {
146
- validation.generateCredential(params);
147
- const { subject } = params;
148
- const vc = new VerifiableCredential();
149
- vc.addType('DockAuthCredential');
150
- vc.addContext({
151
- dk: 'https://ld.dock.io/credentials#',
152
- DockAuthCredential: 'dk:DockAuthCredential',
153
- });
154
- if (subject) {
155
- vc.setSubject(subject);
156
- vc.addContext({
157
- state: 'dk:state',
158
- });
159
- }
160
- return vc;
161
- }
162
- /**
163
- * Signs a verifiable credential
164
- * @param {Object} params - Signing parameters
165
- * @param {Object} params.vcJson - The credential JSON to sign
166
- * @param {Object} params.keyDoc - The key document for signing
167
- * @returns {Promise<VerifiableCredential>} The signed verifiable credential
168
- * @throws {Error} If validation fails or signing fails
169
- * @example
170
- * const signedCredential = await credentialService.signCredential({
171
- * vcJson: credentialData,
172
- * keyDoc: issuerKeyDocument
173
- * });
174
- */
175
- async signCredential(params) {
176
- validation.signCredential(params);
177
- const { vcJson, keyDoc } = params;
178
- const verifiableCredential = new VerifiableCredential();
179
- verifiableCredential.setFromJSON(vcJson);
180
- const kp = getKeypairFromDoc(keyDoc);
181
- kp.signer = kp.signer();
182
- const suite = await getSuiteFromKeyDoc(kp);
183
- verifiableCredential.setIssuer(keyDoc.controller);
184
- await verifiableCredential.sign(suite);
185
- return verifiableCredential;
186
- }
187
- /**
188
- * Creates a verifiable presentation from credentials
189
- * @param {Object} params - Presentation parameters
190
- * @param {Array<Object>} params.credentials - Array of verifiable credentials to include
191
- * @param {Object} params.keyDoc - The key document for signing the presentation
192
- * @param {string} [params.challenge] - Challenge string for the presentation proof
193
- * @param {string} [params.id] - Presentation identifier
194
- * @param {string} [params.domain] - Domain for the presentation proof
195
- * @returns {Promise<Object>} The signed verifiable presentation
196
- * @throws {Error} If validation fails
197
- * @example
198
- * const presentation = await credentialService.createPresentation({
199
- * credentials: [credential1, credential2],
200
- * keyDoc: holderKeyDocument,
201
- * challenge: 'abc123',
202
- * domain: 'example.com'
203
- * });
204
- */
205
- async createPresentation(params) {
206
- validation.createPresentation(params);
207
- const { credentials, keyDoc, challenge, id, domain } = params;
208
- const vp = new VerifiablePresentation(id);
209
- let shouldSkipSigning = false;
210
- let jwtCredentials = [];
211
- for (const signedVC of credentials) {
212
- if (typeof signedVC === 'string') {
213
- jwtCredentials.push(signedVC);
214
- shouldSkipSigning = true;
215
- }
216
- else {
217
- vp.addCredential(signedVC);
218
- }
219
- shouldSkipSigning = shouldSkipSigning || isAnnonymousCredential(signedVC);
220
- }
221
- if (!shouldSkipSigning) {
222
- vp.setHolder(keyDoc.controller);
223
- }
224
- const keyPair = getKeypairFromDoc(keyDoc);
225
- keyPair.signer = keyPair.signer();
226
- const suite = await getSuiteFromKeyDoc(keyPair);
227
- if (shouldSkipSigning) {
228
- const result = vp.toJSON();
229
- result.verifiableCredential.push(...jwtCredentials);
230
- return result;
231
- }
232
- return vp.sign(suite, challenge, domain, blockchainService.resolver);
233
- }
234
- /**
235
- * Verifies a verifiable presentation
236
- * @param {Object} params - Verification parameters
237
- * @param {Object} params.presentation - The presentation to verify
238
- * @param {Object} [params.options] - Verification options
239
- * @returns {Promise<Object>} Verification result with verified status and any errors
240
- * @example
241
- * const result = await credentialService.verifyPresentation({
242
- * presentation: presentationData
243
- * });
244
- * console.log('Verified:', result.verified);
245
- */
246
- async verifyPresentation({ presentation, options }) {
247
- return verifyPresentation(presentation, options);
248
- }
249
- /**
250
- * Verifies a verifiable credential including revocation check
251
- * @param {Object} params - Verification parameters
252
- * @param {Object} params.credential - The credential to verify
253
- * @param {Object} [params.membershipWitness] - Membership witness for revocation check
254
- * @returns {Promise<Object>} Verification result
255
- * @returns {boolean} returns.verified - Whether the credential is valid
256
- * @returns {string} [returns.error] - Error message if verification failed
257
- * @throws {Error} If validation fails
258
- * @example
259
- * const result = await credentialService.verifyCredential({
260
- * credential: credentialData,
261
- * membershipWitness: witnessData
262
- * });
263
- * if (!result.verified) {
264
- * console.error('Verification failed:', result.error);
265
- * }
266
- */
267
- async verifyCredential(params) {
268
- validation.verifyCredential(params);
269
- let { credential, membershipWitness } = params;
270
- if (credential._sd_jwt) {
271
- credential = credential?._sd_jwt?.encoded;
272
- }
273
- if (typeof credential === 'string' && isSDJWTCredential(credential)) {
274
- return verifySDJWT(credential);
275
- }
276
- const result = await verifyCredential(credential, {
277
- resolver: blockchainService.resolver,
278
- revocationApi: { dock: blockchainService.dock },
279
- });
280
- const { credentialStatus } = credential;
281
- if (result.verified && credentialStatus?.id) {
282
- try {
283
- const isRevoked = await getIsRevoked(credential, membershipWitness);
284
- if (isRevoked) {
285
- result.verified = false;
286
- result.error = 'revocation check: the credential is revoked';
287
- }
288
- }
289
- catch (err) {
290
- console.log('Unable to get revocation status');
291
- console.error(err);
292
- }
293
- }
294
- return result;
295
- }
296
- /**
297
- * Filters credentials based on a presentation definition
298
- * @param {Object} params - Filter parameters
299
- * @param {Array<Object>} params.credentials - Array of credentials to filter
300
- * @param {Object} params.presentationDefinition - PEX presentation definition
301
- * @param {string} [params.holderDid] - DID of the credential holder
302
- * @returns {Object} Filtered credentials matching the presentation definition
303
- * @example
304
- * const filtered = credentialService.filterCredentials({
305
- * credentials: allCredentials,
306
- * presentationDefinition: definition,
307
- * holderDid: 'did:example:holder'
308
- * });
309
- */
310
- filterCredentials(params) {
311
- const { credentials, presentationDefinition, holderDid } = params;
312
- const result = pex.selectFrom(presentationDefinition, credentials, holderDid);
313
- return result;
314
- }
315
- /**
316
- * Evaluates a presentation against a presentation definition
317
- * @param {Object} params - Evaluation parameters
318
- * @param {Object} params.presentation - The presentation to evaluate
319
- * @param {Object} params.presentationDefinition - PEX presentation definition
320
- * @returns {Object} Evaluation result with validation details
321
- * @example
322
- * const evaluation = credentialService.evaluatePresentation({
323
- * presentation: presentationData,
324
- * presentationDefinition: definition
325
- * });
326
- */
327
- evaluatePresentation(params) {
328
- const { presentation, presentationDefinition } = params;
329
- const result = pex.evaluatePresentation(presentationDefinition, presentation);
330
- return result;
331
- }
332
- /**
333
- * Checks if a credential uses BBS+ signature
334
- * @param {Object} params - Check parameters
335
- * @param {Object} params.credential - The credential to check
336
- * @returns {boolean} True if the credential uses BBS+ signature
337
- */
338
- isBBSPlusCredential(params) {
339
- const { credential } = params;
340
- return isBBSPlusCredential(credential);
341
- }
342
- /**
343
- * Checks if a credential uses KVAC signature
344
- * @param {Object} params - Check parameters
345
- * @param {Object} params.credential - The credential to check
346
- * @returns {boolean} True if the credential uses KVAC signature
347
- */
348
- isKvacCredential(params) {
349
- const { credential } = params;
350
- return isKvacCredential(credential);
351
- }
352
- /**
353
- * Checks if a credential is an SD-JWT (Selective Disclosure JWT) credential
354
- * @param {Object} params - Check parameters
355
- * @param {string} params.credential - The JWT string to check
356
- * @returns {boolean} True if the credential is an SD-JWT credential
357
- * @example
358
- * const isSDJWT = credentialService.isSDJWTCredential({
359
- * credential: 'eyJ0eXAiOiJ2YytzZC1qd3Q...'
360
- * });
361
- */
362
- isSDJWTCredential(params) {
363
- const { credential } = params;
364
- return isSDJWTCredential(credential);
365
- }
366
- /**
367
- * Converts a credential to W3C Verifiable Credential format
368
- * @description Handles both SD-JWT credentials (needs decoding) and regular W3C credentials (returns as-is)
369
- * @param {Object} params - Conversion parameters
370
- * @param {string|Object} params.credential - Either an SD-JWT string or a credential object
371
- * @returns {Promise<Object>} W3C Verifiable Credential format
372
- * @throws {Error} If credential cannot be converted to W3C format
373
- * @example
374
- * // Convert SD-JWT to W3C format
375
- * const w3cCredential = await credentialService.credentialToW3C({
376
- * credential: 'eyJ0eXAiOiJ2YytzZC1qd3Q...'
377
- * });
378
- *
379
- * // Returns W3C credential as-is
380
- * const w3cCredential = await credentialService.credentialToW3C({
381
- * credential: { '@context': [...], type: [...], ... }
382
- * });
383
- */
384
- async credentialToW3C(params) {
385
- const { credential } = params;
386
- return credentialToW3C(credential);
387
- }
388
- /**
389
- * Acquires a credential through OpenID for Verifiable Credentials (OID4VC)
390
- * @param {Object} params - Acquisition parameters
391
- * @param {string} params.uri - The credential offer URI
392
- * @param {string} [params.authorizationCode] - Authorization code if required
393
- * @param {Object} params.holderKeyDocument - Key document for the credential holder
394
- * @returns {Promise<Object>} Result containing the credential or authorization URL
395
- * @returns {Object} [returns.credential] - The acquired credential
396
- * @returns {string} [returns.authorizationURL] - Authorization URL if auth is required
397
- * @example
398
- * const result = await credentialService.acquireOIDCredential({
399
- * uri: 'openid-credential-offer://...',
400
- * holderKeyDocument: keyDoc
401
- * });
402
- */
403
- async acquireOIDCredential({ uri, authorizationCode, holderKeyDocument, }) {
404
- const searchParams = new URL(uri).searchParams;
405
- new URLSearchParams(searchParams);
406
- const client = await OpenID4VCIClientV1_0_13.fromURI({
407
- uri: uri,
408
- clientId: 'dock.wallet',
409
- authorizationRequest: {
410
- redirectUri: 'dock-wallet://credentials/callback',
411
- clientId: 'dock.wallet',
412
- // Hack: we need the scope property to avoid 'CredentialOffer format is wrong.' error
413
- scope: []
414
- },
415
- });
416
- const format = 'ldp_vc';
417
- const { scope } = client.getCredentialsSupported()[0];
418
- const scopeSplit = scope.split(':');
419
- const credentialTypes = scopeSplit[scopeSplit.length - 1];
420
- let code;
421
- if (client.credentialOffer?.preAuthorizedCode) {
422
- code = client.credentialOffer?.preAuthorizedCode;
423
- }
424
- else {
425
- if (authorizationCode) {
426
- code = authorizationCode;
427
- }
428
- else {
429
- return {
430
- authorizationURL: client.authorizationURL,
431
- };
432
- }
433
- }
434
- await client.acquireAccessToken({
435
- code,
436
- });
437
- try {
438
- const response = await client.acquireCredentials({
439
- credentialTypes,
440
- proofCallbacks: {
441
- signCallback: async (args) => {
442
- // use service method here
443
- const jwt = await didService.createSignedJWT({
444
- payload: args.payload,
445
- privateKeyDoc: holderKeyDocument,
446
- headerInput: args.header,
447
- });
448
- return jwt;
449
- },
450
- },
451
- context: 'truverawallet',
452
- format: format,
453
- alg: Alg.EdDSA,
454
- kid: holderKeyDocument.id,
455
- });
456
- return {
457
- credential: response.credential,
458
- };
459
- }
460
- catch (err) {
461
- console.error(err);
462
- }
463
- }
464
- /**
465
- * Creates a BBS+ presentation with selective disclosure
466
- * @param {Object} params - Presentation parameters
467
- * @param {Array<Object>} params.credentials - Array of credentials with attributes to reveal
468
- * @param {Object} params.credentials[].credential - The BBS+ credential
469
- * @param {Array<string>} [params.credentials[].attributesToReveal] - Attributes to reveal
470
- * @returns {Promise<Object>} The BBS+ presentation
471
- * @throws {Error} If validation fails
472
- * @example
473
- * const presentation = await credentialService.createBBSPresentation({
474
- * credentials: [{
475
- * credential: bbsCredential,
476
- * attributesToReveal: ['name', 'age']
477
- * }]
478
- * });
479
- */
480
- async createBBSPresentation(params) {
481
- validation.createBBSPresentation(params);
482
- const { credentials } = params;
483
- const bbsPlusPresentation = new Presentation();
484
- for (const { credential, attributesToReveal } of credentials) {
485
- const idx = await bbsPlusPresentation.addCredentialToPresent(credential, {
486
- resolver: blockchainService.resolver,
487
- });
488
- if (Array.isArray(attributesToReveal) && attributesToReveal.length > 0) {
489
- await bbsPlusPresentation.addAttributeToReveal(idx, attributesToReveal);
490
- }
491
- }
492
- return bbsPlusPresentation.createPresentation();
493
- }
494
- /**
495
- * Gets the accumulator ID from a credential's status
496
- * @param {Object} params - Parameters
497
- * @param {Object} params.credential - The credential to get accumulator ID from
498
- * @returns {string|null} The accumulator ID or null if not present
499
- * @throws {Error} If credential is not provided
500
- */
501
- getAccumulatorId({ credential }) {
502
- assert(!!credential, `credential is required`);
503
- if (!credential?.credentialStatus) {
504
- return null;
505
- }
506
- return credential?.credentialStatus.id;
507
- }
508
- /**
509
- * Gets accumulator data from the blockchain for a credential
510
- * @param {Object} params - Parameters
511
- * @param {Object} params.credential - The credential to get accumulator data for
512
- * @returns {Promise<Object|null>} The accumulator data or null if not found
513
- * @throws {Error} If credential is not provided
514
- */
515
- async getAccumulatorData({ credential }) {
516
- assert(!!credential, `credential is required`);
517
- const accumulatorId = await this.getAccumulatorId({ credential });
518
- if (!accumulatorId) {
519
- return null;
520
- }
521
- return blockchainService.dock.accumulatorModule.getAccumulator(accumulatorId, false);
522
- }
523
- /**
524
- * Updates the membership witness with the latest accumulator state
525
- * @description The witness is generated by the issuer when the credential is created
526
- * and is stored in the wallet when the credential is imported. This method updates
527
- * it with the latest accumulator changes from the blockchain.
528
- * @param {Object} params - Update parameters
529
- * @param {Object} params.credential - The credential with revocation status
530
- * @param {Object} params.membershipWitnessJSON - Current membership witness in JSON format
531
- * @returns {Promise<Object>} Updated membership witness in JSON format
532
- * @throws {Error} If updates cannot be fetched or applied
533
- */
534
- async updateMembershipWitness({ credential, membershipWitnessJSON }) {
535
- const revocationId = credential.credentialStatus.revocationId;
536
- const member = Accumulator.encodePositiveNumberAsAccumulatorMember(revocationId);
537
- let updates = [];
538
- try {
539
- updates = await dock.accumulatorModule.getUpdatesFromBlock(accumulatorId, accumulator.lastModified);
540
- }
541
- catch (err) {
542
- if (err.code === -32000) {
543
- console.error(err);
544
- // "-32000: Client error: UnknownBlock: State already discarded for BlockId::Hash(<hash>)"
545
- // This means that the node has discarded old blocks to preserve space. This should not happen with a full node
546
- updates = [];
547
- }
548
- else {
549
- throw err;
550
- }
551
- }
552
- const additions = [];
553
- const removals = [];
554
- if (updates.length && updates[0].additions !== null) {
555
- for (const a of updates[0].additions) {
556
- additions.push(hexToU8a(a));
557
- }
558
- }
559
- if (updates.length && updates[0].removals !== null) {
560
- for (const a of updates[0].removals) {
561
- removals.push(hexToU8a(a));
562
- }
563
- }
564
- const queriedWitnessInfo = new WitnessUpdatePublicInfo(hexToU8a(updates[0].witnessUpdateInfo));
565
- const witness = MembershipWitness.fromJSON(membershipWitnessJSON);
566
- witness.updateUsingPublicInfoPostBatchUpdate(member, additions, removals, queriedWitnessInfo);
567
- return witness.toJSON();
568
- }
569
- /**
570
- * Derives verifiable credentials from a presentation with selective disclosure
571
- * @param {Object} params - Derivation parameters
572
- * @param {Array<Object>} params.credentials - Array of credential objects
573
- * @param {Object} params.credentials[].credential - The credential
574
- * @param {Array<string>} params.credentials[].attributesToReveal - Attributes to reveal
575
- * @param {Object} [params.credentials[].witness] - Membership witness for revocation
576
- * @param {Object} [params.options={}] - Additional options for derivation
577
- * @param {Object} [params.proofRequest] - Proof request with constraints
578
- * @returns {Promise<Array>} Array of derived credentials
579
- * @throws {Error} If validation fails
580
- * @example
581
- * const derivedCredentials = await credentialService.deriveVCFromPresentation({
582
- * credentials: [{
583
- * credential: bbsCredential,
584
- * attributesToReveal: ['name', 'dateOfBirth']
585
- * }]
586
- * });
587
- */
588
- async deriveVCFromPresentation(params) {
589
- validation.deriveVCFromPresentation(params);
590
- const { credentials, options = {}, proofRequest } = params;
591
- const presentation = new Presentation();
592
- const selectedCredentials = credentials.map(({ credential }) => credential);
593
- let descriptorBounds = [];
594
- for (const { credential } of credentials) {
595
- await presentation.addCredentialToPresent(credential, {
596
- resolver: blockchainService.resolver,
597
- });
598
- }
599
- if (proofRequest && hasProvingKey(proofRequest)) {
600
- const { provingKey, provingKeyId } = await fetchProvingKey(proofRequest);
601
- descriptorBounds = applyEnforceBounds({
602
- builder: presentation.presBuilder,
603
- proofRequest,
604
- provingKey,
605
- provingKeyId,
606
- selectedCredentials,
607
- });
608
- }
609
- let pexRequiredAttributes = [];
610
- if (proofRequest?.request) {
611
- pexRequiredAttributes = getPexRequiredAttributes(proofRequest.request, selectedCredentials);
612
- }
613
- let idx = 0;
614
- for (const { attributesToReveal, witness, credential } of credentials) {
615
- const attributesToSkip = descriptorBounds[idx]
616
- ? descriptorBounds[idx].map(bound => bound.attributeName)
617
- : [];
618
- const filteredAttributes = attributesToReveal.filter(attribute => !attributesToSkip.includes(attribute) && !shouldSkipAttribute(attribute));
619
- const _pexRequiredAttributes = pexRequiredAttributes[idx] || [];
620
- _pexRequiredAttributes.forEach(attr => {
621
- if (!filteredAttributes.includes(attr)) {
622
- filteredAttributes.push(attr);
623
- }
624
- });
625
- if (Array.isArray(filteredAttributes) && filteredAttributes.length > 0) {
626
- presentation.addAttributeToReveal(idx, filteredAttributes);
627
- }
628
- if (witness) {
629
- const details = await getWitnessDetails(credential, witness);
630
- const chainModule = credential.credentialStatus.id.indexOf('dock:accumulator') === 0
631
- ? blockchainService.modules.accumulator.modules[0]
632
- : blockchainService.modules.accumulator.modules[blockchainService.modules.accumulator.modules.length - 1];
633
- const accumulatorModuleClass = chainModule.constructor;
634
- presentation.presBuilder.addAccumInfoForCredStatus(idx, details.membershipWitness, accumulatorModuleClass.accumulatedFromHex(details.accumulator.accumulated, VB_ACCUMULATOR_22.VBPos), details.pk, details.params);
635
- }
636
- idx++;
637
- }
638
- const credentialsFromPresentation = await presentation.deriveCredentials(options);
639
- return credentialsFromPresentation;
640
- }
641
- /**
642
- * Test method for range proofs
643
- * @private
644
- * @returns {Promise<void>}
645
- */
646
- async testRangeProof() {
647
- console.log('test');
648
- }
649
- }
650
- /**
651
- * Singleton instance of the credential service
652
- * @type {CredentialService}
653
- * @example
654
- * import { credentialService } from '@docknetwork/wallet-sdk-wasm/services/credential';
655
- *
656
- * // Create and sign a credential
657
- * const credential = credentialService.generateCredential({
658
- * subject: { id: 'did:example:123' }
659
- * });
660
- * const signed = await credentialService.signCredential({
661
- * vcJson: credential,
662
- * keyDoc: issuerKey
663
- * });
664
- *
665
- * // Verify a credential
666
- * const result = await credentialService.verifyCredential({
667
- * credential: signedCredential
668
- * });
669
- */
670
- const credentialService = new CredentialService();
671
-
672
- export { credentialService, isAnnonymousCredential, isBBSPlusCredential, isKvacCredential };