@enbox/agent 0.0.1

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 (348) hide show
  1. package/dist/browser.js +2215 -0
  2. package/dist/browser.js.map +7 -0
  3. package/dist/browser.mjs +2215 -0
  4. package/dist/browser.mjs.map +7 -0
  5. package/dist/cjs/index.js +8530 -0
  6. package/dist/cjs/index.js.map +7 -0
  7. package/dist/cjs/package.json +1 -0
  8. package/dist/esm/agent-did-resolver-cache.js +87 -0
  9. package/dist/esm/agent-did-resolver-cache.js.map +1 -0
  10. package/dist/esm/bearer-identity.js +41 -0
  11. package/dist/esm/bearer-identity.js.map +1 -0
  12. package/dist/esm/connect.js +191 -0
  13. package/dist/esm/connect.js.map +1 -0
  14. package/dist/esm/crypto-api.js +346 -0
  15. package/dist/esm/crypto-api.js.map +1 -0
  16. package/dist/esm/did-api.js +278 -0
  17. package/dist/esm/did-api.js.map +1 -0
  18. package/dist/esm/dwn-api.js +336 -0
  19. package/dist/esm/dwn-api.js.map +1 -0
  20. package/dist/esm/dwn-registrar.js +120 -0
  21. package/dist/esm/dwn-registrar.js.map +1 -0
  22. package/dist/esm/hd-identity-vault.js +729 -0
  23. package/dist/esm/hd-identity-vault.js.map +1 -0
  24. package/dist/esm/identity-api.js +262 -0
  25. package/dist/esm/identity-api.js.map +1 -0
  26. package/dist/esm/index.js +23 -0
  27. package/dist/esm/index.js.map +1 -0
  28. package/dist/esm/local-key-manager.js +498 -0
  29. package/dist/esm/local-key-manager.js.map +1 -0
  30. package/dist/esm/oidc.js +507 -0
  31. package/dist/esm/oidc.js.map +1 -0
  32. package/dist/esm/permissions-api.js +322 -0
  33. package/dist/esm/permissions-api.js.map +1 -0
  34. package/dist/esm/prototyping/clients/dwn-rpc-types.js +2 -0
  35. package/dist/esm/prototyping/clients/dwn-rpc-types.js.map +1 -0
  36. package/dist/esm/prototyping/clients/dwn-server-info-cache-memory.js +74 -0
  37. package/dist/esm/prototyping/clients/dwn-server-info-cache-memory.js.map +1 -0
  38. package/dist/esm/prototyping/clients/http-dwn-rpc-client.js +105 -0
  39. package/dist/esm/prototyping/clients/http-dwn-rpc-client.js.map +1 -0
  40. package/dist/esm/prototyping/clients/json-rpc-socket.js +150 -0
  41. package/dist/esm/prototyping/clients/json-rpc-socket.js.map +1 -0
  42. package/dist/esm/prototyping/clients/json-rpc.js +58 -0
  43. package/dist/esm/prototyping/clients/json-rpc.js.map +1 -0
  44. package/dist/esm/prototyping/clients/server-info-types.js +2 -0
  45. package/dist/esm/prototyping/clients/server-info-types.js.map +1 -0
  46. package/dist/esm/prototyping/clients/web-socket-clients.js +90 -0
  47. package/dist/esm/prototyping/clients/web-socket-clients.js.map +1 -0
  48. package/dist/esm/prototyping/common/object.js +14 -0
  49. package/dist/esm/prototyping/common/object.js.map +1 -0
  50. package/dist/esm/prototyping/common/type-utils.js +2 -0
  51. package/dist/esm/prototyping/common/type-utils.js.map +1 -0
  52. package/dist/esm/prototyping/crypto/algorithms/aes-gcm.js +147 -0
  53. package/dist/esm/prototyping/crypto/algorithms/aes-gcm.js.map +1 -0
  54. package/dist/esm/prototyping/crypto/algorithms/aes-kw.js +137 -0
  55. package/dist/esm/prototyping/crypto/algorithms/aes-kw.js.map +1 -0
  56. package/dist/esm/prototyping/crypto/algorithms/ecdsa.js +307 -0
  57. package/dist/esm/prototyping/crypto/algorithms/ecdsa.js.map +1 -0
  58. package/dist/esm/prototyping/crypto/algorithms/eddsa.js +264 -0
  59. package/dist/esm/prototyping/crypto/algorithms/eddsa.js.map +1 -0
  60. package/dist/esm/prototyping/crypto/algorithms/hkdf.js +39 -0
  61. package/dist/esm/prototyping/crypto/algorithms/hkdf.js.map +1 -0
  62. package/dist/esm/prototyping/crypto/algorithms/pbkdf2.js +41 -0
  63. package/dist/esm/prototyping/crypto/algorithms/pbkdf2.js.map +1 -0
  64. package/dist/esm/prototyping/crypto/crypto-error.js +41 -0
  65. package/dist/esm/prototyping/crypto/crypto-error.js.map +1 -0
  66. package/dist/esm/prototyping/crypto/dsa.js +236 -0
  67. package/dist/esm/prototyping/crypto/dsa.js.map +1 -0
  68. package/dist/esm/prototyping/crypto/jose/jwe-compact.js +130 -0
  69. package/dist/esm/prototyping/crypto/jose/jwe-compact.js.map +1 -0
  70. package/dist/esm/prototyping/crypto/jose/jwe-flattened.js +294 -0
  71. package/dist/esm/prototyping/crypto/jose/jwe-flattened.js.map +1 -0
  72. package/dist/esm/prototyping/crypto/jose/jwe.js +308 -0
  73. package/dist/esm/prototyping/crypto/jose/jwe.js.map +1 -0
  74. package/dist/esm/prototyping/crypto/primitives/aes-gcm.js +352 -0
  75. package/dist/esm/prototyping/crypto/primitives/aes-gcm.js.map +1 -0
  76. package/dist/esm/prototyping/crypto/primitives/aes-kw.js +247 -0
  77. package/dist/esm/prototyping/crypto/primitives/aes-kw.js.map +1 -0
  78. package/dist/esm/prototyping/crypto/primitives/hkdf.js +80 -0
  79. package/dist/esm/prototyping/crypto/primitives/hkdf.js.map +1 -0
  80. package/dist/esm/prototyping/crypto/primitives/pbkdf2.js +85 -0
  81. package/dist/esm/prototyping/crypto/primitives/pbkdf2.js.map +1 -0
  82. package/dist/esm/prototyping/crypto/types/cipher.js +2 -0
  83. package/dist/esm/prototyping/crypto/types/cipher.js.map +1 -0
  84. package/dist/esm/prototyping/crypto/types/crypto-api.js +2 -0
  85. package/dist/esm/prototyping/crypto/types/crypto-api.js.map +1 -0
  86. package/dist/esm/prototyping/crypto/types/key-converter.js +2 -0
  87. package/dist/esm/prototyping/crypto/types/key-converter.js.map +1 -0
  88. package/dist/esm/prototyping/crypto/types/key-deriver.js +2 -0
  89. package/dist/esm/prototyping/crypto/types/key-deriver.js.map +1 -0
  90. package/dist/esm/prototyping/crypto/types/key-io.js +2 -0
  91. package/dist/esm/prototyping/crypto/types/key-io.js.map +1 -0
  92. package/dist/esm/prototyping/crypto/types/key-manager.js +2 -0
  93. package/dist/esm/prototyping/crypto/types/key-manager.js.map +1 -0
  94. package/dist/esm/prototyping/crypto/types/key-wrapper.js +2 -0
  95. package/dist/esm/prototyping/crypto/types/key-wrapper.js.map +1 -0
  96. package/dist/esm/prototyping/crypto/types/params-direct.js +2 -0
  97. package/dist/esm/prototyping/crypto/types/params-direct.js.map +1 -0
  98. package/dist/esm/prototyping/crypto/types/params-kms.js +2 -0
  99. package/dist/esm/prototyping/crypto/types/params-kms.js.map +1 -0
  100. package/dist/esm/prototyping/crypto/utils.js +19 -0
  101. package/dist/esm/prototyping/crypto/utils.js.map +1 -0
  102. package/dist/esm/prototyping/dids/resolver-cache-memory.js +77 -0
  103. package/dist/esm/prototyping/dids/resolver-cache-memory.js.map +1 -0
  104. package/dist/esm/prototyping/dids/utils.js +9 -0
  105. package/dist/esm/prototyping/dids/utils.js.map +1 -0
  106. package/dist/esm/rpc-client.js +123 -0
  107. package/dist/esm/rpc-client.js.map +1 -0
  108. package/dist/esm/store-data-protocols.js +38 -0
  109. package/dist/esm/store-data-protocols.js.map +1 -0
  110. package/dist/esm/store-data.js +320 -0
  111. package/dist/esm/store-data.js.map +1 -0
  112. package/dist/esm/store-did.js +136 -0
  113. package/dist/esm/store-did.js.map +1 -0
  114. package/dist/esm/store-identity.js +140 -0
  115. package/dist/esm/store-identity.js.map +1 -0
  116. package/dist/esm/store-key.js +136 -0
  117. package/dist/esm/store-key.js.map +1 -0
  118. package/dist/esm/sync-api.js +61 -0
  119. package/dist/esm/sync-api.js.map +1 -0
  120. package/dist/esm/sync-engine-level.js +618 -0
  121. package/dist/esm/sync-engine-level.js.map +1 -0
  122. package/dist/esm/test-harness.js +239 -0
  123. package/dist/esm/test-harness.js.map +1 -0
  124. package/dist/esm/types/agent.js +2 -0
  125. package/dist/esm/types/agent.js.map +1 -0
  126. package/dist/esm/types/dwn.js +31 -0
  127. package/dist/esm/types/dwn.js.map +1 -0
  128. package/dist/esm/types/identity-vault.js +2 -0
  129. package/dist/esm/types/identity-vault.js.map +1 -0
  130. package/dist/esm/types/identity.js +2 -0
  131. package/dist/esm/types/identity.js.map +1 -0
  132. package/dist/esm/types/key-manager.js +2 -0
  133. package/dist/esm/types/key-manager.js.map +1 -0
  134. package/dist/esm/types/permissions.js +2 -0
  135. package/dist/esm/types/permissions.js.map +1 -0
  136. package/dist/esm/types/sync.js +2 -0
  137. package/dist/esm/types/sync.js.map +1 -0
  138. package/dist/esm/types/vc.js +5 -0
  139. package/dist/esm/types/vc.js.map +1 -0
  140. package/dist/esm/utils-internal.js +147 -0
  141. package/dist/esm/utils-internal.js.map +1 -0
  142. package/dist/esm/utils.js +161 -0
  143. package/dist/esm/utils.js.map +1 -0
  144. package/dist/types/agent-did-resolver-cache.d.ts +30 -0
  145. package/dist/types/agent-did-resolver-cache.d.ts.map +1 -0
  146. package/dist/types/bearer-identity.d.ts +31 -0
  147. package/dist/types/bearer-identity.d.ts.map +1 -0
  148. package/dist/types/connect.d.ts +88 -0
  149. package/dist/types/connect.d.ts.map +1 -0
  150. package/dist/types/crypto-api.d.ts +286 -0
  151. package/dist/types/crypto-api.d.ts.map +1 -0
  152. package/dist/types/did-api.d.ts +119 -0
  153. package/dist/types/did-api.d.ts.map +1 -0
  154. package/dist/types/dwn-api.d.ts +66 -0
  155. package/dist/types/dwn-api.d.ts.map +1 -0
  156. package/dist/types/dwn-registrar.d.ts +29 -0
  157. package/dist/types/dwn-registrar.d.ts.map +1 -0
  158. package/dist/types/hd-identity-vault.d.ts +306 -0
  159. package/dist/types/hd-identity-vault.d.ts.map +1 -0
  160. package/dist/types/identity-api.d.ts +107 -0
  161. package/dist/types/identity-api.d.ts.map +1 -0
  162. package/dist/types/index.d.ts +30 -0
  163. package/dist/types/index.d.ts.map +1 -0
  164. package/dist/types/local-key-manager.d.ts +311 -0
  165. package/dist/types/local-key-manager.d.ts.map +1 -0
  166. package/dist/types/oidc.d.ts +247 -0
  167. package/dist/types/oidc.d.ts.map +1 -0
  168. package/dist/types/permissions-api.d.ts +35 -0
  169. package/dist/types/permissions-api.d.ts.map +1 -0
  170. package/dist/types/prototyping/clients/dwn-rpc-types.d.ts +45 -0
  171. package/dist/types/prototyping/clients/dwn-rpc-types.d.ts.map +1 -0
  172. package/dist/types/prototyping/clients/dwn-server-info-cache-memory.d.ts +57 -0
  173. package/dist/types/prototyping/clients/dwn-server-info-cache-memory.d.ts.map +1 -0
  174. package/dist/types/prototyping/clients/http-dwn-rpc-client.d.ts +13 -0
  175. package/dist/types/prototyping/clients/http-dwn-rpc-client.d.ts.map +1 -0
  176. package/dist/types/prototyping/clients/json-rpc-socket.d.ts +43 -0
  177. package/dist/types/prototyping/clients/json-rpc-socket.d.ts.map +1 -0
  178. package/dist/types/prototyping/clients/json-rpc.d.ts +49 -0
  179. package/dist/types/prototyping/clients/json-rpc.d.ts.map +1 -0
  180. package/dist/types/prototyping/clients/server-info-types.d.ts +20 -0
  181. package/dist/types/prototyping/clients/server-info-types.d.ts.map +1 -0
  182. package/dist/types/prototyping/clients/web-socket-clients.d.ts +10 -0
  183. package/dist/types/prototyping/clients/web-socket-clients.d.ts.map +1 -0
  184. package/dist/types/prototyping/common/object.d.ts +2 -0
  185. package/dist/types/prototyping/common/object.d.ts.map +1 -0
  186. package/dist/types/prototyping/common/type-utils.d.ts +7 -0
  187. package/dist/types/prototyping/common/type-utils.d.ts.map +1 -0
  188. package/dist/types/prototyping/crypto/algorithms/aes-gcm.d.ts +151 -0
  189. package/dist/types/prototyping/crypto/algorithms/aes-gcm.d.ts.map +1 -0
  190. package/dist/types/prototyping/crypto/algorithms/aes-kw.d.ts +109 -0
  191. package/dist/types/prototyping/crypto/algorithms/aes-kw.d.ts.map +1 -0
  192. package/dist/types/prototyping/crypto/algorithms/ecdsa.d.ts +160 -0
  193. package/dist/types/prototyping/crypto/algorithms/ecdsa.d.ts.map +1 -0
  194. package/dist/types/prototyping/crypto/algorithms/eddsa.d.ts +157 -0
  195. package/dist/types/prototyping/crypto/algorithms/eddsa.d.ts.map +1 -0
  196. package/dist/types/prototyping/crypto/algorithms/hkdf.d.ts +21 -0
  197. package/dist/types/prototyping/crypto/algorithms/hkdf.d.ts.map +1 -0
  198. package/dist/types/prototyping/crypto/algorithms/pbkdf2.d.ts +21 -0
  199. package/dist/types/prototyping/crypto/algorithms/pbkdf2.d.ts.map +1 -0
  200. package/dist/types/prototyping/crypto/crypto-error.d.ts +29 -0
  201. package/dist/types/prototyping/crypto/crypto-error.d.ts.map +1 -0
  202. package/dist/types/prototyping/crypto/dsa.d.ts +169 -0
  203. package/dist/types/prototyping/crypto/dsa.d.ts.map +1 -0
  204. package/dist/types/prototyping/crypto/jose/jwe-compact.d.ts +135 -0
  205. package/dist/types/prototyping/crypto/jose/jwe-compact.d.ts.map +1 -0
  206. package/dist/types/prototyping/crypto/jose/jwe-flattened.d.ts +134 -0
  207. package/dist/types/prototyping/crypto/jose/jwe-flattened.d.ts.map +1 -0
  208. package/dist/types/prototyping/crypto/jose/jwe.d.ts +378 -0
  209. package/dist/types/prototyping/crypto/jose/jwe.d.ts.map +1 -0
  210. package/dist/types/prototyping/crypto/primitives/aes-gcm.d.ts +245 -0
  211. package/dist/types/prototyping/crypto/primitives/aes-gcm.d.ts.map +1 -0
  212. package/dist/types/prototyping/crypto/primitives/aes-kw.d.ts +103 -0
  213. package/dist/types/prototyping/crypto/primitives/aes-kw.d.ts.map +1 -0
  214. package/dist/types/prototyping/crypto/primitives/hkdf.d.ts +90 -0
  215. package/dist/types/prototyping/crypto/primitives/hkdf.d.ts.map +1 -0
  216. package/dist/types/prototyping/crypto/primitives/pbkdf2.d.ts +84 -0
  217. package/dist/types/prototyping/crypto/primitives/pbkdf2.d.ts.map +1 -0
  218. package/dist/types/prototyping/crypto/types/cipher.d.ts +14 -0
  219. package/dist/types/prototyping/crypto/types/cipher.d.ts.map +1 -0
  220. package/dist/types/prototyping/crypto/types/crypto-api.d.ts +35 -0
  221. package/dist/types/prototyping/crypto/types/crypto-api.d.ts.map +1 -0
  222. package/dist/types/prototyping/crypto/types/key-converter.d.ts +49 -0
  223. package/dist/types/prototyping/crypto/types/key-converter.d.ts.map +1 -0
  224. package/dist/types/prototyping/crypto/types/key-deriver.d.ts +50 -0
  225. package/dist/types/prototyping/crypto/types/key-deriver.d.ts.map +1 -0
  226. package/dist/types/prototyping/crypto/types/key-io.d.ts +49 -0
  227. package/dist/types/prototyping/crypto/types/key-io.d.ts.map +1 -0
  228. package/dist/types/prototyping/crypto/types/key-manager.d.ts +69 -0
  229. package/dist/types/prototyping/crypto/types/key-manager.d.ts.map +1 -0
  230. package/dist/types/prototyping/crypto/types/key-wrapper.d.ts +14 -0
  231. package/dist/types/prototyping/crypto/types/key-wrapper.d.ts.map +1 -0
  232. package/dist/types/prototyping/crypto/types/params-direct.d.ts +75 -0
  233. package/dist/types/prototyping/crypto/types/params-direct.d.ts.map +1 -0
  234. package/dist/types/prototyping/crypto/types/params-kms.d.ts +63 -0
  235. package/dist/types/prototyping/crypto/types/params-kms.d.ts.map +1 -0
  236. package/dist/types/prototyping/crypto/utils.d.ts +7 -0
  237. package/dist/types/prototyping/crypto/utils.d.ts.map +1 -0
  238. package/dist/types/prototyping/dids/resolver-cache-memory.d.ts +57 -0
  239. package/dist/types/prototyping/dids/resolver-cache-memory.d.ts.map +1 -0
  240. package/dist/types/prototyping/dids/utils.d.ts +3 -0
  241. package/dist/types/prototyping/dids/utils.d.ts.map +1 -0
  242. package/dist/types/rpc-client.d.ts +51 -0
  243. package/dist/types/rpc-client.d.ts.map +1 -0
  244. package/dist/types/store-data-protocols.d.ts +4 -0
  245. package/dist/types/store-data-protocols.d.ts.map +1 -0
  246. package/dist/types/store-data.d.ts +95 -0
  247. package/dist/types/store-data.d.ts.map +1 -0
  248. package/dist/types/store-did.d.ts +33 -0
  249. package/dist/types/store-did.d.ts.map +1 -0
  250. package/dist/types/store-identity.d.ts +34 -0
  251. package/dist/types/store-identity.d.ts.map +1 -0
  252. package/dist/types/store-key.d.ts +32 -0
  253. package/dist/types/store-key.d.ts.map +1 -0
  254. package/dist/types/sync-api.d.ts +41 -0
  255. package/dist/types/sync-api.d.ts.map +1 -0
  256. package/dist/types/sync-engine-level.d.ts +85 -0
  257. package/dist/types/sync-engine-level.d.ts.map +1 -0
  258. package/dist/types/test-harness.d.ts +69 -0
  259. package/dist/types/test-harness.d.ts.map +1 -0
  260. package/dist/types/types/agent.d.ts +172 -0
  261. package/dist/types/types/agent.d.ts.map +1 -0
  262. package/dist/types/types/dwn.d.ts +178 -0
  263. package/dist/types/types/dwn.d.ts.map +1 -0
  264. package/dist/types/types/identity-vault.d.ts +129 -0
  265. package/dist/types/types/identity-vault.d.ts.map +1 -0
  266. package/dist/types/types/identity.d.ts +16 -0
  267. package/dist/types/types/identity.d.ts.map +1 -0
  268. package/dist/types/types/key-manager.d.ts +9 -0
  269. package/dist/types/types/key-manager.d.ts.map +1 -0
  270. package/dist/types/types/permissions.d.ts +98 -0
  271. package/dist/types/types/permissions.d.ts.map +1 -0
  272. package/dist/types/types/sync.d.ts +66 -0
  273. package/dist/types/types/sync.d.ts.map +1 -0
  274. package/dist/types/types/vc.d.ts +7 -0
  275. package/dist/types/types/vc.d.ts.map +1 -0
  276. package/dist/types/utils-internal.d.ts +50 -0
  277. package/dist/types/utils-internal.d.ts.map +1 -0
  278. package/dist/types/utils.d.ts +37 -0
  279. package/dist/types/utils.d.ts.map +1 -0
  280. package/package.json +112 -0
  281. package/src/agent-did-resolver-cache.ts +95 -0
  282. package/src/bearer-identity.ts +42 -0
  283. package/src/connect.ts +296 -0
  284. package/src/crypto-api.ts +593 -0
  285. package/src/did-api.ts +429 -0
  286. package/src/dwn-api.ts +462 -0
  287. package/src/dwn-registrar.ts +127 -0
  288. package/src/hd-identity-vault.ts +853 -0
  289. package/src/identity-api.ts +324 -0
  290. package/src/index.ts +30 -0
  291. package/src/local-key-manager.ts +672 -0
  292. package/src/oidc.ts +857 -0
  293. package/src/permissions-api.ts +408 -0
  294. package/src/prototyping/clients/dwn-rpc-types.ts +55 -0
  295. package/src/prototyping/clients/dwn-server-info-cache-memory.ts +79 -0
  296. package/src/prototyping/clients/http-dwn-rpc-client.ts +110 -0
  297. package/src/prototyping/clients/json-rpc-socket.ts +169 -0
  298. package/src/prototyping/clients/json-rpc.ts +113 -0
  299. package/src/prototyping/clients/server-info-types.ts +21 -0
  300. package/src/prototyping/clients/web-socket-clients.ts +100 -0
  301. package/src/prototyping/common/object.ts +15 -0
  302. package/src/prototyping/common/type-utils.ts +6 -0
  303. package/src/prototyping/crypto/algorithms/aes-gcm.ts +211 -0
  304. package/src/prototyping/crypto/algorithms/aes-kw.ts +164 -0
  305. package/src/prototyping/crypto/algorithms/ecdsa.ts +365 -0
  306. package/src/prototyping/crypto/algorithms/eddsa.ts +310 -0
  307. package/src/prototyping/crypto/algorithms/hkdf.ts +40 -0
  308. package/src/prototyping/crypto/algorithms/pbkdf2.ts +44 -0
  309. package/src/prototyping/crypto/crypto-error.ts +45 -0
  310. package/src/prototyping/crypto/dsa.ts +367 -0
  311. package/src/prototyping/crypto/jose/jwe-compact.ts +225 -0
  312. package/src/prototyping/crypto/jose/jwe-flattened.ts +459 -0
  313. package/src/prototyping/crypto/jose/jwe.ts +653 -0
  314. package/src/prototyping/crypto/primitives/aes-gcm.ts +374 -0
  315. package/src/prototyping/crypto/primitives/aes-kw.ts +271 -0
  316. package/src/prototyping/crypto/primitives/hkdf.ts +121 -0
  317. package/src/prototyping/crypto/primitives/pbkdf2.ts +116 -0
  318. package/src/prototyping/crypto/types/cipher.ts +17 -0
  319. package/src/prototyping/crypto/types/crypto-api.ts +78 -0
  320. package/src/prototyping/crypto/types/key-converter.ts +53 -0
  321. package/src/prototyping/crypto/types/key-deriver.ts +56 -0
  322. package/src/prototyping/crypto/types/key-io.ts +51 -0
  323. package/src/prototyping/crypto/types/key-manager.ts +83 -0
  324. package/src/prototyping/crypto/types/key-wrapper.ts +17 -0
  325. package/src/prototyping/crypto/types/params-direct.ts +95 -0
  326. package/src/prototyping/crypto/types/params-kms.ts +76 -0
  327. package/src/prototyping/crypto/utils.ts +41 -0
  328. package/src/prototyping/dids/resolver-cache-memory.ts +83 -0
  329. package/src/prototyping/dids/utils.ts +10 -0
  330. package/src/rpc-client.ts +162 -0
  331. package/src/store-data-protocols.ts +40 -0
  332. package/src/store-data.ts +400 -0
  333. package/src/store-did.ts +105 -0
  334. package/src/store-identity.ts +109 -0
  335. package/src/store-key.ts +104 -0
  336. package/src/sync-api.ts +71 -0
  337. package/src/sync-engine-level.ts +714 -0
  338. package/src/test-harness.ts +330 -0
  339. package/src/types/agent.ts +195 -0
  340. package/src/types/dwn.ts +278 -0
  341. package/src/types/identity-vault.ts +137 -0
  342. package/src/types/identity.ts +18 -0
  343. package/src/types/key-manager.ts +15 -0
  344. package/src/types/permissions.ts +115 -0
  345. package/src/types/sync.ts +58 -0
  346. package/src/types/vc.ts +7 -0
  347. package/src/utils-internal.ts +157 -0
  348. package/src/utils.ts +181 -0
@@ -0,0 +1,160 @@
1
+ import type { Jwk, Signer, SignParams, KeyConverter, VerifyParams, GenerateKeyParams, GetPublicKeyParams, AsymmetricKeyConverter, AsymmetricKeyGenerator, ComputePublicKeyParams } from '@enbox/crypto';
2
+ import { CryptoAlgorithm } from '@enbox/crypto';
3
+ import { BytesToPrivateKeyParams, BytesToPublicKeyParams, PrivateKeyToBytesParams, PublicKeyToBytesParams } from '../types/params-direct.js';
4
+ /**
5
+ * The `EcdsaGenerateKeyParams` interface defines the algorithm-specific parameters that should be
6
+ * passed into the `generateKey()` method when using the ECDSA algorithm.
7
+ */
8
+ export interface EcdsaGenerateKeyParams extends GenerateKeyParams {
9
+ /**
10
+ * A string defining the type of key to generate. The value must be one of the following:
11
+ * - `"ES256"`: ECDSA using the secp256r1 (P-256) curve and SHA-256.
12
+ * - `"ES256K"`: ECDSA using the secp256k1 curve and SHA-256.
13
+ * - `"secp256k1"`: ECDSA using the secp256k1 curve and SHA-256.
14
+ * - `"secp256r1"`: ECDSA using the secp256r1 (P-256) curve and SHA-256.
15
+ */
16
+ algorithm: 'ES256' | 'ES256K' | 'secp256k1' | 'secp256r1';
17
+ }
18
+ /**
19
+ * The `EcdsaAlgorithm` class provides a concrete implementation for cryptographic operations using
20
+ * the Elliptic Curve Digital Signature Algorithm (ECDSA). This class implements both
21
+ * {@link Signer | `Signer`} and { @link AsymmetricKeyGenerator | `AsymmetricKeyGenerator`}
22
+ * interfaces, providing private key generation, public key derivation, and creation/verification
23
+ * of signatures.
24
+ *
25
+ * This class is typically accessed through implementations that extend the
26
+ * {@link CryptoApi | `CryptoApi`} interface.
27
+ */
28
+ export declare class EcdsaAlgorithm extends CryptoAlgorithm implements AsymmetricKeyGenerator<EcdsaGenerateKeyParams, Jwk, GetPublicKeyParams>, KeyConverter, AsymmetricKeyConverter, Signer<SignParams, VerifyParams> {
29
+ bytesToPrivateKey({ algorithm, privateKeyBytes }: BytesToPrivateKeyParams & {
30
+ algorithm: 'ES256' | 'ES256K' | 'secp256k1' | 'secp256r1';
31
+ }): Promise<Jwk>;
32
+ bytesToPublicKey({ algorithm, publicKeyBytes }: BytesToPublicKeyParams & {
33
+ algorithm: 'ES256' | 'ES256K' | 'secp256k1' | 'secp256r1';
34
+ }): Promise<Jwk>;
35
+ /**
36
+ * Derives the public key in JWK format from a given private key.
37
+ *
38
+ * @remarks
39
+ * This method takes a private key in JWK format and derives its corresponding public key,
40
+ * also in JWK format. The process ensures that the derived public key correctly corresponds to
41
+ * the given private key.
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * const ecdsa = new EcdsaAlgorithm();
46
+ * const privateKey = { ... }; // A Jwk object representing a private key
47
+ * const publicKey = await ecdsa.computePublicKey({ key: privateKey });
48
+ * ```
49
+ *
50
+ * @param params - The parameters for the public key derivation.
51
+ * @param params.key - The private key in JWK format from which to derive the public key.
52
+ *
53
+ * @returns A Promise that resolves to the derived public key in JWK format.
54
+ */
55
+ computePublicKey({ key }: ComputePublicKeyParams): Promise<Jwk>;
56
+ /**
57
+ * Generates a new private key with the specified algorithm in JSON Web Key (JWK) format.
58
+ *
59
+ * @example
60
+ * ```ts
61
+ * const ecdsa = new EcdsaAlgorithm();
62
+ * const privateKey = await ecdsa.generateKey({ algorithm: 'ES256K' });
63
+ * ```
64
+ *
65
+ * @param params - The parameters for key generation.
66
+ * @param params.algorithm - The algorithm to use for key generation.
67
+ *
68
+ * @returns A Promise that resolves to the generated private key in JWK format.
69
+ */
70
+ generateKey({ algorithm }: EcdsaGenerateKeyParams): Promise<Jwk>;
71
+ /**
72
+ * Retrieves the public key properties from a given private key in JWK format.
73
+ *
74
+ * @remarks
75
+ * This method extracts the public key portion from an ECDSA private key in JWK format. It does
76
+ * so by removing the private key property 'd' and making a shallow copy, effectively yielding the
77
+ * public key.
78
+ *
79
+ * Note: This method offers a significant performance advantage, being about 200 times faster
80
+ * than `computePublicKey()`. However, it does not mathematically validate the private key, nor
81
+ * does it derive the public key from the private key. It simply extracts existing public key
82
+ * properties from the private key object. This makes it suitable for scenarios where speed is
83
+ * critical and the private key's integrity is already assured.
84
+ *
85
+ * @example
86
+ * ```ts
87
+ * const ecdsa = new EcdsaAlgorithm();
88
+ * const privateKey = { ... }; // A Jwk object representing a private key
89
+ * const publicKey = await ecdsa.getPublicKey({ key: privateKey });
90
+ * ```
91
+ *
92
+ * @param params - The parameters for retrieving the public key properties.
93
+ * @param params.key - The private key in JWK format.
94
+ *
95
+ * @returns A Promise that resolves to the public key in JWK format.
96
+ */
97
+ getPublicKey({ key }: GetPublicKeyParams): Promise<Jwk>;
98
+ privateKeyToBytes({ privateKey }: PrivateKeyToBytesParams): Promise<Uint8Array>;
99
+ publicKeyToBytes({ publicKey }: PublicKeyToBytesParams): Promise<Uint8Array>;
100
+ /**
101
+ * Generates an ECDSA signature of given data using a private key.
102
+ *
103
+ * @remarks
104
+ * This method uses the signature algorithm determined by the given `algorithm` to sign the
105
+ * provided data.
106
+ *
107
+ * The signature can later be verified by parties with access to the corresponding
108
+ * public key, ensuring that the data has not been tampered with and was indeed signed by the
109
+ * holder of the private key.
110
+ *
111
+ * @example
112
+ * ```ts
113
+ * const ecdsa = new EcdsaAlgorithm();
114
+ * const data = new TextEncoder().encode('Message');
115
+ * const privateKey = { ... }; // A Jwk object representing a private key
116
+ * const signature = await ecdsa.sign({
117
+ * key: privateKey,
118
+ * data
119
+ * });
120
+ * ```
121
+ *
122
+ * @param params - The parameters for the signing operation.
123
+ * @param params.key - The private key to use for signing, represented in JWK format.
124
+ * @param params.data - The data to sign.
125
+ *
126
+ * @returns A Promise resolving to the digital signature as a `Uint8Array`.
127
+ */
128
+ sign({ key, data }: SignParams): Promise<Uint8Array>;
129
+ /**
130
+ * Verifies an ECDSA signature associated with the provided data using the provided key.
131
+ *
132
+ * @remarks
133
+ * This method uses the signature algorithm determined by the `crv` property of the provided key
134
+ * to check the validity of a digital signature against the original data. It confirms whether the
135
+ * signature was created by the holder of the corresponding private key and that the data has not
136
+ * been tampered with.
137
+ *s
138
+ * @example
139
+ * ```ts
140
+ * const ecdsa = new EcdsaAlgorithm();
141
+ * const publicKey = { ... }; // Public key in JWK format corresponding to the private key that signed the data
142
+ * const signature = new Uint8Array([...]); // Signature to verify
143
+ * const data = new TextEncoder().encode('Message');
144
+ * const isValid = await ecdsa.verify({
145
+ * key: publicKey,
146
+ * signature,
147
+ * data
148
+ * });
149
+ * ```
150
+ *
151
+ * @param params - The parameters for the verification operation.
152
+ * @param params.key - The key to use for verification.
153
+ * @param params.signature - The signature to verify.
154
+ * @param params.data - The data to verify.
155
+ *
156
+ * @returns A Promise resolving to a boolean indicating whether the signature is valid.
157
+ */
158
+ verify({ key, signature, data }: VerifyParams): Promise<boolean>;
159
+ }
160
+ //# sourceMappingURL=ecdsa.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ecdsa.d.ts","sourceRoot":"","sources":["../../../../../src/prototyping/crypto/algorithms/ecdsa.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,GAAG,EACH,MAAM,EACN,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,eAAe,EAAuD,MAAM,eAAe,CAAC;AAErG,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAE7I;;;GAGG;AACH,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;IAC/D;;;;;;OAMG;IACH,SAAS,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,WAAW,CAAC;CAC3D;AAED;;;;;;;;;GASG;AACH,qBAAa,cAAe,SAAQ,eAClC,YAAW,sBAAsB,CAAC,sBAAsB,EAAE,GAAG,EAAE,kBAAkB,CAAC,EACvE,YAAY,EAAE,sBAAsB,EACpC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC;IAE9B,iBAAiB,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,EAC3D,uBAAuB,GAAG;QAAE,SAAS,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,WAAW,CAAA;KAAE,GACtF,OAAO,CAAC,GAAG,CAAC;IAuBF,gBAAgB,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,EACzD,sBAAsB,GAAG;QAAE,SAAS,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,WAAW,CAAA;KAAE,GACrF,OAAO,CAAC,GAAG,CAAC;IAuBf;;;;;;;;;;;;;;;;;;;OAmBG;IACU,gBAAgB,CAAC,EAAE,GAAG,EAAE,EACnC,sBAAsB,GACrB,OAAO,CAAC,GAAG,CAAC;IAuBf;;;;;;;;;;;;;OAaG;IACU,WAAW,CAAC,EAAE,SAAS,EAAE,EACpC,sBAAsB,GACrB,OAAO,CAAC,GAAG,CAAC;IAmBf;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACU,YAAY,CAAC,EAAE,GAAG,EAAE,EAC/B,kBAAkB,GACjB,OAAO,CAAC,GAAG,CAAC;IAuBF,iBAAiB,CAAC,EAAE,UAAU,EAAE,EAC3C,uBAAuB,GACtB,OAAO,CAAC,UAAU,CAAC;IAiBT,gBAAgB,CAAC,EAAE,SAAS,EAAE,EACzC,sBAAsB,GACrB,OAAO,CAAC,UAAU,CAAC;IAiBtB;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACU,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAC7B,UAAU,GACT,OAAO,CAAC,UAAU,CAAC;IAmBtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACU,MAAM,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,EAC1C,YAAY,GACX,OAAO,CAAC,OAAO,CAAC;CAkBpB"}
@@ -0,0 +1,157 @@
1
+ import type { Jwk, Signer, SignParams, KeyConverter, VerifyParams, GenerateKeyParams, GetPublicKeyParams, AsymmetricKeyConverter, AsymmetricKeyGenerator, ComputePublicKeyParams } from '@enbox/crypto';
2
+ import { CryptoAlgorithm } from '@enbox/crypto';
3
+ import { BytesToPrivateKeyParams, BytesToPublicKeyParams, PrivateKeyToBytesParams, PublicKeyToBytesParams } from '../types/params-direct.js';
4
+ /**
5
+ * The `EdDsaGenerateKeyParams` interface defines the algorithm-specific parameters that should be
6
+ * passed into the `generateKey()` method when using the EdDSA algorithm.
7
+ */
8
+ export interface EdDsaGenerateKeyParams extends GenerateKeyParams {
9
+ /**
10
+ * A string defining the type of key to generate. The value must be one of the following:
11
+ * - `"Ed25519"`: EdDSA using the Ed25519 curve.
12
+ */
13
+ algorithm: 'Ed25519';
14
+ }
15
+ /**
16
+ * The `EdDsaAlgorithm` class provides a concrete implementation for cryptographic operations using
17
+ * the Edwards-curve Digital Signature Algorithm (EdDSA). This class implements both
18
+ * {@link Signer | `Signer`} and { @link AsymmetricKeyGenerator | `AsymmetricKeyGenerator`}
19
+ * interfaces, providing private key generation, public key derivation, and creation/verification
20
+ * of signatures.
21
+ *
22
+ * This class is typically accessed through implementations that extend the
23
+ * {@link CryptoApi | `CryptoApi`} interface.
24
+ */
25
+ export declare class EdDsaAlgorithm extends CryptoAlgorithm implements AsymmetricKeyGenerator<EdDsaGenerateKeyParams, Jwk, GetPublicKeyParams>, KeyConverter, AsymmetricKeyConverter, Signer<SignParams, VerifyParams> {
26
+ bytesToPrivateKey({ algorithm, privateKeyBytes }: BytesToPrivateKeyParams & {
27
+ algorithm: 'Ed25519';
28
+ }): Promise<Jwk>;
29
+ bytesToPublicKey({ algorithm, publicKeyBytes }: BytesToPublicKeyParams & {
30
+ algorithm: 'Ed25519';
31
+ }): Promise<Jwk>;
32
+ /**
33
+ * Derives the public key in JWK format from a given private key.
34
+ *
35
+ * @remarks
36
+ * This method takes a private key in JWK format and derives its corresponding public key,
37
+ * also in JWK format. The process ensures that the derived public key correctly corresponds to
38
+ * the given private key.
39
+ *
40
+ * @example
41
+ * ```ts
42
+ * const eddsa = new EdDsaAlgorithm();
43
+ * const privateKey = { ... }; // A Jwk object representing a private key
44
+ * const publicKey = await eddsa.computePublicKey({ key: privateKey });
45
+ * ```
46
+ *
47
+ * @param params - The parameters for the public key derivation.
48
+ * @param params.key - The private key in JWK format from which to derive the public key.
49
+ *
50
+ * @returns A Promise that resolves to the derived public key in JWK format.
51
+ */
52
+ computePublicKey({ key }: ComputePublicKeyParams): Promise<Jwk>;
53
+ /**
54
+ * Generates a new private key with the specified algorithm in JSON Web Key (JWK) format.
55
+ *
56
+ * @example
57
+ * ```ts
58
+ * const eddsa = new EdDsaAlgorithm();
59
+ * const privateKey = await eddsa.generateKey({ algorithm: 'Ed25519' });
60
+ * ```
61
+ *
62
+ * @param params - The parameters for key generation.
63
+ * @param params.algorithm - The algorithm to use for key generation.
64
+ *
65
+ * @returns A Promise that resolves to the generated private key in JWK format.
66
+ */
67
+ generateKey({ algorithm }: EdDsaGenerateKeyParams): Promise<Jwk>;
68
+ /**
69
+ * Retrieves the public key properties from a given private key in JWK format.
70
+ *
71
+ * @remarks
72
+ * This method extracts the public key portion from an EdDSA private key in JWK format. It does
73
+ * so by removing the private key property 'd' and making a shallow copy, effectively yielding the
74
+ * public key.
75
+ *
76
+ * Note: This method offers a significant performance advantage, being about 100 times faster
77
+ * than `computePublicKey()`. However, it does not mathematically validate the private key, nor
78
+ * does it derive the public key from the private key. It simply extracts existing public key
79
+ * properties from the private key object. This makes it suitable for scenarios where speed is
80
+ * critical and the private key's integrity is already assured.
81
+ *
82
+ * @example
83
+ * ```ts
84
+ * const eddsa = new EdDsaAlgorithm();
85
+ * const privateKey = { ... }; // A Jwk object representing a private key
86
+ * const publicKey = await eddsa.getPublicKey({ key: privateKey });
87
+ * ```
88
+ *
89
+ * @param params - The parameters for retrieving the public key properties.
90
+ * @param params.key - The private key in JWK format.
91
+ *
92
+ * @returns A Promise that resolves to the public key in JWK format.
93
+ */
94
+ getPublicKey({ key }: GetPublicKeyParams): Promise<Jwk>;
95
+ privateKeyToBytes({ privateKey }: PrivateKeyToBytesParams): Promise<Uint8Array>;
96
+ publicKeyToBytes({ publicKey }: PublicKeyToBytesParams): Promise<Uint8Array>;
97
+ /**
98
+ * Generates an EdDSA signature of given data using a private key.
99
+ *
100
+ * @remarks
101
+ * This method uses the signature algorithm determined by the given `algorithm` to sign the
102
+ * provided data.
103
+ *
104
+ * The signature can later be verified by parties with access to the corresponding
105
+ * public key, ensuring that the data has not been tampered with and was indeed signed by the
106
+ * holder of the private key.
107
+ *
108
+ * @example
109
+ * ```ts
110
+ * const eddsa = new EdDsaAlgorithm();
111
+ * const data = new TextEncoder().encode('Message');
112
+ * const privateKey = { ... }; // A Jwk object representing a private key
113
+ * const signature = await eddsa.sign({
114
+ * key: privateKey,
115
+ * data
116
+ * });
117
+ * ```
118
+ *
119
+ * @param params - The parameters for the signing operation.
120
+ * @param params.key - The private key to use for signing, represented in JWK format.
121
+ * @param params.data - The data to sign.
122
+ *
123
+ * @returns A Promise resolving to the digital signature as a `Uint8Array`.
124
+ */
125
+ sign({ key, data }: SignParams): Promise<Uint8Array>;
126
+ /**
127
+ * Verifies an EdDSA signature associated with the provided data using the provided key.
128
+ *
129
+ * @remarks
130
+ * This method uses the signature algorithm determined by the `crv` property of the provided key
131
+ * to check the validity of a digital signature against the original data. It confirms whether the
132
+ * signature was created by the holder of the corresponding private key and that the data has not
133
+ * been tampered with.
134
+ *s
135
+ * @example
136
+ * ```ts
137
+ * const eddsa = new EdDsaAlgorithm();
138
+ * const publicKey = { ... }; // Public key in JWK format corresponding to the private key that signed the data
139
+ * const signature = new Uint8Array([...]); // Signature to verify
140
+ * const data = new TextEncoder().encode('Message');
141
+ * const isValid = await eddsa.verify({
142
+ * key: publicKey,
143
+ * signature,
144
+ * data
145
+ * });
146
+ * ```
147
+ *
148
+ * @param params - The parameters for the verification operation.
149
+ * @param params.key - The key to use for verification.
150
+ * @param params.signature - The signature to verify.
151
+ * @param params.data - The data to verify.
152
+ *
153
+ * @returns A Promise resolving to a boolean indicating whether the signature is valid.
154
+ */
155
+ verify({ key, signature, data }: VerifyParams): Promise<boolean>;
156
+ }
157
+ //# sourceMappingURL=eddsa.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eddsa.d.ts","sourceRoot":"","sources":["../../../../../src/prototyping/crypto/algorithms/eddsa.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,GAAG,EACH,MAAM,EACN,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,eAAe,EAA4C,MAAM,eAAe,CAAC;AAE1F,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAE7I;;;GAGG;AACH,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;IAC/D;;;OAGG;IACH,SAAS,EAAE,SAAS,CAAC;CACtB;AAED;;;;;;;;;GASG;AACH,qBAAa,cAAe,SAAQ,eAClC,YAAW,sBAAsB,CAAC,sBAAsB,EAAE,GAAG,EAAE,kBAAkB,CAAC,EACvE,YAAY,EAAE,sBAAsB,EACpC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC;IAE9B,iBAAiB,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,EAC3D,uBAAuB,GAAG;QAAE,SAAS,EAAE,SAAS,CAAA;KAAE,GACjD,OAAO,CAAC,GAAG,CAAC;IAeF,gBAAgB,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,EACzD,sBAAsB,GAAG;QAAE,SAAS,EAAE,SAAS,CAAA;KAAE,GAChD,OAAO,CAAC,GAAG,CAAC;IAef;;;;;;;;;;;;;;;;;;;OAmBG;IACU,gBAAgB,CAAC,EAAE,GAAG,EAAE,EACnC,sBAAsB,GACrB,OAAO,CAAC,GAAG,CAAC;IAiBf;;;;;;;;;;;;;OAaG;IACG,WAAW,CAAC,EAAE,SAAS,EAAE,EAC7B,sBAAsB,GACrB,OAAO,CAAC,GAAG,CAAC;IAWf;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACU,YAAY,CAAC,EAAE,GAAG,EAAE,EAC/B,kBAAkB,GACjB,OAAO,CAAC,GAAG,CAAC;IAiBF,iBAAiB,CAAC,EAAE,UAAU,EAAE,EAC3C,uBAAuB,GACtB,OAAO,CAAC,UAAU,CAAC;IAaT,gBAAgB,CAAC,EAAE,SAAS,EAAE,EACzC,sBAAsB,GACrB,OAAO,CAAC,UAAU,CAAC;IAatB;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACU,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAC7B,UAAU,GACT,OAAO,CAAC,UAAU,CAAC;IAetB;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACU,MAAM,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,EAC1C,YAAY,GACX,OAAO,CAAC,OAAO,CAAC;CAcpB"}
@@ -0,0 +1,21 @@
1
+ import { CryptoAlgorithm } from '@enbox/crypto';
2
+ import type { DeriveKeyBytesParams } from '../types/params-direct.js';
3
+ import { HkdfParams } from '../primitives/hkdf.js';
4
+ import { KeyBytesDeriver } from '../types/key-deriver.js';
5
+ /**
6
+ * The `HkdfDeriveKeyBytesParams` interface defines the algorithm-specific parameters that should be
7
+ * passed into the `deriveKeyBytes()` method when using the HKDF algorithm.
8
+ */
9
+ export interface HkdfDeriveKeyBytesParams extends DeriveKeyBytesParams {
10
+ /** Specifies the algorithm variant for HKDF key derivation.
11
+ * The value determines the hash function that will be used and must be one of the following:
12
+ * - `"HKDF-256"`: HKDF with SHA-256.
13
+ * - `"HKDF-384"`: HKDF with SHA-384.
14
+ * - `"HKDF-512"`: HKDF with SHA-512.
15
+ */
16
+ algorithm: 'HKDF-256' | 'HKDF-384' | 'HKDF-512';
17
+ }
18
+ export declare class HkdfAlgorithm extends CryptoAlgorithm implements KeyBytesDeriver<HkdfDeriveKeyBytesParams, Uint8Array> {
19
+ deriveKeyBytes({ algorithm, ...params }: HkdfDeriveKeyBytesParams & Omit<HkdfParams, 'hash'>): Promise<Uint8Array>;
20
+ }
21
+ //# sourceMappingURL=hkdf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hkdf.d.ts","sourceRoot":"","sources":["../../../../../src/prototyping/crypto/algorithms/hkdf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,OAAO,EAAQ,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D;;;GAGG;AACH,MAAM,WAAW,wBAAyB,SAAQ,oBAAoB;IACpE;;;;;OAKG;IACH,SAAS,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;CACjD;AAED,qBAAa,aAAc,SAAQ,eACjC,YAAW,eAAe,CAAC,wBAAwB,EAAE,UAAU,CAAC;IAEnD,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,EAClD,wBAAwB,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,GAClD,OAAO,CAAC,UAAU,CAAC;CAavB"}
@@ -0,0 +1,21 @@
1
+ import { CryptoAlgorithm } from '@enbox/crypto';
2
+ import type { Pbkdf2Params } from '../primitives/pbkdf2.js';
3
+ import type { KeyBytesDeriver } from '../types/key-deriver.js';
4
+ import type { DeriveKeyBytesParams } from '../types/params-direct.js';
5
+ /**
6
+ * The `Pbkdf2DeriveKeyBytesParams` interface defines the algorithm-specific parameters that
7
+ * should be passed into the `deriveKeyBytes()` method when using the PBKDF2 algorithm.
8
+ */
9
+ export interface Pbkdf2DeriveKeyBytesParams extends DeriveKeyBytesParams {
10
+ /** Specifies the algorithm variant for PBKDF2 key derivation.
11
+ * The value determines the hash function that will be used and must be one of the following:
12
+ * - `"PBKDF2-HS256+A128KW"`: PBKDF2 with HMAC SHA-256 and A128KW key wrapping.
13
+ * - `"PBKDF2-HS384+A192KW"`: PBKDF2 with HMAC SHA-384 and A192KW key wrapping.
14
+ * - `"PBKDF2-HS512+A256KW"`: PBKDF2 with HMAC SHA-512 and A256KW key wrapping.
15
+ */
16
+ algorithm: 'PBES2-HS256+A128KW' | 'PBES2-HS384+A192KW' | 'PBES2-HS512+A256KW';
17
+ }
18
+ export declare class Pbkdf2Algorithm extends CryptoAlgorithm implements KeyBytesDeriver<Pbkdf2DeriveKeyBytesParams, Uint8Array> {
19
+ deriveKeyBytes({ algorithm, ...params }: Pbkdf2DeriveKeyBytesParams & Omit<Pbkdf2Params, 'hash'>): Promise<Uint8Array>;
20
+ }
21
+ //# sourceMappingURL=pbkdf2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pbkdf2.d.ts","sourceRoot":"","sources":["../../../../../src/prototyping/crypto/algorithms/pbkdf2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAItE;;;GAGG;AACH,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACtE;;;;;OAKG;IACH,SAAS,EAAE,oBAAoB,GAAG,oBAAoB,GAAG,oBAAoB,CAAC;CAC/E;AAED,qBAAa,eAAgB,SAAQ,eACnC,YAAW,eAAe,CAAC,0BAA0B,EAAE,UAAU,CAAC;IAErD,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,EAClD,0BAA0B,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,GACtD,OAAO,CAAC,UAAU,CAAC;CAgBvB"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * A custom error class for Crypto-related errors.
3
+ */
4
+ export declare class CryptoError extends Error {
5
+ code: CryptoErrorCode;
6
+ /**
7
+ * Constructs an instance of CryptoError, a custom error class for handling Crypto-related errors.
8
+ *
9
+ * @param code - A {@link CryptoErrorCode} representing the specific type of error encountered.
10
+ * @param message - A human-readable description of the error.
11
+ */
12
+ constructor(code: CryptoErrorCode, message: string);
13
+ }
14
+ /**
15
+ * An enumeration of possible Crypto error codes.
16
+ */
17
+ export declare enum CryptoErrorCode {
18
+ /** The supplied algorithm identifier is not supported by the implementation. */
19
+ AlgorithmNotSupported = "algorithmNotSupported",
20
+ /** The encoding operation (either encoding or decoding) failed. */
21
+ EncodingError = "encodingError",
22
+ /** The JWE supplied does not conform to valid syntax. */
23
+ InvalidJwe = "invalidJwe",
24
+ /** The JWK supplied does not conform to valid syntax. */
25
+ InvalidJwk = "invalidJwk",
26
+ /** The requested operation is not supported by the implementation. */
27
+ OperationNotSupported = "operationNotSupported"
28
+ }
29
+ //# sourceMappingURL=crypto-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto-error.d.ts","sourceRoot":"","sources":["../../../../src/prototyping/crypto/crypto-error.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,WAAY,SAAQ,KAAK;IAOjB,IAAI,EAAE,eAAe;IANxC;;;;;OAKG;gBACgB,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM;CAc1D;AAED;;GAEG;AACH,oBAAY,eAAe;IACzB,gFAAgF;IAChF,qBAAqB,0BAA0B;IAE/C,mEAAmE;IACnE,aAAa,kBAAkB;IAE/B,yDAAyD;IACzD,UAAU,eAAe;IAEzB,yDAAyD;IACzD,UAAU,eAAe;IAEzB,sEAAsE;IACtE,qBAAqB,0BAA0B;CAChD"}
@@ -0,0 +1,169 @@
1
+ import type { Jwk, SignParams, DigestParams, VerifyParams, GenerateKeyParams, GetPublicKeyParams, KmsGetKeyUriParams } from '@enbox/crypto';
2
+ import { Sha2Algorithm } from '@enbox/crypto';
3
+ import type { DsaApi } from './types/crypto-api.js';
4
+ import type { BytesToPrivateKeyParams, BytesToPublicKeyParams } from './types/params-direct.js';
5
+ import { EcdsaAlgorithm } from './algorithms/ecdsa.js';
6
+ import { EdDsaAlgorithm } from './algorithms/eddsa.js';
7
+ export interface DsaBytesToPrivateKeyParams extends BytesToPrivateKeyParams {
8
+ algorithm: KeyConversionAlgorithm;
9
+ }
10
+ export interface DsaBytesToPublicKeyParams extends BytesToPublicKeyParams {
11
+ algorithm: AsymmetricKeyConversionAlgorithm;
12
+ }
13
+ /**
14
+ * The `DsaDigestParams` interface defines the algorithm-specific parameters that should
15
+ * be passed into the {@link AgentDsa.digest | `AgentDsa.digest()`} method.
16
+ */
17
+ export interface DsaDigestParams extends DigestParams {
18
+ /**
19
+ * A string defining the name of hash function to use. The value must be one of the following:
20
+ * - `"SHA-256"`: Generates a 256-bit digest.
21
+ */
22
+ algorithm: DigestAlgorithm;
23
+ }
24
+ export interface DsaGenerateKeyParams extends GenerateKeyParams {
25
+ algorithm: KeyGenerationAlgorithm;
26
+ }
27
+ /**
28
+ * `supportedAlgorithms` is an object mapping algorithm names to their respective implementations
29
+ * Each entry in this map specifies the algorithm name and its associated properties, including the
30
+ * implementation class and any relevant names or identifiers for the algorithm. This structure
31
+ * allows for easy retrieval and instantiation of algorithm implementations based on the algorithm
32
+ * name or key specification. It facilitates the support of multiple algorithms within the
33
+ * `LocalKeyManager` class.
34
+ */
35
+ declare const supportedAlgorithms: {
36
+ readonly Ed25519: {
37
+ readonly implementation: typeof EdDsaAlgorithm;
38
+ readonly names: readonly ["Ed25519"];
39
+ readonly operations: readonly ["bytesToPrivateKey", "bytesToPublicKey", "generateKey", "sign", "verify"];
40
+ };
41
+ readonly secp256k1: {
42
+ readonly implementation: typeof EcdsaAlgorithm;
43
+ readonly names: readonly ["ES256K", "secp256k1"];
44
+ readonly operations: readonly ["bytesToPrivateKey", "bytesToPublicKey", "generateKey", "sign", "verify"];
45
+ };
46
+ readonly secp256r1: {
47
+ readonly implementation: typeof EcdsaAlgorithm;
48
+ readonly names: readonly ["ES256", "secp256r1"];
49
+ readonly operations: readonly ["bytesToPrivateKey", "bytesToPublicKey", "generateKey", "sign", "verify"];
50
+ };
51
+ readonly 'SHA-256': {
52
+ readonly implementation: typeof Sha2Algorithm;
53
+ readonly names: readonly ["SHA-256"];
54
+ readonly operations: readonly ["digest"];
55
+ };
56
+ };
57
+ type SupportedAlgorithms = typeof supportedAlgorithms;
58
+ type DigestAlgorithms = {
59
+ [K in keyof SupportedAlgorithms]: 'digest' extends SupportedAlgorithms[K]['operations'][number] ? K : never;
60
+ }[keyof SupportedAlgorithms];
61
+ type DigestAlgorithm = typeof supportedAlgorithms[DigestAlgorithms]['names'][number];
62
+ type KeyConversionAlgorithms = {
63
+ [K in keyof SupportedAlgorithms]: 'bytesToPrivateKey' extends SupportedAlgorithms[K]['operations'][number] ? K : never;
64
+ }[keyof SupportedAlgorithms];
65
+ type KeyConversionAlgorithm = typeof supportedAlgorithms[KeyConversionAlgorithms]['names'][number];
66
+ type AsymmetricKeyConversionAlgorithms = {
67
+ [K in keyof SupportedAlgorithms]: 'bytesToPublicKey' extends SupportedAlgorithms[K]['operations'][number] ? K : never;
68
+ }[keyof SupportedAlgorithms];
69
+ type AsymmetricKeyConversionAlgorithm = typeof supportedAlgorithms[AsymmetricKeyConversionAlgorithms]['names'][number];
70
+ type KeyGenerationAlgorithms = {
71
+ [K in keyof SupportedAlgorithms]: 'generateKey' extends SupportedAlgorithms[K]['operations'][number] ? K : never;
72
+ }[keyof SupportedAlgorithms];
73
+ type KeyGenerationAlgorithm = typeof supportedAlgorithms[KeyGenerationAlgorithms]['names'][number];
74
+ export declare class Dsa implements DsaApi<DsaGenerateKeyParams, Jwk, GetPublicKeyParams, DsaDigestParams, SignParams, VerifyParams> {
75
+ /**
76
+ * A private map that stores instances of cryptographic algorithm implementations. Each key in
77
+ * this map is an `AlgorithmConstructor`, and its corresponding value is an instance of a class
78
+ * that implements a specific cryptographic algorithm. This map is used to cache and reuse
79
+ * instances for performance optimization, ensuring that each algorithm is instantiated only once.
80
+ */
81
+ private _algorithmInstances;
82
+ bytesToPrivateKey({ algorithm: algorithmIdentifier, privateKeyBytes }: DsaBytesToPrivateKeyParams): Promise<Jwk>;
83
+ bytesToPublicKey({ algorithm: algorithmIdentifier, publicKeyBytes }: DsaBytesToPublicKeyParams): Promise<Jwk>;
84
+ /**
85
+ * Generates a hash digest of the provided data.
86
+ *
87
+ * @remarks
88
+ * A digest is the output of the hash function. It's a fixed-size string of bytes that uniquely
89
+ * represents the data input into the hash function. The digest is often used for data integrity
90
+ * checks, as any alteration in the input data results in a significantly different digest.
91
+ *
92
+ * It takes the algorithm identifier of the hash function and data to digest as input and returns
93
+ * the digest of the data.
94
+ *
95
+ * @example
96
+ * ```ts
97
+ * const Dsa = new AgentDsa();
98
+ * const data = new Uint8Array([...]);
99
+ * const digest = await Dsa.digest({ algorithm: 'SHA-256', data });
100
+ * ```
101
+ *
102
+ * @param params - The parameters for the digest operation.
103
+ * @param params.algorithm - The name of hash function to use.
104
+ * @param params.data - The data to digest.
105
+ *
106
+ * @returns A Promise which will be fulfilled with the hash digest.
107
+ */
108
+ digest({ algorithm, data }: DsaDigestParams): Promise<Uint8Array>;
109
+ generateKey(params: DsaGenerateKeyParams): Promise<Jwk>;
110
+ getKeyUri(_params: KmsGetKeyUriParams): Promise<string>;
111
+ getPublicKey({ key }: GetPublicKeyParams): Promise<Jwk>;
112
+ privateKeyToBytes({ privateKey }: {
113
+ privateKey: Jwk;
114
+ }): Promise<Uint8Array>;
115
+ publicKeyToBytes({ publicKey }: {
116
+ publicKey: Jwk;
117
+ }): Promise<Uint8Array>;
118
+ sign({ key, data }: SignParams): Promise<Uint8Array>;
119
+ verify({ key, signature, data }: VerifyParams): Promise<boolean>;
120
+ /**
121
+ * Retrieves an algorithm implementation instance based on the provided algorithm name.
122
+ *
123
+ * @remarks
124
+ * This method checks if the requested algorithm is supported and returns a cached instance
125
+ * if available. If an instance does not exist, it creates and caches a new one. This approach
126
+ * optimizes performance by reusing algorithm instances across cryptographic operations.
127
+ *
128
+ * @example
129
+ * ```ts
130
+ * const signer = this.getAlgorithm({ algorithm: 'Ed25519' });
131
+ * ```
132
+ *
133
+ * @param params - The parameters for retrieving the algorithm implementation.
134
+ * @param params.algorithm - The name of the algorithm to retrieve.
135
+ *
136
+ * @returns An instance of the requested algorithm implementation.
137
+ *
138
+ * @throws Error if the requested algorithm is not supported.
139
+ */
140
+ private getAlgorithm;
141
+ /**
142
+ * Determines the algorithm name based on the key's properties.
143
+ *
144
+ * @remarks
145
+ * This method facilitates the identification of the correct algorithm for cryptographic
146
+ * operations based on the `alg` or `crv` properties of a {@link Jwk | JWK}.
147
+ *
148
+ * @example
149
+ * ```ts
150
+ * const key = { ... }; // Public key in JWK format
151
+ * const algorithm = this.getAlgorithmName({ key });
152
+ * ```
153
+ *
154
+ * @example
155
+ * ```ts
156
+ * const algorithm = this.getAlgorithmName({ algorithm: 'ES256' });
157
+ * ```
158
+ *
159
+ * @param params - The parameters for determining the algorithm name.
160
+ * @param params.key - A JWK containing the `alg` or `crv` properties.
161
+ *
162
+ * @returns The algorithm name associated with the key.
163
+ *
164
+ * @throws Error if the algorithm name cannot be determined from the provided input.
165
+ */
166
+ private getAlgorithmName;
167
+ }
168
+ export {};
169
+ //# sourceMappingURL=dsa.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dsa.d.ts","sourceRoot":"","sources":["../../../../src/prototyping/crypto/dsa.ts"],"names":[],"mappings":"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"}