@docknetwork/wallet-sdk-wasm 1.7.7-alpha.0 → 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 +7 -20
  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,319 +0,0 @@
1
- import { JSONPath } from '@astronautlabs/jsonpath';
2
-
3
- const EPSILON_NUMBER = 0.001;
4
- const EPSILON_INT = 1;
5
-
6
- const MAX_DATE_PLACEHOLDER = 884541351600000;
7
- const MIN_DATE_PLACEHOLDER = -17592186044415;
8
- const MAX_INTEGER = Number.MAX_SAFE_INTEGER;
9
- const MIN_INTEGER = Number.MIN_SAFE_INTEGER;
10
- const MAX_NUMBER = Number.MAX_SAFE_INTEGER;
11
- const MIN_NUMBER = Number.MIN_SAFE_INTEGER;
12
-
13
- /*
14
- PEX Filter rules:
15
- greater-than - Use the exclusiveMinimum descriptor
16
- less-than - Use the exclusiveMaximum descriptor
17
- greater-than or equal-to - Use the minimum descriptor
18
- less-than or equal-to - Use the maximum descriptor
19
- */
20
-
21
- function correctFieldPath(path) {
22
- // NOTE: may not work for advanced jsonpath selectors, needs investigation
23
- return path.replace('$.', '');
24
- }
25
-
26
- function getNumDecimalPlaces(n) {
27
- const parts = n.toString().split('.');
28
- return parts.length > 1 && parts[1].length;
29
- }
30
-
31
- function toMaxDecimalPlaces(n, maxDecimalPlaces) {
32
- return +n.toFixed(maxDecimalPlaces);
33
- }
34
-
35
- function getAttributeName({field, selectedCredentials, index}) {
36
- let attributeName;
37
- if (Array.isArray(field.path) && field.path.length > 1) {
38
- const selectedCredential = selectedCredentials[index];
39
- if (!selectedCredential) {
40
- throw new Error(`Expected selected credential at index ${index}`);
41
- }
42
-
43
- // Must find a path that matches in selectedcredential, and choose that for bounds
44
- const pathCount = field.path.length;
45
- for (let i = 0; i < pathCount; i++) {
46
- const path = field.path[i];
47
- const paths = JSONPath.paths(selectedCredential, path);
48
- if (paths.length) {
49
- // First come first served
50
- attributeName = correctFieldPath(JSONPath.stringify(paths[0]));
51
- break;
52
- }
53
- }
54
- } else {
55
- attributeName = correctFieldPath(
56
- Array.isArray(field.path) ? field.path[0] : field.path,
57
- );
58
- }
59
-
60
- return attributeName;
61
- }
62
-
63
- /**
64
- * Convert PEX request to bounds for each descriptor
65
- * @param {*} pexRequest - The PEX request object containing input descriptors and constraints
66
- * @param {*} selectedCredentials - Array of selected credentials corresponding to the input descriptors
67
- * @param {*} removeFromRequest - if true, removes range proofs fields from the request. it might be dangerous if you will be using the proof request later
68
- * because it will not have the range proofs fields anymore.
69
- * @returns {Array} - Array of bounds for each descriptor, where each bound is an object with attributeName, min, and max
70
- * @throws {Error} - If a field path is missing or empty
71
- * @throws {Error} - If an unsupported format or type is encountered
72
- * @throws {Error} - If a selected credential is expected but not found at the given index
73
- */
74
- function pexToBounds(
75
- pexRequest,
76
- selectedCredentials = [],
77
- removeFromRequest = false,
78
- ) {
79
- const descriptorBounds = [];
80
- const fieldsToRemove = [];
81
-
82
- // One list of bounds per descriptor/credential
83
- pexRequest.input_descriptors.forEach((inputDescriptor, index) => {
84
- const selectedCredential = selectedCredentials[index];
85
- if (!selectedCredential) {
86
- return;
87
- }
88
-
89
- // Get embedded schema if existing
90
- let decodedSchema = {};
91
- if (selectedCredential.credentialSchema) {
92
- const schemaStartStr = 'data:application/json;charset=utf-8,';
93
-
94
- if (selectedCredential.credentialSchema.details) {
95
- decodedSchema =
96
- JSON.parse(selectedCredential.credentialSchema.details).jsonSchema ||
97
- {};
98
- } else if (
99
- selectedCredential.credentialSchema.id &&
100
- selectedCredential.credentialSchema.id.startsWith(schemaStartStr)
101
- ) {
102
- // LEGACY embedded schema handling
103
- decodedSchema = JSON.parse(
104
- decodeURIComponent(
105
- selectedCredential.credentialSchema.id.split(schemaStartStr)[1],
106
- ),
107
- );
108
- }
109
- }
110
-
111
- const bounds = [];
112
- inputDescriptor.constraints.fields.forEach(field => {
113
- const {
114
- exclusiveMaximum,
115
- exclusiveMinimum,
116
- formatMaximum,
117
- formatMinimum,
118
- maximum,
119
- minimum,
120
- format,
121
- type,
122
- } = field.filter || {};
123
-
124
- if (!field.path || field.path.length === 0) {
125
- throw new Error(
126
- 'Missing or empty field "path" property, expected array or string',
127
- );
128
- }
129
-
130
- let attributeName;
131
- if (Array.isArray(field.path) && field.path.length > 1) {
132
- // Must find a path that matches in selectedcredential, and choose that for bounds
133
- const pathCount = field.path.length;
134
- for (let i = 0; i < pathCount; i++) {
135
- const path = field.path[i];
136
- const paths = JSONPath.paths(selectedCredential, path);
137
- if (paths.length) {
138
- // First come first served
139
- attributeName = correctFieldPath(JSONPath.stringify(paths[0]));
140
- break;
141
- }
142
- }
143
- } else {
144
- const path = Array.isArray(field.path) ? field.path[0] : field.path;
145
- attributeName = correctFieldPath(path);
146
- }
147
-
148
- if (!attributeName) {
149
- return;
150
- }
151
-
152
- const schemaPath = `$.properties.${attributeName.replaceAll(
153
- '.',
154
- '.properties.',
155
- )}`;
156
- const attributeSchema = JSONPath.query(
157
- decodedSchema,
158
- schemaPath,
159
- 1,
160
- )[0] || {type};
161
-
162
- let max =
163
- maximum === undefined
164
- ? formatMaximum === undefined
165
- ? exclusiveMaximum
166
- : formatMaximum
167
- : maximum;
168
-
169
- let min =
170
- minimum === undefined
171
- ? formatMinimum === undefined
172
- ? exclusiveMinimum
173
- : formatMinimum
174
- : minimum;
175
-
176
- const proofRequestMax = max;
177
- const proofRequestMin = min;
178
-
179
- if (max === undefined && min === undefined) {
180
- return;
181
- }
182
-
183
- const attributeType = attributeSchema.type || type;
184
-
185
- // Get min/max bounds values, if using exclusive we must apply an epsilon so equality isnt true
186
- if (format === 'date-time' || format === 'date') {
187
- max = new Date(max === undefined ? MAX_DATE_PLACEHOLDER : max);
188
- min = new Date(min === undefined ? MIN_DATE_PLACEHOLDER : min);
189
- } else if (attributeType === 'number') {
190
- const epsilon = attributeSchema.multipleOf || EPSILON_NUMBER;
191
- const attribDecimalPlaces = getNumDecimalPlaces(epsilon);
192
-
193
- max =
194
- max === undefined
195
- ? attributeSchema.maximum === undefined
196
- ? MAX_NUMBER
197
- : attributeSchema.maximum
198
- : exclusiveMaximum === undefined
199
- ? max
200
- : max - epsilon;
201
- min =
202
- min === undefined
203
- ? attributeSchema.minimum === undefined
204
- ? MIN_NUMBER
205
- : attributeSchema.minimum
206
- : exclusiveMinimum === undefined
207
- ? min
208
- : min + epsilon;
209
-
210
- // Because of floating point math sucks, sometimes we can get extra decimal points
211
- // the bounds must also match the same decimal points as the input
212
- // for this we read from the embedded schema
213
- min = toMaxDecimalPlaces(min, attribDecimalPlaces);
214
- max = toMaxDecimalPlaces(max, attribDecimalPlaces);
215
- } else if (attributeType === 'integer') {
216
- max =
217
- max === undefined
218
- ? attributeSchema.maximum === undefined
219
- ? MAX_INTEGER
220
- : attributeSchema.maximum
221
- : exclusiveMaximum === undefined
222
- ? max
223
- : max - EPSILON_INT;
224
- min =
225
- min === undefined
226
- ? attributeSchema.minimum === undefined
227
- ? MIN_INTEGER
228
- : attributeSchema.minimum
229
- : exclusiveMinimum === undefined
230
- ? min
231
- : min + EPSILON_INT;
232
-
233
- // Ensure that input values are not decimals otherwise crypto-wasm-ts will complain
234
- min = Math.floor(min);
235
- max = Math.floor(max);
236
- } else {
237
- throw new Error(
238
- `Unsupported format ${format} and type ${type} for enforce bounds`,
239
- );
240
- }
241
-
242
- if (removeFromRequest) {
243
- fieldsToRemove.push({
244
- fields: inputDescriptor.constraints.fields,
245
- field,
246
- });
247
- }
248
-
249
- bounds.push({
250
- attributeName,
251
- min,
252
- max,
253
- proofRequestMax,
254
- proofRequestMin,
255
- format,
256
- type,
257
- });
258
- });
259
-
260
- descriptorBounds.push(bounds);
261
- });
262
-
263
- fieldsToRemove.forEach(({fields, field}) => {
264
- const idx = fields.indexOf(field);
265
- if (idx !== -1) {
266
- fields.splice(idx, 1);
267
- }
268
- });
269
-
270
- return descriptorBounds;
271
- }
272
-
273
- const attributesToSkip = [
274
- /^type/,
275
- /^issuer/,
276
- /^@context/,
277
- /^proof/,
278
- /^credentialSchema/,
279
- /^issuanceDate/,
280
- ];
281
-
282
- const shouldSkipAttribute = attributeName =>
283
- attributesToSkip.some(regex => regex.test(attributeName));
284
-
285
- function getPexRequiredAttributes(pexRequest, selectedCredentials = []) {
286
- return pexRequest.input_descriptors
287
- .map((inputDescriptor, index) => {
288
- return inputDescriptor.constraints.fields
289
- .filter(field => {
290
- if (field.filter || field.optional) {
291
- return false;
292
- }
293
-
294
- try {
295
- if (!selectedCredentials[index]) {
296
- return false;
297
- }
298
-
299
- const paths = Array.isArray(field.path)
300
- ? field.path.flatMap(singlePath =>
301
- JSONPath.paths(selectedCredentials[index], singlePath),
302
- )
303
- : JSONPath.paths(selectedCredentials[index], field.path);
304
-
305
- return paths.length !== 0;
306
- } catch (error) {
307
- console.error(`Error in field ${field.path}: ${error.message}`);
308
- return false;
309
- }
310
- })
311
- .map(field => getAttributeName({field, selectedCredentials, index}))
312
- .filter(attributeName => {
313
- return !shouldSkipAttribute(attributeName);
314
- });
315
- })
316
- .filter(requiredAttributes => requiredAttributes.length > 0);
317
- }
318
-
319
- export { EPSILON_INT, EPSILON_NUMBER, MAX_DATE_PLACEHOLDER, MAX_INTEGER, MAX_NUMBER, MIN_DATE_PLACEHOLDER, MIN_INTEGER, MIN_NUMBER, getPexRequiredAttributes, pexToBounds, shouldSkipAttribute };
@@ -1,107 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var lib = require('@docknetwork/crypto-wasm-ts/lib');
6
- var boundCheck = require('@docknetwork/crypto-wasm-ts/lib/bound-check');
7
- var index = require('@docknetwork/crypto-wasm-ts/lib/index');
8
-
9
- const stringToBytes = (string) => Uint8Array.from(Buffer.from(string, 'utf-8'));
10
- function getRevealedUnrevealed(messages, revealedIndices) {
11
- const revealedMsgs = new Map();
12
- const unrevealedMsgs = new Map();
13
- for (let i = 0; i < messages.length; i++) {
14
- if (revealedIndices.has(i)) {
15
- revealedMsgs.set(i, messages[i]);
16
- }
17
- else {
18
- unrevealedMsgs.set(i, messages[i]);
19
- }
20
- }
21
- return [revealedMsgs, unrevealedMsgs];
22
- }
23
- async function rangeProofExample() {
24
- await index.initializeWasm();
25
- const pk = boundCheck.BoundCheckSnarkSetup();
26
- const snarkProvingKey = pk.decompress();
27
- const snarkVerifyingKey = pk.getVerifyingKeyUncompressed();
28
- const earliestIssuance = 642709800000; // Timestamp of the earliest acceptable issuance, used as lower bound
29
- const latestIssuance = 1588271400000; // Timestamp of the latest acceptable issuance, used as upper bound
30
- const bornAfter = 642709800000; // Timestamp of the latest acceptable birth date, used as lower bound
31
- const now = 1620585000000; // Timestamp as of now, i.e proof generation
32
- const someDistantFuture = 1777746600000; // Timestamp from future
33
- const attributes = [];
34
- attributes.push(lib.BBSSignature.encodeMessageForSigning(stringToBytes('John Smith'))); // Name
35
- attributes.push(lib.BBSSignature.encodeMessageForSigning(stringToBytes('123-456789-0'))); // SSN
36
- attributes.push(lib.BBSSignature.encodePositiveNumberForSigning(bornAfter + 100000)); // Birth date as no. of milliseconds since epoch
37
- attributes.push(lib.BBSSignature.encodePositiveNumberForSigning(earliestIssuance + 100000)); // Issuance date as no. of milliseconds since epoch
38
- attributes.push(lib.BBSSignature.encodePositiveNumberForSigning(now + 2000000)); // Expiration date as no. of milliseconds since epoch
39
- const messageCount = attributes.length;
40
- const sigParams = lib.BBSSignatureParams.generate(messageCount);
41
- const sigKeypair1 = lib.BBSKeypair.generate(sigParams);
42
- const sigSecretKey = sigKeypair1.secretKey;
43
- const sigPublicKey = sigKeypair1.publicKey;
44
- // Signer creates the signature and shares with prover
45
- const sig = lib.BBSSignature.generate(attributes, sigSecretKey, sigParams, false);
46
- const proverSetupParams = [];
47
- proverSetupParams.push(lib.SetupParam.legosnarkProvingKeyUncompressed(snarkProvingKey));
48
- const revealedIndices = new Set();
49
- revealedIndices.add(0);
50
- const [revealedAttrs, unrevealedAttrs] = getRevealedUnrevealed(attributes, revealedIndices);
51
- const statement1 = lib.Statement.bbsSignature(sigParams, sigPublicKey, revealedAttrs, false);
52
- const statement2 = lib.Statement.boundCheckProverFromSetupParamRefs(bornAfter, now, 0);
53
- // For proving issuance date was between `earliestIssuance` and `latestIssuance`
54
- const statement3 = lib.Statement.boundCheckProverFromSetupParamRefs(earliestIssuance, latestIssuance, 0);
55
- // For proving expiration date was between `now` and `someDistantFuture`, i.e. its not expired as of now.
56
- const statement4 = lib.Statement.boundCheckProverFromSetupParamRefs(now, someDistantFuture, 0);
57
- const proverStatements = new lib.Statements(statement1);
58
- proverStatements.add(statement2);
59
- proverStatements.add(statement3);
60
- proverStatements.add(statement4);
61
- // For birth date attribute
62
- const witnessEq1 = new lib.WitnessEqualityMetaStatement();
63
- witnessEq1.addWitnessRef(0, 2);
64
- witnessEq1.addWitnessRef(1, 0);
65
- // For issuance date attribute
66
- const witnessEq2 = new lib.WitnessEqualityMetaStatement();
67
- witnessEq2.addWitnessRef(0, 3);
68
- witnessEq2.addWitnessRef(2, 0);
69
- // For expiration date attribute
70
- const witnessEq3 = new lib.WitnessEqualityMetaStatement();
71
- witnessEq3.addWitnessRef(0, 4);
72
- witnessEq3.addWitnessRef(3, 0);
73
- const metaStatements = new lib.MetaStatements();
74
- metaStatements.add(lib.MetaStatement.witnessEquality(witnessEq1));
75
- metaStatements.add(lib.MetaStatement.witnessEquality(witnessEq2));
76
- metaStatements.add(lib.MetaStatement.witnessEquality(witnessEq3));
77
- const witnesses = new lib.Witnesses();
78
- witnesses.add(lib.Witness.bbsSignature(sig, unrevealedAttrs, false));
79
- witnesses.add(lib.Witness.boundCheckLegoGroth16(attributes[2]));
80
- witnesses.add(lib.Witness.boundCheckLegoGroth16(attributes[3]));
81
- witnesses.add(lib.Witness.boundCheckLegoGroth16(attributes[4]));
82
- const proverProofSpec = new lib.QuasiProofSpecG1(proverStatements, metaStatements, proverSetupParams);
83
- const nonce = stringToBytes('a nonce');
84
- const proof = lib.CompositeProofG1.generateUsingQuasiProofSpec(proverProofSpec, witnesses, nonce);
85
- console.log(proof);
86
- // Verify the proof
87
- const verifierSetupParams = [];
88
- verifierSetupParams.push(lib.SetupParam.legosnarkVerifyingKeyUncompressed(snarkVerifyingKey));
89
- // For verifying birth date was after `bornAfter`
90
- const statement5 = lib.Statement.boundCheckVerifierFromSetupParamRefs(bornAfter, now, 0);
91
- // For verifying issuance date was between `earliestIssuance` and `latestIssuance`
92
- const statement6 = lib.Statement.boundCheckVerifierFromSetupParamRefs(earliestIssuance, latestIssuance, 0);
93
- // For verifying expiration date was between `now` and `someDistantFuture`, i.e. its not expired as of now.
94
- const statement7 = lib.Statement.boundCheckVerifierFromSetupParamRefs(now, someDistantFuture, 0);
95
- const verifierStatements = new lib.Statements();
96
- verifierStatements.add(statement1);
97
- verifierStatements.add(statement5);
98
- verifierStatements.add(statement6);
99
- verifierStatements.add(statement7);
100
- const verifierProofSpec = new lib.QuasiProofSpecG1(verifierStatements, metaStatements, verifierSetupParams);
101
- const result = proof.verifyUsingQuasiProofSpec(verifierProofSpec, nonce);
102
- console.log(result);
103
- return true;
104
- }
105
- rangeProofExample();
106
-
107
- exports.rangeProofExample = rangeProofExample;
@@ -1,103 +0,0 @@
1
- import { BBSSignature, BBSSignatureParams, BBSKeypair, SetupParam, Statement, Statements, WitnessEqualityMetaStatement, MetaStatements, MetaStatement, Witnesses, Witness, QuasiProofSpecG1, CompositeProofG1 } from '@docknetwork/crypto-wasm-ts/lib';
2
- import { BoundCheckSnarkSetup } from '@docknetwork/crypto-wasm-ts/lib/bound-check';
3
- import { initializeWasm } from '@docknetwork/crypto-wasm-ts/lib/index';
4
-
5
- const stringToBytes = (string) => Uint8Array.from(Buffer.from(string, 'utf-8'));
6
- function getRevealedUnrevealed(messages, revealedIndices) {
7
- const revealedMsgs = new Map();
8
- const unrevealedMsgs = new Map();
9
- for (let i = 0; i < messages.length; i++) {
10
- if (revealedIndices.has(i)) {
11
- revealedMsgs.set(i, messages[i]);
12
- }
13
- else {
14
- unrevealedMsgs.set(i, messages[i]);
15
- }
16
- }
17
- return [revealedMsgs, unrevealedMsgs];
18
- }
19
- async function rangeProofExample() {
20
- await initializeWasm();
21
- const pk = BoundCheckSnarkSetup();
22
- const snarkProvingKey = pk.decompress();
23
- const snarkVerifyingKey = pk.getVerifyingKeyUncompressed();
24
- const earliestIssuance = 642709800000; // Timestamp of the earliest acceptable issuance, used as lower bound
25
- const latestIssuance = 1588271400000; // Timestamp of the latest acceptable issuance, used as upper bound
26
- const bornAfter = 642709800000; // Timestamp of the latest acceptable birth date, used as lower bound
27
- const now = 1620585000000; // Timestamp as of now, i.e proof generation
28
- const someDistantFuture = 1777746600000; // Timestamp from future
29
- const attributes = [];
30
- attributes.push(BBSSignature.encodeMessageForSigning(stringToBytes('John Smith'))); // Name
31
- attributes.push(BBSSignature.encodeMessageForSigning(stringToBytes('123-456789-0'))); // SSN
32
- attributes.push(BBSSignature.encodePositiveNumberForSigning(bornAfter + 100000)); // Birth date as no. of milliseconds since epoch
33
- attributes.push(BBSSignature.encodePositiveNumberForSigning(earliestIssuance + 100000)); // Issuance date as no. of milliseconds since epoch
34
- attributes.push(BBSSignature.encodePositiveNumberForSigning(now + 2000000)); // Expiration date as no. of milliseconds since epoch
35
- const messageCount = attributes.length;
36
- const sigParams = BBSSignatureParams.generate(messageCount);
37
- const sigKeypair1 = BBSKeypair.generate(sigParams);
38
- const sigSecretKey = sigKeypair1.secretKey;
39
- const sigPublicKey = sigKeypair1.publicKey;
40
- // Signer creates the signature and shares with prover
41
- const sig = BBSSignature.generate(attributes, sigSecretKey, sigParams, false);
42
- const proverSetupParams = [];
43
- proverSetupParams.push(SetupParam.legosnarkProvingKeyUncompressed(snarkProvingKey));
44
- const revealedIndices = new Set();
45
- revealedIndices.add(0);
46
- const [revealedAttrs, unrevealedAttrs] = getRevealedUnrevealed(attributes, revealedIndices);
47
- const statement1 = Statement.bbsSignature(sigParams, sigPublicKey, revealedAttrs, false);
48
- const statement2 = Statement.boundCheckProverFromSetupParamRefs(bornAfter, now, 0);
49
- // For proving issuance date was between `earliestIssuance` and `latestIssuance`
50
- const statement3 = Statement.boundCheckProverFromSetupParamRefs(earliestIssuance, latestIssuance, 0);
51
- // For proving expiration date was between `now` and `someDistantFuture`, i.e. its not expired as of now.
52
- const statement4 = Statement.boundCheckProverFromSetupParamRefs(now, someDistantFuture, 0);
53
- const proverStatements = new Statements(statement1);
54
- proverStatements.add(statement2);
55
- proverStatements.add(statement3);
56
- proverStatements.add(statement4);
57
- // For birth date attribute
58
- const witnessEq1 = new WitnessEqualityMetaStatement();
59
- witnessEq1.addWitnessRef(0, 2);
60
- witnessEq1.addWitnessRef(1, 0);
61
- // For issuance date attribute
62
- const witnessEq2 = new WitnessEqualityMetaStatement();
63
- witnessEq2.addWitnessRef(0, 3);
64
- witnessEq2.addWitnessRef(2, 0);
65
- // For expiration date attribute
66
- const witnessEq3 = new WitnessEqualityMetaStatement();
67
- witnessEq3.addWitnessRef(0, 4);
68
- witnessEq3.addWitnessRef(3, 0);
69
- const metaStatements = new MetaStatements();
70
- metaStatements.add(MetaStatement.witnessEquality(witnessEq1));
71
- metaStatements.add(MetaStatement.witnessEquality(witnessEq2));
72
- metaStatements.add(MetaStatement.witnessEquality(witnessEq3));
73
- const witnesses = new Witnesses();
74
- witnesses.add(Witness.bbsSignature(sig, unrevealedAttrs, false));
75
- witnesses.add(Witness.boundCheckLegoGroth16(attributes[2]));
76
- witnesses.add(Witness.boundCheckLegoGroth16(attributes[3]));
77
- witnesses.add(Witness.boundCheckLegoGroth16(attributes[4]));
78
- const proverProofSpec = new QuasiProofSpecG1(proverStatements, metaStatements, proverSetupParams);
79
- const nonce = stringToBytes('a nonce');
80
- const proof = CompositeProofG1.generateUsingQuasiProofSpec(proverProofSpec, witnesses, nonce);
81
- console.log(proof);
82
- // Verify the proof
83
- const verifierSetupParams = [];
84
- verifierSetupParams.push(SetupParam.legosnarkVerifyingKeyUncompressed(snarkVerifyingKey));
85
- // For verifying birth date was after `bornAfter`
86
- const statement5 = Statement.boundCheckVerifierFromSetupParamRefs(bornAfter, now, 0);
87
- // For verifying issuance date was between `earliestIssuance` and `latestIssuance`
88
- const statement6 = Statement.boundCheckVerifierFromSetupParamRefs(earliestIssuance, latestIssuance, 0);
89
- // For verifying expiration date was between `now` and `someDistantFuture`, i.e. its not expired as of now.
90
- const statement7 = Statement.boundCheckVerifierFromSetupParamRefs(now, someDistantFuture, 0);
91
- const verifierStatements = new Statements();
92
- verifierStatements.add(statement1);
93
- verifierStatements.add(statement5);
94
- verifierStatements.add(statement6);
95
- verifierStatements.add(statement7);
96
- const verifierProofSpec = new QuasiProofSpecG1(verifierStatements, metaStatements, verifierSetupParams);
97
- const result = proof.verifyUsingQuasiProofSpec(verifierProofSpec, nonce);
98
- console.log(result);
99
- return true;
100
- }
101
- rangeProofExample();
102
-
103
- export { rangeProofExample };