@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,310 @@
1
+ import type {
2
+ Jwk,
3
+ Signer,
4
+ SignParams,
5
+ KeyConverter,
6
+ VerifyParams,
7
+ GenerateKeyParams,
8
+ GetPublicKeyParams,
9
+ AsymmetricKeyConverter,
10
+ AsymmetricKeyGenerator,
11
+ ComputePublicKeyParams,
12
+ } from '@enbox/crypto';
13
+
14
+ import { CryptoAlgorithm, Ed25519, isOkpPrivateJwk, isOkpPublicJwk } from '@enbox/crypto';
15
+ import { CryptoError, CryptoErrorCode } from '../crypto-error.js';
16
+ import { BytesToPrivateKeyParams, BytesToPublicKeyParams, PrivateKeyToBytesParams, PublicKeyToBytesParams } from '../types/params-direct.js';
17
+
18
+ /**
19
+ * The `EdDsaGenerateKeyParams` interface defines the algorithm-specific parameters that should be
20
+ * passed into the `generateKey()` method when using the EdDSA algorithm.
21
+ */
22
+ export interface EdDsaGenerateKeyParams extends GenerateKeyParams {
23
+ /**
24
+ * A string defining the type of key to generate. The value must be one of the following:
25
+ * - `"Ed25519"`: EdDSA using the Ed25519 curve.
26
+ */
27
+ algorithm: 'Ed25519';
28
+ }
29
+
30
+ /**
31
+ * The `EdDsaAlgorithm` class provides a concrete implementation for cryptographic operations using
32
+ * the Edwards-curve Digital Signature Algorithm (EdDSA). This class implements both
33
+ * {@link Signer | `Signer`} and { @link AsymmetricKeyGenerator | `AsymmetricKeyGenerator`}
34
+ * interfaces, providing private key generation, public key derivation, and creation/verification
35
+ * of signatures.
36
+ *
37
+ * This class is typically accessed through implementations that extend the
38
+ * {@link CryptoApi | `CryptoApi`} interface.
39
+ */
40
+ export class EdDsaAlgorithm extends CryptoAlgorithm
41
+ implements AsymmetricKeyGenerator<EdDsaGenerateKeyParams, Jwk, GetPublicKeyParams>,
42
+ KeyConverter, AsymmetricKeyConverter,
43
+ Signer<SignParams, VerifyParams> {
44
+
45
+ public async bytesToPrivateKey({ algorithm, privateKeyBytes }:
46
+ BytesToPrivateKeyParams & { algorithm: 'Ed25519' }
47
+ ): Promise<Jwk> {
48
+ switch (algorithm) {
49
+
50
+ case 'Ed25519': {
51
+ const privateKey = await Ed25519.bytesToPrivateKey({ privateKeyBytes });
52
+ privateKey.alg = 'EdDSA';
53
+ return privateKey;
54
+ }
55
+
56
+ default: {
57
+ throw new CryptoError(CryptoErrorCode.AlgorithmNotSupported, `Algorithm not supported: ${algorithm}`);
58
+ }
59
+ }
60
+ }
61
+
62
+ public async bytesToPublicKey({ algorithm, publicKeyBytes }:
63
+ BytesToPublicKeyParams & { algorithm: 'Ed25519' }
64
+ ): Promise<Jwk> {
65
+ switch (algorithm) {
66
+
67
+ case 'Ed25519': {
68
+ const publicKey = await Ed25519.bytesToPublicKey({ publicKeyBytes });
69
+ publicKey.alg = 'EdDSA';
70
+ return publicKey;
71
+ }
72
+
73
+ default: {
74
+ throw new CryptoError(CryptoErrorCode.AlgorithmNotSupported, `Algorithm not supported: ${algorithm}`);
75
+ }
76
+ }
77
+ }
78
+
79
+ /**
80
+ * Derives the public key in JWK format from a given private key.
81
+ *
82
+ * @remarks
83
+ * This method takes a private key in JWK format and derives its corresponding public key,
84
+ * also in JWK format. The process ensures that the derived public key correctly corresponds to
85
+ * the given private key.
86
+ *
87
+ * @example
88
+ * ```ts
89
+ * const eddsa = new EdDsaAlgorithm();
90
+ * const privateKey = { ... }; // A Jwk object representing a private key
91
+ * const publicKey = await eddsa.computePublicKey({ key: privateKey });
92
+ * ```
93
+ *
94
+ * @param params - The parameters for the public key derivation.
95
+ * @param params.key - The private key in JWK format from which to derive the public key.
96
+ *
97
+ * @returns A Promise that resolves to the derived public key in JWK format.
98
+ */
99
+ public async computePublicKey({ key }:
100
+ ComputePublicKeyParams
101
+ ): Promise<Jwk> {
102
+ if (!isOkpPrivateJwk(key)) throw new TypeError('Invalid key provided. Must be an octet key pair (OKP) private key.');
103
+
104
+ switch (key.crv) {
105
+
106
+ case 'Ed25519': {
107
+ const publicKey = await Ed25519.computePublicKey({ key });
108
+ publicKey.alg = 'EdDSA';
109
+ return publicKey;
110
+ }
111
+
112
+ default: {
113
+ throw new CryptoError(CryptoErrorCode.AlgorithmNotSupported, `Curve not supported: ${key.crv}`);
114
+ }
115
+ }
116
+ }
117
+
118
+ /**
119
+ * Generates a new private key with the specified algorithm in JSON Web Key (JWK) format.
120
+ *
121
+ * @example
122
+ * ```ts
123
+ * const eddsa = new EdDsaAlgorithm();
124
+ * const privateKey = await eddsa.generateKey({ algorithm: 'Ed25519' });
125
+ * ```
126
+ *
127
+ * @param params - The parameters for key generation.
128
+ * @param params.algorithm - The algorithm to use for key generation.
129
+ *
130
+ * @returns A Promise that resolves to the generated private key in JWK format.
131
+ */
132
+ async generateKey({ algorithm }:
133
+ EdDsaGenerateKeyParams
134
+ ): Promise<Jwk> {
135
+ switch (algorithm) {
136
+
137
+ case 'Ed25519': {
138
+ const privateKey = await Ed25519.generateKey();
139
+ privateKey.alg = 'EdDSA';
140
+ return privateKey;
141
+ }
142
+ }
143
+ }
144
+
145
+ /**
146
+ * Retrieves the public key properties from a given private key in JWK format.
147
+ *
148
+ * @remarks
149
+ * This method extracts the public key portion from an EdDSA private key in JWK format. It does
150
+ * so by removing the private key property 'd' and making a shallow copy, effectively yielding the
151
+ * public key.
152
+ *
153
+ * Note: This method offers a significant performance advantage, being about 100 times faster
154
+ * than `computePublicKey()`. However, it does not mathematically validate the private key, nor
155
+ * does it derive the public key from the private key. It simply extracts existing public key
156
+ * properties from the private key object. This makes it suitable for scenarios where speed is
157
+ * critical and the private key's integrity is already assured.
158
+ *
159
+ * @example
160
+ * ```ts
161
+ * const eddsa = new EdDsaAlgorithm();
162
+ * const privateKey = { ... }; // A Jwk object representing a private key
163
+ * const publicKey = await eddsa.getPublicKey({ key: privateKey });
164
+ * ```
165
+ *
166
+ * @param params - The parameters for retrieving the public key properties.
167
+ * @param params.key - The private key in JWK format.
168
+ *
169
+ * @returns A Promise that resolves to the public key in JWK format.
170
+ */
171
+ public async getPublicKey({ key }:
172
+ GetPublicKeyParams
173
+ ): Promise<Jwk> {
174
+ if (!isOkpPrivateJwk(key)) throw new TypeError('Invalid key provided. Must be an octet key pair (OKP) private key.');
175
+
176
+ switch (key.crv) {
177
+
178
+ case 'Ed25519': {
179
+ const publicKey = await Ed25519.getPublicKey({ key });
180
+ publicKey.alg = 'EdDSA';
181
+ return publicKey;
182
+ }
183
+
184
+ default: {
185
+ throw new Error(`Unsupported curve: ${key.crv}`);
186
+ }
187
+ }
188
+ }
189
+
190
+ public async privateKeyToBytes({ privateKey }:
191
+ PrivateKeyToBytesParams
192
+ ): Promise<Uint8Array> {
193
+ switch (privateKey.crv) {
194
+
195
+ case 'Ed25519': {
196
+ return await Ed25519.privateKeyToBytes({ privateKey });
197
+ }
198
+
199
+ default: {
200
+ throw new CryptoError(CryptoErrorCode.AlgorithmNotSupported, `Curve not supported: ${privateKey.crv}`);
201
+ }
202
+ }
203
+ }
204
+
205
+ public async publicKeyToBytes({ publicKey }:
206
+ PublicKeyToBytesParams
207
+ ): Promise<Uint8Array> {
208
+ switch (publicKey.crv) {
209
+
210
+ case 'Ed25519': {
211
+ return await Ed25519.publicKeyToBytes({ publicKey });
212
+ }
213
+
214
+ default: {
215
+ throw new CryptoError(CryptoErrorCode.AlgorithmNotSupported, `Curve not supported: ${publicKey.crv}`);
216
+ }
217
+ }
218
+ }
219
+
220
+ /**
221
+ * Generates an EdDSA signature of given data using a private key.
222
+ *
223
+ * @remarks
224
+ * This method uses the signature algorithm determined by the given `algorithm` to sign the
225
+ * provided data.
226
+ *
227
+ * The signature can later be verified by parties with access to the corresponding
228
+ * public key, ensuring that the data has not been tampered with and was indeed signed by the
229
+ * holder of the private key.
230
+ *
231
+ * @example
232
+ * ```ts
233
+ * const eddsa = new EdDsaAlgorithm();
234
+ * const data = new TextEncoder().encode('Message');
235
+ * const privateKey = { ... }; // A Jwk object representing a private key
236
+ * const signature = await eddsa.sign({
237
+ * key: privateKey,
238
+ * data
239
+ * });
240
+ * ```
241
+ *
242
+ * @param params - The parameters for the signing operation.
243
+ * @param params.key - The private key to use for signing, represented in JWK format.
244
+ * @param params.data - The data to sign.
245
+ *
246
+ * @returns A Promise resolving to the digital signature as a `Uint8Array`.
247
+ */
248
+ public async sign({ key, data }:
249
+ SignParams
250
+ ): Promise<Uint8Array> {
251
+ if (!isOkpPrivateJwk(key)) throw new TypeError('Invalid key provided. Must be an octet key pair (OKP) private key.');
252
+
253
+ switch (key.crv) {
254
+
255
+ case 'Ed25519': {
256
+ return await Ed25519.sign({ key, data });
257
+ }
258
+
259
+ default: {
260
+ throw new CryptoError(CryptoErrorCode.AlgorithmNotSupported, `Curve not supported: ${key.crv}`);
261
+ }
262
+ }
263
+ }
264
+
265
+ /**
266
+ * Verifies an EdDSA signature associated with the provided data using the provided key.
267
+ *
268
+ * @remarks
269
+ * This method uses the signature algorithm determined by the `crv` property of the provided key
270
+ * to check the validity of a digital signature against the original data. It confirms whether the
271
+ * signature was created by the holder of the corresponding private key and that the data has not
272
+ * been tampered with.
273
+ *s
274
+ * @example
275
+ * ```ts
276
+ * const eddsa = new EdDsaAlgorithm();
277
+ * const publicKey = { ... }; // Public key in JWK format corresponding to the private key that signed the data
278
+ * const signature = new Uint8Array([...]); // Signature to verify
279
+ * const data = new TextEncoder().encode('Message');
280
+ * const isValid = await eddsa.verify({
281
+ * key: publicKey,
282
+ * signature,
283
+ * data
284
+ * });
285
+ * ```
286
+ *
287
+ * @param params - The parameters for the verification operation.
288
+ * @param params.key - The key to use for verification.
289
+ * @param params.signature - The signature to verify.
290
+ * @param params.data - The data to verify.
291
+ *
292
+ * @returns A Promise resolving to a boolean indicating whether the signature is valid.
293
+ */
294
+ public async verify({ key, signature, data }:
295
+ VerifyParams
296
+ ): Promise<boolean> {
297
+ if (!isOkpPublicJwk(key)) throw new TypeError('Invalid key provided. Must be an octet key pair (OKP) public key.');
298
+
299
+ switch (key.crv) {
300
+
301
+ case 'Ed25519': {
302
+ return await Ed25519.verify({ key, signature, data });
303
+ }
304
+
305
+ default: {
306
+ throw new CryptoError(CryptoErrorCode.AlgorithmNotSupported, `Curve not supported: ${key.crv}`);
307
+ }
308
+ }
309
+ }
310
+ }
@@ -0,0 +1,40 @@
1
+ import { CryptoAlgorithm } from '@enbox/crypto';
2
+
3
+ import type { DeriveKeyBytesParams } from '../types/params-direct.js';
4
+
5
+ import { Hkdf, HkdfParams } from '../primitives/hkdf.js';
6
+ import { KeyBytesDeriver } from '../types/key-deriver.js';
7
+
8
+ /**
9
+ * The `HkdfDeriveKeyBytesParams` interface defines the algorithm-specific parameters that should be
10
+ * passed into the `deriveKeyBytes()` method when using the HKDF algorithm.
11
+ */
12
+ export interface HkdfDeriveKeyBytesParams extends DeriveKeyBytesParams {
13
+ /** Specifies the algorithm variant for HKDF key derivation.
14
+ * The value determines the hash function that will be used and must be one of the following:
15
+ * - `"HKDF-256"`: HKDF with SHA-256.
16
+ * - `"HKDF-384"`: HKDF with SHA-384.
17
+ * - `"HKDF-512"`: HKDF with SHA-512.
18
+ */
19
+ algorithm: 'HKDF-256' | 'HKDF-384' | 'HKDF-512';
20
+ }
21
+
22
+ export class HkdfAlgorithm extends CryptoAlgorithm
23
+ implements KeyBytesDeriver<HkdfDeriveKeyBytesParams, Uint8Array> {
24
+
25
+ public async deriveKeyBytes({ algorithm, ...params }:
26
+ HkdfDeriveKeyBytesParams & Omit<HkdfParams, 'hash'>
27
+ ): Promise<Uint8Array> {
28
+ // Map algorithm name to hash function.
29
+ const hash = {
30
+ 'HKDF-256' : 'SHA-256' as const,
31
+ 'HKDF-384' : 'SHA-384' as const,
32
+ 'HKDF-512' : 'SHA-512' as const
33
+ }[algorithm];
34
+
35
+ // Derive a cryptographic byte array using HKDF.
36
+ const derivedKeyBytes = await Hkdf.deriveKeyBytes({ ...params, hash });
37
+
38
+ return derivedKeyBytes;
39
+ }
40
+ }
@@ -0,0 +1,44 @@
1
+ import { CryptoAlgorithm } from '@enbox/crypto';
2
+
3
+ import type { Pbkdf2Params } from '../primitives/pbkdf2.js';
4
+ import type { KeyBytesDeriver } from '../types/key-deriver.js';
5
+ import type { DeriveKeyBytesParams } from '../types/params-direct.js';
6
+
7
+ import { Pbkdf2 } from '../primitives/pbkdf2.js';
8
+
9
+ /**
10
+ * The `Pbkdf2DeriveKeyBytesParams` interface defines the algorithm-specific parameters that
11
+ * should be passed into the `deriveKeyBytes()` method when using the PBKDF2 algorithm.
12
+ */
13
+ export interface Pbkdf2DeriveKeyBytesParams extends DeriveKeyBytesParams {
14
+ /** Specifies the algorithm variant for PBKDF2 key derivation.
15
+ * The value determines the hash function that will be used and must be one of the following:
16
+ * - `"PBKDF2-HS256+A128KW"`: PBKDF2 with HMAC SHA-256 and A128KW key wrapping.
17
+ * - `"PBKDF2-HS384+A192KW"`: PBKDF2 with HMAC SHA-384 and A192KW key wrapping.
18
+ * - `"PBKDF2-HS512+A256KW"`: PBKDF2 with HMAC SHA-512 and A256KW key wrapping.
19
+ */
20
+ algorithm: 'PBES2-HS256+A128KW' | 'PBES2-HS384+A192KW' | 'PBES2-HS512+A256KW';
21
+ }
22
+
23
+ export class Pbkdf2Algorithm extends CryptoAlgorithm
24
+ implements KeyBytesDeriver<Pbkdf2DeriveKeyBytesParams, Uint8Array> {
25
+
26
+ public async deriveKeyBytes({ algorithm, ...params }:
27
+ Pbkdf2DeriveKeyBytesParams & Omit<Pbkdf2Params, 'hash'>
28
+ ): Promise<Uint8Array> {
29
+ // Extract the hash function component of the `algorithm` parameter.
30
+ const [, hashFunction] = algorithm.split(/[-+]/);
31
+
32
+ // Map from JOSE algorithm name to "SHA" hash function identifier.
33
+ const hash = {
34
+ 'HS256' : 'SHA-256' as const,
35
+ 'HS384' : 'SHA-384' as const,
36
+ 'HS512' : 'SHA-512' as const
37
+ }[hashFunction]!;
38
+
39
+ // Derive a cryptographic byte array using PBKDF2.
40
+ const derivedKeyBytes = await Pbkdf2.deriveKeyBytes({ ...params, hash });
41
+
42
+ return derivedKeyBytes;
43
+ }
44
+ }
@@ -0,0 +1,45 @@
1
+ /**
2
+ * A custom error class for Crypto-related errors.
3
+ */
4
+ export class CryptoError extends Error {
5
+ /**
6
+ * Constructs an instance of CryptoError, a custom error class for handling Crypto-related errors.
7
+ *
8
+ * @param code - A {@link CryptoErrorCode} representing the specific type of error encountered.
9
+ * @param message - A human-readable description of the error.
10
+ */
11
+ constructor(public code: CryptoErrorCode, message: string) {
12
+ super(message);
13
+ this.name = 'CryptoError';
14
+
15
+ // Ensures that instanceof works properly, the correct prototype chain when using inheritance,
16
+ // and that V8 stack traces (like Chrome, Edge, and Node.js) are more readable and relevant.
17
+ Object.setPrototypeOf(this, new.target.prototype);
18
+
19
+ // Captures the stack trace in V8 engines (like Chrome, Edge, and Node.js).
20
+ // In non-V8 environments, the stack trace will still be captured.
21
+ if (Error.captureStackTrace) {
22
+ Error.captureStackTrace(this, CryptoError);
23
+ }
24
+ }
25
+ }
26
+
27
+ /**
28
+ * An enumeration of possible Crypto error codes.
29
+ */
30
+ export enum CryptoErrorCode {
31
+ /** The supplied algorithm identifier is not supported by the implementation. */
32
+ AlgorithmNotSupported = 'algorithmNotSupported',
33
+
34
+ /** The encoding operation (either encoding or decoding) failed. */
35
+ EncodingError = 'encodingError',
36
+
37
+ /** The JWE supplied does not conform to valid syntax. */
38
+ InvalidJwe = 'invalidJwe',
39
+
40
+ /** The JWK supplied does not conform to valid syntax. */
41
+ InvalidJwk = 'invalidJwk',
42
+
43
+ /** The requested operation is not supported by the implementation. */
44
+ OperationNotSupported = 'operationNotSupported',
45
+ }