@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,520 @@
1
+ import { MediaType } from '../constants';
2
+ import { IProofService } from '../../proof/proof-service';
3
+ import { PROTOCOL_MESSAGE_TYPE } from '../constants';
4
+
5
+ import {
6
+ StateVerificationOpts,
7
+ AuthorizationRequestMessage,
8
+ AuthorizationResponseMessage,
9
+ BasicMessage,
10
+ IPackageManager,
11
+ JWSPackerParams,
12
+ ZeroKnowledgeProofRequest,
13
+ JSONObject,
14
+ Attachment
15
+ } from '../types';
16
+ import { DID, getUnixTimestamp } from '@mocanetwork/moca-iden3';
17
+ import { proving } from '@iden3/js-jwz';
18
+
19
+ import * as uuid from 'uuid';
20
+ import { ProofQuery } from '../../verifiable';
21
+ import { byteDecoder, byteEncoder } from '../../utils';
22
+ import { processZeroKnowledgeProofRequests, verifyExpiresTime } from './common';
23
+ import { CircuitId } from '../../circuits';
24
+ import {
25
+ AbstractMessageHandler,
26
+ BasicHandlerOptions,
27
+ IProtocolMessageHandler
28
+ } from './message-handler';
29
+ import { parseAcceptProfile } from '../utils';
30
+
31
+ /**
32
+ * Options to pass to createAuthorizationRequest function
33
+ * @public
34
+ */
35
+ export type AuthorizationRequestCreateOptions = {
36
+ accept?: string[];
37
+ scope?: ZeroKnowledgeProofRequest[];
38
+ expires_time?: Date;
39
+ attachments?: Attachment[];
40
+ };
41
+
42
+ /**
43
+ * createAuthorizationRequest is a function to create protocol authorization request
44
+ * @param {string} reason - reason to request proof
45
+ * @param {string} sender - sender did
46
+ * @param {string} callbackUrl - callback that user should use to send response
47
+ * @param {AuthorizationRequestCreateOptions} opts - authorization request options
48
+ * @returns `Promise<AuthorizationRequestMessage>`
49
+ */
50
+ export function createAuthorizationRequest(
51
+ reason: string,
52
+ sender: string,
53
+ callbackUrl: string,
54
+ opts?: AuthorizationRequestCreateOptions
55
+ ): AuthorizationRequestMessage {
56
+ return createAuthorizationRequestWithMessage(reason, '', sender, callbackUrl, opts);
57
+ }
58
+ /**
59
+ * createAuthorizationRequestWithMessage is a function to create protocol authorization request with explicit message to sign
60
+ * @param {string} reason - reason to request proof
61
+ * @param {string} message - message to sign in the response
62
+ * @param {string} sender - sender did
63
+ * @param {string} callbackUrl - callback that user should use to send response
64
+ * @param {AuthorizationRequestCreateOptions} opts - authorization request options
65
+ * @returns `Promise<AuthorizationRequestMessage>`
66
+ */
67
+ export function createAuthorizationRequestWithMessage(
68
+ reason: string,
69
+ message: string,
70
+ sender: string,
71
+ callbackUrl: string,
72
+ opts?: AuthorizationRequestCreateOptions
73
+ ): AuthorizationRequestMessage {
74
+ const uuidv4 = uuid.v4();
75
+ const request: AuthorizationRequestMessage = {
76
+ id: uuidv4,
77
+ thid: uuidv4,
78
+ from: sender,
79
+ typ: MediaType.PlainMessage,
80
+ type: PROTOCOL_MESSAGE_TYPE.AUTHORIZATION_REQUEST_MESSAGE_TYPE,
81
+ body: {
82
+ accept: opts?.accept,
83
+ reason: reason,
84
+ message: message,
85
+ callbackUrl: callbackUrl,
86
+ scope: opts?.scope ?? []
87
+ },
88
+ created_time: getUnixTimestamp(new Date()),
89
+ expires_time: opts?.expires_time ? getUnixTimestamp(opts.expires_time) : undefined,
90
+ attachments: opts?.attachments
91
+ };
92
+ return request;
93
+ }
94
+
95
+ /**
96
+ *
97
+ * Options to pass to auth response handler
98
+ *
99
+ * @public
100
+ */
101
+ export type AuthResponseHandlerOptions = StateVerificationOpts &
102
+ BasicHandlerOptions & {
103
+ // acceptedProofGenerationDelay is the period of time in milliseconds that a generated proof remains valid.
104
+ acceptedProofGenerationDelay?: number;
105
+ };
106
+
107
+ /**
108
+ * Interface that allows the processing of the authorization request in the raw format for given identifier
109
+ *
110
+ * @public
111
+ * @interface IAuthHandler
112
+ */
113
+ export interface IAuthHandler {
114
+ /**
115
+ * unpacks authorization request
116
+ * @public
117
+ * @param {Uint8Array} request - raw byte message
118
+ * @returns `Promise<AuthorizationRequestMessage>`
119
+ */
120
+ parseAuthorizationRequest(request: Uint8Array): Promise<AuthorizationRequestMessage>;
121
+
122
+ /**
123
+ * unpacks authorization request
124
+ * @public
125
+ * @param {did} did - sender DID
126
+ * @param {Uint8Array} request - raw byte message
127
+ * @returns `Promise<{
128
+ token: string;
129
+ authRequest: AuthorizationRequestMessage;
130
+ authResponse: AuthorizationResponseMessage;
131
+ }>`
132
+ */
133
+ handleAuthorizationRequest(
134
+ did: DID,
135
+ request: Uint8Array,
136
+ opts?: AuthHandlerOptions
137
+ ): Promise<{
138
+ token: string;
139
+ authRequest: AuthorizationRequestMessage;
140
+ authResponse: AuthorizationResponseMessage;
141
+ }>;
142
+
143
+ /**
144
+ * handle authorization response
145
+ * @public
146
+ * @param {AuthorizationResponseMessage} response - auth response
147
+ * @param {AuthorizationRequestMessage} request - auth request
148
+ * @param {AuthResponseHandlerOptions} opts - options
149
+ * @returns `Promise<{
150
+ request: AuthorizationRequestMessage;
151
+ response: AuthorizationResponseMessage;
152
+ }>`
153
+ */
154
+ handleAuthorizationResponse(
155
+ response: AuthorizationResponseMessage,
156
+ request: AuthorizationRequestMessage,
157
+ opts?: AuthResponseHandlerOptions
158
+ ): Promise<{
159
+ request: AuthorizationRequestMessage;
160
+ response: AuthorizationResponseMessage;
161
+ }>;
162
+ }
163
+
164
+ type AuthReqOptions = {
165
+ senderDid: DID;
166
+ mediaType?: MediaType;
167
+ };
168
+
169
+ type AuthRespOptions = {
170
+ request: AuthorizationRequestMessage;
171
+ acceptedStateTransitionDelay?: number;
172
+ acceptedProofGenerationDelay?: number;
173
+ };
174
+
175
+ export type AuthMessageHandlerOptions = AuthReqOptions | AuthRespOptions;
176
+ /**
177
+ *
178
+ * Options to pass to auth handler
179
+ *
180
+ * @public
181
+ * @interface AuthHandlerOptions
182
+ */
183
+ export type AuthHandlerOptions = BasicHandlerOptions & {
184
+ mediaType: MediaType;
185
+ packerOptions?: JWSPackerParams;
186
+ };
187
+
188
+ /**
189
+ *
190
+ * Allows to process AuthorizationRequest protocol message and produce JWZ response.
191
+ *
192
+ * @public
193
+
194
+ * @class AuthHandler
195
+ * @implements implements IAuthHandler interface
196
+ */
197
+ export class AuthHandler
198
+ extends AbstractMessageHandler
199
+ implements IAuthHandler, IProtocolMessageHandler
200
+ {
201
+ private readonly _supportedCircuits = [
202
+ CircuitId.AtomicQueryV3,
203
+ CircuitId.AtomicQuerySigV2,
204
+ CircuitId.AtomicQueryMTPV2,
205
+ CircuitId.LinkedMultiQuery10
206
+ ];
207
+ /**
208
+ * Creates an instance of AuthHandler.
209
+ * @param {IPackageManager} _packerMgr - package manager to unpack message envelope
210
+ * @param {IProofService} _proofService - proof service to verify zk proofs
211
+ *
212
+ */
213
+ constructor(
214
+ private readonly _packerMgr: IPackageManager,
215
+ private readonly _proofService: IProofService
216
+ ) {
217
+ super();
218
+ }
219
+
220
+ handle(message: BasicMessage, ctx: AuthMessageHandlerOptions): Promise<BasicMessage | null> {
221
+ switch (message.type) {
222
+ case PROTOCOL_MESSAGE_TYPE.AUTHORIZATION_REQUEST_MESSAGE_TYPE:
223
+ return this.handleAuthRequest(
224
+ message as AuthorizationRequestMessage,
225
+ ctx as AuthReqOptions
226
+ );
227
+ case PROTOCOL_MESSAGE_TYPE.AUTHORIZATION_RESPONSE_MESSAGE_TYPE:
228
+ return this.handleAuthResponse(
229
+ message as AuthorizationResponseMessage,
230
+ ctx as AuthRespOptions
231
+ );
232
+ default:
233
+ return super.handle(message, ctx);
234
+ }
235
+ }
236
+
237
+ /**
238
+ * @inheritdoc IAuthHandler#parseAuthorizationRequest
239
+ */
240
+ async parseAuthorizationRequest(request: Uint8Array): Promise<AuthorizationRequestMessage> {
241
+ const { unpackedMessage: message } = await this._packerMgr.unpack(request);
242
+ const authRequest = message as unknown as AuthorizationRequestMessage;
243
+ if (message.type !== PROTOCOL_MESSAGE_TYPE.AUTHORIZATION_REQUEST_MESSAGE_TYPE) {
244
+ throw new Error('Invalid media type');
245
+ }
246
+ authRequest.body.scope = authRequest.body.scope || [];
247
+ return authRequest;
248
+ }
249
+
250
+ private async handleAuthRequest(
251
+ authRequest: AuthorizationRequestMessage,
252
+ ctx: AuthReqOptions
253
+ ): Promise<AuthorizationResponseMessage> {
254
+ if (authRequest.type !== PROTOCOL_MESSAGE_TYPE.AUTHORIZATION_REQUEST_MESSAGE_TYPE) {
255
+ throw new Error('Invalid message type for authorization request');
256
+ }
257
+ // override sender did if it's explicitly specified in the auth request
258
+ const to = authRequest.to ? DID.parse(authRequest.to) : ctx.senderDid;
259
+ const guid = uuid.v4();
260
+
261
+ if (!authRequest.from) {
262
+ throw new Error('auth request should contain from field');
263
+ }
264
+
265
+ const responseType = PROTOCOL_MESSAGE_TYPE.AUTHORIZATION_RESPONSE_MESSAGE_TYPE;
266
+ const mediaType = this.getSupportedMediaTypeByProfile(
267
+ ctx,
268
+ responseType,
269
+ authRequest.body.accept
270
+ );
271
+ const from = DID.parse(authRequest.from);
272
+
273
+ const responseScope = await processZeroKnowledgeProofRequests(
274
+ to,
275
+ authRequest?.body.scope,
276
+ from,
277
+ this._proofService,
278
+ { mediaType, supportedCircuits: this._supportedCircuits }
279
+ );
280
+
281
+ return {
282
+ id: guid,
283
+ typ: mediaType,
284
+ type: responseType,
285
+ thid: authRequest.thid ?? guid,
286
+ body: {
287
+ message: authRequest?.body?.message,
288
+ scope: responseScope
289
+ },
290
+ from: to.string(),
291
+ to: authRequest.from
292
+ };
293
+ }
294
+
295
+ /**
296
+ * @inheritdoc IAuthHandler#handleAuthorizationRequest
297
+ */
298
+ async handleAuthorizationRequest(
299
+ did: DID,
300
+ request: Uint8Array,
301
+ opts?: AuthHandlerOptions
302
+ ): Promise<{
303
+ token: string;
304
+ authRequest: AuthorizationRequestMessage;
305
+ authResponse: AuthorizationResponseMessage;
306
+ }> {
307
+ const authRequest = await this.parseAuthorizationRequest(request);
308
+ if (!opts?.allowExpiredMessages) {
309
+ verifyExpiresTime(authRequest);
310
+ }
311
+ if (!opts) {
312
+ opts = {
313
+ mediaType: MediaType.ZKPMessage
314
+ };
315
+ }
316
+
317
+ if (opts.mediaType === MediaType.SignedMessage && !opts.packerOptions) {
318
+ throw new Error(`jws packer options are required for ${MediaType.SignedMessage}`);
319
+ }
320
+
321
+ const authResponse = await this.handleAuthRequest(authRequest, {
322
+ senderDid: did,
323
+ mediaType: opts.mediaType
324
+ });
325
+
326
+ const msgBytes = byteEncoder.encode(JSON.stringify(authResponse));
327
+
328
+ const packerOpts =
329
+ opts.mediaType === MediaType.SignedMessage
330
+ ? opts.packerOptions
331
+ : {
332
+ provingMethodAlg: proving.provingMethodGroth16AuthV2Instance.methodAlg
333
+ };
334
+
335
+ const token = byteDecoder.decode(
336
+ await this._packerMgr.pack(opts.mediaType, msgBytes, {
337
+ senderDID: did,
338
+ ...packerOpts
339
+ })
340
+ );
341
+
342
+ return { authRequest, authResponse, token };
343
+ }
344
+
345
+ private async handleAuthResponse(
346
+ response: AuthorizationResponseMessage,
347
+ ctx: AuthRespOptions
348
+ ): Promise<BasicMessage | null> {
349
+ const request = ctx.request;
350
+ if (response.type !== PROTOCOL_MESSAGE_TYPE.AUTHORIZATION_RESPONSE_MESSAGE_TYPE) {
351
+ throw new Error('Invalid message type for authorization response');
352
+ }
353
+ if ((request.body.message ?? '') !== (response.body.message ?? '')) {
354
+ throw new Error('message for signing from request is not presented in response');
355
+ }
356
+
357
+ if (request.from !== response.to) {
358
+ throw new Error(
359
+ `sender of the request is not a target of response - expected ${request.from}, given ${response.to}`
360
+ );
361
+ }
362
+
363
+ this.verifyAuthRequest(request);
364
+ const requestScope = request.body.scope || [];
365
+ const responseScope = response.body.scope || [];
366
+
367
+ if (!response.from) {
368
+ throw new Error(`proof response doesn't contain from field`);
369
+ }
370
+
371
+ const groupIdToLinkIdMap = new Map<number, { linkID: number; requestId: number | string }[]>();
372
+ // group requests by query group id
373
+ for (const proofRequest of requestScope) {
374
+ const groupId = proofRequest.query.groupId as number;
375
+
376
+ const proofResp = responseScope.find(
377
+ (resp) => resp.id.toString() === proofRequest.id.toString()
378
+ );
379
+ if (!proofResp) {
380
+ throw new Error(`proof is not given for requestId ${proofRequest.id}`);
381
+ }
382
+
383
+ const circuitId = proofResp.circuitId;
384
+ if (circuitId !== proofRequest.circuitId) {
385
+ throw new Error(
386
+ `proof is not given for requested circuit expected: ${proofRequest.circuitId}, given ${circuitId}`
387
+ );
388
+ }
389
+
390
+ const params: JSONObject = proofRequest.params ?? {};
391
+ params.verifierDid = DID.parse(request.from);
392
+
393
+ const opts = [ctx.acceptedProofGenerationDelay, ctx.acceptedStateTransitionDelay].some(
394
+ (delay) => delay !== undefined
395
+ )
396
+ ? {
397
+ acceptedProofGenerationDelay: ctx.acceptedProofGenerationDelay,
398
+ acceptedStateTransitionDelay: ctx.acceptedStateTransitionDelay
399
+ }
400
+ : undefined;
401
+
402
+ const { linkID } = await this._proofService.verifyZKPResponse(proofResp, {
403
+ query: proofRequest.query as unknown as ProofQuery,
404
+ sender: response.from,
405
+ params,
406
+ opts
407
+ });
408
+ // write linkId to the proof response
409
+ // const pubSig = pubSignals as unknown as { linkID?: number };
410
+
411
+ if (linkID && groupId) {
412
+ groupIdToLinkIdMap.set(groupId, [
413
+ ...(groupIdToLinkIdMap.get(groupId) ?? []),
414
+ { linkID: linkID, requestId: proofResp.id }
415
+ ]);
416
+ }
417
+ }
418
+
419
+ // verify grouping links
420
+ for (const [groupId, metas] of groupIdToLinkIdMap.entries()) {
421
+ // check that all linkIds are the same
422
+ if (metas.some((meta) => meta.linkID !== metas[0].linkID)) {
423
+ throw new Error(
424
+ `Link id validation failed for group ${groupId}, request linkID to requestIds info: ${JSON.stringify(
425
+ metas
426
+ )}`
427
+ );
428
+ }
429
+ }
430
+
431
+ return response;
432
+ }
433
+
434
+ /**
435
+ * @inheritdoc IAuthHandler#handleAuthorizationResponse
436
+ */
437
+ async handleAuthorizationResponse(
438
+ response: AuthorizationResponseMessage,
439
+ request: AuthorizationRequestMessage,
440
+ opts?: AuthResponseHandlerOptions | undefined
441
+ ): Promise<{
442
+ request: AuthorizationRequestMessage;
443
+ response: AuthorizationResponseMessage;
444
+ }> {
445
+ if (!opts?.allowExpiredMessages) {
446
+ verifyExpiresTime(response);
447
+ }
448
+ const authResp = (await this.handleAuthResponse(response, {
449
+ request,
450
+ acceptedStateTransitionDelay: opts?.acceptedStateTransitionDelay,
451
+ acceptedProofGenerationDelay: opts?.acceptedProofGenerationDelay
452
+ })) as AuthorizationResponseMessage;
453
+
454
+ return { request, response: authResp };
455
+ }
456
+
457
+ private verifyAuthRequest(request: AuthorizationRequestMessage) {
458
+ const groupIdValidationMap: { [k: string]: ZeroKnowledgeProofRequest[] } = {};
459
+ const requestScope = request.body.scope || [];
460
+ for (const proofRequest of requestScope) {
461
+ const groupId = proofRequest.query.groupId as number;
462
+ if (groupId) {
463
+ const existingRequests = groupIdValidationMap[groupId] ?? [];
464
+
465
+ //validate that all requests in the group have the same schema, issuer and circuit
466
+ for (const existingRequest of existingRequests) {
467
+ if (existingRequest.query.type !== proofRequest.query.type) {
468
+ throw new Error(`all requests in the group should have the same type`);
469
+ }
470
+
471
+ if (existingRequest.query.context !== proofRequest.query.context) {
472
+ throw new Error(`all requests in the group should have the same context`);
473
+ }
474
+
475
+ const allowedIssuers = proofRequest.query.allowedIssuers as string[];
476
+ const existingRequestAllowedIssuers = existingRequest.query.allowedIssuers as string[];
477
+ if (
478
+ !(
479
+ allowedIssuers.includes('*') ||
480
+ allowedIssuers.every((issuer) => existingRequestAllowedIssuers.includes(issuer))
481
+ )
482
+ ) {
483
+ throw new Error(`all requests in the group should have the same issuer`);
484
+ }
485
+ }
486
+ groupIdValidationMap[groupId] = [...(groupIdValidationMap[groupId] ?? []), proofRequest];
487
+ }
488
+ }
489
+ }
490
+
491
+ private getSupportedMediaTypeByProfile(
492
+ ctx: AuthReqOptions,
493
+ responseType: string,
494
+ profile?: string[] | undefined
495
+ ): MediaType {
496
+ let mediaType: MediaType;
497
+ if (!profile?.length) {
498
+ return ctx.mediaType || MediaType.ZKPMessage;
499
+ }
500
+ const supportedMediaTypes: MediaType[] = [];
501
+ for (const acceptProfile of profile) {
502
+ const { env } = parseAcceptProfile(acceptProfile);
503
+ if (this._packerMgr.isProfileSupported(env, acceptProfile)) {
504
+ supportedMediaTypes.push(env);
505
+ }
506
+ }
507
+
508
+ if (!supportedMediaTypes.length) {
509
+ throw new Error('no packer with profile which meets `accept` header requirements');
510
+ }
511
+
512
+ mediaType = supportedMediaTypes.includes(MediaType.ZKPMessage)
513
+ ? MediaType.ZKPMessage
514
+ : supportedMediaTypes[0];
515
+ if (ctx.mediaType && supportedMediaTypes.includes(ctx.mediaType)) {
516
+ mediaType = ctx.mediaType;
517
+ }
518
+ return mediaType;
519
+ }
520
+ }