@0xpolygonid/js-sdk 1.0.0-beta.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 (469) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +40 -0
  3. package/dist/cjs/auth/auth.js +179 -0
  4. package/dist/cjs/auth/auth.js.map +1 -0
  5. package/dist/cjs/auth/index.js +18 -0
  6. package/dist/cjs/auth/index.js.map +1 -0
  7. package/dist/cjs/circuits/atomic-query-mtp-v2.js +181 -0
  8. package/dist/cjs/circuits/atomic-query-mtp-v2.js.map +1 -0
  9. package/dist/cjs/circuits/atomic-query-sig-v2.js +219 -0
  10. package/dist/cjs/circuits/atomic-query-sig-v2.js.map +1 -0
  11. package/dist/cjs/circuits/auth-v2.js +99 -0
  12. package/dist/cjs/circuits/auth-v2.js.map +1 -0
  13. package/dist/cjs/circuits/common.js +193 -0
  14. package/dist/cjs/circuits/common.js.map +1 -0
  15. package/dist/cjs/circuits/comparer.js +132 -0
  16. package/dist/cjs/circuits/comparer.js.map +1 -0
  17. package/dist/cjs/circuits/index.js +24 -0
  18. package/dist/cjs/circuits/index.js.map +1 -0
  19. package/dist/cjs/circuits/models.js +110 -0
  20. package/dist/cjs/circuits/models.js.map +1 -0
  21. package/dist/cjs/circuits/state-transition.js +94 -0
  22. package/dist/cjs/circuits/state-transition.js.map +1 -0
  23. package/dist/cjs/credentials/credential-wallet.js +264 -0
  24. package/dist/cjs/credentials/credential-wallet.js.map +1 -0
  25. package/dist/cjs/credentials/index.js +18 -0
  26. package/dist/cjs/credentials/index.js.map +1 -0
  27. package/dist/cjs/credentials/revocation.js +290 -0
  28. package/dist/cjs/credentials/revocation.js.map +1 -0
  29. package/dist/cjs/iden3comm/constants.js +45 -0
  30. package/dist/cjs/iden3comm/constants.js.map +1 -0
  31. package/dist/cjs/iden3comm/errors.js +15 -0
  32. package/dist/cjs/iden3comm/errors.js.map +1 -0
  33. package/dist/cjs/iden3comm/index.js +35 -0
  34. package/dist/cjs/iden3comm/index.js.map +1 -0
  35. package/dist/cjs/iden3comm/packageManager.js +78 -0
  36. package/dist/cjs/iden3comm/packageManager.js.map +1 -0
  37. package/dist/cjs/iden3comm/packers/index.js +19 -0
  38. package/dist/cjs/iden3comm/packers/index.js.map +1 -0
  39. package/dist/cjs/iden3comm/packers/plain.js +49 -0
  40. package/dist/cjs/iden3comm/packers/plain.js.map +1 -0
  41. package/dist/cjs/iden3comm/packers/zkp.js +155 -0
  42. package/dist/cjs/iden3comm/packers/zkp.js.map +1 -0
  43. package/dist/cjs/iden3comm/types/index.js +24 -0
  44. package/dist/cjs/iden3comm/types/index.js.map +1 -0
  45. package/dist/cjs/iden3comm/types/packageManager.js +3 -0
  46. package/dist/cjs/iden3comm/types/packageManager.js.map +1 -0
  47. package/dist/cjs/iden3comm/types/packer.js +3 -0
  48. package/dist/cjs/iden3comm/types/packer.js.map +1 -0
  49. package/dist/cjs/iden3comm/types/protocol/auth.js +3 -0
  50. package/dist/cjs/iden3comm/types/protocol/auth.js.map +1 -0
  51. package/dist/cjs/iden3comm/types/protocol/credentials.js +3 -0
  52. package/dist/cjs/iden3comm/types/protocol/credentials.js.map +1 -0
  53. package/dist/cjs/iden3comm/types/protocol/messages.js +3 -0
  54. package/dist/cjs/iden3comm/types/protocol/messages.js.map +1 -0
  55. package/dist/cjs/iden3comm/types/protocol/proof.js +3 -0
  56. package/dist/cjs/iden3comm/types/protocol/proof.js.map +1 -0
  57. package/dist/cjs/iden3comm/types/protocol/revocation.js +3 -0
  58. package/dist/cjs/iden3comm/types/protocol/revocation.js.map +1 -0
  59. package/dist/cjs/iden3comm/utils/bytes.js +20 -0
  60. package/dist/cjs/iden3comm/utils/bytes.js.map +1 -0
  61. package/dist/cjs/iden3comm/utils/envelope.js +99 -0
  62. package/dist/cjs/iden3comm/utils/envelope.js.map +1 -0
  63. package/dist/cjs/iden3comm/utils/index.js +6 -0
  64. package/dist/cjs/iden3comm/utils/index.js.map +1 -0
  65. package/dist/cjs/iden3comm/utils/message.js +43 -0
  66. package/dist/cjs/iden3comm/utils/message.js.map +1 -0
  67. package/dist/cjs/identity/common.js +40 -0
  68. package/dist/cjs/identity/common.js.map +1 -0
  69. package/dist/cjs/identity/identity-wallet.js +422 -0
  70. package/dist/cjs/identity/identity-wallet.js.map +1 -0
  71. package/dist/cjs/identity/index.js +19 -0
  72. package/dist/cjs/identity/index.js.map +1 -0
  73. package/dist/cjs/index.js +42 -0
  74. package/dist/cjs/index.js.map +1 -0
  75. package/dist/cjs/kms/bjj-provider.js +101 -0
  76. package/dist/cjs/kms/bjj-provider.js.map +1 -0
  77. package/dist/cjs/kms/index.js +20 -0
  78. package/dist/cjs/kms/index.js.map +1 -0
  79. package/dist/cjs/kms/kms.js +74 -0
  80. package/dist/cjs/kms/kms.js.map +1 -0
  81. package/dist/cjs/kms/provider-helpers.js +49 -0
  82. package/dist/cjs/kms/provider-helpers.js.map +1 -0
  83. package/dist/cjs/kms/store/abstract-key-store.js +15 -0
  84. package/dist/cjs/kms/store/abstract-key-store.js.map +1 -0
  85. package/dist/cjs/kms/store/index.js +21 -0
  86. package/dist/cjs/kms/store/index.js.map +1 -0
  87. package/dist/cjs/kms/store/local-storage-key-store.js +56 -0
  88. package/dist/cjs/kms/store/local-storage-key-store.js.map +1 -0
  89. package/dist/cjs/kms/store/memory-key-store.js +28 -0
  90. package/dist/cjs/kms/store/memory-key-store.js.map +1 -0
  91. package/dist/cjs/kms/store/types.js +15 -0
  92. package/dist/cjs/kms/store/types.js.map +1 -0
  93. package/dist/cjs/loaders/index.js +19 -0
  94. package/dist/cjs/loaders/index.js.map +1 -0
  95. package/dist/cjs/loaders/key.js +50 -0
  96. package/dist/cjs/loaders/key.js.map +1 -0
  97. package/dist/cjs/loaders/schema.js +110 -0
  98. package/dist/cjs/loaders/schema.js.map +1 -0
  99. package/dist/cjs/proof/common.js +64 -0
  100. package/dist/cjs/proof/common.js.map +1 -0
  101. package/dist/cjs/proof/index.js +20 -0
  102. package/dist/cjs/proof/index.js.map +1 -0
  103. package/dist/cjs/proof/proof-service.js +344 -0
  104. package/dist/cjs/proof/proof-service.js.map +1 -0
  105. package/dist/cjs/proof/prover.js +79 -0
  106. package/dist/cjs/proof/prover.js.map +1 -0
  107. package/dist/cjs/proof/witness_calculator.js +282 -0
  108. package/dist/cjs/proof/witness_calculator.js.map +1 -0
  109. package/dist/cjs/schema-processor/index.js +19 -0
  110. package/dist/cjs/schema-processor/index.js.map +1 -0
  111. package/dist/cjs/schema-processor/json/index.js +19 -0
  112. package/dist/cjs/schema-processor/json/index.js.map +1 -0
  113. package/dist/cjs/schema-processor/json/parser.js +136 -0
  114. package/dist/cjs/schema-processor/json/parser.js.map +1 -0
  115. package/dist/cjs/schema-processor/json/validator.js +42 -0
  116. package/dist/cjs/schema-processor/json/validator.js.map +1 -0
  117. package/dist/cjs/schema-processor/utils.js +98 -0
  118. package/dist/cjs/schema-processor/utils.js.map +1 -0
  119. package/dist/cjs/storage/blockchain/index.js +18 -0
  120. package/dist/cjs/storage/blockchain/index.js.map +1 -0
  121. package/dist/cjs/storage/blockchain/state-abi.json +922 -0
  122. package/dist/cjs/storage/blockchain/state.js +112 -0
  123. package/dist/cjs/storage/blockchain/state.js.map +1 -0
  124. package/dist/cjs/storage/entities/circuitData.js +3 -0
  125. package/dist/cjs/storage/entities/circuitData.js.map +1 -0
  126. package/dist/cjs/storage/entities/identity.js +3 -0
  127. package/dist/cjs/storage/entities/identity.js.map +1 -0
  128. package/dist/cjs/storage/entities/index.js +21 -0
  129. package/dist/cjs/storage/entities/index.js.map +1 -0
  130. package/dist/cjs/storage/entities/mt.js +19 -0
  131. package/dist/cjs/storage/entities/mt.js.map +1 -0
  132. package/dist/cjs/storage/entities/state.js +3 -0
  133. package/dist/cjs/storage/entities/state.js.map +1 -0
  134. package/dist/cjs/storage/errors.js +14 -0
  135. package/dist/cjs/storage/errors.js.map +1 -0
  136. package/dist/cjs/storage/filters/index.js +18 -0
  137. package/dist/cjs/storage/filters/index.js.map +1 -0
  138. package/dist/cjs/storage/filters/jsonQuery.js +141 -0
  139. package/dist/cjs/storage/filters/jsonQuery.js.map +1 -0
  140. package/dist/cjs/storage/index.js +24 -0
  141. package/dist/cjs/storage/index.js.map +1 -0
  142. package/dist/cjs/storage/interfaces/circuits.js +3 -0
  143. package/dist/cjs/storage/interfaces/circuits.js.map +1 -0
  144. package/dist/cjs/storage/interfaces/credentials.js +3 -0
  145. package/dist/cjs/storage/interfaces/credentials.js.map +1 -0
  146. package/dist/cjs/storage/interfaces/data-source.js +3 -0
  147. package/dist/cjs/storage/interfaces/data-source.js.map +1 -0
  148. package/dist/cjs/storage/interfaces/data-storage.js +3 -0
  149. package/dist/cjs/storage/interfaces/data-storage.js.map +1 -0
  150. package/dist/cjs/storage/interfaces/identity.js +3 -0
  151. package/dist/cjs/storage/interfaces/identity.js.map +1 -0
  152. package/dist/cjs/storage/interfaces/index.js +24 -0
  153. package/dist/cjs/storage/interfaces/index.js.map +1 -0
  154. package/dist/cjs/storage/interfaces/merkletree.js +3 -0
  155. package/dist/cjs/storage/interfaces/merkletree.js.map +1 -0
  156. package/dist/cjs/storage/interfaces/state.js +3 -0
  157. package/dist/cjs/storage/interfaces/state.js.map +1 -0
  158. package/dist/cjs/storage/local-storage/data-source.js +89 -0
  159. package/dist/cjs/storage/local-storage/data-source.js.map +1 -0
  160. package/dist/cjs/storage/local-storage/index.js +19 -0
  161. package/dist/cjs/storage/local-storage/index.js.map +1 -0
  162. package/dist/cjs/storage/local-storage/merkletree.js +148 -0
  163. package/dist/cjs/storage/local-storage/merkletree.js.map +1 -0
  164. package/dist/cjs/storage/memory/data-source.js +49 -0
  165. package/dist/cjs/storage/memory/data-source.js.map +1 -0
  166. package/dist/cjs/storage/memory/index.js +19 -0
  167. package/dist/cjs/storage/memory/index.js.map +1 -0
  168. package/dist/cjs/storage/memory/merkletree.js +94 -0
  169. package/dist/cjs/storage/memory/merkletree.js.map +1 -0
  170. package/dist/cjs/storage/shared/circuit-storage.js +46 -0
  171. package/dist/cjs/storage/shared/circuit-storage.js.map +1 -0
  172. package/dist/cjs/storage/shared/credential-storage.js +66 -0
  173. package/dist/cjs/storage/shared/credential-storage.js.map +1 -0
  174. package/dist/cjs/storage/shared/identity-storage.js +71 -0
  175. package/dist/cjs/storage/shared/identity-storage.js.map +1 -0
  176. package/dist/cjs/storage/shared/index.js +20 -0
  177. package/dist/cjs/storage/shared/index.js.map +1 -0
  178. package/dist/cjs/verifiable/constants.js +104 -0
  179. package/dist/cjs/verifiable/constants.js.map +1 -0
  180. package/dist/cjs/verifiable/credential.js +129 -0
  181. package/dist/cjs/verifiable/credential.js.map +1 -0
  182. package/dist/cjs/verifiable/index.js +21 -0
  183. package/dist/cjs/verifiable/index.js.map +1 -0
  184. package/dist/cjs/verifiable/proof.js +70 -0
  185. package/dist/cjs/verifiable/proof.js.map +1 -0
  186. package/dist/cjs/verifiable/schema.js +245 -0
  187. package/dist/cjs/verifiable/schema.js.map +1 -0
  188. package/dist/esm/auth/auth.js +152 -0
  189. package/dist/esm/auth/auth.js.map +1 -0
  190. package/dist/esm/auth/index.js +2 -0
  191. package/dist/esm/auth/index.js.map +1 -0
  192. package/dist/esm/circuits/atomic-query-mtp-v2.js +176 -0
  193. package/dist/esm/circuits/atomic-query-mtp-v2.js.map +1 -0
  194. package/dist/esm/circuits/atomic-query-sig-v2.js +214 -0
  195. package/dist/esm/circuits/atomic-query-sig-v2.js.map +1 -0
  196. package/dist/esm/circuits/auth-v2.js +94 -0
  197. package/dist/esm/circuits/auth-v2.js.map +1 -0
  198. package/dist/esm/circuits/common.js +186 -0
  199. package/dist/esm/circuits/common.js.map +1 -0
  200. package/dist/esm/circuits/comparer.js +126 -0
  201. package/dist/esm/circuits/comparer.js.map +1 -0
  202. package/dist/esm/circuits/index.js +8 -0
  203. package/dist/esm/circuits/index.js.map +1 -0
  204. package/dist/esm/circuits/models.js +104 -0
  205. package/dist/esm/circuits/models.js.map +1 -0
  206. package/dist/esm/circuits/state-transition.js +89 -0
  207. package/dist/esm/circuits/state-transition.js.map +1 -0
  208. package/dist/esm/credentials/credential-wallet.js +232 -0
  209. package/dist/esm/credentials/credential-wallet.js.map +1 -0
  210. package/dist/esm/credentials/index.js +2 -0
  211. package/dist/esm/credentials/index.js.map +1 -0
  212. package/dist/esm/credentials/revocation.js +281 -0
  213. package/dist/esm/credentials/revocation.js.map +1 -0
  214. package/dist/esm/iden3comm/constants.js +42 -0
  215. package/dist/esm/iden3comm/constants.js.map +1 -0
  216. package/dist/esm/iden3comm/errors.js +12 -0
  217. package/dist/esm/iden3comm/errors.js.map +1 -0
  218. package/dist/esm/iden3comm/index.js +6 -0
  219. package/dist/esm/iden3comm/index.js.map +1 -0
  220. package/dist/esm/iden3comm/packageManager.js +74 -0
  221. package/dist/esm/iden3comm/packageManager.js.map +1 -0
  222. package/dist/esm/iden3comm/packers/index.js +3 -0
  223. package/dist/esm/iden3comm/packers/index.js.map +1 -0
  224. package/dist/esm/iden3comm/packers/plain.js +45 -0
  225. package/dist/esm/iden3comm/packers/plain.js.map +1 -0
  226. package/dist/esm/iden3comm/packers/zkp.js +149 -0
  227. package/dist/esm/iden3comm/packers/zkp.js.map +1 -0
  228. package/dist/esm/iden3comm/types/index.js +8 -0
  229. package/dist/esm/iden3comm/types/index.js.map +1 -0
  230. package/dist/esm/iden3comm/types/packageManager.js +2 -0
  231. package/dist/esm/iden3comm/types/packageManager.js.map +1 -0
  232. package/dist/esm/iden3comm/types/packer.js +2 -0
  233. package/dist/esm/iden3comm/types/packer.js.map +1 -0
  234. package/dist/esm/iden3comm/types/protocol/auth.js +2 -0
  235. package/dist/esm/iden3comm/types/protocol/auth.js.map +1 -0
  236. package/dist/esm/iden3comm/types/protocol/credentials.js +2 -0
  237. package/dist/esm/iden3comm/types/protocol/credentials.js.map +1 -0
  238. package/dist/esm/iden3comm/types/protocol/messages.js +2 -0
  239. package/dist/esm/iden3comm/types/protocol/messages.js.map +1 -0
  240. package/dist/esm/iden3comm/types/protocol/proof.js +2 -0
  241. package/dist/esm/iden3comm/types/protocol/proof.js.map +1 -0
  242. package/dist/esm/iden3comm/types/protocol/revocation.js +2 -0
  243. package/dist/esm/iden3comm/types/protocol/revocation.js.map +1 -0
  244. package/dist/esm/iden3comm/utils/bytes.js +20 -0
  245. package/dist/esm/iden3comm/utils/bytes.js.map +1 -0
  246. package/dist/esm/iden3comm/utils/envelope.js +92 -0
  247. package/dist/esm/iden3comm/utils/envelope.js.map +1 -0
  248. package/dist/esm/iden3comm/utils/index.js +3 -0
  249. package/dist/esm/iden3comm/utils/index.js.map +1 -0
  250. package/dist/esm/iden3comm/utils/message.js +37 -0
  251. package/dist/esm/iden3comm/utils/message.js.map +1 -0
  252. package/dist/esm/identity/common.js +35 -0
  253. package/dist/esm/identity/common.js.map +1 -0
  254. package/dist/esm/identity/identity-wallet.js +395 -0
  255. package/dist/esm/identity/identity-wallet.js.map +1 -0
  256. package/dist/esm/identity/index.js +3 -0
  257. package/dist/esm/identity/index.js.map +1 -0
  258. package/dist/esm/index.js +13 -0
  259. package/dist/esm/index.js.map +1 -0
  260. package/dist/esm/kms/bjj-provider.js +74 -0
  261. package/dist/esm/kms/bjj-provider.js.map +1 -0
  262. package/dist/esm/kms/index.js +4 -0
  263. package/dist/esm/kms/index.js.map +1 -0
  264. package/dist/esm/kms/kms.js +70 -0
  265. package/dist/esm/kms/kms.js.map +1 -0
  266. package/dist/esm/kms/provider-helpers.js +44 -0
  267. package/dist/esm/kms/provider-helpers.js.map +1 -0
  268. package/dist/esm/kms/store/abstract-key-store.js +11 -0
  269. package/dist/esm/kms/store/abstract-key-store.js.map +1 -0
  270. package/dist/esm/kms/store/index.js +5 -0
  271. package/dist/esm/kms/store/index.js.map +1 -0
  272. package/dist/esm/kms/store/local-storage-key-store.js +52 -0
  273. package/dist/esm/kms/store/local-storage-key-store.js.map +1 -0
  274. package/dist/esm/kms/store/memory-key-store.js +24 -0
  275. package/dist/esm/kms/store/memory-key-store.js.map +1 -0
  276. package/dist/esm/kms/store/types.js +12 -0
  277. package/dist/esm/kms/store/types.js.map +1 -0
  278. package/dist/esm/loaders/index.js +3 -0
  279. package/dist/esm/loaders/index.js.map +1 -0
  280. package/dist/esm/loaders/key.js +23 -0
  281. package/dist/esm/loaders/key.js.map +1 -0
  282. package/dist/esm/loaders/schema.js +100 -0
  283. package/dist/esm/loaders/schema.js.map +1 -0
  284. package/dist/esm/proof/common.js +59 -0
  285. package/dist/esm/proof/common.js.map +1 -0
  286. package/dist/esm/proof/index.js +4 -0
  287. package/dist/esm/proof/index.js.map +1 -0
  288. package/dist/esm/proof/proof-service.js +339 -0
  289. package/dist/esm/proof/proof-service.js.map +1 -0
  290. package/dist/esm/proof/prover.js +52 -0
  291. package/dist/esm/proof/prover.js.map +1 -0
  292. package/dist/esm/proof/witness_calculator.js +278 -0
  293. package/dist/esm/proof/witness_calculator.js.map +1 -0
  294. package/dist/esm/schema-processor/index.js +3 -0
  295. package/dist/esm/schema-processor/index.js.map +1 -0
  296. package/dist/esm/schema-processor/json/index.js +3 -0
  297. package/dist/esm/schema-processor/json/index.js.map +1 -0
  298. package/dist/esm/schema-processor/json/parser.js +132 -0
  299. package/dist/esm/schema-processor/json/parser.js.map +1 -0
  300. package/dist/esm/schema-processor/json/validator.js +35 -0
  301. package/dist/esm/schema-processor/json/validator.js.map +1 -0
  302. package/dist/esm/schema-processor/utils.js +89 -0
  303. package/dist/esm/schema-processor/utils.js.map +1 -0
  304. package/dist/esm/storage/blockchain/index.js +2 -0
  305. package/dist/esm/storage/blockchain/index.js.map +1 -0
  306. package/dist/esm/storage/blockchain/state-abi.json +922 -0
  307. package/dist/esm/storage/blockchain/state.js +105 -0
  308. package/dist/esm/storage/blockchain/state.js.map +1 -0
  309. package/dist/esm/storage/entities/circuitData.js +2 -0
  310. package/dist/esm/storage/entities/circuitData.js.map +1 -0
  311. package/dist/esm/storage/entities/identity.js +2 -0
  312. package/dist/esm/storage/entities/identity.js.map +1 -0
  313. package/dist/esm/storage/entities/index.js +5 -0
  314. package/dist/esm/storage/entities/index.js.map +1 -0
  315. package/dist/esm/storage/entities/mt.js +16 -0
  316. package/dist/esm/storage/entities/mt.js.map +1 -0
  317. package/dist/esm/storage/entities/state.js +2 -0
  318. package/dist/esm/storage/entities/state.js.map +1 -0
  319. package/dist/esm/storage/errors.js +11 -0
  320. package/dist/esm/storage/errors.js.map +1 -0
  321. package/dist/esm/storage/filters/index.js +2 -0
  322. package/dist/esm/storage/filters/index.js.map +1 -0
  323. package/dist/esm/storage/filters/jsonQuery.js +134 -0
  324. package/dist/esm/storage/filters/jsonQuery.js.map +1 -0
  325. package/dist/esm/storage/index.js +8 -0
  326. package/dist/esm/storage/index.js.map +1 -0
  327. package/dist/esm/storage/interfaces/circuits.js +2 -0
  328. package/dist/esm/storage/interfaces/circuits.js.map +1 -0
  329. package/dist/esm/storage/interfaces/credentials.js +2 -0
  330. package/dist/esm/storage/interfaces/credentials.js.map +1 -0
  331. package/dist/esm/storage/interfaces/data-source.js +2 -0
  332. package/dist/esm/storage/interfaces/data-source.js.map +1 -0
  333. package/dist/esm/storage/interfaces/data-storage.js +2 -0
  334. package/dist/esm/storage/interfaces/data-storage.js.map +1 -0
  335. package/dist/esm/storage/interfaces/identity.js +2 -0
  336. package/dist/esm/storage/interfaces/identity.js.map +1 -0
  337. package/dist/esm/storage/interfaces/index.js +8 -0
  338. package/dist/esm/storage/interfaces/index.js.map +1 -0
  339. package/dist/esm/storage/interfaces/merkletree.js +2 -0
  340. package/dist/esm/storage/interfaces/merkletree.js.map +1 -0
  341. package/dist/esm/storage/interfaces/state.js +2 -0
  342. package/dist/esm/storage/interfaces/state.js.map +1 -0
  343. package/dist/esm/storage/local-storage/data-source.js +85 -0
  344. package/dist/esm/storage/local-storage/data-source.js.map +1 -0
  345. package/dist/esm/storage/local-storage/index.js +3 -0
  346. package/dist/esm/storage/local-storage/index.js.map +1 -0
  347. package/dist/esm/storage/local-storage/merkletree.js +121 -0
  348. package/dist/esm/storage/local-storage/merkletree.js.map +1 -0
  349. package/dist/esm/storage/memory/data-source.js +45 -0
  350. package/dist/esm/storage/memory/data-source.js.map +1 -0
  351. package/dist/esm/storage/memory/index.js +3 -0
  352. package/dist/esm/storage/memory/index.js.map +1 -0
  353. package/dist/esm/storage/memory/merkletree.js +67 -0
  354. package/dist/esm/storage/memory/merkletree.js.map +1 -0
  355. package/dist/esm/storage/shared/circuit-storage.js +42 -0
  356. package/dist/esm/storage/shared/circuit-storage.js.map +1 -0
  357. package/dist/esm/storage/shared/credential-storage.js +62 -0
  358. package/dist/esm/storage/shared/credential-storage.js.map +1 -0
  359. package/dist/esm/storage/shared/identity-storage.js +67 -0
  360. package/dist/esm/storage/shared/identity-storage.js.map +1 -0
  361. package/dist/esm/storage/shared/index.js +4 -0
  362. package/dist/esm/storage/shared/index.js.map +1 -0
  363. package/dist/esm/verifiable/constants.js +101 -0
  364. package/dist/esm/verifiable/constants.js.map +1 -0
  365. package/dist/esm/verifiable/credential.js +124 -0
  366. package/dist/esm/verifiable/credential.js.map +1 -0
  367. package/dist/esm/verifiable/index.js +5 -0
  368. package/dist/esm/verifiable/index.js.map +1 -0
  369. package/dist/esm/verifiable/proof.js +64 -0
  370. package/dist/esm/verifiable/proof.js.map +1 -0
  371. package/dist/esm/verifiable/schema.js +242 -0
  372. package/dist/esm/verifiable/schema.js.map +1 -0
  373. package/dist/esm_esbuild/index.js +128087 -0
  374. package/dist/esm_esbuild/index.js.map +7 -0
  375. package/dist/types/auth/auth.d.ts +131 -0
  376. package/dist/types/auth/index.d.ts +1 -0
  377. package/dist/types/circuits/atomic-query-mtp-v2.d.ts +64 -0
  378. package/dist/types/circuits/atomic-query-sig-v2.d.ts +65 -0
  379. package/dist/types/circuits/auth-v2.d.ts +46 -0
  380. package/dist/types/circuits/common.d.ts +124 -0
  381. package/dist/types/circuits/comparer.d.ts +87 -0
  382. package/dist/types/circuits/index.d.ts +7 -0
  383. package/dist/types/circuits/models.d.ts +181 -0
  384. package/dist/types/circuits/state-transition.d.ts +50 -0
  385. package/dist/types/credentials/credential-wallet.d.ts +248 -0
  386. package/dist/types/credentials/index.d.ts +1 -0
  387. package/dist/types/credentials/revocation.d.ts +97 -0
  388. package/dist/types/iden3comm/constants.d.ts +27 -0
  389. package/dist/types/iden3comm/errors.d.ts +8 -0
  390. package/dist/types/iden3comm/index.d.ts +5 -0
  391. package/dist/types/iden3comm/packageManager.d.ts +31 -0
  392. package/dist/types/iden3comm/packers/index.d.ts +2 -0
  393. package/dist/types/iden3comm/packers/plain.d.ts +34 -0
  394. package/dist/types/iden3comm/packers/zkp.d.ts +86 -0
  395. package/dist/types/iden3comm/types/index.d.ts +15 -0
  396. package/dist/types/iden3comm/types/packageManager.d.ts +80 -0
  397. package/dist/types/iden3comm/types/packer.d.ts +59 -0
  398. package/dist/types/iden3comm/types/protocol/auth.d.ts +49 -0
  399. package/dist/types/iden3comm/types/protocol/credentials.d.ts +74 -0
  400. package/dist/types/iden3comm/types/protocol/messages.d.ts +16 -0
  401. package/dist/types/iden3comm/types/protocol/proof.d.ts +31 -0
  402. package/dist/types/iden3comm/types/protocol/revocation.d.ts +28 -0
  403. package/dist/types/iden3comm/utils/bytes.d.ts +8 -0
  404. package/dist/types/iden3comm/utils/envelope.d.ts +31 -0
  405. package/dist/types/iden3comm/utils/index.d.ts +2 -0
  406. package/dist/types/iden3comm/utils/message.d.ts +19 -0
  407. package/dist/types/identity/common.d.ts +18 -0
  408. package/dist/types/identity/identity-wallet.d.ts +248 -0
  409. package/dist/types/identity/index.d.ts +2 -0
  410. package/dist/types/index.d.ts +12 -0
  411. package/dist/types/kms/bjj-provider.d.ts +47 -0
  412. package/dist/types/kms/index.d.ts +3 -0
  413. package/dist/types/kms/kms.d.ts +80 -0
  414. package/dist/types/kms/provider-helpers.d.ts +18 -0
  415. package/dist/types/kms/store/abstract-key-store.d.ts +31 -0
  416. package/dist/types/kms/store/index.d.ts +4 -0
  417. package/dist/types/kms/store/local-storage-key-store.d.ts +32 -0
  418. package/dist/types/kms/store/memory-key-store.d.ts +20 -0
  419. package/dist/types/kms/store/types.d.ts +21 -0
  420. package/dist/types/loaders/index.d.ts +2 -0
  421. package/dist/types/loaders/key.d.ts +29 -0
  422. package/dist/types/loaders/schema.d.ts +85 -0
  423. package/dist/types/proof/common.d.ts +17 -0
  424. package/dist/types/proof/index.d.ts +3 -0
  425. package/dist/types/proof/proof-service.d.ts +121 -0
  426. package/dist/types/proof/prover.d.ts +11 -0
  427. package/dist/types/proof/witness_calculator.d.ts +16 -0
  428. package/dist/types/schema-processor/index.d.ts +2 -0
  429. package/dist/types/schema-processor/json/index.d.ts +2 -0
  430. package/dist/types/schema-processor/json/parser.d.ts +103 -0
  431. package/dist/types/schema-processor/json/validator.d.ts +22 -0
  432. package/dist/types/schema-processor/utils.d.ts +49 -0
  433. package/dist/types/storage/blockchain/index.d.ts +1 -0
  434. package/dist/types/storage/blockchain/state.d.ts +52 -0
  435. package/dist/types/storage/entities/circuitData.d.ts +7 -0
  436. package/dist/types/storage/entities/identity.d.ts +15 -0
  437. package/dist/types/storage/entities/index.d.ts +4 -0
  438. package/dist/types/storage/entities/mt.d.ts +23 -0
  439. package/dist/types/storage/entities/state.d.ts +48 -0
  440. package/dist/types/storage/errors.d.ts +9 -0
  441. package/dist/types/storage/filters/index.d.ts +1 -0
  442. package/dist/types/storage/filters/jsonQuery.d.ts +82 -0
  443. package/dist/types/storage/index.d.ts +7 -0
  444. package/dist/types/storage/interfaces/circuits.d.ts +26 -0
  445. package/dist/types/storage/interfaces/credentials.d.ts +53 -0
  446. package/dist/types/storage/interfaces/data-source.d.ts +39 -0
  447. package/dist/types/storage/interfaces/data-storage.d.ts +17 -0
  448. package/dist/types/storage/interfaces/identity.d.ts +63 -0
  449. package/dist/types/storage/interfaces/index.d.ts +7 -0
  450. package/dist/types/storage/interfaces/merkletree.d.ts +44 -0
  451. package/dist/types/storage/interfaces/state.d.ts +41 -0
  452. package/dist/types/storage/local-storage/data-source.d.ts +47 -0
  453. package/dist/types/storage/local-storage/index.d.ts +2 -0
  454. package/dist/types/storage/local-storage/merkletree.d.ts +46 -0
  455. package/dist/types/storage/memory/data-source.d.ts +22 -0
  456. package/dist/types/storage/memory/index.d.ts +2 -0
  457. package/dist/types/storage/memory/merkletree.d.ts +49 -0
  458. package/dist/types/storage/shared/circuit-storage.d.ts +35 -0
  459. package/dist/types/storage/shared/credential-storage.d.ts +39 -0
  460. package/dist/types/storage/shared/identity-storage.d.ts +40 -0
  461. package/dist/types/storage/shared/index.d.ts +3 -0
  462. package/dist/types/verifiable/constants.d.ts +78 -0
  463. package/dist/types/verifiable/credential.d.ts +123 -0
  464. package/dist/types/verifiable/index.d.ts +4 -0
  465. package/dist/types/verifiable/proof.d.ts +123 -0
  466. package/dist/types/verifiable/schema.d.ts +2 -0
  467. package/dist/umd/index.js +462 -0
  468. package/dist/umd/index.js.map +7 -0
  469. package/package.json +95 -0
@@ -0,0 +1,339 @@
1
+ import { newHashFromString } from '@iden3/js-merkletree';
2
+ import { ValueProof } from './../circuits/models';
3
+ import { ProofType } from '../verifiable/constants';
4
+ /* eslint-disable no-console */
5
+ import { DID, getUnixTimestamp, Claim, MerklizedRootPosition, BytesHelper } from '@iden3/js-iden3-core';
6
+ import { CircuitClaim, CircuitId, strMTHex, Query, AtomicQueryMTPV2Inputs, AtomicQuerySigV2Inputs, QueryOperators, StateTransitionInputs, AuthV2Inputs } from '../circuits';
7
+ import { toClaimNonRevStatus, toGISTProof } from './common';
8
+ import { NativeProver } from './prover';
9
+ import { Hex, Poseidon, Signature } from '@iden3/js-crypto';
10
+ import { UniversalSchemaLoader } from '../loaders';
11
+ import { Parser } from '../schema-processor';
12
+ import { Path } from '@iden3/js-jsonld-merklization';
13
+ /**
14
+ * Proof service is an implementation of IProofService
15
+ * that works with a native groth16 prover
16
+ *
17
+ * @export
18
+ * @beta
19
+ * @class ProofService
20
+ * @implements implements IProofService interface
21
+ */
22
+ export class ProofService {
23
+ /**
24
+ * Creates an instance of ProofService.
25
+ * @param {IIdentityWallet} _identityWallet - identity wallet
26
+ * @param {ICredentialWallet} _credentialWallet - credential wallet
27
+ * @param {ICircuitStorage} _circuitStorage - circuit storage to load proving / verification files
28
+ * @param {IStateStorage} _stateStorage - state storage to get GIST proof / publish state
29
+ */
30
+ constructor(_identityWallet, _credentialWallet, _circuitStorage, _stateStorage) {
31
+ this._identityWallet = _identityWallet;
32
+ this._credentialWallet = _credentialWallet;
33
+ this._circuitStorage = _circuitStorage;
34
+ this._stateStorage = _stateStorage;
35
+ this._prover = new NativeProver(_circuitStorage);
36
+ }
37
+ /** {@inheritdoc IProofService.verifyProof} */
38
+ async verifyProof(zkp, circuitId) {
39
+ return this._prover.verify(zkp, circuitId);
40
+ }
41
+ /** {@inheritdoc IProofService.generateProof} */
42
+ async generateProof(proofReq, identifier, credential, opts) {
43
+ if (!opts) {
44
+ opts = {
45
+ authProfileNonce: 0,
46
+ credentialSubjectProfileNonce: 0,
47
+ skipRevocation: false
48
+ };
49
+ }
50
+ const preparedCredential = await this.getPreparedCredential(credential);
51
+ const inputs = await this.generateInputs(preparedCredential, identifier, proofReq, opts);
52
+ const proof = await this._prover.generate(inputs, proofReq.circuitId);
53
+ return { proof, credential: preparedCredential.credential };
54
+ }
55
+ /** {@inheritdoc IProofService.transitState} */
56
+ async transitState(did, oldTreeState, isOldStateGenesis, stateStorage, ethSigner) {
57
+ const authInfo = await this.prepareAuthBJJCredential(did, oldTreeState);
58
+ const newTreeModel = await this._identityWallet.getDIDTreeModel(did);
59
+ const newTreeState = {
60
+ revocationRoot: newTreeModel.revocationTree.root,
61
+ claimsRoot: newTreeModel.claimsTree.root,
62
+ state: newTreeModel.state,
63
+ rootOfRoots: newTreeModel.rootsTree.root
64
+ };
65
+ const challenge = Poseidon.hash([oldTreeState.state.bigInt(), newTreeState.state.bigInt()]);
66
+ const signature = await this._identityWallet.signChallenge(challenge, authInfo.authCredential);
67
+ const circuitInputs = new StateTransitionInputs();
68
+ circuitInputs.id = did.id;
69
+ circuitInputs.signature = signature;
70
+ circuitInputs.isOldStateGenesis = isOldStateGenesis;
71
+ const authClaimIncProofNewState = await this._identityWallet.generateCredentialMtp(did, authInfo.authCredential, newTreeState);
72
+ circuitInputs.newTreeState = authClaimIncProofNewState.treeState;
73
+ circuitInputs.authClaimNewStateIncProof = authClaimIncProofNewState.proof;
74
+ circuitInputs.oldTreeState = oldTreeState;
75
+ circuitInputs.authClaim = {
76
+ claim: authInfo.authCoreClaim,
77
+ incProof: authInfo.incProof,
78
+ nonRevProof: authInfo.nonRevProof
79
+ };
80
+ const inputs = circuitInputs.inputsMarshal();
81
+ const proof = await this._prover.generate(inputs, CircuitId.StateTransition);
82
+ const txId = await stateStorage.publishState(proof, ethSigner);
83
+ return txId;
84
+ }
85
+ async getPreparedCredential(credential) {
86
+ const { cred: nonRevokedCred, revStatus } = await this._credentialWallet.findNonRevokedCredential([credential]);
87
+ const credCoreClaim = await this._identityWallet.getCoreClaimFromCredential(nonRevokedCred);
88
+ return { credential: nonRevokedCred, revStatus, credentialCoreClaim: credCoreClaim };
89
+ }
90
+ async prepareAuthBJJCredential(did, treeStateInfo) {
91
+ const authCredential = await this._credentialWallet.getAuthBJJCredential(did);
92
+ const incProof = await this._identityWallet.generateCredentialMtp(did, authCredential, treeStateInfo);
93
+ const nonRevProof = await this._identityWallet.generateNonRevocationMtp(did, authCredential, treeStateInfo);
94
+ const authCoreClaim = authCredential.getCoreClaimFromProof(ProofType.Iden3SparseMerkleTreeProof);
95
+ if (!authCoreClaim) {
96
+ throw new Error('auth core claim is not defined for auth bjj credential');
97
+ }
98
+ return { authCredential, incProof, nonRevProof, authCoreClaim };
99
+ }
100
+ async generateInputs(preparedCredential, identifier, proofReq, opts) {
101
+ let inputs;
102
+ if (proofReq.circuitId === CircuitId.AtomicQueryMTPV2) {
103
+ const circuitClaimData = await this.newCircuitClaimData(preparedCredential.credential, preparedCredential.credentialCoreClaim);
104
+ circuitClaimData.nonRevProof = {
105
+ treeState: {
106
+ state: strMTHex(preparedCredential.revStatus.issuer.state),
107
+ claimsRoot: strMTHex(preparedCredential.revStatus.issuer.claimsTreeRoot),
108
+ revocationRoot: strMTHex(preparedCredential.revStatus.issuer.revocationTreeRoot),
109
+ rootOfRoots: strMTHex(preparedCredential.revStatus.issuer.rootOfRoots)
110
+ },
111
+ proof: preparedCredential.revStatus.mtp
112
+ };
113
+ const circuitInputs = new AtomicQueryMTPV2Inputs();
114
+ circuitInputs.id = identifier.id;
115
+ circuitInputs.requestID = BigInt(proofReq.id);
116
+ circuitInputs.query = await this.toCircuitsQuery(proofReq.query, preparedCredential.credential, preparedCredential.credentialCoreClaim);
117
+ circuitInputs.claim = {
118
+ issuerID: circuitClaimData.issuerId,
119
+ claim: circuitClaimData.claim,
120
+ incProof: { proof: circuitClaimData.proof, treeState: circuitClaimData.treeState },
121
+ nonRevProof: circuitClaimData.nonRevProof
122
+ };
123
+ circuitInputs.currentTimeStamp = getUnixTimestamp(new Date());
124
+ circuitInputs.claimSubjectProfileNonce = BigInt(opts.credentialSubjectProfileNonce);
125
+ circuitInputs.profileNonce = BigInt(opts.authProfileNonce);
126
+ circuitInputs.skipClaimRevocationCheck = opts.skipRevocation;
127
+ inputs = circuitInputs.inputsMarshal();
128
+ }
129
+ else if (proofReq.circuitId === CircuitId.AtomicQuerySigV2) {
130
+ const circuitClaimData = await this.newCircuitClaimData(preparedCredential.credential, preparedCredential.credentialCoreClaim);
131
+ const issuerAuthClaimNonRevProof = toClaimNonRevStatus(preparedCredential.revStatus);
132
+ circuitClaimData.signatureProof.issuerAuthNonRevProof = issuerAuthClaimNonRevProof;
133
+ const circuitInputs = new AtomicQuerySigV2Inputs();
134
+ circuitInputs.id = identifier.id;
135
+ circuitInputs.claim = {
136
+ issuerID: circuitClaimData.issuerId,
137
+ signatureProof: circuitClaimData.signatureProof,
138
+ claim: circuitClaimData.claim,
139
+ nonRevProof: issuerAuthClaimNonRevProof
140
+ };
141
+ circuitInputs.requestID = BigInt(proofReq.id);
142
+ circuitInputs.claimSubjectProfileNonce = BigInt(opts.credentialSubjectProfileNonce);
143
+ circuitInputs.profileNonce = BigInt(opts.authProfileNonce);
144
+ circuitInputs.skipClaimRevocationCheck = opts.skipRevocation;
145
+ circuitInputs.query = await this.toCircuitsQuery(proofReq.query, preparedCredential.credential, preparedCredential.credentialCoreClaim);
146
+ circuitInputs.currentTimeStamp = getUnixTimestamp(new Date());
147
+ inputs = circuitInputs.inputsMarshal();
148
+ }
149
+ else {
150
+ throw new Error(`circuit with id ${proofReq.circuitId} is not supported by issuer`);
151
+ }
152
+ return inputs;
153
+ }
154
+ // NewCircuitClaimData generates circuits claim structure
155
+ async newCircuitClaimData(credential, coreClaim) {
156
+ const smtProof = credential.getIden3SparseMerkleTreeProof();
157
+ const circuitClaim = new CircuitClaim();
158
+ circuitClaim.claim = coreClaim;
159
+ circuitClaim.issuerId = DID.parse(credential.issuer).id;
160
+ if (smtProof) {
161
+ circuitClaim.proof = smtProof.mtp;
162
+ circuitClaim.treeState = {
163
+ state: strMTHex(smtProof.issuerData.state?.value),
164
+ claimsRoot: strMTHex(smtProof.issuerData.state?.claimsTreeRoot),
165
+ revocationRoot: strMTHex(smtProof.issuerData.state?.revocationTreeRoot),
166
+ rootOfRoots: strMTHex(smtProof.issuerData.state?.rootOfRoots)
167
+ };
168
+ }
169
+ const sigProof = credential.getBJJSignature2021Proof();
170
+ if (sigProof) {
171
+ const signature = await bJJSignatureFromHexString(sigProof.signature);
172
+ const rs = await this._credentialWallet.getRevocationStatus(sigProof.issuerData.credentialStatus, DID.parse(sigProof.issuerData.id), sigProof.issuerData);
173
+ //todo: check if this is correct
174
+ const issuerAuthNonRevProof = {
175
+ treeState: {
176
+ state: strMTHex(rs.issuer.state),
177
+ claimsRoot: strMTHex(rs.issuer.claimsTreeRoot),
178
+ revocationRoot: strMTHex(rs.issuer.revocationTreeRoot),
179
+ rootOfRoots: strMTHex(rs.issuer.rootOfRoots)
180
+ },
181
+ proof: rs.mtp
182
+ };
183
+ if (!sigProof.issuerData.mtp) {
184
+ throw new Error('issuer auth credential must have a mtp proof');
185
+ }
186
+ if (!sigProof.issuerData.authCoreClaim) {
187
+ throw new Error('issuer auth credential must have a core claim proof');
188
+ }
189
+ circuitClaim.signatureProof = {
190
+ signature,
191
+ issuerAuthIncProof: {
192
+ proof: sigProof.issuerData.mtp,
193
+ treeState: {
194
+ state: strMTHex(sigProof.issuerData.state?.value),
195
+ claimsRoot: strMTHex(sigProof.issuerData.state?.claimsTreeRoot),
196
+ revocationRoot: strMTHex(sigProof.issuerData.state?.revocationTreeRoot),
197
+ rootOfRoots: strMTHex(sigProof.issuerData.state?.rootOfRoots)
198
+ }
199
+ },
200
+ issuerAuthClaim: new Claim().fromHex(sigProof.issuerData.authCoreClaim),
201
+ issuerAuthNonRevProof
202
+ };
203
+ }
204
+ return circuitClaim;
205
+ }
206
+ async toCircuitsQuery(query, credential, coreClaim) {
207
+ const mtPosition = coreClaim.getMerklizedPosition();
208
+ if (mtPosition === MerklizedRootPosition.None) {
209
+ return this.prepareNonMerklizedQuery(query, credential);
210
+ }
211
+ return this.prepareMerklizedQuery(query, credential, mtPosition);
212
+ }
213
+ async prepareMerklizedQuery(query, credential, merklizedPosition) {
214
+ const parsedQuery = await this.parseRequest(query.credentialSubject);
215
+ const loader = new UniversalSchemaLoader('ipfs.io');
216
+ const schema = await loader.load(credential['@context'][2]);
217
+ const path = await Path.getContextPathKey(new TextDecoder().decode(schema), credential.type[1], parsedQuery.fieldName);
218
+ path.prepend(['https://www.w3.org/2018/credentials#credentialSubject']);
219
+ const mk = await credential.merklize();
220
+ const { proof, value: mtValue } = await mk.proof(path);
221
+ const pathKey = await path.mtEntry();
222
+ parsedQuery.query.valueProof = new ValueProof();
223
+ parsedQuery.query.valueProof.mtp = proof;
224
+ parsedQuery.query.valueProof.path = pathKey;
225
+ parsedQuery.query.valueProof.mtp = proof;
226
+ parsedQuery.query.valueProof.value = BigInt(mtValue.value.toString());
227
+ if (merklizedPosition == MerklizedRootPosition.Index) {
228
+ parsedQuery.query.slotIndex = 2; // value data slot a
229
+ }
230
+ else {
231
+ parsedQuery.query.slotIndex = 5; // value data slot b
232
+ }
233
+ return parsedQuery.query;
234
+ }
235
+ async prepareNonMerklizedQuery(query, credential) {
236
+ const loader = new UniversalSchemaLoader('ipfs.io');
237
+ const schema = await loader.load(credential.credentialSchema.id);
238
+ if (query.credentialSubject && Object.keys(query.credentialSubject).length > 1) {
239
+ throw new Error('multiple requests are not supported');
240
+ }
241
+ const parsedQuery = await this.parseRequest(query.credentialSubject);
242
+ parsedQuery.query.slotIndex = new Parser().getFieldSlotIndex(parsedQuery.fieldName, schema);
243
+ return parsedQuery.query;
244
+ }
245
+ async parseRequest(req) {
246
+ if (!req) {
247
+ const query = new Query();
248
+ query.operator = QueryOperators.$noop;
249
+ return { query, fieldName: '' };
250
+ }
251
+ let fieldName = '';
252
+ let fieldReq = new Map();
253
+ if (Object.keys(req).length > 1) {
254
+ throw new Error(`multiple requests not supported`);
255
+ }
256
+ for (const [key, value] of Object.entries(req)) {
257
+ fieldName = key;
258
+ fieldReq = value;
259
+ if (Object.keys(fieldReq).length > 1) {
260
+ throw new Error(`multiple predicates for one field not supported`);
261
+ }
262
+ break;
263
+ }
264
+ let operator = 0;
265
+ const values = new Array(64).fill(BigInt(0));
266
+ for (const [key, value] of Object.entries(fieldReq)) {
267
+ if (!QueryOperators[key]) {
268
+ throw new Error(`operator is not supported by lib`);
269
+ }
270
+ operator = QueryOperators[key];
271
+ if (Array.isArray(value)) {
272
+ for (let index = 0; index < value.length; index++) {
273
+ values[index] = BigInt(value[index]);
274
+ }
275
+ }
276
+ else {
277
+ values[0] = BigInt(value);
278
+ }
279
+ break;
280
+ }
281
+ const query = new Query();
282
+ query.operator = operator;
283
+ query.values = values;
284
+ return { query, fieldName };
285
+ }
286
+ /** {@inheritdoc IProofService.generateAuthV2Inputs} */
287
+ async generateAuthV2Inputs(hash, did, profileNonce, circuitId) {
288
+ if (circuitId !== CircuitId.AuthV2) {
289
+ throw new Error('CircuitId is not supported');
290
+ }
291
+ // todo: check if bigint is correct
292
+ const challenge = BytesHelper.bytesToInt(hash.reverse());
293
+ const authPrepared = await this.prepareAuthBJJCredential(did);
294
+ const authClaimData = await this.newCircuitClaimData(authPrepared.authCredential, authPrepared.authCoreClaim);
295
+ const signature = await this._identityWallet.signChallenge(challenge, authPrepared.authCredential);
296
+ const id = did.id;
297
+ const stateProof = await this._stateStorage.getGISTProof(id.bigInt());
298
+ const gistProof = toGISTProof(stateProof);
299
+ const authInputs = new AuthV2Inputs();
300
+ authInputs.genesisID = id;
301
+ authInputs.profileNonce = BigInt(profileNonce);
302
+ authInputs.authClaim = authClaimData.claim;
303
+ authInputs.authClaimIncMtp = authClaimData.proof;
304
+ authInputs.authClaimNonRevMtp = authPrepared.nonRevProof.proof;
305
+ authInputs.treeState = authClaimData.treeState;
306
+ authInputs.signature = signature;
307
+ authInputs.challenge = challenge;
308
+ authInputs.gistProof = gistProof;
309
+ return authInputs.inputsMarshal();
310
+ }
311
+ async verifyState(circuitId, pubSignals) {
312
+ if (circuitId !== CircuitId.AuthV2) {
313
+ throw new Error(`CircuitId is not supported ${circuitId}`);
314
+ }
315
+ const gistRoot = newHashFromString(pubSignals[2]).bigInt();
316
+ const globalStateInfo = await this._stateStorage.getGISTRootInfo(gistRoot);
317
+ if (globalStateInfo.createdAtTimestamp === 0n) {
318
+ throw new Error(`gist state doesn't exists in contract`);
319
+ }
320
+ if (globalStateInfo.root !== gistRoot) {
321
+ throw new Error(`gist info contains invalid state`);
322
+ }
323
+ if (globalStateInfo.replacedByRoot !== 0n) {
324
+ if (globalStateInfo.replacedAtTimestamp === 0n) {
325
+ throw new Error(`state was replaced, but replaced time unknown`);
326
+ }
327
+ return false;
328
+ }
329
+ return true;
330
+ }
331
+ }
332
+ // BJJSignatureFromHexString converts hex to babyjub.Signature
333
+ export const bJJSignatureFromHexString = async (sigHex) => {
334
+ const signatureBytes = Hex.decodeString(sigHex);
335
+ const compressedSig = Uint8Array.from(signatureBytes).slice(0, 64);
336
+ const bjjSig = Signature.newFromCompressed(compressedSig);
337
+ return bjjSig;
338
+ };
339
+ //# sourceMappingURL=proof-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proof-service.js","sourceRoot":"","sources":["../../../src/proof/proof-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import * as snarkjs from 'snarkjs';
2
+ import { witnessBuilder } from './witness_calculator';
3
+ import { getCurveFromName } from 'ffjavascript';
4
+ /* eslint-disable no-console */
5
+ // NativeProver service responsible for zk generation groth16 algorithm with bn128 curve
6
+ export class NativeProver {
7
+ constructor(_circuitStorage) {
8
+ this._circuitStorage = _circuitStorage;
9
+ }
10
+ async verify(zkp, circuitName) {
11
+ try {
12
+ const verKey = (await this._circuitStorage.loadCircuitData(circuitName))
13
+ .verificationKey;
14
+ await snarkjs.groth16.verify(JSON.parse(new TextDecoder().decode(verKey)), zkp.pub_signals, zkp.proof);
15
+ // we need to terminate curve manually
16
+ await this.terminateCurve();
17
+ return true;
18
+ }
19
+ catch (e) {
20
+ console.log(e);
21
+ return false;
22
+ }
23
+ }
24
+ // Generate calls prover-server for proof generation
25
+ async generate(inputs, circuitId) {
26
+ try {
27
+ const circuitData = await this._circuitStorage.loadCircuitData(circuitId);
28
+ const wasm = circuitData.wasm;
29
+ const witnessCalculator = await witnessBuilder(wasm);
30
+ const parsedData = JSON.parse(new TextDecoder().decode(inputs));
31
+ const wtnsBytes = await witnessCalculator.calculateWTNSBin(parsedData, 0);
32
+ const provingKey = circuitData.provingKey;
33
+ const { proof, publicSignals } = await snarkjs.groth16.prove(provingKey, wtnsBytes);
34
+ // we need to terminate curve manually
35
+ await this.terminateCurve();
36
+ return {
37
+ proof: proof,
38
+ pub_signals: publicSignals
39
+ };
40
+ }
41
+ catch (e) {
42
+ console.log(e);
43
+ throw e;
44
+ }
45
+ }
46
+ async terminateCurve() {
47
+ const curve = await getCurveFromName(NativeProver.curveName);
48
+ curve.terminate();
49
+ }
50
+ }
51
+ NativeProver.curveName = 'bn128';
52
+ //# sourceMappingURL=prover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prover.js","sourceRoot":"","sources":["../../../src/proof/prover.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAGnC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,+BAA+B;AAE/B,wFAAwF;AACxF,MAAM,OAAO,YAAY;IAEvB,YAA6B,eAAgC;QAAhC,oBAAe,GAAf,eAAe,CAAiB;IAAG,CAAC;IAEjE,KAAK,CAAC,MAAM,CAAC,GAAY,EAAE,WAAsB;QAC/C,IAAI;YACF,MAAM,MAAM,GAAe,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;iBACjF,eAAe,CAAC;YAEnB,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAC5C,GAAG,CAAC,WAAW,EACf,GAAG,CAAC,KAAK,CACV,CAAC;YAEF,sCAAsC;YACtC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC;SACb;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IAED,oDAAoD;IACpD,KAAK,CAAC,QAAQ,CAAC,MAAkB,EAAE,SAAoB;QACrD,IAAI;YACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAC1E,MAAM,IAAI,GAAe,WAAW,CAAC,IAAI,CAAC;YAE1C,MAAM,iBAAiB,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;YAErD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAEhE,MAAM,SAAS,GAAe,MAAM,iBAAiB,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YAEtF,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC;YAE1C,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAEpF,sCAAsC;YACtC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,WAAW,EAAE,aAAa;aAC3B,CAAC;SACH;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,MAAM,CAAC,CAAC;SACT;IACH,CAAC;IAEO,KAAK,CAAC,cAAc;QAC1B,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC7D,KAAK,CAAC,SAAS,EAAE,CAAC;IACpB,CAAC;;AAvDuB,sBAAS,GAAG,OAAO,CAAC"}