@openvtc/pnm-core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. package/README.md +129 -0
  2. package/dist/did/derive-signing-key.d.ts +19 -0
  3. package/dist/did/derive-signing-key.d.ts.map +1 -0
  4. package/dist/did/derive-signing-key.js +96 -0
  5. package/dist/did/derive-signing-key.js.map +1 -0
  6. package/dist/did/index.d.ts +5 -0
  7. package/dist/did/index.d.ts.map +1 -0
  8. package/dist/did/index.js +5 -0
  9. package/dist/did/index.js.map +1 -0
  10. package/dist/did/peer.d.ts +37 -0
  11. package/dist/did/peer.d.ts.map +1 -0
  12. package/dist/did/peer.js +49 -0
  13. package/dist/did/peer.js.map +1 -0
  14. package/dist/did/verification-method.d.ts +43 -0
  15. package/dist/did/verification-method.d.ts.map +1 -0
  16. package/dist/did/verification-method.js +32 -0
  17. package/dist/did/verification-method.js.map +1 -0
  18. package/dist/did/verify.d.ts +49 -0
  19. package/dist/did/verify.d.ts.map +1 -0
  20. package/dist/did/verify.js +89 -0
  21. package/dist/did/verify.js.map +1 -0
  22. package/dist/didcomm/index.d.ts +235 -0
  23. package/dist/didcomm/index.d.ts.map +1 -0
  24. package/dist/didcomm/index.js +415 -0
  25. package/dist/didcomm/index.js.map +1 -0
  26. package/dist/inbound/confirm.d.ts +50 -0
  27. package/dist/inbound/confirm.d.ts.map +1 -0
  28. package/dist/inbound/confirm.js +64 -0
  29. package/dist/inbound/confirm.js.map +1 -0
  30. package/dist/inbound/dedup.d.ts +9 -0
  31. package/dist/inbound/dedup.d.ts.map +1 -0
  32. package/dist/inbound/dedup.js +31 -0
  33. package/dist/inbound/dedup.js.map +1 -0
  34. package/dist/inbound/index.d.ts +3 -0
  35. package/dist/inbound/index.d.ts.map +1 -0
  36. package/dist/inbound/index.js +3 -0
  37. package/dist/inbound/index.js.map +1 -0
  38. package/dist/index.d.ts +14 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +14 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/onboarding/index.d.ts +2 -0
  43. package/dist/onboarding/index.d.ts.map +1 -0
  44. package/dist/onboarding/index.js +2 -0
  45. package/dist/onboarding/index.js.map +1 -0
  46. package/dist/onboarding/swap.d.ts +60 -0
  47. package/dist/onboarding/swap.d.ts.map +1 -0
  48. package/dist/onboarding/swap.js +148 -0
  49. package/dist/onboarding/swap.js.map +1 -0
  50. package/dist/provision/adopt.d.ts +31 -0
  51. package/dist/provision/adopt.d.ts.map +1 -0
  52. package/dist/provision/adopt.js +114 -0
  53. package/dist/provision/adopt.js.map +1 -0
  54. package/dist/provision/armor.d.ts +19 -0
  55. package/dist/provision/armor.d.ts.map +1 -0
  56. package/dist/provision/armor.js +243 -0
  57. package/dist/provision/armor.js.map +1 -0
  58. package/dist/provision/crc24.d.ts +5 -0
  59. package/dist/provision/crc24.d.ts.map +1 -0
  60. package/dist/provision/crc24.js +30 -0
  61. package/dist/provision/crc24.js.map +1 -0
  62. package/dist/provision/hpke.d.ts +17 -0
  63. package/dist/provision/hpke.d.ts.map +1 -0
  64. package/dist/provision/hpke.js +60 -0
  65. package/dist/provision/hpke.js.map +1 -0
  66. package/dist/provision/index.d.ts +10 -0
  67. package/dist/provision/index.d.ts.map +1 -0
  68. package/dist/provision/index.js +16 -0
  69. package/dist/provision/index.js.map +1 -0
  70. package/dist/provision/open.d.ts +28 -0
  71. package/dist/provision/open.d.ts.map +1 -0
  72. package/dist/provision/open.js +224 -0
  73. package/dist/provision/open.js.map +1 -0
  74. package/dist/provision/request.d.ts +65 -0
  75. package/dist/provision/request.d.ts.map +1 -0
  76. package/dist/provision/request.js +53 -0
  77. package/dist/provision/request.js.map +1 -0
  78. package/dist/provision/run.d.ts +76 -0
  79. package/dist/provision/run.d.ts.map +1 -0
  80. package/dist/provision/run.js +110 -0
  81. package/dist/provision/run.js.map +1 -0
  82. package/dist/provision/send.d.ts +85 -0
  83. package/dist/provision/send.d.ts.map +1 -0
  84. package/dist/provision/send.js +87 -0
  85. package/dist/provision/send.js.map +1 -0
  86. package/dist/provision/types.d.ts +110 -0
  87. package/dist/provision/types.d.ts.map +1 -0
  88. package/dist/provision/types.js +17 -0
  89. package/dist/provision/types.js.map +1 -0
  90. package/dist/rp-login/didcomm.d.ts +34 -0
  91. package/dist/rp-login/didcomm.d.ts.map +1 -0
  92. package/dist/rp-login/didcomm.js +72 -0
  93. package/dist/rp-login/didcomm.js.map +1 -0
  94. package/dist/rp-login/index.d.ts +3 -0
  95. package/dist/rp-login/index.d.ts.map +1 -0
  96. package/dist/rp-login/index.js +3 -0
  97. package/dist/rp-login/index.js.map +1 -0
  98. package/dist/rp-login/step-up.d.ts +43 -0
  99. package/dist/rp-login/step-up.d.ts.map +1 -0
  100. package/dist/rp-login/step-up.js +118 -0
  101. package/dist/rp-login/step-up.js.map +1 -0
  102. package/dist/siop/index.d.ts +3 -0
  103. package/dist/siop/index.d.ts.map +1 -0
  104. package/dist/siop/index.js +3 -0
  105. package/dist/siop/index.js.map +1 -0
  106. package/dist/siop/login-client.d.ts +29 -0
  107. package/dist/siop/login-client.d.ts.map +1 -0
  108. package/dist/siop/login-client.js +79 -0
  109. package/dist/siop/login-client.js.map +1 -0
  110. package/dist/siop/self-issued.d.ts +96 -0
  111. package/dist/siop/self-issued.d.ts.map +1 -0
  112. package/dist/siop/self-issued.js +162 -0
  113. package/dist/siop/self-issued.js.map +1 -0
  114. package/dist/store/holder-identity.d.ts +241 -0
  115. package/dist/store/holder-identity.d.ts.map +1 -0
  116. package/dist/store/holder-identity.js +441 -0
  117. package/dist/store/holder-identity.js.map +1 -0
  118. package/dist/store/index.d.ts +4 -0
  119. package/dist/store/index.d.ts.map +1 -0
  120. package/dist/store/index.js +4 -0
  121. package/dist/store/index.js.map +1 -0
  122. package/dist/store/kv-store.d.ts +51 -0
  123. package/dist/store/kv-store.d.ts.map +1 -0
  124. package/dist/store/kv-store.js +100 -0
  125. package/dist/store/kv-store.js.map +1 -0
  126. package/dist/store/secret-wrap.d.ts +109 -0
  127. package/dist/store/secret-wrap.d.ts.map +1 -0
  128. package/dist/store/secret-wrap.js +85 -0
  129. package/dist/store/secret-wrap.js.map +1 -0
  130. package/dist/trust-tasks/index.d.ts +2 -0
  131. package/dist/trust-tasks/index.d.ts.map +1 -0
  132. package/dist/trust-tasks/index.js +2 -0
  133. package/dist/trust-tasks/index.js.map +1 -0
  134. package/dist/trust-tasks/sign.d.ts +31 -0
  135. package/dist/trust-tasks/sign.d.ts.map +1 -0
  136. package/dist/trust-tasks/sign.js +141 -0
  137. package/dist/trust-tasks/sign.js.map +1 -0
  138. package/dist/util/timing.d.ts +14 -0
  139. package/dist/util/timing.d.ts.map +1 -0
  140. package/dist/util/timing.js +20 -0
  141. package/dist/util/timing.js.map +1 -0
  142. package/dist/vault/delete.d.ts +19 -0
  143. package/dist/vault/delete.d.ts.map +1 -0
  144. package/dist/vault/delete.js +35 -0
  145. package/dist/vault/delete.js.map +1 -0
  146. package/dist/vault/index.d.ts +8 -0
  147. package/dist/vault/index.d.ts.map +1 -0
  148. package/dist/vault/index.js +7 -0
  149. package/dist/vault/index.js.map +1 -0
  150. package/dist/vault/list.d.ts +96 -0
  151. package/dist/vault/list.d.ts.map +1 -0
  152. package/dist/vault/list.js +106 -0
  153. package/dist/vault/list.js.map +1 -0
  154. package/dist/vault/proxy-login.d.ts +100 -0
  155. package/dist/vault/proxy-login.d.ts.map +1 -0
  156. package/dist/vault/proxy-login.js +106 -0
  157. package/dist/vault/proxy-login.js.map +1 -0
  158. package/dist/vault/release.d.ts +33 -0
  159. package/dist/vault/release.d.ts.map +1 -0
  160. package/dist/vault/release.js +83 -0
  161. package/dist/vault/release.js.map +1 -0
  162. package/dist/vault/sign-trust-task.d.ts +26 -0
  163. package/dist/vault/sign-trust-task.d.ts.map +1 -0
  164. package/dist/vault/sign-trust-task.js +53 -0
  165. package/dist/vault/sign-trust-task.js.map +1 -0
  166. package/dist/vault/transport.d.ts +50 -0
  167. package/dist/vault/transport.d.ts.map +1 -0
  168. package/dist/vault/transport.js +118 -0
  169. package/dist/vault/transport.js.map +1 -0
  170. package/dist/vault/upsert.d.ts +102 -0
  171. package/dist/vault/upsert.d.ts.map +1 -0
  172. package/dist/vault/upsert.js +92 -0
  173. package/dist/vault/upsert.js.map +1 -0
  174. package/dist/vta/bridge-mediator-session.d.ts +26 -0
  175. package/dist/vta/bridge-mediator-session.d.ts.map +1 -0
  176. package/dist/vta/bridge-mediator-session.js +37 -0
  177. package/dist/vta/bridge-mediator-session.js.map +1 -0
  178. package/dist/vta/bridge-memory.d.ts +80 -0
  179. package/dist/vta/bridge-memory.d.ts.map +1 -0
  180. package/dist/vta/bridge-memory.js +162 -0
  181. package/dist/vta/bridge-memory.js.map +1 -0
  182. package/dist/vta/client.d.ts +40 -0
  183. package/dist/vta/client.d.ts.map +1 -0
  184. package/dist/vta/client.js +91 -0
  185. package/dist/vta/client.js.map +1 -0
  186. package/dist/vta/contexts.d.ts +60 -0
  187. package/dist/vta/contexts.d.ts.map +1 -0
  188. package/dist/vta/contexts.js +118 -0
  189. package/dist/vta/contexts.js.map +1 -0
  190. package/dist/vta/didcomm.d.ts +57 -0
  191. package/dist/vta/didcomm.d.ts.map +1 -0
  192. package/dist/vta/didcomm.js +138 -0
  193. package/dist/vta/didcomm.js.map +1 -0
  194. package/dist/vta/errors.d.ts +20 -0
  195. package/dist/vta/errors.d.ts.map +1 -0
  196. package/dist/vta/errors.js +64 -0
  197. package/dist/vta/errors.js.map +1 -0
  198. package/dist/vta/index.d.ts +15 -0
  199. package/dist/vta/index.d.ts.map +1 -0
  200. package/dist/vta/index.js +15 -0
  201. package/dist/vta/index.js.map +1 -0
  202. package/dist/vta/mediation.d.ts +80 -0
  203. package/dist/vta/mediation.d.ts.map +1 -0
  204. package/dist/vta/mediation.js +29 -0
  205. package/dist/vta/mediation.js.map +1 -0
  206. package/dist/vta/mediator-client.d.ts +66 -0
  207. package/dist/vta/mediator-client.d.ts.map +1 -0
  208. package/dist/vta/mediator-client.js +139 -0
  209. package/dist/vta/mediator-client.js.map +1 -0
  210. package/dist/vta/pickup.d.ts +81 -0
  211. package/dist/vta/pickup.d.ts.map +1 -0
  212. package/dist/vta/pickup.js +30 -0
  213. package/dist/vta/pickup.js.map +1 -0
  214. package/dist/vta/protocol.d.ts +76 -0
  215. package/dist/vta/protocol.d.ts.map +1 -0
  216. package/dist/vta/protocol.js +30 -0
  217. package/dist/vta/protocol.js.map +1 -0
  218. package/dist/vta/smoke.d.ts +59 -0
  219. package/dist/vta/smoke.d.ts.map +1 -0
  220. package/dist/vta/smoke.js +408 -0
  221. package/dist/vta/smoke.js.map +1 -0
  222. package/dist/vta/transport.d.ts +55 -0
  223. package/dist/vta/transport.d.ts.map +1 -0
  224. package/dist/vta/transport.js +2 -0
  225. package/dist/vta/transport.js.map +1 -0
  226. package/dist/vta/types.d.ts +50 -0
  227. package/dist/vta/types.d.ts.map +1 -0
  228. package/dist/vta/types.js +2 -0
  229. package/dist/vta/types.js.map +1 -0
  230. package/dist/vta/wallet-session.d.ts +87 -0
  231. package/dist/vta/wallet-session.d.ts.map +1 -0
  232. package/dist/vta/wallet-session.js +106 -0
  233. package/dist/vta/wallet-session.js.map +1 -0
  234. package/dist/webauthn/base64url.d.ts +3 -0
  235. package/dist/webauthn/base64url.d.ts.map +1 -0
  236. package/dist/webauthn/base64url.js +17 -0
  237. package/dist/webauthn/base64url.js.map +1 -0
  238. package/dist/webauthn/index.d.ts +4 -0
  239. package/dist/webauthn/index.d.ts.map +1 -0
  240. package/dist/webauthn/index.js +4 -0
  241. package/dist/webauthn/index.js.map +1 -0
  242. package/dist/webauthn/multikey.d.ts +26 -0
  243. package/dist/webauthn/multikey.d.ts.map +1 -0
  244. package/dist/webauthn/multikey.js +91 -0
  245. package/dist/webauthn/multikey.js.map +1 -0
  246. package/dist/webauthn/register.d.ts +36 -0
  247. package/dist/webauthn/register.d.ts.map +1 -0
  248. package/dist/webauthn/register.js +77 -0
  249. package/dist/webauthn/register.js.map +1 -0
  250. package/package.json +56 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/didcomm/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import { type Identity } from "../didcomm/index.js";
2
+ import type { RemoteDidcommEndpoint } from "../vta/didcomm.js";
3
+ export declare const CONFIRM_REQUEST_TYPE = "https://trusttasks.org/spec/confirm/request/0.1";
4
+ export declare const CONFIRM_RESPONSE_TYPE = "https://trusttasks.org/spec/confirm/response/0.1";
5
+ /** Body of an inbound confirm request (RP → wallet). */
6
+ export interface ConfirmRequest {
7
+ /** RP-issued nonce; the wallet echoes it in the response so the RP can
8
+ * correlate + prevent replay. */
9
+ challenge: string;
10
+ /** Human-readable action the user is being asked to confirm. */
11
+ action: string;
12
+ /** Optional RP display name for the consent prompt. */
13
+ rpName?: string;
14
+ }
15
+ /** A parsed, validated inbound confirm request. */
16
+ export interface ParsedConfirmRequest {
17
+ /** The requesting RP's DID (the authcrypt sender). */
18
+ rpDid: string;
19
+ /** Thread id to echo on the response so the RP correlates it. */
20
+ thid: string;
21
+ request: ConfirmRequest;
22
+ }
23
+ /**
24
+ * Validate a decrypted inbound DIDComm message as a `confirm/1.0` request.
25
+ * Returns `null` if it isn't one (so an `onInbound` handler can ignore other
26
+ * traffic). The `from` field is the authcrypt-authenticated RP DID.
27
+ */
28
+ export declare function parseConfirmRequest(message: Record<string, unknown>): ParsedConfirmRequest | null;
29
+ export interface BuildConfirmResponseArgs {
30
+ /** The wallet's holder identity (authcrypt sender of the response). */
31
+ holder: Identity;
32
+ /** The RP's resolved keyAgreement endpoint (authcrypt recipient). */
33
+ rp: RemoteDidcommEndpoint;
34
+ /** Mediator to forward through (the shared mediator for the demo). */
35
+ mediator: RemoteDidcommEndpoint;
36
+ /** The user's decision. */
37
+ approved: boolean;
38
+ /** The request's challenge, echoed back for correlation. */
39
+ challenge: string;
40
+ /** The request's thread id, echoed as the response `thid`. */
41
+ thid: string;
42
+ }
43
+ /**
44
+ * Build the outer (routing/2.0/forward) JWE for a confirm response, ready to
45
+ * `send()` over the wallet's mediator session. Authcrypts the response to the
46
+ * RP, then wraps it in a forward to the mediator — the same outbound shape as
47
+ * `loginViaDidcomm`/`requestVtaApproval`.
48
+ */
49
+ export declare function buildConfirmResponse(args: BuildConfirmResponseArgs): Promise<string>;
50
+ //# sourceMappingURL=confirm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confirm.d.ts","sourceRoot":"","sources":["../../src/inbound/confirm.ts"],"names":[],"mappings":"AAQA,OAAO,EAAiD,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACnG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAM/D,eAAO,MAAM,oBAAoB,oDAAoD,CAAC;AACtF,eAAO,MAAM,qBAAqB,qDAAqD,CAAC;AAExF,wDAAwD;AACxD,MAAM,WAAW,cAAc;IAC7B;sCACkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,MAAM,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,mDAAmD;AACnD,MAAM,WAAW,oBAAoB;IACnC,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,cAAc,CAAC;CACzB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,oBAAoB,GAAG,IAAI,CAkB7B;AAED,MAAM,WAAW,wBAAwB;IACvC,uEAAuE;IACvE,MAAM,EAAE,QAAQ,CAAC;IACjB,qEAAqE;IACrE,EAAE,EAAE,qBAAqB,CAAC;IAC1B,sEAAsE;IACtE,QAAQ,EAAE,qBAAqB,CAAC;IAChC,2BAA2B;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,4DAA4D;IAC5D,SAAS,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiB1F"}
@@ -0,0 +1,64 @@
1
+ // RP→wallet confirmation protocol (Slice 2). An RP authcrypts a
2
+ // `confirm/1.0` request to the wallet's holder did:peer (routed via its
3
+ // mediator service); the wallet shows a consent prompt and authcrypts a
4
+ // `confirm-response/1.0` back. Authentication is the authcrypt envelope on
5
+ // both legs: the wallet trusts the RP because the request is authcrypted
6
+ // from the RP's DID, and the RP trusts the response because it's authcrypted
7
+ // from the holder did:peer it addressed. No extra signature needed.
8
+ import { packAuthcrypt, packAuthcryptJson, wrapForward } from "../didcomm/index.js";
9
+ // Canonical RP→wallet consent specs from trusttasks-tf. Replaces
10
+ // the former wallet/confirm/* slugs; conformance + payload shape
11
+ // documented at https://trusttasks.org/spec/confirm/request/0.1 and
12
+ // /spec/confirm/response/0.1.
13
+ export const CONFIRM_REQUEST_TYPE = "https://trusttasks.org/spec/confirm/request/0.1";
14
+ export const CONFIRM_RESPONSE_TYPE = "https://trusttasks.org/spec/confirm/response/0.1";
15
+ /**
16
+ * Validate a decrypted inbound DIDComm message as a `confirm/1.0` request.
17
+ * Returns `null` if it isn't one (so an `onInbound` handler can ignore other
18
+ * traffic). The `from` field is the authcrypt-authenticated RP DID.
19
+ */
20
+ export function parseConfirmRequest(message) {
21
+ if (message.type !== CONFIRM_REQUEST_TYPE)
22
+ return null;
23
+ const from = typeof message.from === "string" ? message.from : null;
24
+ if (!from)
25
+ return null;
26
+ const body = (message.body ?? {});
27
+ if (typeof body.challenge !== "string" || typeof body.action !== "string")
28
+ return null;
29
+ const thid = (typeof message.thid === "string" ? message.thid : undefined) ??
30
+ (typeof message.id === "string" ? message.id : "");
31
+ return {
32
+ rpDid: from,
33
+ thid,
34
+ request: {
35
+ challenge: body.challenge,
36
+ action: body.action,
37
+ ...(typeof body.rpName === "string" ? { rpName: body.rpName } : {}),
38
+ },
39
+ };
40
+ }
41
+ /**
42
+ * Build the outer (routing/2.0/forward) JWE for a confirm response, ready to
43
+ * `send()` over the wallet's mediator session. Authcrypts the response to the
44
+ * RP, then wraps it in a forward to the mediator — the same outbound shape as
45
+ * `loginViaDidcomm`/`requestVtaApproval`.
46
+ */
47
+ export async function buildConfirmResponse(args) {
48
+ const message = {
49
+ id: globalThis.crypto.randomUUID(),
50
+ type: CONFIRM_RESPONSE_TYPE,
51
+ from: args.holder.did,
52
+ to: [args.rp.did],
53
+ thid: args.thid,
54
+ body: { approved: args.approved, challenge: args.challenge },
55
+ };
56
+ const inner = await packAuthcrypt(message, args.holder, [
57
+ { kid: args.rp.keyAgreementKid, jwk: args.rp.keyAgreementPublicJwk },
58
+ ]);
59
+ const forwardJson = wrapForward(args.rp.did, args.holder.did, args.mediator.did, inner);
60
+ return packAuthcryptJson(forwardJson, args.holder, [
61
+ { kid: args.mediator.keyAgreementKid, jwk: args.mediator.keyAgreementPublicJwk },
62
+ ]);
63
+ }
64
+ //# sourceMappingURL=confirm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confirm.js","sourceRoot":"","sources":["../../src/inbound/confirm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { KVStore } from "../store/kv-store.js";
2
+ /**
3
+ * Atomically record that an inbound message id has been handled.
4
+ *
5
+ * @returns `true` if the id was newly recorded (caller should process the
6
+ * message); `false` if it had already been handled (a replay — skip it).
7
+ */
8
+ export declare function markInboundHandled(store: KVStore, id: string): Promise<boolean>;
9
+ //# sourceMappingURL=dedup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dedup.d.ts","sourceRoot":"","sources":["../../src/inbound/dedup.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAKpD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOrF"}
@@ -0,0 +1,31 @@
1
+ // Durable de-duplication for inbound DIDComm messages.
2
+ //
3
+ // A message-pickup mediator keeps every un-acked message queued and replays
4
+ // it on each (re)connection. An MV3 service worker is ephemeral, so the
5
+ // offscreen mediator session reconnects often — without de-dup, the same
6
+ // RP-initiated `confirm` request fires a fresh consent popup every time the
7
+ // worker respawns. The mediator-side `messages-received` ack is the upstream
8
+ // fix, but its effect depends on the mediator's queue-id semantics; this
9
+ // client-side guard is the durable backstop and works regardless.
10
+ //
11
+ // State is persisted (KVStore → IndexedDB) so it survives worker respawns,
12
+ // which is exactly when the replays arrive. Bounded to the most recent N ids.
13
+ const HANDLED_IDS_KEY = "inbound:handled-ids";
14
+ const MAX_HANDLED_IDS = 256;
15
+ /**
16
+ * Atomically record that an inbound message id has been handled.
17
+ *
18
+ * @returns `true` if the id was newly recorded (caller should process the
19
+ * message); `false` if it had already been handled (a replay — skip it).
20
+ */
21
+ export async function markInboundHandled(store, id) {
22
+ const ids = (await store.get(HANDLED_IDS_KEY)) ?? [];
23
+ if (ids.includes(id))
24
+ return false;
25
+ ids.push(id);
26
+ if (ids.length > MAX_HANDLED_IDS)
27
+ ids.splice(0, ids.length - MAX_HANDLED_IDS);
28
+ await store.put(HANDLED_IDS_KEY, ids);
29
+ return true;
30
+ }
31
+ //# sourceMappingURL=dedup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dedup.js","sourceRoot":"","sources":["../../src/inbound/dedup.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,EAAE;AACF,4EAA4E;AAC5E,wEAAwE;AACxE,yEAAyE;AACzE,4EAA4E;AAC5E,6EAA6E;AAC7E,yEAAyE;AACzE,kEAAkE;AAClE,EAAE;AACF,2EAA2E;AAC3E,8EAA8E;AAI9E,MAAM,eAAe,GAAG,qBAAqB,CAAC;AAC9C,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAAc,EAAE,EAAU;IACjE,MAAM,GAAG,GAAG,CAAC,MAAM,KAAK,CAAC,GAAG,CAAW,eAAe,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/D,IAAI,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,IAAI,GAAG,CAAC,MAAM,GAAG,eAAe;QAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC;IAC9E,MAAM,KAAK,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./confirm.js";
2
+ export * from "./dedup.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/inbound/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./confirm.js";
2
+ export * from "./dedup.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/inbound/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,14 @@
1
+ export * from "./webauthn/index.js";
2
+ export * from "./did/index.js";
3
+ export * from "./vta/index.js";
4
+ export * from "./didcomm/index.js";
5
+ export * from "./siop/index.js";
6
+ export * from "./rp-login/index.js";
7
+ export * from "./inbound/index.js";
8
+ export * from "./onboarding/index.js";
9
+ export * from "./store/index.js";
10
+ export * from "./trust-tasks/index.js";
11
+ export * from "./vault/index.js";
12
+ export * from "./provision/index.js";
13
+ export * from "./util/timing.js";
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,14 @@
1
+ export * from "./webauthn/index.js";
2
+ export * from "./did/index.js";
3
+ export * from "./vta/index.js";
4
+ export * from "./didcomm/index.js";
5
+ export * from "./siop/index.js";
6
+ export * from "./rp-login/index.js";
7
+ export * from "./inbound/index.js";
8
+ export * from "./onboarding/index.js";
9
+ export * from "./store/index.js";
10
+ export * from "./trust-tasks/index.js";
11
+ export * from "./vault/index.js";
12
+ export * from "./provision/index.js";
13
+ export * from "./util/timing.js";
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./swap.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/onboarding/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./swap.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/onboarding/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
@@ -0,0 +1,60 @@
1
+ import { type Identity } from "../didcomm/index.js";
2
+ import { type SigningIdentity } from "../siop/self-issued.js";
3
+ import type { RemoteDidcommEndpoint } from "../vta/didcomm.js";
4
+ import type { DidcommMessageBridge } from "../vta/transport.js";
5
+ /** The ACL entry created for the new DID (the swap-acl result body). */
6
+ export interface AclSwapResult {
7
+ did: string;
8
+ role: string;
9
+ label?: string | null;
10
+ allowed_contexts: string[];
11
+ created_at: number;
12
+ created_by: string;
13
+ expires_at?: number | null;
14
+ }
15
+ export interface SwapAclDidcommOptions {
16
+ /** Mediator-backed bridge that ships the JWE and surfaces the decrypted,
17
+ * sender-authenticated reply (keyed by `thid`). */
18
+ bridge: DidcommMessageBridge;
19
+ /** Authcrypt sender = the OLD DID (the operator-granted ephemeral did:key). */
20
+ ephemeral: Identity;
21
+ /** Signs the VP-JWT; its DID is the NEW DID (the wallet's holder did:peer). */
22
+ holderSigning: SigningIdentity;
23
+ /** The VTA's DID + keyAgreement key (inner authcrypt recipient). */
24
+ service: RemoteDidcommEndpoint;
25
+ /** The VTA's mediator (forward target); omit for a direct, non-mediated send. */
26
+ mediator?: RemoteDidcommEndpoint;
27
+ /** The VTA's DID — the presentation `aud` + the expected reply `from`. */
28
+ vtaDid: string;
29
+ timeoutMs?: number;
30
+ }
31
+ /**
32
+ * Rotate the caller's ACL entry from the ephemeral DID onto the holder
33
+ * did:peer over DIDComm. Returns the new ACL entry. Throws if the VTA replies
34
+ * with anything other than a swap-acl-result (e.g. a problem-report).
35
+ */
36
+ export declare function swapAclDidcomm(opts: SwapAclDidcommOptions): Promise<AclSwapResult>;
37
+ export interface SwapAclRestOptions {
38
+ /** VTA REST base URL (from `#vta-rest`, e.g. `http://localhost:8100`). */
39
+ baseUrl: string;
40
+ /** Authcrypt sender = the OLD DID (the operator-granted ephemeral). */
41
+ ephemeral: Identity;
42
+ /** Signs the VP-JWT; its DID is the NEW DID (the wallet's holder did:peer). */
43
+ holderSigning: SigningIdentity;
44
+ /** The VTA's DID + keyAgreement (authcrypt recipient for `/auth/`). */
45
+ service: RemoteDidcommEndpoint;
46
+ /** The VTA's DID — the presentation `aud`. Usually `service.did`. */
47
+ vtaDid: string;
48
+ /** fetch impl (defaults to global). */
49
+ fetch?: typeof fetch;
50
+ }
51
+ /**
52
+ * REST-only swap: when a VTA advertises `#vta-rest` but no `#vta-didcomm`, the
53
+ * wallet still uses DIDComm authcrypt to authenticate (the VTA's `/auth/`
54
+ * unpacks a DIDComm message), then POSTs the swap over HTTP. Same proofs as
55
+ * the DIDComm path — the authcrypted authenticate message proves control of
56
+ * the ephemeral, the VP-JWT proves control of the holder did:peer — only the
57
+ * transport differs (direct HTTP, no mediator).
58
+ */
59
+ export declare function swapAclRest(opts: SwapAclRestOptions): Promise<AclSwapResult>;
60
+ //# sourceMappingURL=swap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swap.d.ts","sourceRoot":"","sources":["../../src/onboarding/swap.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAiD,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACnG,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAOhE,wEAAwE;AACxE,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,qBAAqB;IACpC;wDACoD;IACpD,MAAM,EAAE,oBAAoB,CAAC;IAC7B,+EAA+E;IAC/E,SAAS,EAAE,QAAQ,CAAC;IACpB,+EAA+E;IAC/E,aAAa,EAAE,eAAe,CAAC;IAC/B,oEAAoE;IACpE,OAAO,EAAE,qBAAqB,CAAC;IAC/B,iFAAiF;IACjF,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IACjC,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,aAAa,CAAC,CA+CxF;AAED,MAAM,WAAW,kBAAkB;IACjC,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,SAAS,EAAE,QAAQ,CAAC;IACpB,+EAA+E;IAC/E,aAAa,EAAE,eAAe,CAAC;IAC/B,uEAAuE;IACvE,OAAO,EAAE,qBAAqB,CAAC;IAC/B,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC,CAsElF"}
@@ -0,0 +1,148 @@
1
+ // Onboarding key rotation — the wallet's ephemeral did:key, granted into a
2
+ // VTA's ACL by the operator, is swapped onto the wallet's long-term holder
3
+ // did:peer on first connect via the canonical Trust Task `acl/swap-key/0.1`.
4
+ //
5
+ // Two proofs ride along, exactly as the VTA's swap-acl handler expects:
6
+ // - the DIDComm authcrypt envelope authenticates the **ephemeral** (the
7
+ // "currentSubject" being rotated away from), via its sender key;
8
+ // - the inner VP-JWT (`issueSwapPresentation`) — carried as `linkProof` —
9
+ // proves control of the **holder did:peer** (the "newSubject"),
10
+ // signed by its #key-2.
11
+ //
12
+ // Mirrors `requestVtaApproval`: build message → authcrypt to the VTA → forward
13
+ // via its mediator → await the reply by `thid`. DIDComm is the first-class
14
+ // path — the authcrypt envelope *is* the caller authentication, so no separate
15
+ // token round-trip is needed.
16
+ //
17
+ // Wire format: the canonical Trust Task URI `acl/swap-key/0.1` per the
18
+ // dtgwg-trust-tasks-tf registry. The VTA also accepts the legacy
19
+ // `firstperson.network/protocols/acl-management/1.0/swap-acl` URI during the
20
+ // deprecation window so older plugins keep working; new plugins SHOULD emit
21
+ // the canonical URI.
22
+ import { packAuthcrypt, packAuthcryptJson, wrapForward } from "../didcomm/index.js";
23
+ import { issueSwapPresentation } from "../siop/self-issued.js";
24
+ const ACL_SWAP_KEY = "https://trusttasks.org/spec/acl/swap-key/0.1";
25
+ const ACL_SWAP_KEY_RESPONSE = "https://trusttasks.org/spec/acl/swap-key/0.1#response";
26
+ const VTA_AUTHENTICATE = "https://affinidi.com/atm/1.0/authenticate";
27
+ const DEFAULT_TIMEOUT_MS = 30_000;
28
+ /**
29
+ * Rotate the caller's ACL entry from the ephemeral DID onto the holder
30
+ * did:peer over DIDComm. Returns the new ACL entry. Throws if the VTA replies
31
+ * with anything other than a swap-acl-result (e.g. a problem-report).
32
+ */
33
+ export async function swapAclDidcomm(opts) {
34
+ const { bridge, ephemeral, holderSigning, service, mediator, vtaDid } = opts;
35
+ const timeoutMs = opts.timeoutMs ?? DEFAULT_TIMEOUT_MS;
36
+ const linkProof = issueSwapPresentation({ holder: holderSigning, audience: vtaDid });
37
+ const requestId = globalThis.crypto.randomUUID();
38
+ const message = {
39
+ id: requestId,
40
+ type: ACL_SWAP_KEY,
41
+ from: ephemeral.did,
42
+ to: [service.did],
43
+ body: {
44
+ currentSubject: ephemeral.did,
45
+ newSubject: holderSigning.did,
46
+ linkProof,
47
+ },
48
+ };
49
+ const inner = await packAuthcrypt(message, ephemeral, [
50
+ { kid: service.keyAgreementKid, jwk: service.keyAgreementPublicJwk },
51
+ ]);
52
+ let outer = inner;
53
+ if (mediator) {
54
+ const forwardJson = wrapForward(service.did, ephemeral.did, mediator.did, inner);
55
+ outer = await packAuthcryptJson(forwardJson, ephemeral, [
56
+ { kid: mediator.keyAgreementKid, jwk: mediator.keyAgreementPublicJwk },
57
+ ]);
58
+ }
59
+ const reply = await bridge.sendAndAwaitReply(outer, requestId, { timeoutMs });
60
+ if (reply.thid !== requestId) {
61
+ throw new Error(`acl/swap-key: reply thid ${reply.thid ?? "(none)"} != request ${requestId}`);
62
+ }
63
+ if (reply.from !== vtaDid) {
64
+ throw new Error(`acl/swap-key: reply from ${reply.from ?? "(none)"} != VTA ${vtaDid}`);
65
+ }
66
+ if (reply.type !== ACL_SWAP_KEY_RESPONSE) {
67
+ // Most commonly a problem-report (e.g. the VP failed to verify, or the
68
+ // ephemeral isn't in the ACL yet).
69
+ throw new Error(`acl/swap-key: ${reply.type ?? "(no type)"} — ${JSON.stringify(reply.body ?? {})}`);
70
+ }
71
+ return (reply.body ?? {});
72
+ }
73
+ /**
74
+ * REST-only swap: when a VTA advertises `#vta-rest` but no `#vta-didcomm`, the
75
+ * wallet still uses DIDComm authcrypt to authenticate (the VTA's `/auth/`
76
+ * unpacks a DIDComm message), then POSTs the swap over HTTP. Same proofs as
77
+ * the DIDComm path — the authcrypted authenticate message proves control of
78
+ * the ephemeral, the VP-JWT proves control of the holder did:peer — only the
79
+ * transport differs (direct HTTP, no mediator).
80
+ */
81
+ export async function swapAclRest(opts) {
82
+ const { baseUrl, ephemeral, holderSigning, service, vtaDid } = opts;
83
+ const f = opts.fetch ?? fetch.bind(globalThis);
84
+ const base = baseUrl.replace(/\/+$/, "");
85
+ // 1. /auth/challenge → flat { challenge, sessionId, expiresAt } per
86
+ // `vti_common::auth::handlers::challenge::ChallengeResponse`. Fields
87
+ // are top-level, NOT nested under `data`.
88
+ const cRes = await f(`${base}/auth/challenge`, {
89
+ method: "POST",
90
+ headers: { "content-type": "application/json" },
91
+ body: JSON.stringify({ did: ephemeral.did }),
92
+ });
93
+ if (!cRes.ok) {
94
+ throw new Error(`vta /auth/challenge failed (${cRes.status}): ${await cRes.text()}`);
95
+ }
96
+ const cBody = (await cRes.json());
97
+ if (!cBody.sessionId || !cBody.challenge) {
98
+ throw new Error(`vta /auth/challenge: malformed response: ${JSON.stringify(cBody)}`);
99
+ }
100
+ // 2. Authcrypt an `atm/1.0/authenticate` message to the VTA (direct, no
101
+ // forward — there's no mediator on this transport).
102
+ const authMsg = {
103
+ id: globalThis.crypto.randomUUID(),
104
+ type: VTA_AUTHENTICATE,
105
+ from: ephemeral.did,
106
+ to: [service.did],
107
+ body: { challenge: cBody.challenge, session_id: cBody.sessionId },
108
+ };
109
+ const packed = await packAuthcrypt(authMsg, ephemeral, [
110
+ { kid: service.keyAgreementKid, jwk: service.keyAgreementPublicJwk },
111
+ ]);
112
+ // 3. POST the packed JWE to `/auth/` → AuthenticateResponse with
113
+ // { session, tokens: { accessToken, ... } } per vta-sdk's
114
+ // `protocols::auth::AuthenticateResponse`.
115
+ const aRes = await f(`${base}/auth/`, {
116
+ method: "POST",
117
+ headers: { "content-type": "application/didcomm-encrypted+json" },
118
+ body: packed,
119
+ });
120
+ if (!aRes.ok) {
121
+ throw new Error(`vta /auth/ failed (${aRes.status}): ${await aRes.text()}`);
122
+ }
123
+ const aBody = (await aRes.json());
124
+ const accessToken = aBody.tokens?.accessToken;
125
+ if (!accessToken) {
126
+ throw new Error(`vta /auth/: malformed response: ${JSON.stringify(aBody)}`);
127
+ }
128
+ // 4. POST /acl/swap with Bearer + the holder's VP-JWT (as `linkProof`) → the
129
+ // new ACL entry. Canonical Trust Task `acl/swap-key/0.1` body shape.
130
+ const linkProof = issueSwapPresentation({ holder: holderSigning, audience: vtaDid });
131
+ const sRes = await f(`${base}/acl/swap`, {
132
+ method: "POST",
133
+ headers: {
134
+ "content-type": "application/json",
135
+ authorization: `Bearer ${accessToken}`,
136
+ },
137
+ body: JSON.stringify({
138
+ currentSubject: ephemeral.did,
139
+ newSubject: holderSigning.did,
140
+ linkProof,
141
+ }),
142
+ });
143
+ if (!sRes.ok) {
144
+ throw new Error(`vta /acl/swap failed (${sRes.status}): ${await sRes.text()}`);
145
+ }
146
+ return (await sRes.json());
147
+ }
148
+ //# sourceMappingURL=swap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swap.js","sourceRoot":"","sources":["../../src/onboarding/swap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { MinimalAdminReply } from "./run.js";
2
+ /** Inputs for `installVtaMintedHolder` extracted from a VTA admin reply.
3
+ *
4
+ * The wallet persists the Ed25519 SEED only — the X25519 keyAgreement
5
+ * secret is deterministic from the seed (Montgomery clamping). That's
6
+ * the same persistence model the v3 did:peer holder uses and what
7
+ * `buildHolder` reconstructs on load. */
8
+ export interface HolderInputsFromAdminReply {
9
+ did: string;
10
+ signingKid: string;
11
+ keyAgreementKid: string;
12
+ edSeed: Uint8Array;
13
+ vtaDid: string;
14
+ vtaUrl?: string;
15
+ }
16
+ /** Pull the wallet-persistable shape out of a `MinimalAdminReply`.
17
+ *
18
+ * Decodes the multibase private keys, verifies the multicodec prefix,
19
+ * and cross-checks that:
20
+ * - the X25519 secret the VTA shipped equals `toMontgomerySecret(edSeed)`
21
+ * — defence against a buggy or hostile VTA that ships an X25519
22
+ * secret independent of the Ed25519 seed; the wallet's loader will
23
+ * *always* recompute X25519 from the seed, so the two MUST agree
24
+ * or any DIDComm authcrypt the wallet attempts later will fail in
25
+ * a deeply confusing way at AEAD-open time.
26
+ * - the Ed25519 public key the seed expands to matches the multibase
27
+ * identifier inside the `did:key` — confirms the wallet receives a
28
+ * legitimate did:key (not a forged DID claiming a key it doesn't
29
+ * control). */
30
+ export declare function holderInputsFromAdminReply(reply: MinimalAdminReply): HolderInputsFromAdminReply;
31
+ //# sourceMappingURL=adopt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adopt.d.ts","sourceRoot":"","sources":["../../src/provision/adopt.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAKlD;;;;;0CAK0C;AAC1C,MAAM,WAAW,0BAA0B;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;oBAaoB;AACpB,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,iBAAiB,GACvB,0BAA0B,CAkE5B"}