@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,2 @@
1
+ export * from './identity-wallet';
2
+ export * from './common';
package/src/index.ts ADDED
@@ -0,0 +1,16 @@
1
+ export * from './identity';
2
+ export * from './credentials';
3
+ export * from './kms';
4
+ export * from './storage';
5
+ export * from './verifiable';
6
+ export * from './schema-processor';
7
+ export * from './proof';
8
+ export * from './iden3comm';
9
+ export * from './circuits';
10
+ export * from './iden3comm';
11
+ export * from './utils';
12
+ export * from './blockchain';
13
+ import * as core from '@mocanetwork/moca-iden3';
14
+ import * as jsonLDMerklizer from '@iden3/js-jsonld-merklization';
15
+ export { core };
16
+ export { jsonLDMerklizer };
@@ -0,0 +1,4 @@
1
+ export * from './kms';
2
+ export * from './key-providers';
3
+ export * from './store';
4
+ export * from './provider-helpers';
@@ -0,0 +1,118 @@
1
+ import { Hex, PrivateKey, PublicKey, Signature } from '@iden3/js-crypto';
2
+ import { BytesHelper, checkBigIntInField } from '@mocanetwork/moca-iden3';
3
+ import { IKeyProvider } from '../kms';
4
+ import { AbstractPrivateKeyStore, KmsKeyId, KmsKeyType } from '../store';
5
+
6
+ import * as providerHelpers from '../provider-helpers';
7
+ import { hexToBytes } from '../../utils';
8
+
9
+ /**
10
+ * Provider for Baby Jub Jub keys
11
+ * @public
12
+ * @class BjjProvider
13
+ * @implements implements IKeyProvider interface
14
+ */
15
+ export class BjjProvider implements IKeyProvider {
16
+ /**
17
+ * key type that is handled by BJJ Provider
18
+ * @type {KmsKeyType}
19
+ */
20
+ keyType: KmsKeyType;
21
+ private keyStore: AbstractPrivateKeyStore;
22
+ /**
23
+ * Creates an instance of BjjProvider.
24
+ * @param {KmsKeyType} keyType - kms key type
25
+ * @param {AbstractPrivateKeyStore} keyStore - key store for kms
26
+ */
27
+ constructor(keyType: KmsKeyType, keyStore: AbstractPrivateKeyStore) {
28
+ if (keyType !== KmsKeyType.BabyJubJub) {
29
+ throw new Error('Key type must be BabyJubJub');
30
+ }
31
+ this.keyType = keyType;
32
+ this.keyStore = keyStore;
33
+ }
34
+ /**
35
+ * get all keys
36
+ * @returns list of keys
37
+ */
38
+ async list(): Promise<
39
+ {
40
+ alias: string;
41
+ key: string;
42
+ }[]
43
+ > {
44
+ const allKeysFromKeyStore = await this.keyStore.list();
45
+ return allKeysFromKeyStore.filter((key) => key.alias.startsWith(this.keyType));
46
+ }
47
+
48
+ /**
49
+ * generates a baby jub jub key from a seed phrase
50
+ * @param {Uint8Array} seed - byte array seed
51
+ * @returns kms key identifier
52
+ */
53
+ async newPrivateKeyFromSeed(seed: Uint8Array): Promise<KmsKeyId> {
54
+ const newKey: Uint8Array = new Uint8Array(32);
55
+ newKey.set(Uint8Array.from(seed), 0);
56
+ newKey.fill(seed.length, 32, 0);
57
+ const privateKey: PrivateKey = new PrivateKey(seed);
58
+
59
+ const publicKey = privateKey.public();
60
+
61
+ const kmsId = {
62
+ type: this.keyType,
63
+ id: providerHelpers.keyPath(this.keyType, publicKey.hex())
64
+ };
65
+ await this.keyStore.importKey({ alias: kmsId.id, key: privateKey.hex() });
66
+
67
+ return kmsId;
68
+ }
69
+
70
+ /**
71
+ * Gets public key by kmsKeyId
72
+ *
73
+ * @param {KmsKeyId} keyId - key identifier
74
+ */
75
+ async publicKey(keyId: KmsKeyId): Promise<string> {
76
+ const privateKey: PrivateKey = await this.privateKey(keyId);
77
+ return privateKey.public().hex();
78
+ }
79
+
80
+ /**
81
+ * signs prepared payload of size,
82
+ * with a key id
83
+ *
84
+ * @param {KmsKeyId} keyId - key identifier
85
+ * @param {Uint8Array} data - data to sign (32 bytes)
86
+ * @returns Uint8Array signature
87
+ */
88
+ async sign(keyId: KmsKeyId, data: Uint8Array): Promise<Uint8Array> {
89
+ if (data.length != 32) {
90
+ throw new Error('data to sign is too large');
91
+ }
92
+
93
+ const i = BytesHelper.bytesToInt(data);
94
+ if (!checkBigIntInField(i)) {
95
+ throw new Error('data to sign is too large');
96
+ }
97
+ const privateKey = await this.privateKey(keyId);
98
+
99
+ const signature = privateKey.signPoseidon(i);
100
+
101
+ return signature.compress();
102
+ }
103
+
104
+ private async privateKey(keyId: KmsKeyId): Promise<PrivateKey> {
105
+ const privateKeyHex = await this.keyStore.get({ alias: keyId.id });
106
+
107
+ return new PrivateKey(Hex.decodeString(privateKeyHex));
108
+ }
109
+
110
+ async verify(message: Uint8Array, signatureHex: string, keyId: KmsKeyId): Promise<boolean> {
111
+ const publicKey = await this.publicKey(keyId);
112
+
113
+ return PublicKey.newFromCompressed(hexToBytes(publicKey)).verifyPoseidon(
114
+ BytesHelper.bytesToInt(message),
115
+ Signature.newFromCompressed(hexToBytes(signatureHex))
116
+ );
117
+ }
118
+ }
@@ -0,0 +1,105 @@
1
+ import { IKeyProvider } from '../kms';
2
+ import { AbstractPrivateKeyStore, KmsKeyId, KmsKeyType } from '../store';
3
+ import * as providerHelpers from '../provider-helpers';
4
+ import { ed25519 } from '@noble/curves/ed25519';
5
+ import { bytesToHex } from '../../utils';
6
+
7
+ /**
8
+ * Provider for Ed25519 keys
9
+ * @public
10
+ * @class Ed25519Provider
11
+ * @implements IKeyProvider interface
12
+ */
13
+ export class Ed25519Provider implements IKeyProvider {
14
+ /**
15
+ * Creates an instance of Ed25519Provider.
16
+ * @param {KmsKeyType} keyType - kms key type
17
+ * @param {AbstractPrivateKeyStore} keyStore - key store for kms
18
+ */
19
+ constructor(
20
+ public readonly keyType: KmsKeyType,
21
+ private readonly _keyStore: AbstractPrivateKeyStore
22
+ ) {}
23
+
24
+ /**
25
+ * get all keys
26
+ * @returns list of keys
27
+ */
28
+ async list(): Promise<
29
+ {
30
+ alias: string;
31
+ key: string;
32
+ }[]
33
+ > {
34
+ const allKeysFromKeyStore = await this._keyStore.list();
35
+ return allKeysFromKeyStore.filter((key) => key.alias.startsWith(this.keyType));
36
+ }
37
+
38
+ /**
39
+ * generates a ed25519 key from a seed phrase
40
+ * @param {Uint8Array} seed - byte array seed
41
+ * @returns {Promise<KmsKeyId>} kms key identifier
42
+ */
43
+ async newPrivateKeyFromSeed(seed: Uint8Array): Promise<KmsKeyId> {
44
+ if (seed.length !== 32) {
45
+ throw new Error('Seed should be 32 bytes');
46
+ }
47
+
48
+ const publicKey = ed25519.getPublicKey(seed);
49
+ const kmsId = {
50
+ type: this.keyType,
51
+ id: providerHelpers.keyPath(this.keyType, bytesToHex(publicKey))
52
+ };
53
+
54
+ await this._keyStore.importKey({
55
+ alias: kmsId.id,
56
+ key: bytesToHex(seed)
57
+ });
58
+
59
+ return kmsId;
60
+ }
61
+
62
+ /**
63
+ * Gets public key by kmsKeyId
64
+ * @param {KmsKeyId} keyId - key identifier
65
+ * @returns {Promise<string>} Public key as a hex string
66
+ */
67
+ async publicKey(keyId: KmsKeyId): Promise<string> {
68
+ const privateKeyHex = await this.privateKey(keyId);
69
+ const publicKey = ed25519.getPublicKey(privateKeyHex);
70
+ return bytesToHex(publicKey);
71
+ }
72
+
73
+ /**
74
+ * signs prepared payload of size,
75
+ * with a key id
76
+ * @param {KmsKeyId} keyId - key identifier
77
+ * @param {Uint8Array} digest - data to sign (32 bytes)
78
+ * @returns {Promise<Uint8Array>} signature
79
+ */
80
+ async sign(keyId: KmsKeyId, digest: Uint8Array): Promise<Uint8Array> {
81
+ const privateKeyHex = await this.privateKey(keyId);
82
+ return ed25519.sign(digest, privateKeyHex);
83
+ }
84
+
85
+ /**
86
+ * Verifies a signature for the given message and key identifier.
87
+ * @param digest - The message to verify the signature against.
88
+ * @param signatureHex - The signature to verify, as a hexadecimal string.
89
+ * @param keyId - The key identifier to use for verification.
90
+ * @returns A Promise that resolves to a boolean indicating whether the signature is valid.
91
+ */
92
+ async verify(digest: Uint8Array, signatureHex: string, keyId: KmsKeyId): Promise<boolean> {
93
+ const publicKeyHex = await this.publicKey(keyId);
94
+ return ed25519.verify(signatureHex, digest, publicKeyHex);
95
+ }
96
+
97
+ /**
98
+ * Retrieves the private key for a given keyId from the key store.
99
+ * @param {KmsKeyId} keyId - The identifier of the key to retrieve.
100
+ * @returns {Promise<string>} The private key associated with the keyId.
101
+ */
102
+ private async privateKey(keyId: KmsKeyId): Promise<string> {
103
+ return this._keyStore.get({ alias: keyId.id });
104
+ }
105
+ }
@@ -0,0 +1,3 @@
1
+ export * from './bjj-provider';
2
+ export * from './ed25519-provider';
3
+ export * from './secp256k1-provider';
@@ -0,0 +1,125 @@
1
+ import { IKeyProvider } from '../kms';
2
+ import { AbstractPrivateKeyStore, KmsKeyId, KmsKeyType } from '../store';
3
+ import * as providerHelpers from '../provider-helpers';
4
+ import { base64UrlToBytes, bytesToHex } from '../../utils';
5
+ import { secp256k1 } from '@noble/curves/secp256k1';
6
+ import { sha256 } from '@iden3/js-crypto';
7
+ import { ES256KSigner, hexToBytes } from 'did-jwt';
8
+
9
+ /**
10
+ * Provider for Secp256k1
11
+ * @public
12
+ * @class Secp256k1Provider
13
+ * @implements implements IKeyProvider interface
14
+ */
15
+ export class Sec256k1Provider implements IKeyProvider {
16
+ /**
17
+ * key type that is handled by BJJ Provider
18
+ * @type {KmsKeyType}
19
+ */
20
+ keyType: KmsKeyType;
21
+ private _keyStore: AbstractPrivateKeyStore;
22
+
23
+ /**
24
+ * Creates an instance of BjjProvider.
25
+ * @param {KmsKeyType} keyType - kms key type
26
+ * @param {AbstractPrivateKeyStore} keyStore - key store for kms
27
+ */
28
+ constructor(keyType: KmsKeyType, keyStore: AbstractPrivateKeyStore) {
29
+ if (keyType !== KmsKeyType.Secp256k1) {
30
+ throw new Error('Key type must be Secp256k1');
31
+ }
32
+ this.keyType = keyType;
33
+ this._keyStore = keyStore;
34
+ }
35
+
36
+ /**
37
+ * get all keys
38
+ * @returns list of keys
39
+ */
40
+ async list(): Promise<
41
+ {
42
+ alias: string;
43
+ key: string;
44
+ }[]
45
+ > {
46
+ const allKeysFromKeyStore = await this._keyStore.list();
47
+ return allKeysFromKeyStore.filter((key) => key.alias.startsWith(this.keyType));
48
+ }
49
+
50
+ /**
51
+ * generates a baby jub jub key from a seed phrase
52
+ * @param {Uint8Array} seed - byte array seed
53
+ * @returns kms key identifier
54
+ */
55
+ async newPrivateKeyFromSeed(seed: Uint8Array): Promise<KmsKeyId> {
56
+ if (seed.length !== 32) {
57
+ throw new Error('Seed should be 32 bytes');
58
+ }
59
+ const publicKey = secp256k1.getPublicKey(seed);
60
+ const kmsId = {
61
+ type: this.keyType,
62
+ id: providerHelpers.keyPath(this.keyType, bytesToHex(publicKey))
63
+ };
64
+
65
+ await this._keyStore.importKey({
66
+ alias: kmsId.id,
67
+ key: bytesToHex(seed).padStart(64, '0')
68
+ });
69
+
70
+ return kmsId;
71
+ }
72
+
73
+ /**
74
+ * Gets public key by kmsKeyId
75
+ *
76
+ * @param {KmsKeyId} keyId - key identifier
77
+ */
78
+ async publicKey(keyId: KmsKeyId): Promise<string> {
79
+ const privateKeyHex = await this.privateKey(keyId);
80
+ const publicKey = secp256k1.getPublicKey(privateKeyHex, false); // 04 + x + y (uncompressed key)
81
+ return bytesToHex(publicKey);
82
+ }
83
+
84
+ /**
85
+ * Signs the given data using the private key associated with the specified key identifier.
86
+ * @param keyId - The key identifier to use for signing.
87
+ * @param data - The data to sign.
88
+ * @param opts - Signing options, such as the algorithm to use.
89
+ * @returns A Promise that resolves to the signature as a Uint8Array.
90
+ */
91
+ async sign(
92
+ keyId: KmsKeyId,
93
+ data: Uint8Array,
94
+ opts: { [key: string]: unknown } = { alg: 'ES256K' }
95
+ ): Promise<Uint8Array> {
96
+ const privateKeyHex = await this.privateKey(keyId);
97
+
98
+ const signatureBase64 = await ES256KSigner(
99
+ hexToBytes(privateKeyHex),
100
+ opts.alg === 'ES256K-R'
101
+ )(data);
102
+
103
+ if (typeof signatureBase64 !== 'string') {
104
+ throw new Error('signatureBase64 must be a string');
105
+ }
106
+
107
+ return base64UrlToBytes(signatureBase64);
108
+ }
109
+
110
+ /**
111
+ * Verifies a signature for the given message and key identifier.
112
+ * @param message - The message to verify the signature against.
113
+ * @param signatureHex - The signature to verify, as a hexadecimal string.
114
+ * @param keyId - The key identifier to use for verification.
115
+ * @returns A Promise that resolves to a boolean indicating whether the signature is valid.
116
+ */
117
+ async verify(message: Uint8Array, signatureHex: string, keyId: KmsKeyId): Promise<boolean> {
118
+ const publicKeyHex = await this.publicKey(keyId);
119
+ return secp256k1.verify(signatureHex, sha256(message), publicKeyHex);
120
+ }
121
+
122
+ private async privateKey(keyId: KmsKeyId): Promise<string> {
123
+ return this._keyStore.get({ alias: keyId.id });
124
+ }
125
+ }
package/src/kms/kms.ts ADDED
@@ -0,0 +1,173 @@
1
+ import { KmsKeyId, KmsKeyType } from './store';
2
+
3
+ /**
4
+ * KeyProvider is responsible for signing and creation of the keys
5
+ *
6
+ * @public
7
+ * @interface IKeyProvider
8
+ */
9
+ export interface IKeyProvider {
10
+ /**
11
+ * property to store key type
12
+ *
13
+ * @type {KmsKeyType}
14
+ */
15
+ keyType: KmsKeyType;
16
+
17
+ /**
18
+ * get all keys
19
+ *
20
+ * @returns list of keys
21
+ */
22
+ list(): Promise<
23
+ {
24
+ alias: string;
25
+ key: string;
26
+ }[]
27
+ >;
28
+ /**
29
+ * gets public key by key id
30
+ *
31
+ * @param {KmsKeyId} keyID - kms key identifier
32
+ * @returns `Promise<PublicKey>`
33
+ */
34
+ publicKey(keyID: KmsKeyId): Promise<string>;
35
+ /**
36
+ * sign data with kms key
37
+ *
38
+ * @param {KmsKeyId} keyId - key identifier
39
+ * @param {Uint8Array} data - bytes payload
40
+ * @param {{ [key: string]: unknown }} opts - additional options for signing
41
+ * @returns `Promise<Uint8Array>`
42
+ */
43
+ sign(keyId: KmsKeyId, data: Uint8Array, opts?: { [key: string]: unknown }): Promise<Uint8Array>;
44
+
45
+ /**
46
+ * creates new key pair from given seed
47
+ *
48
+ * @param {Uint8Array} seed - seed
49
+ * @returns `Promise<KmsKeyId>`
50
+ */
51
+ newPrivateKeyFromSeed(seed: Uint8Array): Promise<KmsKeyId>;
52
+
53
+ /**
54
+ * Verifies a message signature using the provided key ID.
55
+ *
56
+ * @param message - The message bytes to verify.
57
+ * @param signatureHex - The signature in hexadecimal format.
58
+ * @param keyId - The KMS key ID used to verify the signature.
59
+ * @returns A promise that resolves to a boolean indicating whether the signature is valid.
60
+ */
61
+ verify(message: Uint8Array, signatureHex: string, keyId: KmsKeyId): Promise<boolean>;
62
+ }
63
+ /**
64
+ * Key management system class contains different key providers.
65
+ * allows to register custom provider, create key, get public key and sign
66
+ *
67
+ * @public
68
+ * @class KMS - class
69
+ */
70
+ export class KMS {
71
+ private readonly _registry = new Map<KmsKeyType, IKeyProvider>();
72
+
73
+ /**
74
+ * register key provider in the KMS
75
+ *
76
+ * @param {KmsKeyType} keyType - kms key type
77
+ * @param {IKeyProvider} keyProvider - key provider implementation
78
+ */
79
+ registerKeyProvider(keyType: KmsKeyType, keyProvider: IKeyProvider): void {
80
+ if (this._registry.get(keyType)) {
81
+ throw new Error('present keyType');
82
+ }
83
+ this._registry.set(keyType, keyProvider);
84
+ }
85
+
86
+ /**
87
+ * generates a new key and returns it kms key id
88
+ *
89
+ * @param {KmsKeyType} keyType
90
+ * @param {Uint8Array} bytes
91
+ * @returns kms key id
92
+ */
93
+ async createKeyFromSeed(keyType: KmsKeyType, bytes: Uint8Array): Promise<KmsKeyId> {
94
+ const keyProvider = this._registry.get(keyType);
95
+ if (!keyProvider) {
96
+ throw new Error(`keyProvider not found for: ${keyType}`);
97
+ }
98
+ return keyProvider.newPrivateKeyFromSeed(bytes);
99
+ }
100
+
101
+ /**
102
+ * gets public key for key id
103
+ *
104
+ * @param {KmsKeyId} keyId -- key id
105
+ * @returns public key
106
+ */
107
+ async publicKey(keyId: KmsKeyId): Promise<string> {
108
+ const keyProvider = this._registry.get(keyId.type);
109
+ if (!keyProvider) {
110
+ throw new Error(`keyProvider not found for: ${keyId.type}`);
111
+ }
112
+
113
+ return keyProvider.publicKey(keyId);
114
+ }
115
+
116
+ /**
117
+ * sign Uint8Array with giv KmsKeyIden
118
+ *
119
+ * @param {KmsKeyId} keyId - key id
120
+ * @param {Uint8Array} data - prepared data bytes
121
+ * @returns `Promise<Uint8Array>` - return signature
122
+ */
123
+ async sign(
124
+ keyId: KmsKeyId,
125
+ data: Uint8Array,
126
+ opts?: {
127
+ [key: string]: unknown;
128
+ }
129
+ ): Promise<Uint8Array> {
130
+ const keyProvider = this._registry.get(keyId.type);
131
+ if (!keyProvider) {
132
+ throw new Error(`keyProvider not found for: ${keyId.type}`);
133
+ }
134
+
135
+ return keyProvider.sign(keyId, data, opts);
136
+ }
137
+
138
+ /**
139
+ * Verifies a signature against the provided data and key ID.
140
+ *
141
+ * @param data - The data to verify the signature against.
142
+ * @param signatureHex - The signature to verify, in hexadecimal format.
143
+ * @param keyId - The key ID to use for verification.
144
+ * @returns A promise that resolves to a boolean indicating whether the signature is valid.
145
+ */
146
+ verify(data: Uint8Array, signatureHex: string, keyId: KmsKeyId): Promise<boolean> {
147
+ const keyProvider = this._registry.get(keyId.type);
148
+ if (!keyProvider) {
149
+ throw new Error(`keyProvider not found for: ${keyId.type}`);
150
+ }
151
+ return keyProvider.verify(data, signatureHex, keyId);
152
+ }
153
+
154
+ /**
155
+ * get all keys by key type
156
+ *
157
+ * @param keyType - Key type
158
+ * @returns list of keys
159
+ */
160
+ list(keyType: KmsKeyType): Promise<
161
+ {
162
+ alias: string;
163
+ key: string;
164
+ }[]
165
+ > {
166
+ const keyProvider = this._registry.get(keyType);
167
+ if (!keyProvider) {
168
+ throw new Error(`keyProvider not found for: ${keyType}`);
169
+ }
170
+
171
+ return keyProvider.list();
172
+ }
173
+ }
@@ -0,0 +1,13 @@
1
+ import { KmsKeyType } from './store';
2
+
3
+ /**
4
+ * builds key path
5
+ *
6
+ * @param {KmsKeyType} keyType - key type
7
+ * @param {string} keyID - key id
8
+ * @returns string path
9
+ */
10
+ export function keyPath(keyType: KmsKeyType, keyID: string): string {
11
+ const basePath = '';
12
+ return basePath + String(keyType) + ':' + keyID;
13
+ }
@@ -0,0 +1,34 @@
1
+ /**
2
+ * KeyStore that allows to import and get keys by alias.
3
+ *
4
+ * @abstract
5
+ * @public
6
+ * @class AbstractPrivateKeyStore
7
+ */
8
+ export abstract class AbstractPrivateKeyStore {
9
+ /**
10
+ * imports key by alias
11
+ *
12
+ * @abstract
13
+ * @param {{ alias: string; key: string }} args - key alias and hex representation
14
+ * @returns `Promise<void>`
15
+ */
16
+ abstract importKey(args: { alias: string; key: string }): Promise<void>;
17
+
18
+ /**
19
+ * get key by alias
20
+ *
21
+ * @abstract
22
+ * @param {{ alias: string }} args -key alias
23
+ * @returns `Promise<string>`
24
+ */
25
+ abstract get(args: { alias: string }): Promise<string>;
26
+
27
+ /**
28
+ * get all keys
29
+ *
30
+ * @abstract
31
+ * @returns `Promise<{ alias: string; key: string }[]>`
32
+ */
33
+ abstract list(): Promise<{ alias: string; key: string }[]>;
34
+ }
@@ -0,0 +1,5 @@
1
+ export * from './abstract-key-store';
2
+ export * from './memory-key-store';
3
+ export * from './types';
4
+ export * from './local-storage-key-store';
5
+ export * from './indexed-db-key-store';
@@ -0,0 +1,60 @@
1
+ import { UseStore, createStore, get, set, entries } from 'idb-keyval';
2
+ import { AbstractPrivateKeyStore } from './abstract-key-store';
3
+
4
+ /**
5
+ * Allows storing keys in the indexed db storage of the browser
6
+ * (NOT ENCRYPTED: DO NOT USE IN THE PRODUCTION)
7
+ *
8
+ * @public
9
+ * @class IndexedDBPrivateKeyStore
10
+ * @implements implements AbstractPrivateKeyStore interface
11
+ */
12
+ export class IndexedDBPrivateKeyStore implements AbstractPrivateKeyStore {
13
+ static readonly storageKey = 'keystore';
14
+ private readonly _store: UseStore;
15
+
16
+ constructor() {
17
+ this._store = createStore(
18
+ `${IndexedDBPrivateKeyStore.storageKey}-db`,
19
+ IndexedDBPrivateKeyStore.storageKey
20
+ );
21
+ }
22
+
23
+ /**
24
+ * get all keys
25
+ *
26
+ * @abstract
27
+ * @returns `Promise<{ alias: string; key: string }[]>`
28
+ */
29
+ async list(): Promise<{ alias: string; key: string }[]> {
30
+ const allEntries = await entries(this._store);
31
+ return allEntries.map(([alias, key]) => ({ alias, key: key.value })) as unknown as {
32
+ alias: string;
33
+ key: string;
34
+ }[];
35
+ }
36
+
37
+ /**
38
+ * Gets key from the indexed db storage
39
+ *
40
+ * @param {{ alias: string }} args
41
+ * @returns hex string
42
+ */
43
+ async get(args: { alias: string }): Promise<string> {
44
+ const key = await get(args.alias, this._store);
45
+ if (!key) {
46
+ throw new Error('no key under given alias');
47
+ }
48
+ return key.value;
49
+ }
50
+
51
+ /**
52
+ * Import key to the indexed db storage
53
+ *
54
+ * @param {{ alias: string; key: string }} args - alias and private key in the hex
55
+ * @returns void
56
+ */
57
+ async importKey(args: { alias: string; key: string }): Promise<void> {
58
+ await set(args.alias, { value: args.key }, this._store);
59
+ }
60
+ }