@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,164 @@
1
+ import type { GenerateKeyParams, Jwk, KeyConverter, KeyGenerator, KeyWrapper } from '@enbox/crypto';
2
+
3
+ import { CryptoAlgorithm } from '@enbox/crypto';
4
+
5
+ import type { BytesToPrivateKeyParams, PrivateKeyToBytesParams, UnwrapKeyParams, WrapKeyParams } from '../types/params-direct.js';
6
+
7
+ import { AesKw } from '../primitives/aes-kw.js';
8
+ import { RequireOnly } from '@enbox/common';
9
+
10
+ /**
11
+ * The `AesKwGenerateKeyParams` interface defines the algorithm-specific parameters that should be
12
+ * passed into the `generateKey()` method when using the AES-KW algorithm.
13
+ */
14
+ export interface AesKwGenerateKeyParams extends GenerateKeyParams {
15
+ /** Specifies the algorithm variant for key generation in AES-KW mode.
16
+ * The value determines the length of the key to be generated and must be one of the following:
17
+ * - `"A128KW"`: AES Key Wrap using a 128-bit key.
18
+ * - `"A192KW"`: AES Key Wrap using a 192-bit key.
19
+ * - `"A256KW"`: AES Key Wrap using a 256-bit key.
20
+ */
21
+ algorithm: 'A128KW' | 'A192KW' | 'A256KW';
22
+ }
23
+
24
+ /**
25
+ * The `AesKwAlgorithm` class provides a concrete implementation for cryptographic operations using
26
+ * the AES algorithm for key wrapping. This class implements both
27
+ * {@link KeyGenerator | `KeyGenerator`} and {@link KeyWrapper | `KeyWrapper`} interfaces, providing
28
+ * key generation, key wrapping, and key unwrapping features.
29
+ *
30
+ * This class is typically accessed through implementations that extend the
31
+ * {@link CryptoApi | `CryptoApi`} interface.
32
+ */
33
+ export class AesKwAlgorithm extends CryptoAlgorithm
34
+ implements KeyConverter,
35
+ KeyGenerator<AesKwGenerateKeyParams, Jwk>,
36
+ KeyWrapper<WrapKeyParams, UnwrapKeyParams> {
37
+
38
+ public async bytesToPrivateKey({ privateKeyBytes }:
39
+ RequireOnly<BytesToPrivateKeyParams, 'privateKeyBytes'>
40
+ ): Promise<Jwk> {
41
+ // Convert the byte array to a JWK.
42
+ const privateKey = await AesKw.bytesToPrivateKey({ privateKeyBytes });
43
+
44
+ // Set the `alg` property based on the key length.
45
+ privateKey.alg = { 16: 'A128KW', 24: 'A192KW', 32: 'A256KW' }[privateKeyBytes.length];
46
+
47
+ return privateKey;
48
+ }
49
+
50
+ /**
51
+ * Generates a symmetric key for AES for key wrapping in JSON Web Key (JWK) format.
52
+ *
53
+ * @remarks
54
+ * This method generates a symmetric AES key for use in key wrapping mode, based on the specified
55
+ * `algorithm` parameter which determines the key length. It uses cryptographically secure random
56
+ * number generation to ensure the uniqueness and security of the key. The key is returned in JWK
57
+ * format.
58
+ *
59
+ * The generated key includes the following components:
60
+ * - `kty`: Key Type, set to 'oct' for Octet Sequence.
61
+ * - `k`: The symmetric key component, base64url-encoded.
62
+ * - `kid`: Key ID, generated based on the JWK thumbprint.
63
+ * - `alg`: Algorithm, set to 'A128KW', 'A192KW', or 'A256KW' for AES Key Wrap with the
64
+ * specified key length.
65
+ *
66
+ * @example
67
+ * ```ts
68
+ * const aesKw = new AesKwAlgorithm();
69
+ * const privateKey = await aesKw.generateKey({ algorithm: 'A256KW' });
70
+ * ```
71
+ *
72
+ * @param params - The parameters for the key generation.
73
+ *
74
+ * @returns A Promise that resolves to the generated symmetric key in JWK format.
75
+ */
76
+ public async generateKey({ algorithm }:
77
+ AesKwGenerateKeyParams
78
+ ): Promise<Jwk> {
79
+ // Map algorithm name to key length.
80
+ const length = { A128KW: 128, A192KW: 192, A256KW: 256 }[algorithm] as 128 | 192 | 256;
81
+
82
+ // Generate a random private key.
83
+ const privateKey = await AesKw.generateKey({ length });
84
+
85
+ // Set the `alg` property based on the specified algorithm.
86
+ privateKey.alg = algorithm;
87
+
88
+ return privateKey;
89
+ }
90
+
91
+ public async privateKeyToBytes({ privateKey }:
92
+ PrivateKeyToBytesParams
93
+ ): Promise<Uint8Array> {
94
+ // Convert the JWK to a byte array.
95
+ const privateKeyBytes = await AesKw.privateKeyToBytes({ privateKey });
96
+
97
+ return privateKeyBytes;
98
+ }
99
+
100
+ /**
101
+ * Decrypts a wrapped key using the AES Key Wrap algorithm.
102
+ *
103
+ * @remarks
104
+ * This method unwraps a previously wrapped cryptographic key using the AES Key Wrap algorithm.
105
+ * The wrapped key, provided as a byte array, is unwrapped using the decryption key specified in
106
+ * the parameters.
107
+ *
108
+ * This operation is useful for securely receiving keys transmitted over untrusted mediums. The
109
+ * method returns the unwrapped key as a JSON Web Key (JWK).
110
+ *
111
+ * @example
112
+ * ```ts
113
+ * const aesKw = new AesKwAlgorithm();
114
+ * const wrappedKeyBytes = new Uint8Array([...]); // Byte array of a wrapped AES-256 GCM key
115
+ * const decryptionKey = { ... }; // A Jwk object representing the AES unwrapping key
116
+ * const unwrappedKey = await aesKw.unwrapKey({
117
+ * wrappedKeyBytes,
118
+ * wrappedKeyAlgorithm: 'A256GCM',
119
+ * decryptionKey
120
+ * });
121
+ * ```
122
+ *
123
+ * @param params - The parameters for the key unwrapping operation.
124
+ *
125
+ * @returns A Promise that resolves to the unwrapped key in JWK format.
126
+ */
127
+ public async unwrapKey(params:
128
+ UnwrapKeyParams
129
+ ): Promise<Jwk> {
130
+ const unwrappedKey = await AesKw.unwrapKey(params);
131
+
132
+ return unwrappedKey;
133
+ }
134
+
135
+ /**
136
+ * Encrypts a given key using the AES Key Wrap algorithm.
137
+ *
138
+ * @remarks
139
+ * This method wraps a given cryptographic key using the AES Key Wrap algorithm. The private key
140
+ * to be wrapped is provided in the form of a JSON Web Key (JWK).
141
+ *
142
+ * This operation is useful for securely transmitting keys over untrusted mediums. The method
143
+ * returns the wrapped key as a byte array.
144
+ *
145
+ * @example
146
+ * ```ts
147
+ * const aesKw = new AesKwAlgorithm();
148
+ * const unwrappedKey = { ... }; // A Jwk object representing the key to be wrapped
149
+ * const encryptionKey = { ... }; // A Jwk object representing the AES wrapping key
150
+ * const wrappedKeyBytes = await aesKw.wrapKey({ unwrappedKey, encryptionKey });
151
+ * ```
152
+ *
153
+ * @param params - The parameters for the key wrapping operation.
154
+ *
155
+ * @returns A Promise that resolves to the wrapped key as a Uint8Array.
156
+ */
157
+ public async wrapKey(params:
158
+ WrapKeyParams
159
+ ): Promise<Uint8Array> {
160
+ const wrappedKeyBytes = AesKw.wrapKey(params);
161
+
162
+ return wrappedKeyBytes;
163
+ }
164
+ }
@@ -0,0 +1,365 @@
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, isEcPrivateJwk, isEcPublicJwk, Secp256k1, Secp256r1 } 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 `EcdsaGenerateKeyParams` interface defines the algorithm-specific parameters that should be
20
+ * passed into the `generateKey()` method when using the ECDSA algorithm.
21
+ */
22
+ export interface EcdsaGenerateKeyParams extends GenerateKeyParams {
23
+ /**
24
+ * A string defining the type of key to generate. The value must be one of the following:
25
+ * - `"ES256"`: ECDSA using the secp256r1 (P-256) curve and SHA-256.
26
+ * - `"ES256K"`: ECDSA using the secp256k1 curve and SHA-256.
27
+ * - `"secp256k1"`: ECDSA using the secp256k1 curve and SHA-256.
28
+ * - `"secp256r1"`: ECDSA using the secp256r1 (P-256) curve and SHA-256.
29
+ */
30
+ algorithm: 'ES256' | 'ES256K' | 'secp256k1' | 'secp256r1';
31
+ }
32
+
33
+ /**
34
+ * The `EcdsaAlgorithm` class provides a concrete implementation for cryptographic operations using
35
+ * the Elliptic Curve Digital Signature Algorithm (ECDSA). This class implements both
36
+ * {@link Signer | `Signer`} and { @link AsymmetricKeyGenerator | `AsymmetricKeyGenerator`}
37
+ * interfaces, providing private key generation, public key derivation, and creation/verification
38
+ * of signatures.
39
+ *
40
+ * This class is typically accessed through implementations that extend the
41
+ * {@link CryptoApi | `CryptoApi`} interface.
42
+ */
43
+ export class EcdsaAlgorithm extends CryptoAlgorithm
44
+ implements AsymmetricKeyGenerator<EcdsaGenerateKeyParams, Jwk, GetPublicKeyParams>,
45
+ KeyConverter, AsymmetricKeyConverter,
46
+ Signer<SignParams, VerifyParams> {
47
+
48
+ public async bytesToPrivateKey({ algorithm, privateKeyBytes }:
49
+ BytesToPrivateKeyParams & { algorithm: 'ES256' | 'ES256K' | 'secp256k1' | 'secp256r1' }
50
+ ): Promise<Jwk> {
51
+ switch (algorithm) {
52
+
53
+ case 'ES256K':
54
+ case 'secp256k1': {
55
+ const privateKey = await Secp256k1.bytesToPrivateKey({ privateKeyBytes });
56
+ privateKey.alg = 'EdDSA';
57
+ return privateKey;
58
+ }
59
+
60
+ case 'ES256':
61
+ case 'secp256r1': {
62
+ const privateKey = await Secp256r1.bytesToPrivateKey({ privateKeyBytes });
63
+ privateKey.alg = 'EdDSA';
64
+ return privateKey;
65
+ }
66
+
67
+ default: {
68
+ throw new CryptoError(CryptoErrorCode.AlgorithmNotSupported, `Algorithm not supported: ${algorithm}`);
69
+ }
70
+ }
71
+ }
72
+
73
+ public async bytesToPublicKey({ algorithm, publicKeyBytes }:
74
+ BytesToPublicKeyParams & { algorithm: 'ES256' | 'ES256K' | 'secp256k1' | 'secp256r1' }
75
+ ): Promise<Jwk> {
76
+ switch (algorithm) {
77
+
78
+ case 'ES256K':
79
+ case 'secp256k1': {
80
+ const publicKey = await Secp256k1.bytesToPublicKey({ publicKeyBytes });
81
+ publicKey.alg = 'EdDSA';
82
+ return publicKey;
83
+ }
84
+
85
+ case 'ES256':
86
+ case 'secp256r1': {
87
+ const publicKey = await Secp256r1.bytesToPublicKey({ publicKeyBytes });
88
+ publicKey.alg = 'EdDSA';
89
+ return publicKey;
90
+ }
91
+
92
+ default: {
93
+ throw new CryptoError(CryptoErrorCode.AlgorithmNotSupported, `Algorithm not supported: ${algorithm}`);
94
+ }
95
+ }
96
+ }
97
+
98
+ /**
99
+ * Derives the public key in JWK format from a given private key.
100
+ *
101
+ * @remarks
102
+ * This method takes a private key in JWK format and derives its corresponding public key,
103
+ * also in JWK format. The process ensures that the derived public key correctly corresponds to
104
+ * the given private key.
105
+ *
106
+ * @example
107
+ * ```ts
108
+ * const ecdsa = new EcdsaAlgorithm();
109
+ * const privateKey = { ... }; // A Jwk object representing a private key
110
+ * const publicKey = await ecdsa.computePublicKey({ key: privateKey });
111
+ * ```
112
+ *
113
+ * @param params - The parameters for the public key derivation.
114
+ * @param params.key - The private key in JWK format from which to derive the public key.
115
+ *
116
+ * @returns A Promise that resolves to the derived public key in JWK format.
117
+ */
118
+ public async computePublicKey({ key }:
119
+ ComputePublicKeyParams
120
+ ): Promise<Jwk> {
121
+ if (!isEcPrivateJwk(key)) throw new TypeError('Invalid key provided. Must be an elliptic curve (EC) private key.');
122
+
123
+ switch (key.crv) {
124
+
125
+ case 'secp256k1': {
126
+ const publicKey = await Secp256k1.computePublicKey({ key });
127
+ publicKey.alg = 'ES256K';
128
+ return publicKey;
129
+ }
130
+
131
+ case 'P-256': {
132
+ const publicKey = await Secp256r1.computePublicKey({ key });
133
+ publicKey.alg = 'ES256';
134
+ return publicKey;
135
+ }
136
+
137
+ default: {
138
+ throw new Error(`Unsupported curve: ${key.crv}`);
139
+ }
140
+ }
141
+ }
142
+
143
+ /**
144
+ * Generates a new private key with the specified algorithm in JSON Web Key (JWK) format.
145
+ *
146
+ * @example
147
+ * ```ts
148
+ * const ecdsa = new EcdsaAlgorithm();
149
+ * const privateKey = await ecdsa.generateKey({ algorithm: 'ES256K' });
150
+ * ```
151
+ *
152
+ * @param params - The parameters for key generation.
153
+ * @param params.algorithm - The algorithm to use for key generation.
154
+ *
155
+ * @returns A Promise that resolves to the generated private key in JWK format.
156
+ */
157
+ public async generateKey({ algorithm }:
158
+ EcdsaGenerateKeyParams
159
+ ): Promise<Jwk> {
160
+ switch (algorithm) {
161
+
162
+ case 'ES256K':
163
+ case 'secp256k1': {
164
+ const privateKey = await Secp256k1.generateKey();
165
+ privateKey.alg = 'ES256K';
166
+ return privateKey;
167
+ }
168
+
169
+ case 'ES256':
170
+ case 'secp256r1': {
171
+ const privateKey = await Secp256r1.generateKey();
172
+ privateKey.alg = 'ES256';
173
+ return privateKey;
174
+ }
175
+ }
176
+ }
177
+
178
+ /**
179
+ * Retrieves the public key properties from a given private key in JWK format.
180
+ *
181
+ * @remarks
182
+ * This method extracts the public key portion from an ECDSA private key in JWK format. It does
183
+ * so by removing the private key property 'd' and making a shallow copy, effectively yielding the
184
+ * public key.
185
+ *
186
+ * Note: This method offers a significant performance advantage, being about 200 times faster
187
+ * than `computePublicKey()`. However, it does not mathematically validate the private key, nor
188
+ * does it derive the public key from the private key. It simply extracts existing public key
189
+ * properties from the private key object. This makes it suitable for scenarios where speed is
190
+ * critical and the private key's integrity is already assured.
191
+ *
192
+ * @example
193
+ * ```ts
194
+ * const ecdsa = new EcdsaAlgorithm();
195
+ * const privateKey = { ... }; // A Jwk object representing a private key
196
+ * const publicKey = await ecdsa.getPublicKey({ key: privateKey });
197
+ * ```
198
+ *
199
+ * @param params - The parameters for retrieving the public key properties.
200
+ * @param params.key - The private key in JWK format.
201
+ *
202
+ * @returns A Promise that resolves to the public key in JWK format.
203
+ */
204
+ public async getPublicKey({ key }:
205
+ GetPublicKeyParams
206
+ ): Promise<Jwk> {
207
+ if (!isEcPrivateJwk(key)) throw new TypeError('Invalid key provided. Must be an elliptic curve (EC) private key.');
208
+
209
+ switch (key.crv) {
210
+
211
+ case 'secp256k1': {
212
+ const publicKey = await Secp256k1.getPublicKey({ key });
213
+ publicKey.alg = 'ES256K';
214
+ return publicKey;
215
+ }
216
+
217
+ case 'P-256': {
218
+ const publicKey = await Secp256r1.getPublicKey({ key });
219
+ publicKey.alg = 'ES256';
220
+ return publicKey;
221
+ }
222
+
223
+ default: {
224
+ throw new Error(`Unsupported curve: ${key.crv}`);
225
+ }
226
+ }
227
+ }
228
+
229
+ public async privateKeyToBytes({ privateKey }:
230
+ PrivateKeyToBytesParams
231
+ ): Promise<Uint8Array> {
232
+ switch (privateKey.crv) {
233
+
234
+ case 'secp256k1': {
235
+ return await Secp256k1.privateKeyToBytes({ privateKey });
236
+ }
237
+
238
+ case 'P-256': {
239
+ return await Secp256r1.privateKeyToBytes({ privateKey });
240
+ }
241
+
242
+ default: {
243
+ throw new CryptoError(CryptoErrorCode.AlgorithmNotSupported, `Curve not supported: ${privateKey.crv}`);
244
+ }
245
+ }
246
+ }
247
+
248
+ public async publicKeyToBytes({ publicKey }:
249
+ PublicKeyToBytesParams
250
+ ): Promise<Uint8Array> {
251
+ switch (publicKey.crv) {
252
+
253
+ case 'secp256k1': {
254
+ return await Secp256k1.publicKeyToBytes({ publicKey });
255
+ }
256
+
257
+ case 'P-256': {
258
+ return await Secp256r1.publicKeyToBytes({ publicKey });
259
+ }
260
+
261
+ default: {
262
+ throw new CryptoError(CryptoErrorCode.AlgorithmNotSupported, `Curve not supported: ${publicKey.crv}`);
263
+ }
264
+ }
265
+ }
266
+
267
+ /**
268
+ * Generates an ECDSA signature of given data using a private key.
269
+ *
270
+ * @remarks
271
+ * This method uses the signature algorithm determined by the given `algorithm` to sign the
272
+ * provided data.
273
+ *
274
+ * The signature can later be verified by parties with access to the corresponding
275
+ * public key, ensuring that the data has not been tampered with and was indeed signed by the
276
+ * holder of the private key.
277
+ *
278
+ * @example
279
+ * ```ts
280
+ * const ecdsa = new EcdsaAlgorithm();
281
+ * const data = new TextEncoder().encode('Message');
282
+ * const privateKey = { ... }; // A Jwk object representing a private key
283
+ * const signature = await ecdsa.sign({
284
+ * key: privateKey,
285
+ * data
286
+ * });
287
+ * ```
288
+ *
289
+ * @param params - The parameters for the signing operation.
290
+ * @param params.key - The private key to use for signing, represented in JWK format.
291
+ * @param params.data - The data to sign.
292
+ *
293
+ * @returns A Promise resolving to the digital signature as a `Uint8Array`.
294
+ */
295
+ public async sign({ key, data }:
296
+ SignParams
297
+ ): Promise<Uint8Array> {
298
+ if (!isEcPrivateJwk(key)) throw new TypeError('Invalid key provided. Must be an elliptic curve (EC) private key.');
299
+
300
+ switch (key.crv) {
301
+
302
+ case 'secp256k1': {
303
+ return await Secp256k1.sign({ key, data });
304
+ }
305
+
306
+ case 'P-256': {
307
+ return await Secp256r1.sign({ key, data });
308
+ }
309
+
310
+ default: {
311
+ throw new Error(`Unsupported curve: ${key.crv}`);
312
+ }
313
+ }
314
+ }
315
+
316
+ /**
317
+ * Verifies an ECDSA signature associated with the provided data using the provided key.
318
+ *
319
+ * @remarks
320
+ * This method uses the signature algorithm determined by the `crv` property of the provided key
321
+ * to check the validity of a digital signature against the original data. It confirms whether the
322
+ * signature was created by the holder of the corresponding private key and that the data has not
323
+ * been tampered with.
324
+ *s
325
+ * @example
326
+ * ```ts
327
+ * const ecdsa = new EcdsaAlgorithm();
328
+ * const publicKey = { ... }; // Public key in JWK format corresponding to the private key that signed the data
329
+ * const signature = new Uint8Array([...]); // Signature to verify
330
+ * const data = new TextEncoder().encode('Message');
331
+ * const isValid = await ecdsa.verify({
332
+ * key: publicKey,
333
+ * signature,
334
+ * data
335
+ * });
336
+ * ```
337
+ *
338
+ * @param params - The parameters for the verification operation.
339
+ * @param params.key - The key to use for verification.
340
+ * @param params.signature - The signature to verify.
341
+ * @param params.data - The data to verify.
342
+ *
343
+ * @returns A Promise resolving to a boolean indicating whether the signature is valid.
344
+ */
345
+ public async verify({ key, signature, data }:
346
+ VerifyParams
347
+ ): Promise<boolean> {
348
+ if (!isEcPublicJwk(key)) throw new TypeError('Invalid key provided. Must be an elliptic curve (EC) public key.');
349
+
350
+ switch (key.crv) {
351
+
352
+ case 'secp256k1': {
353
+ return await Secp256k1.verify({ key, signature, data });
354
+ }
355
+
356
+ case 'P-256': {
357
+ return await Secp256r1.verify({ key, signature, data });
358
+ }
359
+
360
+ default: {
361
+ throw new Error(`Unsupported curve: ${key.crv}`);
362
+ }
363
+ }
364
+ }
365
+ }