@mocanetwork/privado-js-sdk 1.0.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 (517) hide show
  1. package/README.md +75 -0
  2. package/dist/browser/esm/index.js +14901 -0
  3. package/dist/browser/esm/index.js.map +1 -0
  4. package/dist/browser/umd/index.global.js +678 -0
  5. package/dist/browser/umd/index.global.js.map +1 -0
  6. package/dist/node/cjs/index.cjs +15418 -0
  7. package/dist/node/cjs/index.cjs.map +1 -0
  8. package/dist/node/esm/index.js +14901 -0
  9. package/dist/node/esm/index.js.map +1 -0
  10. package/dist/types/blockchain/index.d.ts +2 -0
  11. package/dist/types/blockchain/index.d.ts.map +1 -0
  12. package/dist/types/blockchain/transaction-service.d.ts +81 -0
  13. package/dist/types/blockchain/transaction-service.d.ts.map +1 -0
  14. package/dist/types/circuits/atomic-query-mtp-v2-on-chain.d.ts +70 -0
  15. package/dist/types/circuits/atomic-query-mtp-v2-on-chain.d.ts.map +1 -0
  16. package/dist/types/circuits/atomic-query-mtp-v2.d.ts +63 -0
  17. package/dist/types/circuits/atomic-query-mtp-v2.d.ts.map +1 -0
  18. package/dist/types/circuits/atomic-query-sig-v2-on-chain.d.ts +137 -0
  19. package/dist/types/circuits/atomic-query-sig-v2-on-chain.d.ts.map +1 -0
  20. package/dist/types/circuits/atomic-query-sig-v2.d.ts +64 -0
  21. package/dist/types/circuits/atomic-query-sig-v2.d.ts.map +1 -0
  22. package/dist/types/circuits/atomic-query-v3-on-chain.d.ts +141 -0
  23. package/dist/types/circuits/atomic-query-v3-on-chain.d.ts.map +1 -0
  24. package/dist/types/circuits/atomic-query-v3.d.ts +121 -0
  25. package/dist/types/circuits/atomic-query-v3.d.ts.map +1 -0
  26. package/dist/types/circuits/auth-v2.d.ts +46 -0
  27. package/dist/types/circuits/auth-v2.d.ts.map +1 -0
  28. package/dist/types/circuits/common.d.ts +153 -0
  29. package/dist/types/circuits/common.d.ts.map +1 -0
  30. package/dist/types/circuits/comparer.d.ts +122 -0
  31. package/dist/types/circuits/comparer.d.ts.map +1 -0
  32. package/dist/types/circuits/index.d.ts +13 -0
  33. package/dist/types/circuits/index.d.ts.map +1 -0
  34. package/dist/types/circuits/linked-multi-query.d.ts +38 -0
  35. package/dist/types/circuits/linked-multi-query.d.ts.map +1 -0
  36. package/dist/types/circuits/models.d.ts +189 -0
  37. package/dist/types/circuits/models.d.ts.map +1 -0
  38. package/dist/types/circuits/state-transition.d.ts +49 -0
  39. package/dist/types/circuits/state-transition.d.ts.map +1 -0
  40. package/dist/types/credentials/credential-wallet.d.ts +200 -0
  41. package/dist/types/credentials/credential-wallet.d.ts.map +1 -0
  42. package/dist/types/credentials/index.d.ts +12 -0
  43. package/dist/types/credentials/index.d.ts.map +1 -0
  44. package/dist/types/credentials/models.d.ts +84 -0
  45. package/dist/types/credentials/models.d.ts.map +1 -0
  46. package/dist/types/credentials/rhs.d.ts +38 -0
  47. package/dist/types/credentials/rhs.d.ts.map +1 -0
  48. package/dist/types/credentials/status/agent-revocation.d.ts +20 -0
  49. package/dist/types/credentials/status/agent-revocation.d.ts.map +1 -0
  50. package/dist/types/credentials/status/credential-status-publisher.d.ts +73 -0
  51. package/dist/types/credentials/status/credential-status-publisher.d.ts.map +1 -0
  52. package/dist/types/credentials/status/did-resolver-revocation.d.ts +8 -0
  53. package/dist/types/credentials/status/did-resolver-revocation.d.ts.map +1 -0
  54. package/dist/types/credentials/status/on-chain-revocation.d.ts +58 -0
  55. package/dist/types/credentials/status/on-chain-revocation.d.ts.map +1 -0
  56. package/dist/types/credentials/status/resolver.d.ts +69 -0
  57. package/dist/types/credentials/status/resolver.d.ts.map +1 -0
  58. package/dist/types/credentials/status/reverse-sparse-merkle-tree.d.ts +126 -0
  59. package/dist/types/credentials/status/reverse-sparse-merkle-tree.d.ts.map +1 -0
  60. package/dist/types/credentials/status/sparse-merkle-tree.d.ts +38 -0
  61. package/dist/types/credentials/status/sparse-merkle-tree.d.ts.map +1 -0
  62. package/dist/types/credentials/utils.d.ts +15 -0
  63. package/dist/types/credentials/utils.d.ts.map +1 -0
  64. package/dist/types/iden3comm/constants.d.ts +61 -0
  65. package/dist/types/iden3comm/constants.d.ts.map +1 -0
  66. package/dist/types/iden3comm/errors.d.ts +10 -0
  67. package/dist/types/iden3comm/errors.d.ts.map +1 -0
  68. package/dist/types/iden3comm/handlers/auth.d.ts +157 -0
  69. package/dist/types/iden3comm/handlers/auth.d.ts.map +1 -0
  70. package/dist/types/iden3comm/handlers/common.d.ts +72 -0
  71. package/dist/types/iden3comm/handlers/common.d.ts.map +1 -0
  72. package/dist/types/iden3comm/handlers/contract-request.d.ts +96 -0
  73. package/dist/types/iden3comm/handlers/contract-request.d.ts.map +1 -0
  74. package/dist/types/iden3comm/handlers/credential-proposal.d.ts +120 -0
  75. package/dist/types/iden3comm/handlers/credential-proposal.d.ts.map +1 -0
  76. package/dist/types/iden3comm/handlers/discovery-protocol.d.ts +101 -0
  77. package/dist/types/iden3comm/handlers/discovery-protocol.d.ts.map +1 -0
  78. package/dist/types/iden3comm/handlers/fetch.d.ts +130 -0
  79. package/dist/types/iden3comm/handlers/fetch.d.ts.map +1 -0
  80. package/dist/types/iden3comm/handlers/index.d.ts +12 -0
  81. package/dist/types/iden3comm/handlers/index.d.ts.map +1 -0
  82. package/dist/types/iden3comm/handlers/message-handler.d.ts +93 -0
  83. package/dist/types/iden3comm/handlers/message-handler.d.ts.map +1 -0
  84. package/dist/types/iden3comm/handlers/payment.d.ts +167 -0
  85. package/dist/types/iden3comm/handlers/payment.d.ts.map +1 -0
  86. package/dist/types/iden3comm/handlers/problem-report.d.ts +18 -0
  87. package/dist/types/iden3comm/handlers/problem-report.d.ts.map +1 -0
  88. package/dist/types/iden3comm/handlers/refresh.d.ts +57 -0
  89. package/dist/types/iden3comm/handlers/refresh.d.ts.map +1 -0
  90. package/dist/types/iden3comm/handlers/revocation-status.d.ts +76 -0
  91. package/dist/types/iden3comm/handlers/revocation-status.d.ts.map +1 -0
  92. package/dist/types/iden3comm/index.d.ts +9 -0
  93. package/dist/types/iden3comm/index.d.ts.map +1 -0
  94. package/dist/types/iden3comm/packageManager.d.ts +47 -0
  95. package/dist/types/iden3comm/packageManager.d.ts.map +1 -0
  96. package/dist/types/iden3comm/packers/index.d.ts +4 -0
  97. package/dist/types/iden3comm/packers/index.d.ts.map +1 -0
  98. package/dist/types/iden3comm/packers/jws.d.ts +56 -0
  99. package/dist/types/iden3comm/packers/jws.d.ts.map +1 -0
  100. package/dist/types/iden3comm/packers/plain.d.ts +47 -0
  101. package/dist/types/iden3comm/packers/plain.d.ts.map +1 -0
  102. package/dist/types/iden3comm/packers/zkp.d.ts +98 -0
  103. package/dist/types/iden3comm/packers/zkp.d.ts.map +1 -0
  104. package/dist/types/iden3comm/types/index.d.ts +17 -0
  105. package/dist/types/iden3comm/types/index.d.ts.map +1 -0
  106. package/dist/types/iden3comm/types/models.d.ts +7 -0
  107. package/dist/types/iden3comm/types/models.d.ts.map +1 -0
  108. package/dist/types/iden3comm/types/packageManager.d.ts +100 -0
  109. package/dist/types/iden3comm/types/packageManager.d.ts.map +1 -0
  110. package/dist/types/iden3comm/types/packer.d.ts +158 -0
  111. package/dist/types/iden3comm/types/packer.d.ts.map +1 -0
  112. package/dist/types/iden3comm/types/protocol/accept-profile.d.ts +8 -0
  113. package/dist/types/iden3comm/types/protocol/accept-profile.d.ts.map +1 -0
  114. package/dist/types/iden3comm/types/protocol/attachment.d.ts +11 -0
  115. package/dist/types/iden3comm/types/protocol/attachment.d.ts.map +1 -0
  116. package/dist/types/iden3comm/types/protocol/auth.d.ts +90 -0
  117. package/dist/types/iden3comm/types/protocol/auth.d.ts.map +1 -0
  118. package/dist/types/iden3comm/types/protocol/common.d.ts +11 -0
  119. package/dist/types/iden3comm/types/protocol/common.d.ts.map +1 -0
  120. package/dist/types/iden3comm/types/protocol/contract-request.d.ts +62 -0
  121. package/dist/types/iden3comm/types/protocol/contract-request.d.ts.map +1 -0
  122. package/dist/types/iden3comm/types/protocol/credentials.d.ts +82 -0
  123. package/dist/types/iden3comm/types/protocol/credentials.d.ts.map +1 -0
  124. package/dist/types/iden3comm/types/protocol/discovery-protocol.d.ts +42 -0
  125. package/dist/types/iden3comm/types/protocol/discovery-protocol.d.ts.map +1 -0
  126. package/dist/types/iden3comm/types/protocol/messages.d.ts +12 -0
  127. package/dist/types/iden3comm/types/protocol/messages.d.ts.map +1 -0
  128. package/dist/types/iden3comm/types/protocol/payment.d.ts +178 -0
  129. package/dist/types/iden3comm/types/protocol/payment.d.ts.map +1 -0
  130. package/dist/types/iden3comm/types/protocol/problem-report.d.ts +17 -0
  131. package/dist/types/iden3comm/types/protocol/problem-report.d.ts.map +1 -0
  132. package/dist/types/iden3comm/types/protocol/proof.d.ts +22 -0
  133. package/dist/types/iden3comm/types/protocol/proof.d.ts.map +1 -0
  134. package/dist/types/iden3comm/types/protocol/proposal-request.d.ts +33 -0
  135. package/dist/types/iden3comm/types/protocol/proposal-request.d.ts.map +1 -0
  136. package/dist/types/iden3comm/types/protocol/revocation.d.ts +20 -0
  137. package/dist/types/iden3comm/types/protocol/revocation.d.ts.map +1 -0
  138. package/dist/types/iden3comm/utils/accept-profile.d.ts +4 -0
  139. package/dist/types/iden3comm/utils/accept-profile.d.ts.map +1 -0
  140. package/dist/types/iden3comm/utils/did.d.ts +8 -0
  141. package/dist/types/iden3comm/utils/did.d.ts.map +1 -0
  142. package/dist/types/iden3comm/utils/envelope.d.ts +32 -0
  143. package/dist/types/iden3comm/utils/envelope.d.ts.map +1 -0
  144. package/dist/types/iden3comm/utils/index.d.ts +5 -0
  145. package/dist/types/iden3comm/utils/index.d.ts.map +1 -0
  146. package/dist/types/iden3comm/utils/message.d.ts +20 -0
  147. package/dist/types/iden3comm/utils/message.d.ts.map +1 -0
  148. package/dist/types/identity/common.d.ts +27 -0
  149. package/dist/types/identity/common.d.ts.map +1 -0
  150. package/dist/types/identity/identity-wallet.d.ts +472 -0
  151. package/dist/types/identity/identity-wallet.d.ts.map +1 -0
  152. package/dist/types/identity/index.d.ts +3 -0
  153. package/dist/types/identity/index.d.ts.map +1 -0
  154. package/dist/types/index.d.ts +17 -0
  155. package/dist/types/index.d.ts.map +1 -0
  156. package/dist/types/kms/index.d.ts +5 -0
  157. package/dist/types/kms/index.d.ts.map +1 -0
  158. package/dist/types/kms/key-providers/bjj-provider.d.ts +54 -0
  159. package/dist/types/kms/key-providers/bjj-provider.d.ts.map +1 -0
  160. package/dist/types/kms/key-providers/ed25519-provider.d.ts +61 -0
  161. package/dist/types/kms/key-providers/ed25519-provider.d.ts.map +1 -0
  162. package/dist/types/kms/key-providers/index.d.ts +4 -0
  163. package/dist/types/kms/key-providers/index.d.ts.map +1 -0
  164. package/dist/types/kms/key-providers/secp256k1-provider.d.ts +62 -0
  165. package/dist/types/kms/key-providers/secp256k1-provider.d.ts.map +1 -0
  166. package/dist/types/kms/kms.d.ts +120 -0
  167. package/dist/types/kms/kms.d.ts.map +1 -0
  168. package/dist/types/kms/provider-helpers.d.ts +10 -0
  169. package/dist/types/kms/provider-helpers.d.ts.map +1 -0
  170. package/dist/types/kms/store/abstract-key-store.d.ts +41 -0
  171. package/dist/types/kms/store/abstract-key-store.d.ts.map +1 -0
  172. package/dist/types/kms/store/index.d.ts +6 -0
  173. package/dist/types/kms/store/index.d.ts.map +1 -0
  174. package/dist/types/kms/store/indexed-db-key-store.d.ts +44 -0
  175. package/dist/types/kms/store/indexed-db-key-store.d.ts.map +1 -0
  176. package/dist/types/kms/store/local-storage-key-store.d.ts +42 -0
  177. package/dist/types/kms/store/local-storage-key-store.d.ts.map +1 -0
  178. package/dist/types/kms/store/memory-key-store.d.ts +24 -0
  179. package/dist/types/kms/store/memory-key-store.d.ts.map +1 -0
  180. package/dist/types/kms/store/types.d.ts +21 -0
  181. package/dist/types/kms/store/types.d.ts.map +1 -0
  182. package/dist/types/proof/common.d.ts +49 -0
  183. package/dist/types/proof/common.d.ts.map +1 -0
  184. package/dist/types/proof/index.d.ts +5 -0
  185. package/dist/types/proof/index.d.ts.map +1 -0
  186. package/dist/types/proof/proof-service.d.ts +169 -0
  187. package/dist/types/proof/proof-service.d.ts.map +1 -0
  188. package/dist/types/proof/provers/index.d.ts +4 -0
  189. package/dist/types/proof/provers/index.d.ts.map +1 -0
  190. package/dist/types/proof/provers/inputs-generator.d.ts +57 -0
  191. package/dist/types/proof/provers/inputs-generator.d.ts.map +1 -0
  192. package/dist/types/proof/provers/prover.d.ts +56 -0
  193. package/dist/types/proof/provers/prover.d.ts.map +1 -0
  194. package/dist/types/proof/provers/witness_calculator.d.ts +17 -0
  195. package/dist/types/proof/provers/witness_calculator.d.ts.map +1 -0
  196. package/dist/types/proof/verifiers/index.d.ts +4 -0
  197. package/dist/types/proof/verifiers/index.d.ts.map +1 -0
  198. package/dist/types/proof/verifiers/pub-signals-verifier.d.ts +60 -0
  199. package/dist/types/proof/verifiers/pub-signals-verifier.d.ts.map +1 -0
  200. package/dist/types/proof/verifiers/query-hash.d.ts +4 -0
  201. package/dist/types/proof/verifiers/query-hash.d.ts.map +1 -0
  202. package/dist/types/proof/verifiers/query.d.ts +43 -0
  203. package/dist/types/proof/verifiers/query.d.ts.map +1 -0
  204. package/dist/types/schema-processor/index.d.ts +4 -0
  205. package/dist/types/schema-processor/index.d.ts.map +1 -0
  206. package/dist/types/schema-processor/json/index.d.ts +3 -0
  207. package/dist/types/schema-processor/json/index.d.ts.map +1 -0
  208. package/dist/types/schema-processor/json/parser.d.ts +141 -0
  209. package/dist/types/schema-processor/json/parser.d.ts.map +1 -0
  210. package/dist/types/schema-processor/json/validator.d.ts +26 -0
  211. package/dist/types/schema-processor/json/validator.d.ts.map +1 -0
  212. package/dist/types/schema-processor/jsonld/cache.d.ts +3 -0
  213. package/dist/types/schema-processor/jsonld/cache.d.ts.map +1 -0
  214. package/dist/types/schema-processor/jsonld/index.d.ts +3 -0
  215. package/dist/types/schema-processor/jsonld/index.d.ts.map +1 -0
  216. package/dist/types/schema-processor/jsonld/parser.d.ts +30 -0
  217. package/dist/types/schema-processor/jsonld/parser.d.ts.map +1 -0
  218. package/dist/types/schema-processor/utils.d.ts +54 -0
  219. package/dist/types/schema-processor/utils.d.ts.map +1 -0
  220. package/dist/types/storage/blockchain/common.d.ts +8 -0
  221. package/dist/types/storage/blockchain/common.d.ts.map +1 -0
  222. package/dist/types/storage/blockchain/did-resolver-readonly-storage.d.ts +17 -0
  223. package/dist/types/storage/blockchain/did-resolver-readonly-storage.d.ts.map +1 -0
  224. package/dist/types/storage/blockchain/erc20-helper.d.ts +20 -0
  225. package/dist/types/storage/blockchain/erc20-helper.d.ts.map +1 -0
  226. package/dist/types/storage/blockchain/errors.d.ts +4 -0
  227. package/dist/types/storage/blockchain/errors.d.ts.map +1 -0
  228. package/dist/types/storage/blockchain/index.d.ts +8 -0
  229. package/dist/types/storage/blockchain/index.d.ts.map +1 -0
  230. package/dist/types/storage/blockchain/onchain-issuer-adapter/non-merklized/version/v0.0.1/onchain-non-merklized-issuer-adapter.d.ts +67 -0
  231. package/dist/types/storage/blockchain/onchain-issuer-adapter/non-merklized/version/v0.0.1/onchain-non-merklized-issuer-adapter.d.ts.map +1 -0
  232. package/dist/types/storage/blockchain/onchain-issuer.d.ts +41 -0
  233. package/dist/types/storage/blockchain/onchain-issuer.d.ts.map +1 -0
  234. package/dist/types/storage/blockchain/onchain-revocation.d.ts +41 -0
  235. package/dist/types/storage/blockchain/onchain-revocation.d.ts.map +1 -0
  236. package/dist/types/storage/blockchain/onchain-zkp-verifier.d.ts +116 -0
  237. package/dist/types/storage/blockchain/onchain-zkp-verifier.d.ts.map +1 -0
  238. package/dist/types/storage/blockchain/state.d.ts +127 -0
  239. package/dist/types/storage/blockchain/state.d.ts.map +1 -0
  240. package/dist/types/storage/entities/circuitData.d.ts +8 -0
  241. package/dist/types/storage/entities/circuitData.d.ts.map +1 -0
  242. package/dist/types/storage/entities/identity.d.ts +17 -0
  243. package/dist/types/storage/entities/identity.d.ts.map +1 -0
  244. package/dist/types/storage/entities/index.d.ts +5 -0
  245. package/dist/types/storage/entities/index.d.ts.map +1 -0
  246. package/dist/types/storage/entities/mt.d.ts +22 -0
  247. package/dist/types/storage/entities/mt.d.ts.map +1 -0
  248. package/dist/types/storage/entities/state.d.ts +92 -0
  249. package/dist/types/storage/entities/state.d.ts.map +1 -0
  250. package/dist/types/storage/errors.d.ts +9 -0
  251. package/dist/types/storage/errors.d.ts.map +1 -0
  252. package/dist/types/storage/filters/index.d.ts +2 -0
  253. package/dist/types/storage/filters/index.d.ts.map +1 -0
  254. package/dist/types/storage/filters/jsonQuery.d.ts +83 -0
  255. package/dist/types/storage/filters/jsonQuery.d.ts.map +1 -0
  256. package/dist/types/storage/fs/circuits-storage.d.ts +64 -0
  257. package/dist/types/storage/fs/circuits-storage.d.ts.map +1 -0
  258. package/dist/types/storage/fs/index.d.ts +2 -0
  259. package/dist/types/storage/fs/index.d.ts.map +1 -0
  260. package/dist/types/storage/index.d.ts +10 -0
  261. package/dist/types/storage/index.d.ts.map +1 -0
  262. package/dist/types/storage/indexed-db/data-source.d.ts +44 -0
  263. package/dist/types/storage/indexed-db/data-source.d.ts.map +1 -0
  264. package/dist/types/storage/indexed-db/index.d.ts +3 -0
  265. package/dist/types/storage/indexed-db/index.d.ts.map +1 -0
  266. package/dist/types/storage/indexed-db/merkletree.d.ts +43 -0
  267. package/dist/types/storage/indexed-db/merkletree.d.ts.map +1 -0
  268. package/dist/types/storage/interfaces/circuits.d.ts +26 -0
  269. package/dist/types/storage/interfaces/circuits.d.ts.map +1 -0
  270. package/dist/types/storage/interfaces/credentials.d.ts +53 -0
  271. package/dist/types/storage/interfaces/credentials.d.ts.map +1 -0
  272. package/dist/types/storage/interfaces/data-source.d.ts +39 -0
  273. package/dist/types/storage/interfaces/data-source.d.ts.map +1 -0
  274. package/dist/types/storage/interfaces/data-storage.d.ts +17 -0
  275. package/dist/types/storage/interfaces/data-storage.d.ts.map +1 -0
  276. package/dist/types/storage/interfaces/identity.d.ts +70 -0
  277. package/dist/types/storage/interfaces/identity.d.ts.map +1 -0
  278. package/dist/types/storage/interfaces/index.d.ts +11 -0
  279. package/dist/types/storage/interfaces/index.d.ts.map +1 -0
  280. package/dist/types/storage/interfaces/merkletree.d.ts +44 -0
  281. package/dist/types/storage/interfaces/merkletree.d.ts.map +1 -0
  282. package/dist/types/storage/interfaces/onchain-issuer.d.ts +13 -0
  283. package/dist/types/storage/interfaces/onchain-issuer.d.ts.map +1 -0
  284. package/dist/types/storage/interfaces/onchain-revocation.d.ts +19 -0
  285. package/dist/types/storage/interfaces/onchain-revocation.d.ts.map +1 -0
  286. package/dist/types/storage/interfaces/onchain-zkp-verifier.d.ts +63 -0
  287. package/dist/types/storage/interfaces/onchain-zkp-verifier.d.ts.map +1 -0
  288. package/dist/types/storage/interfaces/state.d.ts +74 -0
  289. package/dist/types/storage/interfaces/state.d.ts.map +1 -0
  290. package/dist/types/storage/local-storage/data-source.d.ts +41 -0
  291. package/dist/types/storage/local-storage/data-source.d.ts.map +1 -0
  292. package/dist/types/storage/local-storage/index.d.ts +3 -0
  293. package/dist/types/storage/local-storage/index.d.ts.map +1 -0
  294. package/dist/types/storage/local-storage/merkletree.d.ts +41 -0
  295. package/dist/types/storage/local-storage/merkletree.d.ts.map +1 -0
  296. package/dist/types/storage/memory/cache-lru.d.ts +11 -0
  297. package/dist/types/storage/memory/cache-lru.d.ts.map +1 -0
  298. package/dist/types/storage/memory/data-source.d.ts +20 -0
  299. package/dist/types/storage/memory/data-source.d.ts.map +1 -0
  300. package/dist/types/storage/memory/index.d.ts +4 -0
  301. package/dist/types/storage/memory/index.d.ts.map +1 -0
  302. package/dist/types/storage/memory/merkletree.d.ts +48 -0
  303. package/dist/types/storage/memory/merkletree.d.ts.map +1 -0
  304. package/dist/types/storage/shared/circuit-storage.d.ts +39 -0
  305. package/dist/types/storage/shared/circuit-storage.d.ts.map +1 -0
  306. package/dist/types/storage/shared/credential-storage.d.ts +39 -0
  307. package/dist/types/storage/shared/credential-storage.d.ts.map +1 -0
  308. package/dist/types/storage/shared/identity-storage.d.ts +45 -0
  309. package/dist/types/storage/shared/identity-storage.d.ts.map +1 -0
  310. package/dist/types/storage/shared/index.d.ts +4 -0
  311. package/dist/types/storage/shared/index.d.ts.map +1 -0
  312. package/dist/types/storage/utils.d.ts +4 -0
  313. package/dist/types/storage/utils.d.ts.map +1 -0
  314. package/dist/types/utils/compare-func.d.ts +2 -0
  315. package/dist/types/utils/compare-func.d.ts.map +1 -0
  316. package/dist/types/utils/did-helper.d.ts +38 -0
  317. package/dist/types/utils/did-helper.d.ts.map +1 -0
  318. package/dist/types/utils/encoding.d.ts +25 -0
  319. package/dist/types/utils/encoding.d.ts.map +1 -0
  320. package/dist/types/utils/index.d.ts +8 -0
  321. package/dist/types/utils/index.d.ts.map +1 -0
  322. package/dist/types/utils/message-bus.d.ts +63 -0
  323. package/dist/types/utils/message-bus.d.ts.map +1 -0
  324. package/dist/types/utils/object.d.ts +10 -0
  325. package/dist/types/utils/object.d.ts.map +1 -0
  326. package/dist/types/utils/payments/evm.d.ts +19 -0
  327. package/dist/types/utils/payments/evm.d.ts.map +1 -0
  328. package/dist/types/utils/payments/solana.d.ts +88 -0
  329. package/dist/types/utils/payments/solana.d.ts.map +1 -0
  330. package/dist/types/verifiable/constants.d.ts +188 -0
  331. package/dist/types/verifiable/constants.d.ts.map +1 -0
  332. package/dist/types/verifiable/core-utils.d.ts +87 -0
  333. package/dist/types/verifiable/core-utils.d.ts.map +1 -0
  334. package/dist/types/verifiable/credential.d.ts +150 -0
  335. package/dist/types/verifiable/credential.d.ts.map +1 -0
  336. package/dist/types/verifiable/index.d.ts +7 -0
  337. package/dist/types/verifiable/index.d.ts.map +1 -0
  338. package/dist/types/verifiable/presentation.d.ts +11 -0
  339. package/dist/types/verifiable/presentation.d.ts.map +1 -0
  340. package/dist/types/verifiable/proof.d.ts +211 -0
  341. package/dist/types/verifiable/proof.d.ts.map +1 -0
  342. package/dist/types/verifiable/schema.d.ts +3 -0
  343. package/dist/types/verifiable/schema.d.ts.map +1 -0
  344. package/package.json +104 -0
  345. package/src/blockchain/index.ts +1 -0
  346. package/src/blockchain/transaction-service.ts +121 -0
  347. package/src/circuits/atomic-query-mtp-v2-on-chain.ts +338 -0
  348. package/src/circuits/atomic-query-mtp-v2.ts +283 -0
  349. package/src/circuits/atomic-query-sig-v2-on-chain.ts +411 -0
  350. package/src/circuits/atomic-query-sig-v2.ts +340 -0
  351. package/src/circuits/atomic-query-v3-on-chain.ts +531 -0
  352. package/src/circuits/atomic-query-v3.ts +461 -0
  353. package/src/circuits/auth-v2.ts +159 -0
  354. package/src/circuits/common.ts +261 -0
  355. package/src/circuits/comparer.ts +227 -0
  356. package/src/circuits/index.ts +12 -0
  357. package/src/circuits/linked-multi-query.ts +180 -0
  358. package/src/circuits/models.ts +263 -0
  359. package/src/circuits/state-transition.ts +139 -0
  360. package/src/credentials/credential-wallet.ts +353 -0
  361. package/src/credentials/index.ts +11 -0
  362. package/src/credentials/models.ts +93 -0
  363. package/src/credentials/rhs.ts +176 -0
  364. package/src/credentials/status/agent-revocation.ts +69 -0
  365. package/src/credentials/status/credential-status-publisher.ts +143 -0
  366. package/src/credentials/status/did-resolver-revocation.ts +24 -0
  367. package/src/credentials/status/on-chain-revocation.ts +174 -0
  368. package/src/credentials/status/resolver.ts +81 -0
  369. package/src/credentials/status/reverse-sparse-merkle-tree.ts +366 -0
  370. package/src/credentials/status/sparse-merkle-tree.ts +50 -0
  371. package/src/credentials/utils.ts +36 -0
  372. package/src/iden3comm/constants.ts +119 -0
  373. package/src/iden3comm/errors.ts +14 -0
  374. package/src/iden3comm/handlers/auth.ts +520 -0
  375. package/src/iden3comm/handlers/common.ts +324 -0
  376. package/src/iden3comm/handlers/contract-request.ts +367 -0
  377. package/src/iden3comm/handlers/credential-proposal.ts +371 -0
  378. package/src/iden3comm/handlers/discovery-protocol.ts +277 -0
  379. package/src/iden3comm/handlers/fetch.ts +450 -0
  380. package/src/iden3comm/handlers/index.ts +11 -0
  381. package/src/iden3comm/handlers/message-handler.ts +165 -0
  382. package/src/iden3comm/handlers/payment.ts +698 -0
  383. package/src/iden3comm/handlers/problem-report.ts +41 -0
  384. package/src/iden3comm/handlers/refresh.ts +138 -0
  385. package/src/iden3comm/handlers/revocation-status.ts +228 -0
  386. package/src/iden3comm/index.ts +9 -0
  387. package/src/iden3comm/packageManager.ts +143 -0
  388. package/src/iden3comm/packers/index.ts +3 -0
  389. package/src/iden3comm/packers/jws.ts +225 -0
  390. package/src/iden3comm/packers/plain.ts +86 -0
  391. package/src/iden3comm/packers/zkp.ts +243 -0
  392. package/src/iden3comm/types/index.ts +17 -0
  393. package/src/iden3comm/types/models.ts +7 -0
  394. package/src/iden3comm/types/packageManager.ts +112 -0
  395. package/src/iden3comm/types/packer.ts +190 -0
  396. package/src/iden3comm/types/protocol/accept-profile.ts +14 -0
  397. package/src/iden3comm/types/protocol/attachment.ts +12 -0
  398. package/src/iden3comm/types/protocol/auth.ts +104 -0
  399. package/src/iden3comm/types/protocol/common.ts +10 -0
  400. package/src/iden3comm/types/protocol/contract-request.ts +76 -0
  401. package/src/iden3comm/types/protocol/credentials.ts +96 -0
  402. package/src/iden3comm/types/protocol/discovery-protocol.ts +49 -0
  403. package/src/iden3comm/types/protocol/messages.ts +13 -0
  404. package/src/iden3comm/types/protocol/payment.ts +231 -0
  405. package/src/iden3comm/types/protocol/problem-report.ts +18 -0
  406. package/src/iden3comm/types/protocol/proof.ts +25 -0
  407. package/src/iden3comm/types/protocol/proposal-request.ts +38 -0
  408. package/src/iden3comm/types/protocol/revocation.ts +23 -0
  409. package/src/iden3comm/utils/accept-profile.ts +121 -0
  410. package/src/iden3comm/utils/did.ts +71 -0
  411. package/src/iden3comm/utils/envelope.ts +101 -0
  412. package/src/iden3comm/utils/index.ts +4 -0
  413. package/src/iden3comm/utils/message.ts +41 -0
  414. package/src/identity/common.ts +69 -0
  415. package/src/identity/identity-wallet.ts +1592 -0
  416. package/src/identity/index.ts +2 -0
  417. package/src/index.ts +16 -0
  418. package/src/kms/index.ts +4 -0
  419. package/src/kms/key-providers/bjj-provider.ts +118 -0
  420. package/src/kms/key-providers/ed25519-provider.ts +105 -0
  421. package/src/kms/key-providers/index.ts +3 -0
  422. package/src/kms/key-providers/secp256k1-provider.ts +125 -0
  423. package/src/kms/kms.ts +173 -0
  424. package/src/kms/provider-helpers.ts +13 -0
  425. package/src/kms/store/abstract-key-store.ts +34 -0
  426. package/src/kms/store/index.ts +5 -0
  427. package/src/kms/store/indexed-db-key-store.ts +60 -0
  428. package/src/kms/store/local-storage-key-store.ts +69 -0
  429. package/src/kms/store/memory-key-store.ts +29 -0
  430. package/src/kms/store/types.ts +21 -0
  431. package/src/proof/common.ts +273 -0
  432. package/src/proof/index.ts +4 -0
  433. package/src/proof/proof-service.ts +623 -0
  434. package/src/proof/provers/index.ts +3 -0
  435. package/src/proof/provers/inputs-generator.ts +627 -0
  436. package/src/proof/provers/prover.ts +104 -0
  437. package/src/proof/provers/witness_calculator.ts +315 -0
  438. package/src/proof/verifiers/index.ts +3 -0
  439. package/src/proof/verifiers/pub-signals-verifier.ts +730 -0
  440. package/src/proof/verifiers/query-hash.ts +57 -0
  441. package/src/proof/verifiers/query.ts +340 -0
  442. package/src/schema-processor/index.ts +3 -0
  443. package/src/schema-processor/json/index.ts +2 -0
  444. package/src/schema-processor/json/parser.ts +256 -0
  445. package/src/schema-processor/json/validator.ts +67 -0
  446. package/src/schema-processor/jsonld/cache.ts +49 -0
  447. package/src/schema-processor/jsonld/index.ts +2 -0
  448. package/src/schema-processor/jsonld/parser.ts +93 -0
  449. package/src/schema-processor/utils.ts +84 -0
  450. package/src/storage/blockchain/abi/CredentialStatusResolver.json +1 -0
  451. package/src/storage/blockchain/abi/ERC20.json +1 -0
  452. package/src/storage/blockchain/abi/ERC20Permit.json +1 -0
  453. package/src/storage/blockchain/abi/IdentityBase.json +1 -0
  454. package/src/storage/blockchain/abi/State.json +1 -0
  455. package/src/storage/blockchain/abi/ZkpVerifier.json +789 -0
  456. package/src/storage/blockchain/common.ts +20 -0
  457. package/src/storage/blockchain/did-resolver-readonly-storage.ts +90 -0
  458. package/src/storage/blockchain/erc20-helper.ts +66 -0
  459. package/src/storage/blockchain/errors.ts +46 -0
  460. package/src/storage/blockchain/index.ts +7 -0
  461. package/src/storage/blockchain/onchain-issuer-adapter/non-merklized/version/v0.0.1/onchain-non-merklized-issuer-adapter.ts +327 -0
  462. package/src/storage/blockchain/onchain-issuer.ts +104 -0
  463. package/src/storage/blockchain/onchain-revocation.ts +143 -0
  464. package/src/storage/blockchain/onchain-zkp-verifier.ts +704 -0
  465. package/src/storage/blockchain/state.ts +471 -0
  466. package/src/storage/entities/circuitData.ts +7 -0
  467. package/src/storage/entities/identity.ts +18 -0
  468. package/src/storage/entities/index.ts +4 -0
  469. package/src/storage/entities/mt.ts +25 -0
  470. package/src/storage/entities/state.ts +97 -0
  471. package/src/storage/errors.ts +8 -0
  472. package/src/storage/filters/index.ts +1 -0
  473. package/src/storage/filters/jsonQuery.ts +368 -0
  474. package/src/storage/fs/circuits-storage.ts +149 -0
  475. package/src/storage/fs/index.ts +1 -0
  476. package/src/storage/index.ts +9 -0
  477. package/src/storage/indexed-db/data-source.ts +58 -0
  478. package/src/storage/indexed-db/index.ts +2 -0
  479. package/src/storage/indexed-db/merkletree.ts +140 -0
  480. package/src/storage/interfaces/circuits.ts +27 -0
  481. package/src/storage/interfaces/credentials.ts +53 -0
  482. package/src/storage/interfaces/data-source.ts +41 -0
  483. package/src/storage/interfaces/data-storage.ts +17 -0
  484. package/src/storage/interfaces/identity.ts +73 -0
  485. package/src/storage/interfaces/index.ts +10 -0
  486. package/src/storage/interfaces/merkletree.ts +52 -0
  487. package/src/storage/interfaces/onchain-issuer.ts +13 -0
  488. package/src/storage/interfaces/onchain-revocation.ts +22 -0
  489. package/src/storage/interfaces/onchain-zkp-verifier.ts +94 -0
  490. package/src/storage/interfaces/state.ts +81 -0
  491. package/src/storage/local-storage/data-source.ts +87 -0
  492. package/src/storage/local-storage/index.ts +2 -0
  493. package/src/storage/local-storage/merkletree.ts +137 -0
  494. package/src/storage/memory/cache-lru.ts +30 -0
  495. package/src/storage/memory/data-source.ts +45 -0
  496. package/src/storage/memory/index.ts +3 -0
  497. package/src/storage/memory/merkletree.ts +116 -0
  498. package/src/storage/shared/circuit-storage.ts +49 -0
  499. package/src/storage/shared/credential-storage.ts +70 -0
  500. package/src/storage/shared/identity-storage.ts +82 -0
  501. package/src/storage/shared/index.ts +3 -0
  502. package/src/storage/utils.ts +19 -0
  503. package/src/utils/compare-func.ts +5 -0
  504. package/src/utils/did-helper.ts +157 -0
  505. package/src/utils/encoding.ts +47 -0
  506. package/src/utils/index.ts +7 -0
  507. package/src/utils/message-bus.ts +88 -0
  508. package/src/utils/object.ts +52 -0
  509. package/src/utils/payments/evm.ts +152 -0
  510. package/src/utils/payments/solana.ts +360 -0
  511. package/src/verifiable/constants.ts +239 -0
  512. package/src/verifiable/core-utils.ts +307 -0
  513. package/src/verifiable/credential.ts +649 -0
  514. package/src/verifiable/index.ts +6 -0
  515. package/src/verifiable/presentation.ts +97 -0
  516. package/src/verifiable/proof.ts +277 -0
  517. package/src/verifiable/schema.ts +241 -0
@@ -0,0 +1,730 @@
1
+ import { DID, getDateFromUnixTimestamp, Id } from '@mocanetwork/moca-iden3';
2
+ import { DocumentLoader, getDocumentLoader, Path } from '@iden3/js-jsonld-merklization';
3
+ import { Hash } from '@iden3/js-merkletree';
4
+ import { IStateStorage, RootInfo, StateInfo } from '../../storage';
5
+ import { byteEncoder, isGenesisState } from '../../utils';
6
+ import { calculateCoreSchemaHash, ProofQuery, ProofType } from '../../verifiable';
7
+ import { AtomicQueryMTPV2PubSignals } from '../../circuits/atomic-query-mtp-v2';
8
+ import { AtomicQuerySigV2PubSignals } from '../../circuits/atomic-query-sig-v2';
9
+ import { AtomicQueryV3PubSignals } from '../../circuits/atomic-query-v3';
10
+ import { AuthV2PubSignals } from '../../circuits/auth-v2';
11
+ import { BaseConfig } from '../../circuits/common';
12
+ import {
13
+ LinkedMultiQueryPubSignals,
14
+ LinkedMultiQueryInputs
15
+ } from '../../circuits/linked-multi-query';
16
+ import { CircuitId } from '../../circuits/models';
17
+ import {
18
+ checkQueryRequest,
19
+ ClaimOutputs,
20
+ VerifyOpts,
21
+ fieldValueFromVerifiablePresentation,
22
+ validateDisclosureV2Circuit,
23
+ validateEmptyCredentialSubjectV2Circuit,
24
+ validateOperators,
25
+ verifyFieldValueInclusionV2,
26
+ validateDisclosureNativeSDSupport,
27
+ validateEmptyCredentialSubjectNoopNativeSupport,
28
+ verifyFieldValueInclusionNativeExistsSupport,
29
+ checkCircuitOperator
30
+ } from './query';
31
+ import { parseQueriesMetadata, QueryMetadata } from '../common';
32
+ import { Operators } from '../../circuits';
33
+ import { calculateQueryHashV3 } from './query-hash';
34
+ import { JsonLd } from 'jsonld/jsonld-spec';
35
+ import {
36
+ PROTOCOL_CONSTANTS,
37
+ JSONObject,
38
+ VerifiablePresentation,
39
+ JsonDocumentObject
40
+ } from '../../iden3comm';
41
+ import { isRootDoesNotExistError, isStateDoesNotExistError } from '../../storage/blockchain/errors';
42
+
43
+ /**
44
+ * Verify Context - params for pub signal verification
45
+ * @type VerifyContext
46
+ */
47
+ export type VerifyContext = {
48
+ pubSignals: string[];
49
+ query: ProofQuery;
50
+ verifiablePresentation?: VerifiablePresentation;
51
+ sender: string;
52
+ challenge: bigint;
53
+ opts?: VerifyOpts;
54
+ params?: JSONObject;
55
+ };
56
+
57
+ export const userStateError = new Error(`user state is not valid`);
58
+ const zeroInt = 0n;
59
+
60
+ /**
61
+ * PubSignalsVerifier provides verify method
62
+ * @public
63
+ * @class PubSignalsVerifier
64
+ */
65
+ export class PubSignalsVerifier {
66
+ userId!: Id;
67
+ challenge!: bigint;
68
+
69
+ /**
70
+ * Creates an instance of PubSignalsVerifier.
71
+ * @param {DocumentLoader} _documentLoader document loader
72
+ * @param {IStateStorage} _stateStorage state storage
73
+ */
74
+
75
+ constructor(
76
+ private readonly _documentLoader: DocumentLoader,
77
+ private readonly _stateStorage: IStateStorage
78
+ ) {}
79
+
80
+ /**
81
+ * verify public signals
82
+ *
83
+ * @param {string} circuitId circuit id
84
+ * @param {VerifyContext} ctx verification parameters
85
+ * @returns `Promise<BaseConfig>`
86
+ */
87
+ async verify(circuitId: string, ctx: VerifyContext): Promise<BaseConfig> {
88
+ const fnName = `${circuitId.split('-')[0]}Verify`;
89
+ const fn = (this as unknown as { [k: string]: (ctx: VerifyContext) => Promise<BaseConfig> })[
90
+ fnName
91
+ ];
92
+ if (!fn) {
93
+ throw new Error(`public signals verifier for ${circuitId} not found`);
94
+ }
95
+ return fn(ctx);
96
+ }
97
+
98
+ private credentialAtomicQueryMTPV2Verify = async ({
99
+ query,
100
+ verifiablePresentation,
101
+ sender,
102
+ challenge,
103
+ pubSignals,
104
+ opts
105
+ }: VerifyContext): Promise<BaseConfig> => {
106
+ let mtpv2PubSignals = new AtomicQueryMTPV2PubSignals();
107
+ mtpv2PubSignals = mtpv2PubSignals.pubSignalsUnmarshal(
108
+ byteEncoder.encode(JSON.stringify(pubSignals))
109
+ );
110
+
111
+ if (!mtpv2PubSignals.userID) {
112
+ throw new Error('user id is not presented in proof public signals');
113
+ }
114
+
115
+ if (!mtpv2PubSignals.requestID) {
116
+ throw new Error('requestId is not presented in proof public signals');
117
+ }
118
+
119
+ this.userId = mtpv2PubSignals.userID;
120
+ this.challenge = mtpv2PubSignals.requestID;
121
+
122
+ // verify query
123
+ const outs: ClaimOutputs = {
124
+ issuerId: mtpv2PubSignals.issuerID,
125
+ schemaHash: mtpv2PubSignals.claimSchema,
126
+ slotIndex: mtpv2PubSignals.slotIndex,
127
+ operator: mtpv2PubSignals.operator,
128
+ value: mtpv2PubSignals.value,
129
+ timestamp: mtpv2PubSignals.timestamp,
130
+ merklized: mtpv2PubSignals.merklized,
131
+ claimPathKey: mtpv2PubSignals.claimPathKey,
132
+ claimPathNotExists: mtpv2PubSignals.claimPathNotExists,
133
+ valueArraySize: mtpv2PubSignals.getValueArrSize(),
134
+ isRevocationChecked: mtpv2PubSignals.isRevocationChecked
135
+ };
136
+
137
+ await this.checkQueryV2Circuits(
138
+ CircuitId.AtomicQueryMTPV2,
139
+ query,
140
+ outs,
141
+ opts,
142
+ verifiablePresentation
143
+ );
144
+
145
+ // verify state
146
+ await this.checkStateExistenceForId(
147
+ mtpv2PubSignals.issuerID,
148
+ mtpv2PubSignals.issuerClaimIdenState
149
+ );
150
+
151
+ if (mtpv2PubSignals.isRevocationChecked !== 0) {
152
+ await this.checkRevocationState(
153
+ mtpv2PubSignals.issuerID,
154
+ mtpv2PubSignals.issuerClaimNonRevState,
155
+ opts
156
+ );
157
+ }
158
+
159
+ // verify ID ownership
160
+ this.verifyIdOwnership(sender, challenge);
161
+ return mtpv2PubSignals;
162
+ };
163
+
164
+ private credentialAtomicQuerySigV2Verify = async ({
165
+ query,
166
+ verifiablePresentation,
167
+ sender,
168
+ challenge,
169
+ pubSignals,
170
+ opts
171
+ }: VerifyContext): Promise<BaseConfig> => {
172
+ let sigV2PubSignals = new AtomicQuerySigV2PubSignals();
173
+ sigV2PubSignals = sigV2PubSignals.pubSignalsUnmarshal(
174
+ byteEncoder.encode(JSON.stringify(pubSignals))
175
+ );
176
+
177
+ this.userId = sigV2PubSignals.userID;
178
+ this.challenge = sigV2PubSignals.requestID;
179
+
180
+ // verify query
181
+ const outs: ClaimOutputs = {
182
+ issuerId: sigV2PubSignals.issuerID,
183
+ schemaHash: sigV2PubSignals.claimSchema,
184
+ slotIndex: sigV2PubSignals.slotIndex,
185
+ operator: sigV2PubSignals.operator,
186
+ value: sigV2PubSignals.value,
187
+ timestamp: sigV2PubSignals.timestamp,
188
+ merklized: sigV2PubSignals.merklized,
189
+ claimPathKey: sigV2PubSignals.claimPathKey,
190
+ claimPathNotExists: sigV2PubSignals.claimPathNotExists,
191
+ valueArraySize: sigV2PubSignals.getValueArrSize(),
192
+ isRevocationChecked: sigV2PubSignals.isRevocationChecked
193
+ };
194
+
195
+ await this.checkQueryV2Circuits(
196
+ CircuitId.AtomicQuerySigV2,
197
+ query,
198
+ outs,
199
+ opts,
200
+ verifiablePresentation
201
+ );
202
+
203
+ // verify state
204
+ await this.checkStateExistenceForId(sigV2PubSignals.issuerID, sigV2PubSignals.issuerAuthState);
205
+
206
+ if (sigV2PubSignals.isRevocationChecked !== 0) {
207
+ await this.checkRevocationState(
208
+ sigV2PubSignals.issuerID,
209
+ sigV2PubSignals.issuerClaimNonRevState,
210
+ opts
211
+ );
212
+ }
213
+ // verify Id ownership
214
+ this.verifyIdOwnership(sender, challenge);
215
+
216
+ return sigV2PubSignals;
217
+ };
218
+
219
+ private credentialAtomicQueryV3Verify = async ({
220
+ query,
221
+ verifiablePresentation,
222
+ sender,
223
+ challenge,
224
+ pubSignals,
225
+ opts,
226
+ params
227
+ }: VerifyContext): Promise<BaseConfig> => {
228
+ let v3PubSignals = new AtomicQueryV3PubSignals();
229
+ v3PubSignals = v3PubSignals.pubSignalsUnmarshal(byteEncoder.encode(JSON.stringify(pubSignals)));
230
+
231
+ this.userId = v3PubSignals.userID;
232
+ this.challenge = v3PubSignals.requestID;
233
+
234
+ // verify query
235
+ const outs: ClaimOutputs = {
236
+ issuerId: v3PubSignals.issuerID,
237
+ schemaHash: v3PubSignals.claimSchema,
238
+ slotIndex: v3PubSignals.slotIndex,
239
+ operator: v3PubSignals.operator,
240
+ value: v3PubSignals.value,
241
+ timestamp: v3PubSignals.timestamp,
242
+ merklized: v3PubSignals.merklized,
243
+ claimPathKey: v3PubSignals.claimPathKey,
244
+ valueArraySize: v3PubSignals.getValueArrSize(),
245
+ operatorOutput: v3PubSignals.operatorOutput,
246
+ isRevocationChecked: v3PubSignals.isRevocationChecked
247
+ };
248
+
249
+ if (!query.type) {
250
+ throw new Error(`proof query type is undefined`);
251
+ }
252
+
253
+ const loader = this._documentLoader ?? getDocumentLoader();
254
+
255
+ // validate schema
256
+ let context: JsonLd;
257
+ try {
258
+ context = (await loader(query.context ?? '')).document;
259
+ } catch (e) {
260
+ throw new Error(`can't load schema for request query`);
261
+ }
262
+
263
+ const queriesMetadata = await parseQueriesMetadata(
264
+ query.type,
265
+ JSON.stringify(context),
266
+ query.credentialSubject as JsonDocumentObject,
267
+ {
268
+ documentLoader: loader
269
+ }
270
+ );
271
+
272
+ const circuitId = CircuitId.AtomicQueryV3;
273
+ await checkQueryRequest(
274
+ query,
275
+ queriesMetadata,
276
+ context,
277
+ outs,
278
+ circuitId,
279
+ this._documentLoader,
280
+ opts
281
+ );
282
+
283
+ const queryMetadata = queriesMetadata[0]; // only one query is supported
284
+
285
+ checkCircuitOperator(circuitId, outs.operator);
286
+ // validate selective disclosure
287
+ if (queryMetadata.operator === Operators.SD) {
288
+ try {
289
+ await validateDisclosureNativeSDSupport(
290
+ queryMetadata,
291
+ outs,
292
+ verifiablePresentation,
293
+ loader
294
+ );
295
+ } catch (e) {
296
+ throw new Error(`failed to validate selective disclosure: ${(e as Error).message}`);
297
+ }
298
+ } else if (!queryMetadata.fieldName && queryMetadata.operator == Operators.NOOP) {
299
+ try {
300
+ await validateEmptyCredentialSubjectNoopNativeSupport(outs);
301
+ } catch (e: unknown) {
302
+ throw new Error(`failed to validate operators: ${(e as Error).message}`);
303
+ }
304
+ } else {
305
+ try {
306
+ await validateOperators(queryMetadata, outs);
307
+ } catch (e) {
308
+ throw new Error(`failed to validate operators: ${(e as Error).message}`);
309
+ }
310
+ }
311
+
312
+ // verify field inclusion / non-inclusion
313
+
314
+ verifyFieldValueInclusionNativeExistsSupport(outs, queryMetadata);
315
+
316
+ const { proofType, verifierID, nullifier, nullifierSessionID, linkID } = v3PubSignals;
317
+
318
+ switch (query.proofType) {
319
+ case ProofType.BJJSignature:
320
+ if (proofType !== 1) {
321
+ throw new Error('wrong proof type for BJJSignature');
322
+ }
323
+ break;
324
+ case ProofType.Iden3SparseMerkleTreeProof:
325
+ if (proofType !== 2) {
326
+ throw new Error('wrong proof type for Iden3SparseMerkleTreeProof');
327
+ }
328
+ break;
329
+ default:
330
+ throw new Error('invalid proof type');
331
+ }
332
+
333
+ const nSessionId = BigInt((params?.nullifierSessionId as string) ?? 0);
334
+
335
+ if (nSessionId !== 0n) {
336
+ if (BigInt(nullifier ?? 0) === 0n) {
337
+ throw new Error('nullifier should be provided for nullification and should not be 0');
338
+ }
339
+ // verify nullifier information
340
+ const verifierDIDParam = params?.verifierDid;
341
+ if (!verifierDIDParam) {
342
+ throw new Error('verifierDid is required');
343
+ }
344
+
345
+ const id = DID.idFromDID(verifierDIDParam as DID);
346
+
347
+ if (verifierID.bigInt() != id.bigInt()) {
348
+ throw new Error('wrong verifier is used for nullification');
349
+ }
350
+
351
+ if (nullifierSessionID !== nSessionId) {
352
+ throw new Error(
353
+ `wrong verifier session id is used for nullification, expected ${nSessionId}, got ${nullifierSessionID}`
354
+ );
355
+ }
356
+ } else if (nullifierSessionID !== 0n) {
357
+ throw new Error(`Nullifier id is generated but wasn't requested`);
358
+ }
359
+
360
+ if (!query.groupId && linkID !== 0n) {
361
+ throw new Error(`proof contains link id, but group id is not provided`);
362
+ }
363
+
364
+ if (query.groupId && linkID === 0n) {
365
+ throw new Error("proof doesn't contain link id, but group id is provided");
366
+ }
367
+
368
+ // verify state
369
+ await this.checkStateExistenceForId(v3PubSignals.issuerID, v3PubSignals.issuerState);
370
+
371
+ if (v3PubSignals.isRevocationChecked !== 0) {
372
+ await this.checkRevocationState(
373
+ v3PubSignals.issuerID,
374
+ v3PubSignals.issuerClaimNonRevState,
375
+ opts
376
+ );
377
+ }
378
+
379
+ this.verifyIdOwnership(sender, challenge);
380
+
381
+ return v3PubSignals;
382
+ };
383
+
384
+ private authV2Verify = async ({
385
+ sender,
386
+ challenge,
387
+ pubSignals,
388
+ opts
389
+ }: VerifyContext): Promise<BaseConfig> => {
390
+ let authV2PubSignals = new AuthV2PubSignals();
391
+ authV2PubSignals = authV2PubSignals.pubSignalsUnmarshal(
392
+ byteEncoder.encode(JSON.stringify(pubSignals))
393
+ );
394
+
395
+ this.userId = authV2PubSignals.userID;
396
+ this.challenge = authV2PubSignals.challenge;
397
+
398
+ // no query verification
399
+ // verify state
400
+ const gist = await this.checkGlobalState(authV2PubSignals.GISTRoot, this.userId);
401
+
402
+ let acceptedStateTransitionDelay = PROTOCOL_CONSTANTS.DEFAULT_AUTH_VERIFY_DELAY;
403
+ if (opts?.acceptedStateTransitionDelay) {
404
+ acceptedStateTransitionDelay = opts.acceptedStateTransitionDelay;
405
+ }
406
+
407
+ if (!gist.latest) {
408
+ const timeDiff =
409
+ Date.now() - getDateFromUnixTimestamp(Number(gist.transitionTimestamp)).getTime();
410
+ if (timeDiff > acceptedStateTransitionDelay) {
411
+ throw new Error('global state is outdated');
412
+ }
413
+ }
414
+
415
+ // verify Id ownership
416
+ this.verifyIdOwnership(sender, challenge);
417
+ return new BaseConfig();
418
+ };
419
+
420
+ private linkedMultiQuery10Verify = async ({
421
+ query,
422
+ verifiablePresentation,
423
+ pubSignals
424
+ }: VerifyContext): Promise<BaseConfig> => {
425
+ let multiQueryPubSignals = new LinkedMultiQueryPubSignals();
426
+
427
+ multiQueryPubSignals = multiQueryPubSignals.pubSignalsUnmarshal(
428
+ byteEncoder.encode(JSON.stringify(pubSignals))
429
+ );
430
+
431
+ // verify query
432
+ let schema: JsonDocumentObject;
433
+ const ldOpts = { documentLoader: this._documentLoader };
434
+ try {
435
+ schema = (await ldOpts.documentLoader(query.context || '')).document as JsonDocumentObject;
436
+ } catch (e) {
437
+ throw new Error(`can't load schema for request query`);
438
+ }
439
+ const ldContextJSON = JSON.stringify(schema);
440
+ const credentialSubject = query.credentialSubject as JsonDocumentObject;
441
+ const schemaId: string = await Path.getTypeIDFromContext(
442
+ ldContextJSON,
443
+ query.type || '',
444
+ ldOpts
445
+ );
446
+ const schemaHash = calculateCoreSchemaHash(byteEncoder.encode(schemaId));
447
+
448
+ const queriesMetadata = await parseQueriesMetadata(
449
+ query.type || '',
450
+ ldContextJSON,
451
+ credentialSubject,
452
+ ldOpts
453
+ );
454
+
455
+ const request: { queryHash: bigint; queryMeta: QueryMetadata }[] = [];
456
+ const merklized = queriesMetadata[0]?.merklizedSchema ? 1 : 0;
457
+ for (let i = 0; i < LinkedMultiQueryInputs.queryCount; i++) {
458
+ const queryMeta = queriesMetadata[i];
459
+ const values = queryMeta?.values ?? [];
460
+ const valArrSize = values.length;
461
+
462
+ const queryHash = calculateQueryHashV3(
463
+ values,
464
+ schemaHash,
465
+ queryMeta?.slotIndex ?? 0,
466
+ queryMeta?.operator ?? 0,
467
+ queryMeta?.claimPathKey.toString() ?? 0,
468
+ valArrSize,
469
+ merklized,
470
+ 0,
471
+ 0,
472
+ 0
473
+ );
474
+ request.push({ queryHash, queryMeta });
475
+ }
476
+
477
+ const queryHashCompare = (a: { queryHash: bigint }, b: { queryHash: bigint }): number => {
478
+ if (a.queryHash < b.queryHash) return -1;
479
+ if (a.queryHash > b.queryHash) return 1;
480
+ return 0;
481
+ };
482
+
483
+ const pubSignalsMeta = multiQueryPubSignals.circuitQueryHash.map((queryHash, index) => ({
484
+ queryHash,
485
+ operatorOutput: multiQueryPubSignals.operatorOutput[index]
486
+ }));
487
+
488
+ pubSignalsMeta.sort(queryHashCompare);
489
+ request.sort(queryHashCompare);
490
+
491
+ for (let i = 0; i < LinkedMultiQueryInputs.queryCount; i++) {
492
+ if (request[i].queryHash != pubSignalsMeta[i].queryHash) {
493
+ throw new Error('query hashes do not match');
494
+ }
495
+
496
+ if (request[i].queryMeta?.operator === Operators.SD) {
497
+ const disclosedValue = await fieldValueFromVerifiablePresentation(
498
+ request[i].queryMeta.fieldName,
499
+ verifiablePresentation,
500
+ this._documentLoader
501
+ );
502
+ if (disclosedValue != pubSignalsMeta[i].operatorOutput) {
503
+ throw new Error('disclosed value is not in the proof outputs');
504
+ }
505
+ }
506
+ }
507
+
508
+ return multiQueryPubSignals as unknown as BaseConfig;
509
+ };
510
+
511
+ private verifyIdOwnership = (sender: string, challenge: bigint): void => {
512
+ const senderId = DID.idFromDID(DID.parse(sender));
513
+ if (senderId.string() !== this.userId.string()) {
514
+ throw new Error(
515
+ `sender id is not used for proof creation, expected ${sender}, user from public signals: ${this.userId.string()}`
516
+ );
517
+ }
518
+ if (challenge !== this.challenge) {
519
+ throw new Error(
520
+ `challenge is not used for proof creation, expected ${challenge}, challenge from public signals: ${this.challenge} `
521
+ );
522
+ }
523
+ };
524
+
525
+ private async checkQueryV2Circuits(
526
+ circuitId: CircuitId.AtomicQueryMTPV2 | CircuitId.AtomicQuerySigV2,
527
+ query: ProofQuery,
528
+ outs: ClaimOutputs,
529
+ opts: VerifyOpts | undefined,
530
+ verifiablePresentation: VerifiablePresentation | undefined
531
+ ) {
532
+ if (!query.type) {
533
+ throw new Error(`proof query type is undefined`);
534
+ }
535
+
536
+ const loader = this._documentLoader ?? getDocumentLoader();
537
+
538
+ // validate schema
539
+ let context: JsonLd;
540
+ try {
541
+ context = (await loader(query.context ?? '')).document;
542
+ } catch (e) {
543
+ throw new Error(`can't load schema for request query`);
544
+ }
545
+
546
+ const queriesMetadata = await parseQueriesMetadata(
547
+ query.type,
548
+ JSON.stringify(context),
549
+ query.credentialSubject as JsonDocumentObject,
550
+ {
551
+ documentLoader: loader
552
+ }
553
+ );
554
+
555
+ await checkQueryRequest(
556
+ query,
557
+ queriesMetadata,
558
+ context,
559
+ outs,
560
+ circuitId,
561
+ this._documentLoader,
562
+ opts
563
+ );
564
+
565
+ const queryMetadata = queriesMetadata[0]; // only one query is supported
566
+
567
+ checkCircuitOperator(circuitId, outs.operator);
568
+
569
+ // validate selective disclosure
570
+ if (queryMetadata.operator === Operators.SD) {
571
+ try {
572
+ await validateDisclosureV2Circuit(queryMetadata, outs, verifiablePresentation, loader);
573
+ } catch (e) {
574
+ throw new Error(`failed to validate selective disclosure: ${(e as Error).message}`);
575
+ }
576
+ } else if (!queryMetadata.fieldName && queryMetadata.operator == Operators.NOOP) {
577
+ try {
578
+ await validateEmptyCredentialSubjectV2Circuit(queryMetadata, outs);
579
+ } catch (e: unknown) {
580
+ throw new Error(`failed to validate operators: ${(e as Error).message}`);
581
+ }
582
+ } else {
583
+ try {
584
+ await validateOperators(queryMetadata, outs);
585
+ } catch (e) {
586
+ throw new Error(`failed to validate operators: ${(e as Error).message}`);
587
+ }
588
+ }
589
+
590
+ // verify field inclusion
591
+ verifyFieldValueInclusionV2(outs, queryMetadata);
592
+ }
593
+
594
+ private async resolve(
595
+ id: Id,
596
+ state: bigint
597
+ ): Promise<{
598
+ latest: boolean;
599
+ transitionTimestamp: number | string;
600
+ }> {
601
+ const idBigInt = id.bigInt();
602
+ const did = DID.parseFromId(id);
603
+ // check if id is genesis
604
+ const isGenesis = isGenesisState(did, state);
605
+ let contractState: StateInfo;
606
+ try {
607
+ contractState = await this._stateStorage.getStateInfoByIdAndState(idBigInt, state);
608
+ } catch (e) {
609
+ if (isStateDoesNotExistError(e)) {
610
+ if (isGenesis) {
611
+ return {
612
+ latest: true,
613
+ transitionTimestamp: 0
614
+ };
615
+ }
616
+ throw new Error('State is not genesis and not registered in the smart contract');
617
+ }
618
+ throw e;
619
+ }
620
+
621
+ if (!contractState.id || contractState.id.toString() !== idBigInt.toString()) {
622
+ throw new Error(`state was recorded for another identity`);
623
+ }
624
+
625
+ if (!contractState.state || contractState.state.toString() !== state.toString()) {
626
+ if (
627
+ !contractState.replacedAtTimestamp ||
628
+ contractState.replacedAtTimestamp.toString() === zeroInt.toString()
629
+ ) {
630
+ throw new Error(`no information about state transition`);
631
+ }
632
+ return {
633
+ latest: false,
634
+ transitionTimestamp: contractState.replacedAtTimestamp.toString()
635
+ };
636
+ }
637
+
638
+ return {
639
+ latest:
640
+ !contractState.replacedAtTimestamp ||
641
+ contractState.replacedAtTimestamp.toString() === zeroInt.toString(),
642
+ transitionTimestamp: contractState.replacedAtTimestamp?.toString() ?? 0
643
+ };
644
+ }
645
+
646
+ private async rootResolve(
647
+ state: bigint,
648
+ id: bigint
649
+ ): Promise<{
650
+ latest: boolean;
651
+ transitionTimestamp: number | string;
652
+ }> {
653
+ let globalStateInfo: RootInfo;
654
+ try {
655
+ globalStateInfo = await this._stateStorage.getGISTRootInfo(state, id);
656
+ } catch (e: unknown) {
657
+ if (isRootDoesNotExistError(e)) {
658
+ throw new Error('GIST root does not exist in the smart contract');
659
+ }
660
+ throw e;
661
+ }
662
+
663
+ if (globalStateInfo.root.toString() !== state.toString()) {
664
+ throw new Error(`gist info contains invalid state`);
665
+ }
666
+
667
+ if (globalStateInfo.replacedByRoot.toString() !== zeroInt.toString()) {
668
+ if (globalStateInfo.replacedAtTimestamp.toString() === zeroInt.toString()) {
669
+ throw new Error(`state was replaced, but replaced time unknown`);
670
+ }
671
+ return {
672
+ latest: false,
673
+ transitionTimestamp: globalStateInfo.replacedAtTimestamp.toString()
674
+ };
675
+ }
676
+
677
+ return {
678
+ latest: true,
679
+ transitionTimestamp: 0
680
+ };
681
+ }
682
+
683
+ private checkStateExistenceForId = async (userId: Id, userState: Hash): Promise<void> => {
684
+ await this.resolve(userId, userState.bigInt());
685
+ };
686
+
687
+ private checkGlobalState = async (
688
+ state: Hash,
689
+ id: Id
690
+ ): Promise<{
691
+ latest: boolean;
692
+ transitionTimestamp: number | string;
693
+ }> => {
694
+ return this.rootResolve(state.bigInt(), id.bigInt());
695
+ };
696
+
697
+ private checkRevocationStateForId = async (
698
+ issuerId: Id,
699
+ issuerClaimNonRevState: Hash
700
+ ): Promise<{
701
+ latest: boolean;
702
+ transitionTimestamp: number | string;
703
+ }> => {
704
+ const issuerNonRevStateResolved = await this.resolve(issuerId, issuerClaimNonRevState.bigInt());
705
+ return issuerNonRevStateResolved;
706
+ };
707
+
708
+ private checkRevocationState = async (
709
+ issuerID: Id,
710
+ issuerClaimNonRevState: Hash,
711
+ opts: VerifyOpts | undefined
712
+ ) => {
713
+ const issuerNonRevStateResolved = await this.checkRevocationStateForId(
714
+ issuerID,
715
+ issuerClaimNonRevState
716
+ );
717
+
718
+ const acceptedStateTransitionDelay =
719
+ opts?.acceptedStateTransitionDelay ?? PROTOCOL_CONSTANTS.DEFAULT_PROOF_VERIFY_DELAY;
720
+
721
+ if (!issuerNonRevStateResolved.latest) {
722
+ const timeDiff =
723
+ Date.now() -
724
+ getDateFromUnixTimestamp(Number(issuerNonRevStateResolved.transitionTimestamp)).getTime();
725
+ if (timeDiff > acceptedStateTransitionDelay) {
726
+ throw new Error('issuer state is outdated');
727
+ }
728
+ }
729
+ };
730
+ }