@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.
- package/README.md +129 -0
- package/dist/did/derive-signing-key.d.ts +19 -0
- package/dist/did/derive-signing-key.d.ts.map +1 -0
- package/dist/did/derive-signing-key.js +96 -0
- package/dist/did/derive-signing-key.js.map +1 -0
- package/dist/did/index.d.ts +5 -0
- package/dist/did/index.d.ts.map +1 -0
- package/dist/did/index.js +5 -0
- package/dist/did/index.js.map +1 -0
- package/dist/did/peer.d.ts +37 -0
- package/dist/did/peer.d.ts.map +1 -0
- package/dist/did/peer.js +49 -0
- package/dist/did/peer.js.map +1 -0
- package/dist/did/verification-method.d.ts +43 -0
- package/dist/did/verification-method.d.ts.map +1 -0
- package/dist/did/verification-method.js +32 -0
- package/dist/did/verification-method.js.map +1 -0
- package/dist/did/verify.d.ts +49 -0
- package/dist/did/verify.d.ts.map +1 -0
- package/dist/did/verify.js +89 -0
- package/dist/did/verify.js.map +1 -0
- package/dist/didcomm/index.d.ts +235 -0
- package/dist/didcomm/index.d.ts.map +1 -0
- package/dist/didcomm/index.js +415 -0
- package/dist/didcomm/index.js.map +1 -0
- package/dist/inbound/confirm.d.ts +50 -0
- package/dist/inbound/confirm.d.ts.map +1 -0
- package/dist/inbound/confirm.js +64 -0
- package/dist/inbound/confirm.js.map +1 -0
- package/dist/inbound/dedup.d.ts +9 -0
- package/dist/inbound/dedup.d.ts.map +1 -0
- package/dist/inbound/dedup.js +31 -0
- package/dist/inbound/dedup.js.map +1 -0
- package/dist/inbound/index.d.ts +3 -0
- package/dist/inbound/index.d.ts.map +1 -0
- package/dist/inbound/index.js +3 -0
- package/dist/inbound/index.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/onboarding/index.d.ts +2 -0
- package/dist/onboarding/index.d.ts.map +1 -0
- package/dist/onboarding/index.js +2 -0
- package/dist/onboarding/index.js.map +1 -0
- package/dist/onboarding/swap.d.ts +60 -0
- package/dist/onboarding/swap.d.ts.map +1 -0
- package/dist/onboarding/swap.js +148 -0
- package/dist/onboarding/swap.js.map +1 -0
- package/dist/provision/adopt.d.ts +31 -0
- package/dist/provision/adopt.d.ts.map +1 -0
- package/dist/provision/adopt.js +114 -0
- package/dist/provision/adopt.js.map +1 -0
- package/dist/provision/armor.d.ts +19 -0
- package/dist/provision/armor.d.ts.map +1 -0
- package/dist/provision/armor.js +243 -0
- package/dist/provision/armor.js.map +1 -0
- package/dist/provision/crc24.d.ts +5 -0
- package/dist/provision/crc24.d.ts.map +1 -0
- package/dist/provision/crc24.js +30 -0
- package/dist/provision/crc24.js.map +1 -0
- package/dist/provision/hpke.d.ts +17 -0
- package/dist/provision/hpke.d.ts.map +1 -0
- package/dist/provision/hpke.js +60 -0
- package/dist/provision/hpke.js.map +1 -0
- package/dist/provision/index.d.ts +10 -0
- package/dist/provision/index.d.ts.map +1 -0
- package/dist/provision/index.js +16 -0
- package/dist/provision/index.js.map +1 -0
- package/dist/provision/open.d.ts +28 -0
- package/dist/provision/open.d.ts.map +1 -0
- package/dist/provision/open.js +224 -0
- package/dist/provision/open.js.map +1 -0
- package/dist/provision/request.d.ts +65 -0
- package/dist/provision/request.d.ts.map +1 -0
- package/dist/provision/request.js +53 -0
- package/dist/provision/request.js.map +1 -0
- package/dist/provision/run.d.ts +76 -0
- package/dist/provision/run.d.ts.map +1 -0
- package/dist/provision/run.js +110 -0
- package/dist/provision/run.js.map +1 -0
- package/dist/provision/send.d.ts +85 -0
- package/dist/provision/send.d.ts.map +1 -0
- package/dist/provision/send.js +87 -0
- package/dist/provision/send.js.map +1 -0
- package/dist/provision/types.d.ts +110 -0
- package/dist/provision/types.d.ts.map +1 -0
- package/dist/provision/types.js +17 -0
- package/dist/provision/types.js.map +1 -0
- package/dist/rp-login/didcomm.d.ts +34 -0
- package/dist/rp-login/didcomm.d.ts.map +1 -0
- package/dist/rp-login/didcomm.js +72 -0
- package/dist/rp-login/didcomm.js.map +1 -0
- package/dist/rp-login/index.d.ts +3 -0
- package/dist/rp-login/index.d.ts.map +1 -0
- package/dist/rp-login/index.js +3 -0
- package/dist/rp-login/index.js.map +1 -0
- package/dist/rp-login/step-up.d.ts +43 -0
- package/dist/rp-login/step-up.d.ts.map +1 -0
- package/dist/rp-login/step-up.js +118 -0
- package/dist/rp-login/step-up.js.map +1 -0
- package/dist/siop/index.d.ts +3 -0
- package/dist/siop/index.d.ts.map +1 -0
- package/dist/siop/index.js +3 -0
- package/dist/siop/index.js.map +1 -0
- package/dist/siop/login-client.d.ts +29 -0
- package/dist/siop/login-client.d.ts.map +1 -0
- package/dist/siop/login-client.js +79 -0
- package/dist/siop/login-client.js.map +1 -0
- package/dist/siop/self-issued.d.ts +96 -0
- package/dist/siop/self-issued.d.ts.map +1 -0
- package/dist/siop/self-issued.js +162 -0
- package/dist/siop/self-issued.js.map +1 -0
- package/dist/store/holder-identity.d.ts +241 -0
- package/dist/store/holder-identity.d.ts.map +1 -0
- package/dist/store/holder-identity.js +441 -0
- package/dist/store/holder-identity.js.map +1 -0
- package/dist/store/index.d.ts +4 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +4 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/kv-store.d.ts +51 -0
- package/dist/store/kv-store.d.ts.map +1 -0
- package/dist/store/kv-store.js +100 -0
- package/dist/store/kv-store.js.map +1 -0
- package/dist/store/secret-wrap.d.ts +109 -0
- package/dist/store/secret-wrap.d.ts.map +1 -0
- package/dist/store/secret-wrap.js +85 -0
- package/dist/store/secret-wrap.js.map +1 -0
- package/dist/trust-tasks/index.d.ts +2 -0
- package/dist/trust-tasks/index.d.ts.map +1 -0
- package/dist/trust-tasks/index.js +2 -0
- package/dist/trust-tasks/index.js.map +1 -0
- package/dist/trust-tasks/sign.d.ts +31 -0
- package/dist/trust-tasks/sign.d.ts.map +1 -0
- package/dist/trust-tasks/sign.js +141 -0
- package/dist/trust-tasks/sign.js.map +1 -0
- package/dist/util/timing.d.ts +14 -0
- package/dist/util/timing.d.ts.map +1 -0
- package/dist/util/timing.js +20 -0
- package/dist/util/timing.js.map +1 -0
- package/dist/vault/delete.d.ts +19 -0
- package/dist/vault/delete.d.ts.map +1 -0
- package/dist/vault/delete.js +35 -0
- package/dist/vault/delete.js.map +1 -0
- package/dist/vault/index.d.ts +8 -0
- package/dist/vault/index.d.ts.map +1 -0
- package/dist/vault/index.js +7 -0
- package/dist/vault/index.js.map +1 -0
- package/dist/vault/list.d.ts +96 -0
- package/dist/vault/list.d.ts.map +1 -0
- package/dist/vault/list.js +106 -0
- package/dist/vault/list.js.map +1 -0
- package/dist/vault/proxy-login.d.ts +100 -0
- package/dist/vault/proxy-login.d.ts.map +1 -0
- package/dist/vault/proxy-login.js +106 -0
- package/dist/vault/proxy-login.js.map +1 -0
- package/dist/vault/release.d.ts +33 -0
- package/dist/vault/release.d.ts.map +1 -0
- package/dist/vault/release.js +83 -0
- package/dist/vault/release.js.map +1 -0
- package/dist/vault/sign-trust-task.d.ts +26 -0
- package/dist/vault/sign-trust-task.d.ts.map +1 -0
- package/dist/vault/sign-trust-task.js +53 -0
- package/dist/vault/sign-trust-task.js.map +1 -0
- package/dist/vault/transport.d.ts +50 -0
- package/dist/vault/transport.d.ts.map +1 -0
- package/dist/vault/transport.js +118 -0
- package/dist/vault/transport.js.map +1 -0
- package/dist/vault/upsert.d.ts +102 -0
- package/dist/vault/upsert.d.ts.map +1 -0
- package/dist/vault/upsert.js +92 -0
- package/dist/vault/upsert.js.map +1 -0
- package/dist/vta/bridge-mediator-session.d.ts +26 -0
- package/dist/vta/bridge-mediator-session.d.ts.map +1 -0
- package/dist/vta/bridge-mediator-session.js +37 -0
- package/dist/vta/bridge-mediator-session.js.map +1 -0
- package/dist/vta/bridge-memory.d.ts +80 -0
- package/dist/vta/bridge-memory.d.ts.map +1 -0
- package/dist/vta/bridge-memory.js +162 -0
- package/dist/vta/bridge-memory.js.map +1 -0
- package/dist/vta/client.d.ts +40 -0
- package/dist/vta/client.d.ts.map +1 -0
- package/dist/vta/client.js +91 -0
- package/dist/vta/client.js.map +1 -0
- package/dist/vta/contexts.d.ts +60 -0
- package/dist/vta/contexts.d.ts.map +1 -0
- package/dist/vta/contexts.js +118 -0
- package/dist/vta/contexts.js.map +1 -0
- package/dist/vta/didcomm.d.ts +57 -0
- package/dist/vta/didcomm.d.ts.map +1 -0
- package/dist/vta/didcomm.js +138 -0
- package/dist/vta/didcomm.js.map +1 -0
- package/dist/vta/errors.d.ts +20 -0
- package/dist/vta/errors.d.ts.map +1 -0
- package/dist/vta/errors.js +64 -0
- package/dist/vta/errors.js.map +1 -0
- package/dist/vta/index.d.ts +15 -0
- package/dist/vta/index.d.ts.map +1 -0
- package/dist/vta/index.js +15 -0
- package/dist/vta/index.js.map +1 -0
- package/dist/vta/mediation.d.ts +80 -0
- package/dist/vta/mediation.d.ts.map +1 -0
- package/dist/vta/mediation.js +29 -0
- package/dist/vta/mediation.js.map +1 -0
- package/dist/vta/mediator-client.d.ts +66 -0
- package/dist/vta/mediator-client.d.ts.map +1 -0
- package/dist/vta/mediator-client.js +139 -0
- package/dist/vta/mediator-client.js.map +1 -0
- package/dist/vta/pickup.d.ts +81 -0
- package/dist/vta/pickup.d.ts.map +1 -0
- package/dist/vta/pickup.js +30 -0
- package/dist/vta/pickup.js.map +1 -0
- package/dist/vta/protocol.d.ts +76 -0
- package/dist/vta/protocol.d.ts.map +1 -0
- package/dist/vta/protocol.js +30 -0
- package/dist/vta/protocol.js.map +1 -0
- package/dist/vta/smoke.d.ts +59 -0
- package/dist/vta/smoke.d.ts.map +1 -0
- package/dist/vta/smoke.js +408 -0
- package/dist/vta/smoke.js.map +1 -0
- package/dist/vta/transport.d.ts +55 -0
- package/dist/vta/transport.d.ts.map +1 -0
- package/dist/vta/transport.js +2 -0
- package/dist/vta/transport.js.map +1 -0
- package/dist/vta/types.d.ts +50 -0
- package/dist/vta/types.d.ts.map +1 -0
- package/dist/vta/types.js +2 -0
- package/dist/vta/types.js.map +1 -0
- package/dist/vta/wallet-session.d.ts +87 -0
- package/dist/vta/wallet-session.d.ts.map +1 -0
- package/dist/vta/wallet-session.js +106 -0
- package/dist/vta/wallet-session.js.map +1 -0
- package/dist/webauthn/base64url.d.ts +3 -0
- package/dist/webauthn/base64url.d.ts.map +1 -0
- package/dist/webauthn/base64url.js +17 -0
- package/dist/webauthn/base64url.js.map +1 -0
- package/dist/webauthn/index.d.ts +4 -0
- package/dist/webauthn/index.d.ts.map +1 -0
- package/dist/webauthn/index.js +4 -0
- package/dist/webauthn/index.js.map +1 -0
- package/dist/webauthn/multikey.d.ts +26 -0
- package/dist/webauthn/multikey.d.ts.map +1 -0
- package/dist/webauthn/multikey.js +91 -0
- package/dist/webauthn/multikey.js.map +1 -0
- package/dist/webauthn/register.d.ts +36 -0
- package/dist/webauthn/register.d.ts.map +1 -0
- package/dist/webauthn/register.js +77 -0
- package/dist/webauthn/register.js.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { DidcommMessageBridge } from "./transport.js";
|
|
2
|
+
export interface SmokeDidcommEnrollChallengeResult {
|
|
3
|
+
ok: boolean;
|
|
4
|
+
outerJweLength: number;
|
|
5
|
+
innerJweLength: number;
|
|
6
|
+
requestId: string;
|
|
7
|
+
forwardWrapped: boolean;
|
|
8
|
+
error?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Exercise the full DIDComm enrollment-challenge construction path
|
|
12
|
+
* end-to-end:
|
|
13
|
+
*
|
|
14
|
+
* 1. Mint stub holder / VTA / mediator identities (ephemeral).
|
|
15
|
+
* 2. Build the inner enroll-challenge plaintext message.
|
|
16
|
+
* 3. Authcrypt holder → VTA.
|
|
17
|
+
* 4. Wrap in a Routing 2.0 forward envelope addressed to the VTA.
|
|
18
|
+
* 5. Anoncrypt the forward envelope to the mediator.
|
|
19
|
+
*
|
|
20
|
+
* Returns the byte-length of each envelope plus the request id, so
|
|
21
|
+
* the PWA console can confirm both inner and outer JWEs are
|
|
22
|
+
* non-empty (i.e. crypto ran end-to-end) and that the forward
|
|
23
|
+
* wrapping actually grew the bundle (i.e. the mediator step fired).
|
|
24
|
+
*/
|
|
25
|
+
export declare function smokeBuildDidcommEnrollChallenge(): Promise<SmokeDidcommEnrollChallengeResult>;
|
|
26
|
+
export interface SmokeDidcommRoundtripResult {
|
|
27
|
+
ok: boolean;
|
|
28
|
+
recoveredChallenge?: string;
|
|
29
|
+
recoveredRpId?: string;
|
|
30
|
+
error?: string;
|
|
31
|
+
}
|
|
32
|
+
export declare function smokeDidcommVtaTransportRoundtrip(): Promise<SmokeDidcommRoundtripResult>;
|
|
33
|
+
export type { DidcommMessageBridge };
|
|
34
|
+
export interface SmokeMediatorEnrollmentResult {
|
|
35
|
+
ok: boolean;
|
|
36
|
+
routingDid?: string;
|
|
37
|
+
keylistUpdateResult?: string;
|
|
38
|
+
error?: string;
|
|
39
|
+
}
|
|
40
|
+
export declare function smokeMediatorEnrollment(): Promise<SmokeMediatorEnrollmentResult>;
|
|
41
|
+
export interface SmokeLiveDeliveryResult {
|
|
42
|
+
ok: boolean;
|
|
43
|
+
recordedFlag?: boolean;
|
|
44
|
+
ackedIdsCount?: number;
|
|
45
|
+
error?: string;
|
|
46
|
+
}
|
|
47
|
+
export declare function smokeMediatorNotifications(): Promise<SmokeLiveDeliveryResult>;
|
|
48
|
+
export interface SmokeWalletBootResult {
|
|
49
|
+
ok: boolean;
|
|
50
|
+
/** Holder DID was identical across the two boots (persistence works). */
|
|
51
|
+
didStablePerBoot?: boolean;
|
|
52
|
+
/** Fake VTA's enroll-challenge reply round-tripped through the session. */
|
|
53
|
+
recoveredChallenge?: string;
|
|
54
|
+
/** Second boot reloaded the persisted identity (didn't mint fresh). */
|
|
55
|
+
resumeReloadedIdentity?: boolean;
|
|
56
|
+
error?: string;
|
|
57
|
+
}
|
|
58
|
+
export declare function smokeWalletBoot(): Promise<SmokeWalletBootResult>;
|
|
59
|
+
//# sourceMappingURL=smoke.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smoke.d.ts","sourceRoot":"","sources":["../../src/vta/smoke.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAI3D,MAAM,WAAW,iCAAiC;IAChD,EAAE,EAAE,OAAO,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,gCAAgC,IAAI,OAAO,CAAC,iCAAiC,CAAC,CA2DnG;AAUD,MAAM,WAAW,2BAA2B;IAC1C,EAAE,EAAE,OAAO,CAAC;IACZ,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAKD,wBAAsB,iCAAiC,IAAI,OAAO,CAAC,2BAA2B,CAAC,CAiG9F;AAID,YAAY,EAAE,oBAAoB,EAAE,CAAC;AAUrC,MAAM,WAAW,6BAA6B;IAC5C,EAAE,EAAE,OAAO,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,6BAA6B,CAAC,CA8EtF;AASD,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,OAAO,CAAC;IACZ,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAmEnF;AAUD,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,OAAO,CAAC;IACZ,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,2EAA2E;IAC3E,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,uEAAuE;IACvE,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAsGtE"}
|
|
@@ -0,0 +1,408 @@
|
|
|
1
|
+
import { Identity } from "../didcomm/index.js";
|
|
2
|
+
import { InMemoryKVStore } from "../store/index.js";
|
|
3
|
+
import { InMemoryDidcommBridge } from "./bridge-memory.js";
|
|
4
|
+
import { DidcommVtaTransport } from "./didcomm.js";
|
|
5
|
+
import { CoordinateMediationProtocol, } from "./mediation.js";
|
|
6
|
+
import { MediatorClient } from "./mediator-client.js";
|
|
7
|
+
import { PickupProtocol } from "./pickup.js";
|
|
8
|
+
import { PasskeyVmTask, TRUST_TASK_ENVELOPE_TYPE, TRUST_TASK_ERROR_TYPE, } from "./protocol.js";
|
|
9
|
+
import { WalletSession } from "./wallet-session.js";
|
|
10
|
+
/**
|
|
11
|
+
* Exercise the full DIDComm enrollment-challenge construction path
|
|
12
|
+
* end-to-end:
|
|
13
|
+
*
|
|
14
|
+
* 1. Mint stub holder / VTA / mediator identities (ephemeral).
|
|
15
|
+
* 2. Build the inner enroll-challenge plaintext message.
|
|
16
|
+
* 3. Authcrypt holder → VTA.
|
|
17
|
+
* 4. Wrap in a Routing 2.0 forward envelope addressed to the VTA.
|
|
18
|
+
* 5. Anoncrypt the forward envelope to the mediator.
|
|
19
|
+
*
|
|
20
|
+
* Returns the byte-length of each envelope plus the request id, so
|
|
21
|
+
* the PWA console can confirm both inner and outer JWEs are
|
|
22
|
+
* non-empty (i.e. crypto ran end-to-end) and that the forward
|
|
23
|
+
* wrapping actually grew the bundle (i.e. the mediator step fired).
|
|
24
|
+
*/
|
|
25
|
+
export async function smokeBuildDidcommEnrollChallenge() {
|
|
26
|
+
let holder = null;
|
|
27
|
+
let vta = null;
|
|
28
|
+
let mediator = null;
|
|
29
|
+
try {
|
|
30
|
+
holder = Identity.generate("did:key:zHolderStub");
|
|
31
|
+
vta = Identity.generate("did:webvh:vta.example.com:abc");
|
|
32
|
+
mediator = Identity.generate("did:key:zMediatorStub");
|
|
33
|
+
const vtaPub = vta.publicJwk();
|
|
34
|
+
const medPub = mediator.publicJwk();
|
|
35
|
+
const bridge = {
|
|
36
|
+
sendAndAwaitReply: () => {
|
|
37
|
+
throw new Error("smoke bridge not callable — construction-only test");
|
|
38
|
+
},
|
|
39
|
+
send: () => Promise.resolve(),
|
|
40
|
+
};
|
|
41
|
+
const transport = new DidcommVtaTransport({
|
|
42
|
+
bridge,
|
|
43
|
+
holder,
|
|
44
|
+
vta: {
|
|
45
|
+
did: vta.did,
|
|
46
|
+
keyAgreementKid: vtaPub.kid,
|
|
47
|
+
keyAgreementPublicJwk: vtaPub.jwk,
|
|
48
|
+
},
|
|
49
|
+
mediator: {
|
|
50
|
+
did: mediator.did,
|
|
51
|
+
keyAgreementKid: medPub.kid,
|
|
52
|
+
keyAgreementPublicJwk: medPub.jwk,
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
const built = await transport.buildOutbound(PasskeyVmTask.enrollChallenge, {
|
|
56
|
+
did: holder.did,
|
|
57
|
+
});
|
|
58
|
+
return {
|
|
59
|
+
ok: true,
|
|
60
|
+
outerJweLength: built.outer.length,
|
|
61
|
+
innerJweLength: built.inner.length,
|
|
62
|
+
requestId: built.requestId,
|
|
63
|
+
forwardWrapped: built.outer !== built.inner,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
return {
|
|
68
|
+
ok: false,
|
|
69
|
+
outerJweLength: 0,
|
|
70
|
+
innerJweLength: 0,
|
|
71
|
+
requestId: "",
|
|
72
|
+
forwardWrapped: false,
|
|
73
|
+
error: err.message,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
finally {
|
|
77
|
+
holder?.dispose();
|
|
78
|
+
vta?.dispose();
|
|
79
|
+
mediator?.dispose();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
const FAKE_CHALLENGE = "AAECAwQFBgcICQoLDA0ODw";
|
|
83
|
+
const FAKE_RP_ID = "wallet.example.com";
|
|
84
|
+
export async function smokeDidcommVtaTransportRoundtrip() {
|
|
85
|
+
let holder = null;
|
|
86
|
+
let vta = null;
|
|
87
|
+
let mediator = null;
|
|
88
|
+
try {
|
|
89
|
+
holder = Identity.generate("did:key:zHolderStub");
|
|
90
|
+
vta = Identity.generate("did:webvh:vta.example.com:abc");
|
|
91
|
+
mediator = Identity.generate("did:key:zMediatorStub");
|
|
92
|
+
const vtaPub = vta.publicJwk();
|
|
93
|
+
const medPub = mediator.publicJwk();
|
|
94
|
+
const holderPub = holder.publicJwk();
|
|
95
|
+
const bridge = new InMemoryDidcommBridge({
|
|
96
|
+
vta,
|
|
97
|
+
mediator,
|
|
98
|
+
holderPublicJwk: holderPub,
|
|
99
|
+
vtaHandlers: {
|
|
100
|
+
// The fake VTA receives one binding-envelope type; it switches on
|
|
101
|
+
// the inner TrustTask's own `type` and replies with a trust-task
|
|
102
|
+
// result envelope (matching the real VTA's DIDComm binding).
|
|
103
|
+
[TRUST_TASK_ENVELOPE_TYPE]: (req) => {
|
|
104
|
+
const tt = req.body;
|
|
105
|
+
if (tt.type === PasskeyVmTask.enrollChallenge) {
|
|
106
|
+
const result = {
|
|
107
|
+
ceremonyId: "ceremony-001",
|
|
108
|
+
challenge: FAKE_CHALLENGE,
|
|
109
|
+
rpId: FAKE_RP_ID,
|
|
110
|
+
rpName: "Test Wallet",
|
|
111
|
+
userHandle: "dXNlci0wMDE",
|
|
112
|
+
userName: tt.payload?.did ?? "anon",
|
|
113
|
+
userDisplayName: "Test User",
|
|
114
|
+
timeoutMs: 60_000,
|
|
115
|
+
};
|
|
116
|
+
return {
|
|
117
|
+
type: TRUST_TASK_ENVELOPE_TYPE,
|
|
118
|
+
body: {
|
|
119
|
+
id: "resp-enroll-challenge",
|
|
120
|
+
type: PasskeyVmTask.enrollChallenge,
|
|
121
|
+
payload: result,
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
return {
|
|
126
|
+
type: TRUST_TASK_ENVELOPE_TYPE,
|
|
127
|
+
body: {
|
|
128
|
+
id: "resp-error",
|
|
129
|
+
type: TRUST_TASK_ERROR_TYPE,
|
|
130
|
+
payload: { code: "unsupported_type", message: tt.type ?? "" },
|
|
131
|
+
},
|
|
132
|
+
};
|
|
133
|
+
},
|
|
134
|
+
},
|
|
135
|
+
});
|
|
136
|
+
const transport = new DidcommVtaTransport({
|
|
137
|
+
bridge,
|
|
138
|
+
holder,
|
|
139
|
+
vta: {
|
|
140
|
+
did: vta.did,
|
|
141
|
+
keyAgreementKid: vtaPub.kid,
|
|
142
|
+
keyAgreementPublicJwk: vtaPub.jwk,
|
|
143
|
+
},
|
|
144
|
+
mediator: {
|
|
145
|
+
did: mediator.did,
|
|
146
|
+
keyAgreementKid: medPub.kid,
|
|
147
|
+
keyAgreementPublicJwk: medPub.jwk,
|
|
148
|
+
},
|
|
149
|
+
});
|
|
150
|
+
const challenge = await transport.requestEnrollmentChallenge(holder.did);
|
|
151
|
+
if (challenge.challenge !== FAKE_CHALLENGE) {
|
|
152
|
+
return {
|
|
153
|
+
ok: false,
|
|
154
|
+
error: `challenge mismatch: ${challenge.challenge} != ${FAKE_CHALLENGE}`,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
if (challenge.rpId !== FAKE_RP_ID) {
|
|
158
|
+
return {
|
|
159
|
+
ok: false,
|
|
160
|
+
error: `rpId mismatch: ${challenge.rpId} != ${FAKE_RP_ID}`,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
return {
|
|
164
|
+
ok: true,
|
|
165
|
+
recoveredChallenge: challenge.challenge,
|
|
166
|
+
recoveredRpId: challenge.rpId,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
catch (err) {
|
|
170
|
+
return { ok: false, error: err.message };
|
|
171
|
+
}
|
|
172
|
+
finally {
|
|
173
|
+
holder?.dispose();
|
|
174
|
+
vta?.dispose();
|
|
175
|
+
mediator?.dispose();
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
const FAKE_ROUTING_DID = "did:key:zMediatorRouting";
|
|
179
|
+
export async function smokeMediatorEnrollment() {
|
|
180
|
+
let holder = null;
|
|
181
|
+
let mediator = null;
|
|
182
|
+
try {
|
|
183
|
+
holder = Identity.generate("did:key:zHolderForMediation");
|
|
184
|
+
mediator = Identity.generate("did:key:zMediatorEnrollment");
|
|
185
|
+
const mediatorPub = mediator.publicJwk();
|
|
186
|
+
const holderPub = holder.publicJwk();
|
|
187
|
+
const bridge = new InMemoryDidcommBridge({
|
|
188
|
+
mediator,
|
|
189
|
+
holderPublicJwk: holderPub,
|
|
190
|
+
mediatorHandlers: {
|
|
191
|
+
[CoordinateMediationProtocol.mediateRequest]: () => {
|
|
192
|
+
const reply = { routing_did: [FAKE_ROUTING_DID] };
|
|
193
|
+
return { type: CoordinateMediationProtocol.mediateGrant, body: reply };
|
|
194
|
+
},
|
|
195
|
+
[CoordinateMediationProtocol.keylistUpdate]: (req) => {
|
|
196
|
+
const body = req.body;
|
|
197
|
+
const updated = body.updates?.map((u) => ({
|
|
198
|
+
recipient_did: u.recipient_did,
|
|
199
|
+
action: u.action,
|
|
200
|
+
result: "success",
|
|
201
|
+
})) ?? [];
|
|
202
|
+
const reply = { updated };
|
|
203
|
+
return {
|
|
204
|
+
type: CoordinateMediationProtocol.keylistUpdateResponse,
|
|
205
|
+
body: reply,
|
|
206
|
+
};
|
|
207
|
+
},
|
|
208
|
+
},
|
|
209
|
+
});
|
|
210
|
+
const client = new MediatorClient({
|
|
211
|
+
bridge,
|
|
212
|
+
holder,
|
|
213
|
+
mediator: {
|
|
214
|
+
did: mediator.did,
|
|
215
|
+
keyAgreementKid: mediatorPub.kid,
|
|
216
|
+
keyAgreementPublicJwk: mediatorPub.jwk,
|
|
217
|
+
},
|
|
218
|
+
timeoutMs: 5_000,
|
|
219
|
+
});
|
|
220
|
+
const grant = await client.requestMediation();
|
|
221
|
+
if (grant.routing_did[0] !== FAKE_ROUTING_DID) {
|
|
222
|
+
return {
|
|
223
|
+
ok: false,
|
|
224
|
+
error: `routing_did mismatch: ${grant.routing_did[0]} != ${FAKE_ROUTING_DID}`,
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
const updateResp = await client.updateKeylist([
|
|
228
|
+
{ recipient_did: holder.did, action: "add" },
|
|
229
|
+
]);
|
|
230
|
+
const first = updateResp.updated[0];
|
|
231
|
+
if (!first || first.result !== "success") {
|
|
232
|
+
return {
|
|
233
|
+
ok: false,
|
|
234
|
+
error: `keylist-update did not return success (${first?.result ?? "(none)"})`,
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
return {
|
|
238
|
+
ok: true,
|
|
239
|
+
routingDid: grant.routing_did[0],
|
|
240
|
+
keylistUpdateResult: first.result,
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
catch (err) {
|
|
244
|
+
return { ok: false, error: err.message };
|
|
245
|
+
}
|
|
246
|
+
finally {
|
|
247
|
+
holder?.dispose();
|
|
248
|
+
mediator?.dispose();
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
export async function smokeMediatorNotifications() {
|
|
252
|
+
let holder = null;
|
|
253
|
+
let mediator = null;
|
|
254
|
+
try {
|
|
255
|
+
holder = Identity.generate("did:key:zHolderNotify");
|
|
256
|
+
mediator = Identity.generate("did:key:zMediatorNotify");
|
|
257
|
+
const mediatorPub = mediator.publicJwk();
|
|
258
|
+
const holderPub = holder.publicJwk();
|
|
259
|
+
let recordedFlag;
|
|
260
|
+
let ackedIds = [];
|
|
261
|
+
const bridge = new InMemoryDidcommBridge({
|
|
262
|
+
mediator,
|
|
263
|
+
holderPublicJwk: holderPub,
|
|
264
|
+
mediatorHandlers: {
|
|
265
|
+
[PickupProtocol.liveDeliveryChange]: (req) => {
|
|
266
|
+
const body = req.body;
|
|
267
|
+
recordedFlag = body.live_delivery;
|
|
268
|
+
return null; // notification — no reply
|
|
269
|
+
},
|
|
270
|
+
[PickupProtocol.messagesReceived]: (req) => {
|
|
271
|
+
const body = req.body;
|
|
272
|
+
ackedIds = body.message_id_list ?? [];
|
|
273
|
+
return null; // notification — no reply
|
|
274
|
+
},
|
|
275
|
+
},
|
|
276
|
+
});
|
|
277
|
+
const client = new MediatorClient({
|
|
278
|
+
bridge,
|
|
279
|
+
holder,
|
|
280
|
+
mediator: {
|
|
281
|
+
did: mediator.did,
|
|
282
|
+
keyAgreementKid: mediatorPub.kid,
|
|
283
|
+
keyAgreementPublicJwk: mediatorPub.jwk,
|
|
284
|
+
},
|
|
285
|
+
});
|
|
286
|
+
await client.setLiveDelivery(true);
|
|
287
|
+
if (recordedFlag !== true) {
|
|
288
|
+
return {
|
|
289
|
+
ok: false,
|
|
290
|
+
error: `expected recordedFlag=true, got ${recordedFlag}`,
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
await client.acknowledgeMessages(["msg-1", "msg-2", "msg-3"]);
|
|
294
|
+
if (ackedIds.length !== 3) {
|
|
295
|
+
return {
|
|
296
|
+
ok: false,
|
|
297
|
+
error: `expected 3 acked ids, got ${ackedIds.length}`,
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
return {
|
|
301
|
+
ok: true,
|
|
302
|
+
recordedFlag,
|
|
303
|
+
ackedIdsCount: ackedIds.length,
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
catch (err) {
|
|
307
|
+
return { ok: false, error: err.message };
|
|
308
|
+
}
|
|
309
|
+
finally {
|
|
310
|
+
holder?.dispose();
|
|
311
|
+
mediator?.dispose();
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
export async function smokeWalletBoot() {
|
|
315
|
+
// Identities representing the network the wallet talks to. These
|
|
316
|
+
// would normally be resolved from the VTA's + mediator's DID docs.
|
|
317
|
+
let vtaIdentity = null;
|
|
318
|
+
let mediatorIdentity = null;
|
|
319
|
+
let session1 = null;
|
|
320
|
+
let session2 = null;
|
|
321
|
+
try {
|
|
322
|
+
vtaIdentity = Identity.generate("did:webvh:vta.example.com:abc");
|
|
323
|
+
mediatorIdentity = Identity.generate("did:key:zMediatorWallet");
|
|
324
|
+
const vtaPub = vtaIdentity.publicJwk();
|
|
325
|
+
const medPub = mediatorIdentity.publicJwk();
|
|
326
|
+
const store = new InMemoryKVStore();
|
|
327
|
+
const vtaEndpoint = {
|
|
328
|
+
did: vtaIdentity.did,
|
|
329
|
+
keyAgreementKid: vtaPub.kid,
|
|
330
|
+
keyAgreementPublicJwk: vtaPub.jwk,
|
|
331
|
+
};
|
|
332
|
+
const mediatorEndpoint = {
|
|
333
|
+
did: mediatorIdentity.did,
|
|
334
|
+
keyAgreementKid: medPub.kid,
|
|
335
|
+
keyAgreementPublicJwk: medPub.jwk,
|
|
336
|
+
};
|
|
337
|
+
// The in-memory bridge needs the holder's public JWK to unpack its
|
|
338
|
+
// authcrypt requests, so we pre-resolve the holder once (minting +
|
|
339
|
+
// persisting it) before building the bridge. Both WalletSessions
|
|
340
|
+
// then reload that same persisted holder.
|
|
341
|
+
const { generateOrLoadHolderIdentity: gen } = await import("../store/index.js");
|
|
342
|
+
const peek = await gen(store);
|
|
343
|
+
const holderPub = peek.identity.publicJwk();
|
|
344
|
+
peek.identity.dispose();
|
|
345
|
+
const makeBridge = () => new InMemoryDidcommBridge({
|
|
346
|
+
vta: vtaIdentity,
|
|
347
|
+
mediator: mediatorIdentity,
|
|
348
|
+
holderPublicJwk: holderPub,
|
|
349
|
+
vtaHandlers: {
|
|
350
|
+
[TRUST_TASK_ENVELOPE_TYPE]: () => ({
|
|
351
|
+
type: TRUST_TASK_ENVELOPE_TYPE,
|
|
352
|
+
body: {
|
|
353
|
+
id: "resp-wallet-boot",
|
|
354
|
+
type: PasskeyVmTask.enrollChallenge,
|
|
355
|
+
payload: {
|
|
356
|
+
ceremonyId: "ceremony-wallet-boot",
|
|
357
|
+
challenge: "Y2hhbGwtd2FsbGV0LWJvb3Q",
|
|
358
|
+
rpId: "wallet.example.com",
|
|
359
|
+
rpName: "Wallet Boot Smoke",
|
|
360
|
+
userHandle: "dXNlcg",
|
|
361
|
+
userName: "alice",
|
|
362
|
+
userDisplayName: "Alice",
|
|
363
|
+
timeoutMs: 60_000,
|
|
364
|
+
},
|
|
365
|
+
},
|
|
366
|
+
}),
|
|
367
|
+
},
|
|
368
|
+
});
|
|
369
|
+
// ---- First boot ----
|
|
370
|
+
session1 = await WalletSession.withBridge({
|
|
371
|
+
store,
|
|
372
|
+
bridge: makeBridge(),
|
|
373
|
+
vta: vtaEndpoint,
|
|
374
|
+
mediator: mediatorEndpoint,
|
|
375
|
+
timeoutMs: 5_000,
|
|
376
|
+
});
|
|
377
|
+
const holderDid1 = session1.state().holder.did;
|
|
378
|
+
const challenge1 = await session1
|
|
379
|
+
.transport()
|
|
380
|
+
.requestEnrollmentChallenge(holderDid1);
|
|
381
|
+
session1.close();
|
|
382
|
+
// ---- Second boot: resume from the persisted identity ----
|
|
383
|
+
session2 = await WalletSession.withBridge({
|
|
384
|
+
store,
|
|
385
|
+
bridge: makeBridge(),
|
|
386
|
+
vta: vtaEndpoint,
|
|
387
|
+
mediator: mediatorEndpoint,
|
|
388
|
+
timeoutMs: 5_000,
|
|
389
|
+
});
|
|
390
|
+
const state2 = session2.state();
|
|
391
|
+
const holderDid2 = state2.holder.did;
|
|
392
|
+
session2.close();
|
|
393
|
+
return {
|
|
394
|
+
ok: true,
|
|
395
|
+
didStablePerBoot: holderDid1 === holderDid2,
|
|
396
|
+
recoveredChallenge: challenge1.challenge,
|
|
397
|
+
resumeReloadedIdentity: !state2.freshlyMintedIdentity,
|
|
398
|
+
};
|
|
399
|
+
}
|
|
400
|
+
catch (err) {
|
|
401
|
+
return { ok: false, error: err.message };
|
|
402
|
+
}
|
|
403
|
+
finally {
|
|
404
|
+
vtaIdentity?.dispose();
|
|
405
|
+
mediatorIdentity?.dispose();
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
//# sourceMappingURL=smoke.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smoke.js","sourceRoot":"","sources":["../../src/vta/smoke.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { EnrollmentChallengeResponse, EnrollmentSubmitRequest, EnrollmentSubmitResponse, PasskeyList } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Transport-neutral passkey-management surface. Both the REST
|
|
4
|
+
* (`VtaClient`) and DIDComm (`DidcommVtaTransport`) implementations
|
|
5
|
+
* satisfy this — callers depend on the interface and pick the
|
|
6
|
+
* concrete transport based on what the VTA advertises.
|
|
7
|
+
*/
|
|
8
|
+
export interface VtaTransport {
|
|
9
|
+
requestEnrollmentChallenge(did: string): Promise<EnrollmentChallengeResponse>;
|
|
10
|
+
submitPasskeyEnrollment(req: EnrollmentSubmitRequest): Promise<EnrollmentSubmitResponse>;
|
|
11
|
+
listPasskeys(did: string): Promise<PasskeyList>;
|
|
12
|
+
removePasskey(did: string, fragment: string): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* An inbound DIDComm message after the bridge has decrypted it. The
|
|
16
|
+
* bridge owns unpacking — and, for the mediator-session bridge,
|
|
17
|
+
* authentication: only successfully sender-authenticated authcrypt
|
|
18
|
+
* frames are ever surfaced (anoncrypt frames are dropped). Callers
|
|
19
|
+
* validate `type` / `thid` / `from` on this shape.
|
|
20
|
+
*/
|
|
21
|
+
export interface DidcommReply {
|
|
22
|
+
type?: string;
|
|
23
|
+
thid?: string;
|
|
24
|
+
from?: string;
|
|
25
|
+
body?: unknown;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Seam for the DIDComm transport's send/receive plumbing. Lets us
|
|
29
|
+
* separate "build the right DIDComm message bytes" from "actually
|
|
30
|
+
* push them through a mediator". The first concern lives in
|
|
31
|
+
* `@openvtc/pnm-core`; the second is the bridge implementation.
|
|
32
|
+
*
|
|
33
|
+
* Implementations transmit packed JWE bytes to the configured
|
|
34
|
+
* mediator and surface the **decrypted** reply. `sendAndAwaitReply`
|
|
35
|
+
* registers a reply expectation by `thid`; `send` is fire-and-forget
|
|
36
|
+
* for DIDComm notifications.
|
|
37
|
+
*/
|
|
38
|
+
export interface DidcommMessageBridge {
|
|
39
|
+
sendAndAwaitReply(
|
|
40
|
+
/** Outer JWE (forward envelope) to push to the mediator. */
|
|
41
|
+
outerPackedJwe: string,
|
|
42
|
+
/** Expected `thid` of the reply, so the bridge can demultiplex. */
|
|
43
|
+
expectThreadId: string, options?: {
|
|
44
|
+
timeoutMs?: number;
|
|
45
|
+
}): Promise<DidcommReply>;
|
|
46
|
+
/**
|
|
47
|
+
* Fire-and-forget. The DIDComm protocol message in
|
|
48
|
+
* `outerPackedJwe` is one-way (notification) — caller doesn't
|
|
49
|
+
* expect a reply. Implementations resolve once the bytes are
|
|
50
|
+
* handed off to the underlying transport; they do not track
|
|
51
|
+
* delivery acknowledgement at this layer.
|
|
52
|
+
*/
|
|
53
|
+
send(outerPackedJwe: string): Promise<void>;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/vta/transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,2BAA2B,EAC3B,uBAAuB,EACvB,wBAAwB,EACxB,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAC9E,uBAAuB,CAAC,GAAG,EAAE,uBAAuB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACzF,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAChD,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7D;AAED;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,oBAAoB;IACnC,iBAAiB;IACf,4DAA4D;IAC5D,cAAc,EAAE,MAAM;IACtB,mEAAmE;IACnE,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAC/B,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzB;;;;;;OAMG;IACH,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/vta/transport.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { PasskeyVerificationMethod } from "../did/verification-method.js";
|
|
2
|
+
/**
|
|
3
|
+
* Wire types for VTA passkey-management operations. Shared by the
|
|
4
|
+
* REST transport (`VtaClient`) and the DIDComm transport
|
|
5
|
+
* (`DidcommVtaTransport`) so both deliver the same logical surface.
|
|
6
|
+
*/
|
|
7
|
+
export interface EnrollmentChallengeResponse {
|
|
8
|
+
/** Opaque ceremony id bound server-side to this challenge. Echo it
|
|
9
|
+
* back on submit so the VTA can correlate the WebAuthn registration
|
|
10
|
+
* ceremony (a WebAuthn security requirement). */
|
|
11
|
+
ceremonyId: string;
|
|
12
|
+
/** Server-issued challenge (base64url). The browser passes the raw bytes
|
|
13
|
+
* to `navigator.credentials.create`; the VTA verifies the returned
|
|
14
|
+
* clientDataJSON against the same value. */
|
|
15
|
+
challenge: string;
|
|
16
|
+
/** Relying-Party identifier — typically the VTA's hostname. */
|
|
17
|
+
rpId: string;
|
|
18
|
+
rpName: string;
|
|
19
|
+
/** Stable user handle to associate with the credential. Bytes the VTA
|
|
20
|
+
* picked; opaque to the client. */
|
|
21
|
+
userHandle: string;
|
|
22
|
+
userName: string;
|
|
23
|
+
userDisplayName: string;
|
|
24
|
+
/** Server-suggested timeout in milliseconds. */
|
|
25
|
+
timeoutMs?: number;
|
|
26
|
+
}
|
|
27
|
+
export interface EnrollmentSubmitRequest {
|
|
28
|
+
did: string;
|
|
29
|
+
/** Ceremony id from the matching `EnrollmentChallengeResponse`. */
|
|
30
|
+
ceremonyId: string;
|
|
31
|
+
credentialId: string;
|
|
32
|
+
publicKeyMultibase: string;
|
|
33
|
+
coseAlgorithm: number;
|
|
34
|
+
/** Raw WebAuthn fields the VTA needs for its own verification. */
|
|
35
|
+
attestationObject: string;
|
|
36
|
+
clientDataJson: string;
|
|
37
|
+
authenticatorData: string;
|
|
38
|
+
transports: AuthenticatorTransport[];
|
|
39
|
+
/** Optional human-friendly label. */
|
|
40
|
+
label?: string;
|
|
41
|
+
}
|
|
42
|
+
export interface EnrollmentSubmitResponse {
|
|
43
|
+
verificationMethod: PasskeyVerificationMethod;
|
|
44
|
+
/** WebVH log entry index that recorded the change. */
|
|
45
|
+
webvhVersion: string;
|
|
46
|
+
}
|
|
47
|
+
export interface PasskeyList {
|
|
48
|
+
verificationMethods: PasskeyVerificationMethod[];
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/vta/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE/E;;;;GAIG;AAEH,MAAM,WAAW,2BAA2B;IAC1C;;sDAEkD;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB;;iDAE6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf;wCACoC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,mEAAmE;IACnE,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,sBAAsB,EAAE,CAAC;IACrC,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,kBAAkB,EAAE,yBAAyB,CAAC;IAC9C,sDAAsD;IACtD,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,mBAAmB,EAAE,yBAAyB,EAAE,CAAC;CAClD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/vta/types.ts"],"names":[],"mappings":""}
|