@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,225 @@
1
+ import { BasicMessage, IPacker, JWSPackerParams } from '../types';
2
+ import {
3
+ AcceptJwsAlgorithms,
4
+ MediaType,
5
+ ProtocolVersion,
6
+ SUPPORTED_PUBLIC_KEY_TYPES
7
+ } from '../constants';
8
+ import { extractPublicKeyBytes, resolveVerificationMethods } from '../utils/did';
9
+ import { keyPath, KMS } from '../../kms/';
10
+
11
+ import { verifyJWS } from 'did-jwt';
12
+ import { DIDDocument, Resolvable, parse } from 'did-resolver';
13
+ import { bytesToBase64url } from '../../utils/encoding';
14
+ import {
15
+ byteDecoder,
16
+ byteEncoder,
17
+ bytesToHex,
18
+ decodeBase64url,
19
+ encodeBase64url
20
+ } from '../../utils';
21
+ import { parseAcceptProfile } from '../utils';
22
+
23
+ /**
24
+ * Packer that can pack message to JWZ token,
25
+ * and unpack and validate JWZ envelope
26
+ * @public
27
+ * @class ZKPPacker
28
+ * @implements implements IPacker interface
29
+ */
30
+ export class JWSPacker implements IPacker {
31
+ private readonly supportedAlgorithms = [AcceptJwsAlgorithms.ES256K, AcceptJwsAlgorithms.ES256KR];
32
+ private readonly supportedProtocolVersions = [ProtocolVersion.V1];
33
+
34
+ /**
35
+ * Creates an instance of JWSPacker.
36
+ *
37
+ * @param {KMS} _kms
38
+ * @param {Resolvable} _documentResolver
39
+ * @memberof JWSPacker
40
+ */
41
+ constructor(private readonly _kms: KMS, private readonly _documentResolver: Resolvable) {}
42
+
43
+ /**
44
+ * Packs the given payload and returns a promise that resolves to the packed data.
45
+ *
46
+ * @param {Uint8Array} payload - The payload to be packed.
47
+ * @param {PackerParams} param - The packing parameters.
48
+ * @returns `Promise<Uint8Array>`
49
+ */
50
+ packMessage(msg: BasicMessage, param: JWSPackerParams): Promise<Uint8Array> {
51
+ return this.packInternal(msg, param);
52
+ }
53
+ /**
54
+ * creates JSON Web Signature token
55
+ *
56
+ * @param {Uint8Array} payload - serialized message
57
+ * @param {PackerParams} params - sender id and proving alg are required
58
+ * @returns `Promise<Uint8Array>`
59
+ */
60
+ async pack(payload: Uint8Array, params: JWSPackerParams): Promise<Uint8Array> {
61
+ const message = JSON.parse(byteDecoder.decode(payload));
62
+ return this.packInternal(message, params);
63
+ }
64
+
65
+ /**
66
+ * validate envelope which is jwz token
67
+ *
68
+ * @param {Uint8Array} envelope
69
+ * @returns `Promise<BasicMessage>`
70
+ */
71
+ async unpack(envelope: Uint8Array): Promise<BasicMessage> {
72
+ const jws = byteDecoder.decode(envelope);
73
+
74
+ const [headerStr, msgStr] = jws.split('.');
75
+
76
+ const header = JSON.parse(decodeBase64url(headerStr));
77
+ const message = JSON.parse(decodeBase64url(msgStr));
78
+ const explicitSender = parse(header.kid)?.did;
79
+ if (explicitSender && explicitSender !== message.from) {
80
+ throw new Error(`Sender does not match DID in message with kid ${header?.kid}`);
81
+ }
82
+
83
+ const didDocument: DIDDocument = await this.resolveDidDoc(message.from);
84
+
85
+ let vms = resolveVerificationMethods(didDocument);
86
+
87
+ if (!vms?.length) {
88
+ throw new Error(`No verification methods defined in the DID document of ${didDocument.id}`);
89
+ }
90
+ if (header.kid) {
91
+ const vm = vms.find((v) => {
92
+ return v.id === header.kid;
93
+ });
94
+ if (!vm) {
95
+ throw new Error(
96
+ `verification method with specified kid ${header.kid} is not found in the DID Document`
97
+ );
98
+ }
99
+ vms = [vm];
100
+ }
101
+
102
+ const verificationResponse = verifyJWS(jws, vms);
103
+
104
+ if (!verificationResponse) {
105
+ throw new Error('JWS verification failed');
106
+ }
107
+ return message as BasicMessage;
108
+ }
109
+
110
+ mediaType(): MediaType {
111
+ return MediaType.SignedMessage;
112
+ }
113
+
114
+ /** {@inheritDoc IPacker.getSupportedProfiles} */
115
+ getSupportedProfiles(): string[] {
116
+ return this.supportedProtocolVersions.map(
117
+ (v) => `${v};env=${this.mediaType()};alg=${this.supportedAlgorithms.join(',')}`
118
+ );
119
+ }
120
+
121
+ /** {@inheritDoc IPacker.isProfileSupported} */
122
+ isProfileSupported(profile: string) {
123
+ const { protocolVersion, env, circuits, alg } = parseAcceptProfile(profile);
124
+
125
+ if (!this.supportedProtocolVersions.includes(protocolVersion)) {
126
+ return false;
127
+ }
128
+ if (env !== this.mediaType()) {
129
+ return false;
130
+ }
131
+
132
+ if (circuits) {
133
+ throw new Error(`Circuits are not supported for ${env} media type`);
134
+ }
135
+
136
+ const algSupported =
137
+ !alg?.length || alg.some((a) => this.supportedAlgorithms.includes(a as AcceptJwsAlgorithms));
138
+ return algSupported;
139
+ }
140
+
141
+ private async resolveDidDoc(from: string) {
142
+ let didDocument: DIDDocument;
143
+ try {
144
+ const didResolutionResult = await this._documentResolver.resolve(from);
145
+ if (!didResolutionResult?.didDocument?.id) {
146
+ throw new Error(`did document for ${from} is not found in resolution result`);
147
+ }
148
+ didDocument = didResolutionResult.didDocument;
149
+ } catch (err: unknown) {
150
+ throw new Error(`did document for ${from} is not resolved: ${(err as Error).message}`);
151
+ }
152
+ return didDocument;
153
+ }
154
+
155
+ private async packInternal(message: BasicMessage, params: JWSPackerParams): Promise<Uint8Array> {
156
+ if (!params.alg) {
157
+ throw new Error('Missing algorithm');
158
+ }
159
+
160
+ const from = message.from ?? '';
161
+ if (!from) {
162
+ throw new Error('Missing sender DID');
163
+ }
164
+
165
+ const vmTypes: string[] =
166
+ SUPPORTED_PUBLIC_KEY_TYPES[params.alg as keyof typeof SUPPORTED_PUBLIC_KEY_TYPES];
167
+ if (!vmTypes?.length) {
168
+ throw new Error(`No supported verification methods for algorithm ${params.alg}`);
169
+ }
170
+
171
+ const didDocument: DIDDocument = params.didDocument ?? (await this.resolveDidDoc(from));
172
+
173
+ const vms = resolveVerificationMethods(didDocument);
174
+
175
+ if (!vms.length) {
176
+ throw new Error(`No verification methods defined in the DID document of ${didDocument.id}`);
177
+ }
178
+
179
+ // try to find a managed signing key that matches keyRef
180
+ const vm = params.kid ? vms.find((vm) => vm.id === params.kid) : vms[0];
181
+
182
+ if (!vm) {
183
+ throw new Error(`No key found with id ${params.kid} in DID document of ${didDocument.id}`);
184
+ }
185
+
186
+ const { publicKeyBytes, kmsKeyType } = extractPublicKeyBytes(vm);
187
+
188
+ if (!publicKeyBytes && !kmsKeyType) {
189
+ if ((vm.blockchainAccountId || vm.ethereumAddress) && !params.signer) {
190
+ throw new Error(`No signer provided for ${vm.blockchainAccountId || vm.ethereumAddress}`);
191
+ }
192
+ }
193
+
194
+ const kid = vm.id;
195
+
196
+ const headerObj = { alg: params.alg, kid, typ: MediaType.SignedMessage };
197
+ const header = encodeBase64url(JSON.stringify(headerObj));
198
+ const msg = encodeBase64url(JSON.stringify(message));
199
+ const signingInput = `${header}.${msg}`;
200
+ const signingInputBytes = byteEncoder.encode(signingInput);
201
+ let signatureBase64: string;
202
+ if (params.signer) {
203
+ const signature = await params.signer(vm, signingInputBytes);
204
+ signatureBase64 = bytesToBase64url(signature);
205
+ } else {
206
+ if (!publicKeyBytes) {
207
+ throw new Error('No public key found');
208
+ }
209
+
210
+ if (!kmsKeyType) {
211
+ throw new Error('No KMS key type found');
212
+ }
213
+
214
+ const signatureBytes = await this._kms.sign(
215
+ { type: kmsKeyType, id: keyPath(kmsKeyType, bytesToHex(publicKeyBytes)) },
216
+ signingInputBytes,
217
+ { alg: params.alg }
218
+ );
219
+
220
+ signatureBase64 = bytesToBase64url(signatureBytes);
221
+ }
222
+
223
+ return byteEncoder.encode(`${signingInput}.${signatureBase64}`);
224
+ }
225
+ }
@@ -0,0 +1,86 @@
1
+ import { BasicMessage, IPacker } from '../types';
2
+ import { MediaType, ProtocolVersion } from '../constants';
3
+ import { byteDecoder, byteEncoder } from '../../utils';
4
+ import { parseAcceptProfile } from '../utils';
5
+
6
+ /**
7
+ * Plain packer just serializes bytes to JSON and adds media type
8
+ *
9
+ * @public
10
+ * @class PlainPacker
11
+ * @implements implements IPacker interface
12
+ */
13
+ export class PlainPacker implements IPacker {
14
+ private readonly supportedProtocolVersions = [ProtocolVersion.V1];
15
+
16
+ /**
17
+ * Packs a basic message using the specified parameters.
18
+ *
19
+ * @param msg - The basic message to pack.
20
+ * @param param - The packer parameters.
21
+ * @returns A promise that resolves to a Uint8Array representing the packed message.
22
+ * @throws An error if the method is not implemented.
23
+ */
24
+ packMessage(msg: BasicMessage): Promise<Uint8Array> {
25
+ msg.typ = MediaType.PlainMessage;
26
+ return Promise.resolve(byteEncoder.encode(JSON.stringify(msg)));
27
+ }
28
+ /**
29
+ * Pack returns packed message to transport envelope
30
+ *
31
+ * @param {Uint8Array} payload - json message serialized
32
+ * @param {PlainPackerParams} _params - not used here
33
+ * @returns `Promise<Uint8Array>`
34
+ */
35
+ async pack(payload: Uint8Array): Promise<Uint8Array> {
36
+ const msg = JSON.parse(byteDecoder.decode(payload));
37
+ msg.typ = MediaType.PlainMessage;
38
+ return Promise.resolve(byteEncoder.encode(JSON.stringify(msg)));
39
+ }
40
+
41
+ /**
42
+ * Unpack returns unpacked message from transport envelope
43
+ *
44
+ * @param {Uint8Array} envelope - packed envelope (serialized json with media type)
45
+ * @returns `Promise<BasicMessage>`
46
+ */
47
+ async unpack(envelope: Uint8Array): Promise<BasicMessage> {
48
+ return JSON.parse(byteDecoder.decode(envelope));
49
+ }
50
+
51
+ /**
52
+ * returns media type for plain message
53
+ *
54
+ * @returns MediaType
55
+ */
56
+ mediaType(): MediaType {
57
+ return MediaType.PlainMessage;
58
+ }
59
+
60
+ /** {@inheritDoc IPacker.getSupportedProfiles} */
61
+ getSupportedProfiles(): string[] {
62
+ return this.supportedProtocolVersions.map((v) => `${v};env=${this.mediaType()}`);
63
+ }
64
+
65
+ /** {@inheritDoc IPacker.isProfileSupported} */
66
+ isProfileSupported(profile: string) {
67
+ const { protocolVersion, env, circuits, alg } = parseAcceptProfile(profile);
68
+
69
+ if (!this.supportedProtocolVersions.includes(protocolVersion)) {
70
+ return false;
71
+ }
72
+ if (env !== this.mediaType()) {
73
+ return false;
74
+ }
75
+
76
+ if (circuits) {
77
+ throw new Error(`Circuits are not supported for ${env} media type`);
78
+ }
79
+
80
+ if (alg) {
81
+ throw new Error(`Algorithms are not supported for ${env} media type`);
82
+ }
83
+
84
+ return true;
85
+ }
86
+ }
@@ -0,0 +1,243 @@
1
+ import {
2
+ StateVerificationOpts,
3
+ AuthDataPrepareFunc,
4
+ BasicMessage,
5
+ IPacker,
6
+ ProvingParams,
7
+ StateVerificationFunc,
8
+ VerificationParams,
9
+ ZKPPackerParams
10
+ } from '../types';
11
+ import { Token, Header, ProvingMethodAlg, proving } from '@iden3/js-jwz';
12
+ import { AuthV2PubSignals, CircuitId } from '../../circuits/index';
13
+ import { BytesHelper, DID } from '@mocanetwork/moca-iden3';
14
+ import { bytesToProtocolMessage } from '../utils/envelope';
15
+ import {
16
+ ErrNoProvingMethodAlg,
17
+ ErrPackedWithUnsupportedCircuit,
18
+ ErrProofIsInvalid,
19
+ ErrSenderNotUsedTokenCreation,
20
+ ErrStateVerificationFailed,
21
+ ErrUnknownCircuitID
22
+ } from '../errors';
23
+ import { AcceptAuthCircuits, AcceptJwzAlgorithms, MediaType, ProtocolVersion } from '../constants';
24
+ import { byteDecoder, byteEncoder } from '../../utils';
25
+ import { DEFAULT_AUTH_VERIFY_DELAY } from '../constants';
26
+ import { parseAcceptProfile } from '../utils';
27
+
28
+ const { getProvingMethod } = proving;
29
+
30
+ /**
31
+ * Handler to
32
+ *
33
+ * @public
34
+ * @class DataPrepareHandlerFunc
35
+ */
36
+ export class DataPrepareHandlerFunc {
37
+ /**
38
+ * Creates an instance of DataPrepareHandlerFunc.
39
+ * @param {AuthDataPrepareFunc} dataPrepareFunc - function that produces marshaled inputs for auth circuits
40
+ */
41
+ constructor(public readonly dataPrepareFunc: AuthDataPrepareFunc) {}
42
+
43
+ /**
44
+ *
45
+ *
46
+ * @param {Uint8Array} hash - challenge that will be signed
47
+ * @param {DID} did - did of identity that will prepare inputs
48
+ * @param {CircuitId} circuitId - circuit id
49
+ * @returns `Promise<Uint8Array>`
50
+ */
51
+ prepare(hash: Uint8Array, did: DID, circuitId: CircuitId): Promise<Uint8Array> {
52
+ return this.dataPrepareFunc(hash, did, circuitId);
53
+ }
54
+ }
55
+
56
+ /**
57
+ * Handler to verify public signals of authorization circuits
58
+ *
59
+ * @public
60
+ * @class VerificationHandlerFunc
61
+ */
62
+ export class VerificationHandlerFunc {
63
+ /**
64
+ * Creates an instance of VerificationHandlerFunc.
65
+ * @param {StateVerificationFunc} stateVerificationFunc - state verification function
66
+ */
67
+ constructor(public readonly stateVerificationFunc: StateVerificationFunc) {}
68
+
69
+ /**
70
+ *
71
+ *
72
+ * @param {string} id - id of circuit
73
+ * @param {Array<string>} pubSignals - signals that must contain user id and state
74
+ * @returns `Promise<boolean>`
75
+ */
76
+ verify(id: string, pubSignals: Array<string>, opts?: StateVerificationOpts): Promise<boolean> {
77
+ return this.stateVerificationFunc(id, pubSignals, opts);
78
+ }
79
+ }
80
+
81
+ /**
82
+ * Packer that can pack message to JWZ token,
83
+ * and unpack and validate JWZ envelope
84
+ * @public
85
+ * @class ZKPPacker
86
+ * @implements implements IPacker interface
87
+ */
88
+ export class ZKPPacker implements IPacker {
89
+ private readonly supportedProtocolVersions = [ProtocolVersion.V1];
90
+ private readonly supportedAlgorithms = [AcceptJwzAlgorithms.Groth16];
91
+ private readonly supportedCircuitIds = [AcceptAuthCircuits.AuthV2];
92
+
93
+ /**
94
+ * Creates an instance of ZKPPacker.
95
+ * @param {Map<string, ProvingParams>} provingParamsMap - string is derived by JSON.parse(ProvingMethodAlg)
96
+ * @param {Map<string, VerificationParams>} verificationParamsMap - string is derived by JSON.parse(ProvingMethodAlg)
97
+ */
98
+ constructor(
99
+ public readonly provingParamsMap: Map<string, ProvingParams>,
100
+ public readonly verificationParamsMap: Map<string, VerificationParams>,
101
+ private readonly _opts: StateVerificationOpts = {
102
+ acceptedStateTransitionDelay: DEFAULT_AUTH_VERIFY_DELAY
103
+ }
104
+ ) {}
105
+
106
+ /**
107
+ * Packs a basic message using the specified parameters.
108
+ * @param msg - The basic message to pack.
109
+ * @param param - The parameters for the ZKPPacker.
110
+ * @returns A promise that resolves to a Uint8Array representing the packed message.
111
+ */
112
+ packMessage(msg: BasicMessage, param: ZKPPackerParams): Promise<Uint8Array> {
113
+ return this.pack(byteEncoder.encode(JSON.stringify(msg)), param as ZKPPackerParams);
114
+ }
115
+
116
+ /**
117
+ * creates JSON Web Zeroknowledge token
118
+ *
119
+ * @param {Uint8Array} payload - serialized message
120
+ * @param {ZKPPackerParams} params - sender id and proving alg are required
121
+ * @returns `Promise<Uint8Array>`
122
+ */
123
+ async pack(payload: Uint8Array, params: ZKPPackerParams): Promise<Uint8Array> {
124
+ const provingMethod = await getProvingMethod(params.provingMethodAlg);
125
+ const provingParams = this.provingParamsMap.get(params.provingMethodAlg.toString());
126
+
127
+ if (!provingParams) {
128
+ throw new Error(ErrNoProvingMethodAlg);
129
+ }
130
+
131
+ const token = new Token(
132
+ provingMethod,
133
+ byteDecoder.decode(payload),
134
+ (hash: Uint8Array, circuitId: string) => {
135
+ return provingParams?.dataPreparer?.prepare(hash, params.senderDID, circuitId as CircuitId);
136
+ }
137
+ );
138
+ token.setHeader(Header.Type, MediaType.ZKPMessage);
139
+ const tokenStr = await token.prove(provingParams.provingKey, provingParams.wasm);
140
+ return byteEncoder.encode(tokenStr);
141
+ }
142
+
143
+ /**
144
+ * validate envelope which is jwz token
145
+ *
146
+ * @param {Uint8Array} envelope
147
+ * @returns `Promise<BasicMessage>`
148
+ */
149
+ async unpack(envelope: Uint8Array): Promise<BasicMessage> {
150
+ const token = await Token.parse(byteDecoder.decode(envelope));
151
+ const provingMethodAlg = new ProvingMethodAlg(token.alg, token.circuitId);
152
+ const verificationParams = this.verificationParamsMap.get(provingMethodAlg.toString());
153
+ if (!verificationParams?.key) {
154
+ throw new Error(ErrPackedWithUnsupportedCircuit);
155
+ }
156
+ const isValid = await token.verify(verificationParams?.key);
157
+ if (!isValid) {
158
+ throw new Error(ErrProofIsInvalid);
159
+ }
160
+
161
+ const verificationResult = await verificationParams?.verificationFn?.verify(
162
+ token.circuitId,
163
+ token.zkProof.pub_signals,
164
+ this._opts
165
+ );
166
+
167
+ if (!verificationResult) {
168
+ throw new Error(ErrStateVerificationFailed);
169
+ }
170
+
171
+ const message = bytesToProtocolMessage(byteEncoder.encode(token.getPayload()));
172
+
173
+ // should throw if error
174
+ verifySender(token, message);
175
+
176
+ return message;
177
+ }
178
+
179
+ mediaType(): MediaType {
180
+ return MediaType.ZKPMessage;
181
+ }
182
+
183
+ /** {@inheritDoc IPacker.getSupportedProfiles} */
184
+ getSupportedProfiles(): string[] {
185
+ return this.supportedProtocolVersions.map(
186
+ (v) =>
187
+ `${v};env=${this.mediaType()};alg=${this.supportedAlgorithms.join(
188
+ ','
189
+ )};circuitIds=${this.supportedCircuitIds.join(',')}`
190
+ );
191
+ }
192
+
193
+ /** {@inheritDoc IPacker.isProfileSupported} */
194
+ isProfileSupported(profile: string) {
195
+ const { protocolVersion, env, circuits, alg } = parseAcceptProfile(profile);
196
+
197
+ if (!this.supportedProtocolVersions.includes(protocolVersion)) {
198
+ return false;
199
+ }
200
+
201
+ if (env !== this.mediaType()) {
202
+ return false;
203
+ }
204
+
205
+ const supportedCircuitIds = this.supportedCircuitIds;
206
+ const circuitIdSupported =
207
+ !circuits?.length || circuits.some((c) => supportedCircuitIds.includes(c));
208
+
209
+ const supportedAlgArr = this.supportedAlgorithms;
210
+ const algSupported =
211
+ !alg?.length || alg.some((a) => supportedAlgArr.includes(a as AcceptJwzAlgorithms));
212
+ return algSupported && circuitIdSupported;
213
+ }
214
+ }
215
+
216
+ const verifySender = async (token: Token, msg: BasicMessage): Promise<void> => {
217
+ switch (token.circuitId) {
218
+ case CircuitId.AuthV2:
219
+ {
220
+ if (!msg.from) {
221
+ throw new Error(ErrSenderNotUsedTokenCreation);
222
+ }
223
+ const authSignals = new AuthV2PubSignals().pubSignalsUnmarshal(
224
+ byteEncoder.encode(JSON.stringify(token.zkProof.pub_signals))
225
+ );
226
+ const did = DID.parseFromId(authSignals.userID);
227
+
228
+ const msgHash = await token.getMessageHash();
229
+ const challenge = BytesHelper.bytesToInt(msgHash.reverse());
230
+
231
+ if (challenge !== authSignals.challenge) {
232
+ throw new Error(ErrSenderNotUsedTokenCreation);
233
+ }
234
+
235
+ if (msg.from !== did.string()) {
236
+ throw new Error(ErrSenderNotUsedTokenCreation);
237
+ }
238
+ }
239
+ break;
240
+ default:
241
+ throw new Error(ErrUnknownCircuitID);
242
+ }
243
+ };
@@ -0,0 +1,17 @@
1
+ export * from './protocol/auth';
2
+ export * from './protocol/credentials';
3
+ export * from './protocol/messages';
4
+ export * from './protocol/proof';
5
+ export * from './protocol/revocation';
6
+ export * from './protocol/contract-request';
7
+ export * from './protocol/proposal-request';
8
+ export * from './protocol/payment';
9
+ export * from './protocol/accept-profile';
10
+ export * from './protocol/discovery-protocol';
11
+ export * from './protocol/problem-report';
12
+
13
+ export * from './protocol/attachment';
14
+ export * from './protocol/common';
15
+ export * from './packer';
16
+ export * from './models';
17
+ export * from './packageManager';
@@ -0,0 +1,7 @@
1
+ /**
2
+ * State verification options
3
+ */
4
+ export type StateVerificationOpts = {
5
+ // acceptedStateTransitionDelay is the period of time in milliseconds that a revoked state remains valid.
6
+ acceptedStateTransitionDelay?: number;
7
+ };
@@ -0,0 +1,112 @@
1
+ import { BasicMessage, IPacker, PackerParams } from './packer';
2
+ import { MediaType } from '../constants';
3
+
4
+ /**
5
+ * Interface for defining the registry of packers
6
+ *
7
+ * @public
8
+ * @interface IPackageManager
9
+ */
10
+ export interface IPackageManager {
11
+ /**
12
+ * Map of packers key is media type, value is packer implementation
13
+ *
14
+ * @type {Map<MediaType, IPacker>}
15
+ */
16
+ packers: Map<MediaType, IPacker>;
17
+
18
+ /**
19
+ * registers new packer in the manager
20
+ *
21
+ * @param {Array<IPacker>} packers
22
+ */
23
+ registerPackers(packers: Array<IPacker>): void;
24
+
25
+ /**
26
+ * packs payload with a packer that is assigned to media type
27
+ * forwards packer params to implementation
28
+ *
29
+ * @param {MediaType} mediaType
30
+ * @param {Uint8Array} payload
31
+ * @param {PackerParams} params
32
+ * @returns `Promise<Uint8Array>`
33
+ */
34
+ pack(mediaType: MediaType, payload: Uint8Array, params: PackerParams): Promise<Uint8Array>;
35
+
36
+ /**
37
+ * packs payload with a packer that is assigned to media type
38
+ * forwards packer params to implementation
39
+ *
40
+ * @param {MediaType} mediaType
41
+ * @param {BasicMessage} protocolMessage
42
+ * @param {PackerParams} params
43
+ * @returns `Promise<Uint8Array>`
44
+ */
45
+ packMessage(
46
+ mediaType: MediaType,
47
+ protocolMessage: BasicMessage,
48
+ params: PackerParams
49
+ ): Promise<Uint8Array>;
50
+
51
+ /**
52
+ * unpacks packed envelope to basic protocol message and returns media type of the envelope
53
+ *
54
+ * @param {Uint8Array} envelope - bytes envelope
55
+ * @returns `Promise<{ unpackedMessage: BasicMessage; unpackedMediaType: MediaType }`
56
+ */
57
+ unpack(
58
+ envelope: Uint8Array
59
+ ): Promise<{ unpackedMessage: BasicMessage; unpackedMediaType: MediaType }>;
60
+
61
+ /**
62
+ * unpacks an envelope with a known media type
63
+ *
64
+ * @param {MediaType} mediaType
65
+ * @param {Uint8Array} envelope
66
+ * @returns `Promise<BasicMessage>`
67
+ */
68
+ unpackWithType(mediaType: MediaType, envelope: Uint8Array): Promise<BasicMessage>;
69
+
70
+ /**
71
+ * gets media type from an envelope
72
+ *
73
+ * @param {string} envelope
74
+ * @returns MediaType
75
+ */
76
+ getMediaType(envelope: string): MediaType;
77
+
78
+ /**
79
+ * gets supported media types by packer manager
80
+ *
81
+ * @returns MediaType[]
82
+ */
83
+ getSupportedMediaTypes(): MediaType[];
84
+
85
+ /**
86
+ * gets supported accept profiles by packer manager
87
+ *
88
+ * @returns string[]
89
+ */
90
+ getSupportedProfiles(): string[];
91
+
92
+ /**
93
+ * returns true if media type and algorithms supported by packer manager
94
+ *
95
+ * @param {MediaType} mediaType
96
+ * @param {string} profile
97
+ * @returns {boolean}
98
+ */
99
+ isProfileSupported(mediaType: MediaType, profile: string): boolean;
100
+ }
101
+ /**
102
+ * EnvelopeStub is used to stub the jwt based envelops
103
+ */
104
+ export type EnvelopeStub = {
105
+ protected: string;
106
+ };
107
+ /**
108
+ * HeaderStub is used to stub the jwt based envelops
109
+ */
110
+ export type HeaderStub = {
111
+ typ: MediaType;
112
+ };