@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,649 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import {
3
+ BJJSignatureProof2021,
4
+ Iden3SparseMerkleTreeProof,
5
+ CredentialStatus,
6
+ RefreshService,
7
+ DisplayMethod
8
+ } from './proof';
9
+ import {
10
+ Claim,
11
+ DID,
12
+ MerklizedRootPosition as MerklizedRootPositionCore,
13
+ IdPosition,
14
+ ClaimOptions,
15
+ getChainId
16
+ } from '@mocanetwork/moca-iden3';
17
+ import { Proof, Hash, rootFromProof, verifyProof } from '@iden3/js-merkletree';
18
+ import { Merklizer, Options } from '@iden3/js-jsonld-merklization';
19
+ import { PublicKey, poseidon } from '@iden3/js-crypto';
20
+ import { CredentialRequest, CredentialStatusResolverRegistry } from '../credentials';
21
+ import { getUserDIDFromCredential } from '../credentials/utils';
22
+ import { byteEncoder, validateDIDDocumentAuth } from '../utils';
23
+ import {
24
+ CredentialStatusType,
25
+ MerklizedRootPosition,
26
+ ProofType,
27
+ SubjectPosition,
28
+ VerifiableConstants
29
+ } from './constants';
30
+ import {
31
+ calculateCoreSchemaHash,
32
+ CoreClaimCreationOptions,
33
+ findCredentialType,
34
+ parseCoreClaimSlots
35
+ } from './core-utils';
36
+
37
+ import { JsonDocumentObject } from '../iden3comm';
38
+ import jsonld from 'jsonld';
39
+
40
+ /**
41
+ * W3C Verifiable credential
42
+ *
43
+ * @public
44
+ * @export
45
+ * @class W3CCredential
46
+ */
47
+ export class W3CCredential {
48
+ id = '';
49
+ '@context': string[] = [];
50
+ type: string[] = [];
51
+ expirationDate?: string;
52
+ refreshService?: RefreshService;
53
+ displayMethod?: DisplayMethod;
54
+ issuanceDate?: string;
55
+ credentialSubject: JsonDocumentObject = {};
56
+ credentialStatus!: CredentialStatus;
57
+ issuer = '';
58
+ credentialSchema!: CredentialSchema;
59
+ proof?: object | unknown[];
60
+
61
+ /**
62
+ *
63
+ * @param issuer - DID of the issuer
64
+ * @param request - Credential request
65
+ * @returns - W3C Credential
66
+ */
67
+ static fromCredentialRequest(issuer: DID, request: CredentialRequest): W3CCredential {
68
+ if (!request.id) {
69
+ throw new Error('Credential id is required');
70
+ }
71
+ if (!request.context) {
72
+ throw new Error('Credential context is required');
73
+ }
74
+
75
+ const context = [
76
+ VerifiableConstants.JSONLD_SCHEMA.W3C_CREDENTIAL_2018,
77
+ VerifiableConstants.JSONLD_SCHEMA.IDEN3_CREDENTIAL,
78
+ ...request.context
79
+ ];
80
+
81
+ const credentialType = [
82
+ VerifiableConstants.CREDENTIAL_TYPE.W3C_VERIFIABLE_CREDENTIAL,
83
+ request.type
84
+ ];
85
+
86
+ const credentialSubject = request.credentialSubject;
87
+ credentialSubject['type'] = request.type;
88
+
89
+ const cr = new W3CCredential();
90
+ cr.id = request.id;
91
+ cr['@context'] = context;
92
+ cr.type = credentialType;
93
+ cr.credentialSubject = credentialSubject;
94
+ cr.issuer = issuer.string();
95
+ cr.credentialSchema = {
96
+ id: request.credentialSchema,
97
+ type: VerifiableConstants.JSON_SCHEMA_VALIDATOR
98
+ };
99
+ cr.credentialStatus = W3CCredential.buildCredentialStatus(request, issuer);
100
+
101
+ request.expiration && (cr.expirationDate = new Date(request.expiration).toISOString());
102
+ request.refreshService && (cr.refreshService = request.refreshService);
103
+ request.displayMethod && (cr.displayMethod = request.displayMethod);
104
+ request.issuanceDate && (cr.issuanceDate = new Date(request.issuanceDate).toISOString());
105
+
106
+ return cr;
107
+ }
108
+
109
+ /**
110
+ * Builds credential status
111
+ * @param {CredentialRequest} request
112
+ * @returns `CredentialStatus`
113
+ */
114
+ private static buildCredentialStatus(request: CredentialRequest, issuer: DID): CredentialStatus {
115
+ const credentialStatus: CredentialStatus = {
116
+ id: request.revocationOpts.id,
117
+ type: request.revocationOpts.type,
118
+ revocationNonce: request.revocationOpts.nonce
119
+ };
120
+
121
+ switch (request.revocationOpts.type) {
122
+ case CredentialStatusType.SparseMerkleTreeProof:
123
+ return {
124
+ ...credentialStatus,
125
+ id: `${credentialStatus.id.replace(/\/$/, '')}/${credentialStatus.revocationNonce}`
126
+ };
127
+ case CredentialStatusType.Iden3ReverseSparseMerkleTreeProof:
128
+ return {
129
+ ...credentialStatus,
130
+ id: request.revocationOpts.issuerState
131
+ ? `${credentialStatus.id.replace(/\/$/, '')}/node?state=${
132
+ request.revocationOpts.issuerState
133
+ }`
134
+ : `${credentialStatus.id.replace(/\/$/, '')}`
135
+ };
136
+ case CredentialStatusType.Iden3OnchainSparseMerkleTreeProof2023: {
137
+ const issuerId = DID.idFromDID(issuer);
138
+ const chainId = getChainId(DID.blockchainFromId(issuerId), DID.networkIdFromId(issuerId));
139
+ const searchParams = [
140
+ ['revocationNonce', request.revocationOpts.nonce?.toString() || ''],
141
+ ['contractAddress', `${chainId}:${request.revocationOpts.id}`],
142
+ ['state', request.revocationOpts.issuerState || '']
143
+ ]
144
+ .filter(([, value]) => Boolean(value))
145
+ .map(([key, value]) => `${key}=${value}`)
146
+ .join('&');
147
+
148
+ return {
149
+ ...credentialStatus,
150
+ // `[did]:[methodid]:[chain]:[network]:[id]/credentialStatus?(revocationNonce=value)&[contractAddress=[chainID]:[contractAddress]]&(state=issuerState)`
151
+ id: `${issuer.string()}/credentialStatus?${searchParams}`
152
+ };
153
+ }
154
+ default:
155
+ return credentialStatus;
156
+ }
157
+ }
158
+
159
+ toJSON() {
160
+ return {
161
+ ...this,
162
+ proof: Array.isArray(this.proof)
163
+ ? this.proof.map(this.proofToJSON)
164
+ : this.proofToJSON(this.proof)
165
+ };
166
+ }
167
+
168
+ private proofToJSON(p: any) {
169
+ if (!p) {
170
+ return p;
171
+ }
172
+ if (!p['type']) {
173
+ throw new Error('proof must have type property');
174
+ }
175
+ switch (p.type) {
176
+ case ProofType.Iden3SparseMerkleTreeProof:
177
+ case ProofType.BJJSignature:
178
+ return p.toJSON();
179
+ default:
180
+ return p;
181
+ }
182
+ }
183
+
184
+ private static proofFromJSON = (p: any) => {
185
+ if (!p) {
186
+ return p;
187
+ }
188
+ if (!p['type']) {
189
+ throw new Error('proof must have type property');
190
+ }
191
+ switch (p.type) {
192
+ case ProofType.Iden3SparseMerkleTreeProof:
193
+ return Iden3SparseMerkleTreeProof.fromJSON(p);
194
+ case ProofType.BJJSignature:
195
+ return BJJSignatureProof2021.fromJSON(p);
196
+ default:
197
+ return p;
198
+ }
199
+ };
200
+
201
+ static fromJSON(obj: any): W3CCredential {
202
+ const w = new W3CCredential();
203
+ Object.assign(w, structuredClone(obj));
204
+ w.proof = Array.isArray(w.proof)
205
+ ? w.proof.map(W3CCredential.proofFromJSON)
206
+ : W3CCredential.proofFromJSON(w.proof);
207
+
208
+ return w;
209
+ }
210
+ /**
211
+ * merklization of the verifiable credential
212
+ *
213
+ * @returns `Promise<Merklizer>`
214
+ */
215
+ async merklize(opts?: Options): Promise<Merklizer> {
216
+ const credential = { ...this };
217
+ delete credential.proof;
218
+ return await Merklizer.merklizeJSONLD(JSON.stringify(credential), opts);
219
+ }
220
+
221
+ /**
222
+ * gets core claim representation from credential proof
223
+ *
224
+ * @param {ProofType} proofType
225
+ * @returns {*} {(Claim | undefined)}
226
+ */
227
+ getCoreClaimFromProof(proofType: ProofType): Claim | undefined {
228
+ if (Array.isArray(this.proof)) {
229
+ for (const proof of this.proof) {
230
+ const { claim, proofType: extractedProofType } = extractProof(proof);
231
+ if (proofType === extractedProofType) {
232
+ return claim;
233
+ }
234
+ }
235
+ } else if (typeof this.proof === 'object') {
236
+ const { claim, proofType: extractedProofType } = extractProof(this.proof);
237
+ if (extractedProofType == proofType) {
238
+ return claim;
239
+ }
240
+ }
241
+ return undefined;
242
+ }
243
+
244
+ /**
245
+ * gets core claim representation from W3CCredential
246
+ *
247
+ * @param {CoreClaimParsingOptions} [opts] - options to create core claim
248
+ * @returns {*} {(Promise<Claim>)}
249
+ */
250
+ async toCoreClaim(opts?: CoreClaimCreationOptions): Promise<Claim> {
251
+ if (!opts) {
252
+ opts = {
253
+ revNonce: 0,
254
+ version: 0,
255
+ subjectPosition: SubjectPosition.Index,
256
+ merklizedRootPosition: MerklizedRootPosition.None,
257
+ updatable: false,
258
+ merklizeOpts: {}
259
+ };
260
+ }
261
+
262
+ const mz = await this.merklize(opts.merklizeOpts);
263
+
264
+ const credentialType = findCredentialType(mz);
265
+
266
+ const subjectId = this.credentialSubject['id'];
267
+
268
+ const ldCtx = await jsonld.processContext(
269
+ await jsonld.processContext(null, null, {}),
270
+ this['@context'] as jsonld.JsonLdDocument,
271
+ mz.options
272
+ );
273
+
274
+ const { slots, nonMerklized } = await parseCoreClaimSlots(
275
+ ldCtx as unknown as { mappings: Map<string, Record<string, unknown>> },
276
+ mz,
277
+ credentialType
278
+ );
279
+
280
+ // if schema is for non merklized credential, root position must be set to none ('')
281
+ // otherwise default position for merklized position is index.
282
+ if (nonMerklized && opts.merklizedRootPosition !== MerklizedRootPosition.None) {
283
+ throw new Error('merklized root position is not supported for non-merklized claims');
284
+ }
285
+ if (!nonMerklized && opts.merklizedRootPosition === MerklizedRootPosition.None) {
286
+ opts.merklizedRootPosition = MerklizedRootPosition.Index;
287
+ }
288
+
289
+ const schemaHash = calculateCoreSchemaHash(byteEncoder.encode(credentialType));
290
+ const claim = Claim.newClaim(
291
+ schemaHash,
292
+ ClaimOptions.withIndexDataBytes(slots.indexA, slots.indexB),
293
+ ClaimOptions.withValueDataBytes(slots.valueA, slots.valueB),
294
+ ClaimOptions.withRevocationNonce(BigInt(opts.revNonce)),
295
+ ClaimOptions.withVersion(opts.version)
296
+ );
297
+
298
+ if (opts.updatable) {
299
+ claim.setFlagUpdatable(opts.updatable);
300
+ }
301
+ if (this.expirationDate) {
302
+ claim.setExpirationDate(new Date(this.expirationDate));
303
+ }
304
+ if (subjectId) {
305
+ const did = DID.parse(subjectId.toString());
306
+ const id = DID.idFromDID(did);
307
+
308
+ switch (opts.subjectPosition) {
309
+ case '':
310
+ case SubjectPosition.Index:
311
+ claim.setIndexId(id);
312
+ break;
313
+ case SubjectPosition.Value:
314
+ claim.setValueId(id);
315
+ break;
316
+ default:
317
+ throw new Error('unknown subject position');
318
+ }
319
+ }
320
+
321
+ switch (opts.merklizedRootPosition) {
322
+ case MerklizedRootPosition.Index: {
323
+ const mk = await this.merklize(opts.merklizeOpts);
324
+ claim.setIndexMerklizedRoot((await mk.root()).bigInt());
325
+ break;
326
+ }
327
+ case MerklizedRootPosition.Value: {
328
+ const mk = await this.merklize(opts.merklizeOpts);
329
+ claim.setValueMerklizedRoot((await mk.root()).bigInt());
330
+ break;
331
+ }
332
+ case MerklizedRootPosition.None:
333
+ break;
334
+ default:
335
+ throw new Error('unknown merklized root position');
336
+ }
337
+
338
+ return claim;
339
+ }
340
+
341
+ /**
342
+ * checks BJJSignatureProof2021 in W3C VC
343
+ *
344
+ * @returns BJJSignatureProof2021 | undefined
345
+ */
346
+ getBJJSignature2021Proof(): BJJSignatureProof2021 | undefined {
347
+ const proof = this.getProofByType(ProofType.BJJSignature);
348
+ if (proof) {
349
+ return proof as BJJSignatureProof2021;
350
+ }
351
+ return undefined;
352
+ }
353
+
354
+ /**
355
+ * checks Iden3SparseMerkleTreeProof in W3C VC
356
+ *
357
+ * @returns {*} {(Iden3SparseMerkleTreeProof | undefined)}
358
+ */
359
+ getIden3SparseMerkleTreeProof(): Iden3SparseMerkleTreeProof | undefined {
360
+ const proof = this.getProofByType(ProofType.Iden3SparseMerkleTreeProof);
361
+ if (proof) {
362
+ return proof as Iden3SparseMerkleTreeProof;
363
+ }
364
+ return undefined;
365
+ }
366
+
367
+ /**
368
+ * Verify credential proof
369
+ *
370
+ * @returns {*} {(boolean)}
371
+ */
372
+ async verifyProof(
373
+ proofType: ProofType,
374
+ resolverURL: string,
375
+ opts?: W3CProofVerificationOptions
376
+ ): Promise<boolean> {
377
+ const proof = this.getProofByType(proofType);
378
+ if (!proof) {
379
+ throw new Error('proof not found');
380
+ }
381
+
382
+ const coreClaim = this.getCoreClaimFromProof(proofType);
383
+ if (!coreClaim) {
384
+ throw new Error(`can't get core claim`);
385
+ }
386
+
387
+ await this.verifyCoreClaimMatch(coreClaim, opts?.merklizeOptions);
388
+
389
+ switch (proofType) {
390
+ case ProofType.BJJSignature: {
391
+ if (!opts?.credStatusResolverRegistry) {
392
+ throw new Error('please provide credential status resolver registry');
393
+ }
394
+ const bjjProof = proof as BJJSignatureProof2021;
395
+ const userDID = getUserDIDFromCredential(bjjProof.issuerData.id, this);
396
+ return this.verifyBJJSignatureProof(
397
+ bjjProof,
398
+ coreClaim,
399
+ resolverURL,
400
+ userDID,
401
+ opts.credStatusResolverRegistry
402
+ );
403
+ }
404
+ case ProofType.Iden3SparseMerkleTreeProof: {
405
+ return this.verifyIden3SparseMerkleTreeProof(
406
+ proof as Iden3SparseMerkleTreeProof,
407
+ coreClaim,
408
+ resolverURL
409
+ );
410
+ }
411
+ default: {
412
+ throw new Error('invalid proof type');
413
+ }
414
+ }
415
+ }
416
+
417
+ private async verifyCoreClaimMatch(coreClaim: Claim, merklizeOpts?: Options) {
418
+ let merklizedRootPosition = '';
419
+
420
+ const merklizedPosition = coreClaim.getMerklizedPosition();
421
+ switch (merklizedPosition) {
422
+ case MerklizedRootPositionCore.None:
423
+ merklizedRootPosition = MerklizedRootPosition.None;
424
+ break;
425
+ case MerklizedRootPositionCore.Index:
426
+ merklizedRootPosition = MerklizedRootPosition.Index;
427
+ break;
428
+ case MerklizedRootPositionCore.Value:
429
+ merklizedRootPosition = MerklizedRootPosition.Value;
430
+ break;
431
+ }
432
+
433
+ let subjectPosition = '';
434
+ const idPosition = coreClaim.getIdPosition();
435
+ switch (idPosition) {
436
+ case IdPosition.None:
437
+ subjectPosition = SubjectPosition.None;
438
+ break;
439
+ case IdPosition.Index:
440
+ subjectPosition = SubjectPosition.Index;
441
+ break;
442
+ case IdPosition.Value:
443
+ subjectPosition = SubjectPosition.Value;
444
+ break;
445
+ }
446
+
447
+ const coreClaimOpts: CoreClaimCreationOptions = {
448
+ revNonce: Number(coreClaim.getRevocationNonce()),
449
+ version: coreClaim.getVersion(),
450
+ merklizedRootPosition,
451
+ subjectPosition,
452
+ updatable: coreClaim.getFlagUpdatable(),
453
+ merklizeOpts: merklizeOpts
454
+ };
455
+
456
+ const credentialCoreClaim = await this.toCoreClaim(coreClaimOpts);
457
+ if (coreClaim.hex() != credentialCoreClaim.hex()) {
458
+ throw new Error('proof generated for another credential');
459
+ }
460
+ }
461
+
462
+ private async verifyBJJSignatureProof(
463
+ proof: BJJSignatureProof2021,
464
+ coreClaim: Claim,
465
+ resolverURL: string,
466
+ userDID: DID,
467
+ credStatusResolverRegistry: CredentialStatusResolverRegistry
468
+ ): Promise<boolean> {
469
+ // issuer auth claim
470
+ const authClaim = proof.issuerData.authCoreClaim;
471
+ const rawSlotsInt = authClaim.rawSlotsAsInts();
472
+ const pubKey = new PublicKey([rawSlotsInt[2], rawSlotsInt[3]]);
473
+
474
+ // core claim hash
475
+ const { hi, hv } = coreClaim.hiHv();
476
+ const claimHash = poseidon.hash([hi, hv]);
477
+ const bjjValid = pubKey.verifyPoseidon(claimHash, proof.signature);
478
+
479
+ if (!bjjValid) {
480
+ throw new Error('signature is not valid');
481
+ }
482
+ await validateDIDDocumentAuth(proof.issuerData.id, resolverURL, proof.issuerData.state.value);
483
+
484
+ const credStatusType = proof.issuerData.credentialStatus.type;
485
+ const credStatusResolver = await credStatusResolverRegistry.get(credStatusType);
486
+ if (!credStatusResolver) {
487
+ throw new Error(`please register credential status resolver for ${credStatusType} type`);
488
+ }
489
+ const credStatus = await credStatusResolver.resolve(proof.issuerData.credentialStatus, {
490
+ issuerDID: proof.issuerData.id,
491
+ userDID: userDID
492
+ });
493
+ const stateValid = validateTreeState(credStatus.issuer);
494
+ if (!stateValid) {
495
+ throw new Error(
496
+ 'signature proof: invalid tree state of the issuer while checking credential status of singing key'
497
+ );
498
+ }
499
+
500
+ const revocationNonce = BigInt(proof.issuerData.credentialStatus.revocationNonce || 0);
501
+ if (revocationNonce !== proof.issuerData.authCoreClaim.getRevocationNonce()) {
502
+ throw new Error(
503
+ `revocation nonce mismatch: revocation nonce from core representation of auth credential is not the same as in its credential`
504
+ );
505
+ }
506
+ const proofValid = await verifyProof(
507
+ Hash.fromHex(credStatus.issuer.revocationTreeRoot),
508
+ credStatus.mtp,
509
+ revocationNonce,
510
+ BigInt(0)
511
+ );
512
+ if (!proofValid) {
513
+ throw new Error(`proof validation failed. revNonce=${revocationNonce}`);
514
+ }
515
+ if (credStatus.mtp.existence) {
516
+ throw new Error('signature proof: singing key of the issuer is revoked');
517
+ }
518
+ return true;
519
+ }
520
+
521
+ private async verifyIden3SparseMerkleTreeProof(
522
+ proof: Iden3SparseMerkleTreeProof,
523
+ coreClaim: Claim,
524
+ resolverURL: string
525
+ ): Promise<boolean> {
526
+ await validateDIDDocumentAuth(proof.issuerData.id, resolverURL, proof.issuerData.state.value);
527
+ // root from proof == issuerData.state.claimsTreeRoot
528
+ const { hi, hv } = coreClaim.hiHv();
529
+ const rootFromProofValue = await rootFromProof(proof.mtp, hi, hv);
530
+ if (!rootFromProofValue.equals(proof.issuerData.state.claimsTreeRoot)) {
531
+ throw new Error(
532
+ 'verifyIden3SparseMerkleTreeProof: root from proof not equal to issuer data claims tree root'
533
+ );
534
+ }
535
+ return true;
536
+ }
537
+
538
+ private getProofByType(proofType: ProofType): unknown | undefined {
539
+ if (Array.isArray(this.proof)) {
540
+ for (const proof of this.proof) {
541
+ if ((proof as { [k: string]: ProofType })?.type === proofType) {
542
+ return proof;
543
+ }
544
+ }
545
+ } else if ((this.proof as { [k: string]: ProofType })?.type == proofType) {
546
+ return this.proof;
547
+ }
548
+ return undefined;
549
+ }
550
+ }
551
+
552
+ /**
553
+ * extracts core claim from Proof and returns Proof Type
554
+ *
555
+ * @param {object} proof - proof of vc
556
+ * @returns {*} {{ claim: Claim; proofType: ProofType }}
557
+ */
558
+ export function extractProof(proof: object): { claim: Claim; proofType: ProofType } {
559
+ if (proof instanceof Iden3SparseMerkleTreeProof) {
560
+ return {
561
+ claim: proof.coreClaim,
562
+ proofType: ProofType.Iden3SparseMerkleTreeProof
563
+ };
564
+ }
565
+ if (proof instanceof BJJSignatureProof2021) {
566
+ return { claim: proof.coreClaim, proofType: ProofType.BJJSignature };
567
+ }
568
+ if (typeof proof === 'object') {
569
+ const p = proof as { type: ProofType; coreClaim: string | Claim };
570
+ const defaultProofType: ProofType = p.type;
571
+ if (!defaultProofType) {
572
+ throw new Error('proof type is not specified');
573
+ }
574
+
575
+ if (!p.coreClaim) {
576
+ throw new Error(`coreClaim field is not defined in proof type ${defaultProofType}`);
577
+ }
578
+
579
+ const coreClaim = p.coreClaim instanceof Claim ? p.coreClaim : new Claim().fromHex(p.coreClaim);
580
+
581
+ return { claim: coreClaim, proofType: defaultProofType as ProofType };
582
+ }
583
+
584
+ throw new Error('proof format is not supported');
585
+ }
586
+
587
+ /**
588
+ * validate tree state by recalculating poseidon hash of roots and comparing with state
589
+ *
590
+ * @param {Issuer} treeState - issuer struct
591
+ * @returns {boolean}
592
+ */
593
+ export function validateTreeState(treeState: Issuer) {
594
+ const ctrHash = treeState.claimsTreeRoot ? Hash.fromHex(treeState.claimsTreeRoot) : new Hash();
595
+ const rtrHash = treeState.revocationTreeRoot
596
+ ? Hash.fromHex(treeState.revocationTreeRoot)
597
+ : new Hash();
598
+ const rorHash = treeState.rootOfRoots ? Hash.fromHex(treeState.rootOfRoots) : new Hash();
599
+ const wantState = poseidon.hash([ctrHash.bigInt(), rtrHash.bigInt(), rorHash.bigInt()]);
600
+
601
+ const stateHash = treeState.state ? Hash.fromHex(treeState.state) : new Hash();
602
+ return wantState === stateHash.bigInt();
603
+ }
604
+
605
+ /**
606
+ * Credential schema vc
607
+ *
608
+ * @public
609
+ * @interface CredentialSchema
610
+ */
611
+ export interface CredentialSchema {
612
+ id: string;
613
+ type: string;
614
+ }
615
+
616
+ /**
617
+ * Issuer tree information
618
+ *
619
+ * @public
620
+ * @interface Issuer
621
+ */
622
+ export interface Issuer {
623
+ state?: string;
624
+ rootOfRoots?: string;
625
+ claimsTreeRoot?: string;
626
+ revocationTreeRoot?: string;
627
+ }
628
+
629
+ /**
630
+ *
631
+ * RevocationStatus status of revocation nonce. Info required to check revocation state of claim in circuits
632
+ * @public
633
+ * @interface RevocationStatus
634
+ */
635
+ export interface RevocationStatus {
636
+ mtp: Proof;
637
+ issuer: Issuer;
638
+ }
639
+
640
+ /**
641
+ *
642
+ * Proof verification options
643
+ * @public
644
+ * @interface W3CProofVerificationOptions
645
+ */
646
+ export interface W3CProofVerificationOptions {
647
+ credStatusResolverRegistry?: CredentialStatusResolverRegistry;
648
+ merklizeOptions?: Options;
649
+ }
@@ -0,0 +1,6 @@
1
+ export * from './credential';
2
+ export * from './presentation';
3
+ export * from './proof';
4
+ export * from './schema';
5
+ export * from './constants';
6
+ export * from './core-utils';