@openvtc/trust-tasks 0.20.8 → 0.21.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.
- package/CHANGELOG.md +254 -0
- package/dist/_shared/components.d.ts +299 -2
- package/dist/_shared/components.d.ts.map +1 -1
- package/dist/auth/passkey/enroll/invite/0.2/payload.d.ts +456 -0
- package/dist/auth/passkey/enroll/invite/0.2/payload.d.ts.map +1 -0
- package/dist/auth/passkey/enroll/invite/0.2/payload.js +248 -0
- package/dist/auth/passkey/enroll/invite/0.2/payload.js.map +1 -0
- package/dist/auth/passkey/enroll/redeem/finish/0.1/payload.d.ts +728 -0
- package/dist/auth/passkey/enroll/redeem/finish/0.1/payload.d.ts.map +1 -0
- package/dist/auth/passkey/enroll/redeem/finish/0.1/payload.js +430 -0
- package/dist/auth/passkey/enroll/redeem/finish/0.1/payload.js.map +1 -0
- package/dist/auth/passkey/enroll/redeem/start/0.1/payload.d.ts +1043 -0
- package/dist/auth/passkey/enroll/redeem/start/0.1/payload.d.ts.map +1 -0
- package/dist/auth/passkey/enroll/redeem/start/0.1/payload.js +628 -0
- package/dist/auth/passkey/enroll/redeem/start/0.1/payload.js.map +1 -0
- package/dist/auth/passkey/revoke/finish/0.2/payload.d.ts +533 -0
- package/dist/auth/passkey/revoke/finish/0.2/payload.d.ts.map +1 -0
- package/dist/auth/passkey/revoke/finish/0.2/payload.js +315 -0
- package/dist/auth/passkey/revoke/finish/0.2/payload.js.map +1 -0
- package/dist/auth/passkey/revoke/start/0.2/payload.d.ts +511 -0
- package/dist/auth/passkey/revoke/start/0.2/payload.d.ts.map +1 -0
- package/dist/auth/passkey/revoke/start/0.2/payload.js +297 -0
- package/dist/auth/passkey/revoke/start/0.2/payload.js.map +1 -0
- package/dist/auth/step-up/approve-response/0.5/payload.d.ts +887 -0
- package/dist/auth/step-up/approve-response/0.5/payload.d.ts.map +1 -0
- package/dist/auth/step-up/approve-response/0.5/payload.js +504 -0
- package/dist/auth/step-up/approve-response/0.5/payload.js.map +1 -0
- package/dist/device/list/0.1/payload.d.ts +4 -4
- package/dist/device/list/0.1/payload.d.ts.map +1 -1
- package/dist/device/list/0.1/payload.js +4 -2
- package/dist/device/list/0.1/payload.js.map +1 -1
- package/dist/device/list/0.2/payload.d.ts +4 -4
- package/dist/device/list/0.2/payload.d.ts.map +1 -1
- package/dist/device/list/0.2/payload.js +4 -2
- package/dist/device/list/0.2/payload.js.map +1 -1
- package/dist/device/register/0.1/payload.d.ts +4 -4
- package/dist/device/register/0.1/payload.d.ts.map +1 -1
- package/dist/device/register/0.1/payload.js +4 -2
- package/dist/device/register/0.1/payload.js.map +1 -1
- package/dist/device/register/0.2/payload.d.ts +4 -4
- package/dist/device/register/0.2/payload.d.ts.map +1 -1
- package/dist/device/register/0.2/payload.js +4 -2
- package/dist/device/register/0.2/payload.js.map +1 -1
- package/dist/git-ns/_shared/0.4/git-ns.d.ts +16 -0
- package/dist/git-ns/_shared/0.4/git-ns.d.ts.map +1 -0
- package/dist/git-ns/_shared/0.4/git-ns.js +6 -0
- package/dist/git-ns/_shared/0.4/git-ns.js.map +1 -0
- package/dist/git-ns/account/link-status/0.1/payload.d.ts +2 -2
- package/dist/git-ns/account/link-status/0.1/payload.js +2 -2
- package/dist/git-ns/account/link-status/0.1/payload.js.map +1 -1
- package/dist/git-ns/account/unlink/0.1/payload.d.ts +411 -0
- package/dist/git-ns/account/unlink/0.1/payload.d.ts.map +1 -0
- package/dist/git-ns/account/unlink/0.1/payload.js +228 -0
- package/dist/git-ns/account/unlink/0.1/payload.js.map +1 -0
- package/dist/git-ns/bridge/event/0.3/payload.d.ts +1682 -0
- package/dist/git-ns/bridge/event/0.3/payload.d.ts.map +1 -0
- package/dist/git-ns/bridge/event/0.3/payload.js +971 -0
- package/dist/git-ns/bridge/event/0.3/payload.js.map +1 -0
- package/dist/git-ns/bridge/job/0.4/payload.d.ts +1068 -0
- package/dist/git-ns/bridge/job/0.4/payload.d.ts.map +1 -0
- package/dist/git-ns/bridge/job/0.4/payload.js +573 -0
- package/dist/git-ns/bridge/job/0.4/payload.js.map +1 -0
- package/dist/git-ns/drift/resolve/0.3/payload.d.ts +1072 -0
- package/dist/git-ns/drift/resolve/0.3/payload.d.ts.map +1 -0
- package/dist/git-ns/drift/resolve/0.3/payload.js +634 -0
- package/dist/git-ns/drift/resolve/0.3/payload.js.map +1 -0
- package/dist/git-ns/namespace/reseat/0.3/payload.d.ts +515 -0
- package/dist/git-ns/namespace/reseat/0.3/payload.d.ts.map +1 -0
- package/dist/git-ns/namespace/reseat/0.3/payload.js +296 -0
- package/dist/git-ns/namespace/reseat/0.3/payload.js.map +1 -0
- package/dist/git-ns/repo/create/0.3/payload.d.ts +1101 -0
- package/dist/git-ns/repo/create/0.3/payload.d.ts.map +1 -0
- package/dist/git-ns/repo/create/0.3/payload.js +646 -0
- package/dist/git-ns/repo/create/0.3/payload.js.map +1 -0
- package/dist/git-ns/right/break-glass/0.1/payload.d.ts +685 -0
- package/dist/git-ns/right/break-glass/0.1/payload.d.ts.map +1 -0
- package/dist/git-ns/right/break-glass/0.1/payload.js +397 -0
- package/dist/git-ns/right/break-glass/0.1/payload.js.map +1 -0
- package/dist/git-ns/right/break-glass-notice/0.1/payload.d.ts +384 -0
- package/dist/git-ns/right/break-glass-notice/0.1/payload.d.ts.map +1 -0
- package/dist/git-ns/right/break-glass-notice/0.1/payload.js +216 -0
- package/dist/git-ns/right/break-glass-notice/0.1/payload.js.map +1 -0
- package/dist/git-ns/right/grant/0.3/payload.d.ts +678 -0
- package/dist/git-ns/right/grant/0.3/payload.d.ts.map +1 -0
- package/dist/git-ns/right/grant/0.3/payload.js +383 -0
- package/dist/git-ns/right/grant/0.3/payload.js.map +1 -0
- package/dist/git-ns/right/ratify/0.1/payload.d.ts +702 -0
- package/dist/git-ns/right/ratify/0.1/payload.d.ts.map +1 -0
- package/dist/git-ns/right/ratify/0.1/payload.js +404 -0
- package/dist/git-ns/right/ratify/0.1/payload.js.map +1 -0
- package/dist/git-ns/right/revoke/0.3/payload.d.ts +664 -0
- package/dist/git-ns/right/revoke/0.3/payload.d.ts.map +1 -0
- package/dist/git-ns/right/revoke/0.3/payload.js +378 -0
- package/dist/git-ns/right/revoke/0.3/payload.js.map +1 -0
- package/dist/git-ns/roles/reproject/0.1/payload.d.ts +325 -0
- package/dist/git-ns/roles/reproject/0.1/payload.d.ts.map +1 -0
- package/dist/git-ns/roles/reproject/0.1/payload.js +176 -0
- package/dist/git-ns/roles/reproject/0.1/payload.js.map +1 -0
- package/dist/git-ns/view/0.1/payload.d.ts +2 -2
- package/dist/git-ns/view/0.1/payload.js +2 -2
- package/dist/git-ns/view/0.1/payload.js.map +1 -1
- package/dist/git-ns/view/0.2/payload.d.ts +2 -2
- package/dist/git-ns/view/0.2/payload.js +2 -2
- package/dist/git-ns/view/0.2/payload.js.map +1 -1
- package/dist/git-ns/view/0.3/payload.d.ts +2 -2
- package/dist/git-ns/view/0.3/payload.js +2 -2
- package/dist/git-ns/view/0.3/payload.js.map +1 -1
- package/dist/git-ns/view/0.4/payload.d.ts +1696 -0
- package/dist/git-ns/view/0.4/payload.d.ts.map +1 -0
- package/dist/git-ns/view/0.4/payload.js +1012 -0
- package/dist/git-ns/view/0.4/payload.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -1
- package/dist/messaging/message/status/0.1/payload.d.ts +372 -0
- package/dist/messaging/message/status/0.1/payload.d.ts.map +1 -0
- package/dist/messaging/message/status/0.1/payload.js +214 -0
- package/dist/messaging/message/status/0.1/payload.js.map +1 -0
- package/dist/vta/_shared/0.3/did-key-roles.d.ts +16 -0
- package/dist/vta/_shared/0.3/did-key-roles.d.ts.map +1 -0
- package/dist/vta/_shared/0.3/did-key-roles.js +6 -0
- package/dist/vta/_shared/0.3/did-key-roles.js.map +1 -0
- package/dist/vta/attestation/mnemonic-export/1.0/payload.d.ts +326 -0
- package/dist/vta/attestation/mnemonic-export/1.0/payload.d.ts.map +1 -0
- package/dist/vta/attestation/mnemonic-export/1.0/payload.js +175 -0
- package/dist/vta/attestation/mnemonic-export/1.0/payload.js.map +1 -0
- package/dist/vta/webvh/dids/keys/add/1.0/payload.d.ts +1914 -0
- package/dist/vta/webvh/dids/keys/add/1.0/payload.d.ts.map +1 -0
- package/dist/vta/webvh/dids/keys/add/1.0/payload.js +1128 -0
- package/dist/vta/webvh/dids/keys/add/1.0/payload.js.map +1 -0
- package/dist/vta/webvh/dids/keys/list/1.0/payload.d.ts +1603 -0
- package/dist/vta/webvh/dids/keys/list/1.0/payload.d.ts.map +1 -0
- package/dist/vta/webvh/dids/keys/list/1.0/payload.js +942 -0
- package/dist/vta/webvh/dids/keys/list/1.0/payload.js.map +1 -0
- package/dist/vta/webvh/dids/keys/retire/1.0/payload.d.ts +1914 -0
- package/dist/vta/webvh/dids/keys/retire/1.0/payload.d.ts.map +1 -0
- package/dist/vta/webvh/dids/keys/retire/1.0/payload.js +1123 -0
- package/dist/vta/webvh/dids/keys/retire/1.0/payload.js.map +1 -0
- package/dist/vta/webvh/dids/keys/revoke/1.0/payload.d.ts +2021 -0
- package/dist/vta/webvh/dids/keys/revoke/1.0/payload.d.ts.map +1 -0
- package/dist/vta/webvh/dids/keys/revoke/1.0/payload.js +1168 -0
- package/dist/vta/webvh/dids/keys/revoke/1.0/payload.js.map +1 -0
- package/dist/vta/webvh/dids/rotate-keys/2.0/payload.d.ts +1992 -0
- package/dist/vta/webvh/dids/rotate-keys/2.0/payload.d.ts.map +1 -0
- package/dist/vta/webvh/dids/rotate-keys/2.0/payload.js +1151 -0
- package/dist/vta/webvh/dids/rotate-keys/2.0/payload.js.map +1 -0
- package/dist/vta/webvh/dids/update/2.0/payload.d.ts +1062 -0
- package/dist/vta/webvh/dids/update/2.0/payload.d.ts.map +1 -0
- package/dist/vta/webvh/dids/update/2.0/payload.js +616 -0
- package/dist/vta/webvh/dids/update/2.0/payload.js.map +1 -0
- package/dist/vtc/credentials/reissue/0.1/payload.d.ts +502 -0
- package/dist/vtc/credentials/reissue/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/credentials/reissue/0.1/payload.js +282 -0
- package/dist/vtc/credentials/reissue/0.1/payload.js.map +1 -0
- package/dist/vtc/members/personhood/challenge/0.1/payload.d.ts +2 -2
- package/dist/vtc/members/personhood/challenge/0.1/payload.js +2 -2
- package/dist/vtc/members/personhood/challenge/0.1/payload.js.map +1 -1
- package/dist/vtc/vetting/vetters/profile/0.1/payload.d.ts +2 -2
- package/dist/vtc/vetting/vetters/profile/0.1/payload.js +2 -2
- package/dist/vtc/vetting/vetters/profile/0.1/payload.js.map +1 -1
- package/dist/vtc/vetting/vetters/resend/0.1/payload.d.ts +2 -2
- package/dist/vtc/vetting/vetters/resend/0.1/payload.js +2 -2
- package/dist/vtc/vetting/vetters/resend/0.1/payload.js.map +1 -1
- package/package.json +1 -1
- package/src/_shared/components.ts +313 -2
- package/src/auth/passkey/enroll/invite/0.2/payload.ts +325 -0
- package/src/auth/passkey/enroll/redeem/finish/0.1/payload.ts +499 -0
- package/src/auth/passkey/enroll/redeem/start/0.1/payload.ts +700 -0
- package/src/auth/passkey/revoke/finish/0.2/payload.ts +379 -0
- package/src/auth/passkey/revoke/start/0.2/payload.ts +349 -0
- package/src/auth/step-up/approve-response/0.5/payload.ts +593 -0
- package/src/device/list/0.1/payload.ts +4 -2
- package/src/device/list/0.2/payload.ts +4 -2
- package/src/device/register/0.1/payload.ts +4 -2
- package/src/device/register/0.2/payload.ts +4 -2
- package/src/git-ns/_shared/0.4/git-ns.ts +17 -0
- package/src/git-ns/account/link-status/0.1/payload.ts +2 -2
- package/src/git-ns/account/unlink/0.1/payload.ts +274 -0
- package/src/git-ns/bridge/event/0.3/payload.ts +1132 -0
- package/src/git-ns/bridge/job/0.4/payload.ts +691 -0
- package/src/git-ns/drift/resolve/0.3/payload.ts +707 -0
- package/src/git-ns/namespace/reseat/0.3/payload.ts +342 -0
- package/src/git-ns/repo/create/0.3/payload.ts +706 -0
- package/src/git-ns/right/break-glass/0.1/payload.ts +443 -0
- package/src/git-ns/right/break-glass-notice/0.1/payload.ts +258 -0
- package/src/git-ns/right/grant/0.3/payload.ts +434 -0
- package/src/git-ns/right/ratify/0.1/payload.ts +455 -0
- package/src/git-ns/right/revoke/0.3/payload.ts +425 -0
- package/src/git-ns/roles/reproject/0.1/payload.ts +220 -0
- package/src/git-ns/view/0.1/payload.ts +2 -2
- package/src/git-ns/view/0.2/payload.ts +2 -2
- package/src/git-ns/view/0.3/payload.ts +2 -2
- package/src/git-ns/view/0.4/payload.ts +1075 -0
- package/src/index.ts +30 -0
- package/src/messaging/message/status/0.1/payload.ts +270 -0
- package/src/vta/_shared/0.3/did-key-roles.ts +17 -0
- package/src/vta/attestation/mnemonic-export/1.0/payload.ts +232 -0
- package/src/vta/webvh/dids/keys/add/1.0/payload.ts +1217 -0
- package/src/vta/webvh/dids/keys/list/1.0/payload.ts +1004 -0
- package/src/vta/webvh/dids/keys/retire/1.0/payload.ts +1212 -0
- package/src/vta/webvh/dids/keys/revoke/1.0/payload.ts +1276 -0
- package/src/vta/webvh/dids/rotate-keys/2.0/payload.ts +1262 -0
- package/src/vta/webvh/dids/update/2.0/payload.ts +713 -0
- package/src/vtc/credentials/reissue/0.1/payload.ts +357 -0
- package/src/vtc/members/personhood/challenge/0.1/payload.ts +2 -2
- package/src/vtc/vetting/vetters/profile/0.1/payload.ts +2 -2
- package/src/vtc/vetting/vetters/resend/0.1/payload.ts +2 -2
|
@@ -0,0 +1,593 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
|
|
3
|
+
* Source: specs/auth/step-up/approve-response/0.5/payload.schema.json
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { AuthenticatorAssertionResponseLogin, Ext, Session } from "../../../../_shared/components.js";
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* How the approver demonstrated the factor backing this elevation. A tagged union on `kind`. When `evidence` is absent the elevation is gated solely by the document's framework `proof` (equivalent to `kind: did-signed`). When `kind: webauthn` is supplied, the carried WebAuthn assertion over `challenge` is the gate and the framework `proof` MAY be omitted.
|
|
11
|
+
*/
|
|
12
|
+
export type StepUpEvidence = DidSigned | WebAuthn;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* The approver's signed ratification of a step-up: subject + challenge (+ sessionId, when the request carried one) are echoed inside a gated document so the relying party can elevate the session, or apply the approval to the one operation it was bound to.
|
|
16
|
+
*/
|
|
17
|
+
export interface AuthStepUpApproveResponse {
|
|
18
|
+
/**
|
|
19
|
+
* Echoed from the matching approve-request. The relying party verifies it equals the subject bound to the pending step-up — the session's subject, or for a bound step-up the subject named when it was minted.
|
|
20
|
+
*/
|
|
21
|
+
subject: string;
|
|
22
|
+
/**
|
|
23
|
+
* Echoed from the matching approve-request when that request carried one, and absent when it did not — a step-up bound to an operation that arrived without a session. The relying party uses it to locate the session to elevate.
|
|
24
|
+
*/
|
|
25
|
+
sessionId?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Echoed from the matching approve-request. The relying party verifies it equals the bound challenge.
|
|
28
|
+
*/
|
|
29
|
+
challenge: string;
|
|
30
|
+
/**
|
|
31
|
+
* `approved` elevates the session per the relying party's policy. `denied` is a signed refusal — useful for audit even though it elevates nothing.
|
|
32
|
+
*/
|
|
33
|
+
decision: "approved" | "denied";
|
|
34
|
+
/**
|
|
35
|
+
* Required when decision is `denied`. Human-readable rationale the user provided (or which the approver inferred).
|
|
36
|
+
*/
|
|
37
|
+
deniedReason?: string;
|
|
38
|
+
/**
|
|
39
|
+
* The acr the approver believes it has cryptographically demonstrated. The relying party MAY accept this, MAY upgrade to a lower value, but MUST NOT exceed it.
|
|
40
|
+
*/
|
|
41
|
+
grantedAcr?: string;
|
|
42
|
+
evidence?: StepUpEvidence;
|
|
43
|
+
ext?: Ext;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* The elevation is gated by the document's framework `proof` — a Data Integrity signature from a key the subject controls (SPEC §4.7). This is the default when `evidence` is omitted. `amr` reflects "vta"/"did".
|
|
47
|
+
*/
|
|
48
|
+
export interface DidSigned {
|
|
49
|
+
kind: "didSigned";
|
|
50
|
+
}
|
|
51
|
+
export interface WebAuthn {
|
|
52
|
+
kind: "webauthn";
|
|
53
|
+
/**
|
|
54
|
+
* The unmodified AuthenticatorAssertionResponse from the platform WebAuthn API (`navigator.credentials.get` / ASAuthorization / Credential Manager). Its `clientDataJSON` challenge MUST equal the step-up `challenge`. The relying party verifies it per WebAuthn Level 2 §7.2 exactly as auth/passkey/login/finish does; the assertion is the gate and `amr` reflects "passkey".
|
|
55
|
+
*/
|
|
56
|
+
assertion: AuthenticatorAssertionResponseLogin;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Acknowledgement the relying party returns after processing the approval. Carried in a Trust Task document whose type is https://trusttasks.org/spec/auth/step-up/approve-response/0.5#response.
|
|
60
|
+
*/
|
|
61
|
+
export interface AuthStepUpApproveResponseRelyingPartyAck {
|
|
62
|
+
/**
|
|
63
|
+
* `elevated` — the approval was applied and the session's assurance level was raised. `recorded` — the approval was applied to the single operation it was bound to, and NO session was elevated; see `boundTo`. `rejected` — the approval was not applied.
|
|
64
|
+
*/
|
|
65
|
+
status: "elevated" | "recorded" | "rejected";
|
|
66
|
+
/**
|
|
67
|
+
* Present when status is `elevated`. The session's updated amr/acr after the approval was applied. Absent for `recorded`, which changes no session — a consumer reading it as a fallback would report an elevation that did not happen.
|
|
68
|
+
*/
|
|
69
|
+
session?: Session;
|
|
70
|
+
/**
|
|
71
|
+
* Present when status is `recorded`. An opaque relying-party identifier for the single operation this approval authorised — for a `release: stepUp` disclosure, the `previewId`. Opaque on purpose: it is echoed for the approver's audit trail and is not a capability, since the approval it names is the relying party's own state and cannot be spent by presenting this value.
|
|
72
|
+
*/
|
|
73
|
+
boundTo?: string;
|
|
74
|
+
/**
|
|
75
|
+
* Present when status is `rejected` (e.g. "challenge expired", "session not found", "acr ceiling exceeded").
|
|
76
|
+
*/
|
|
77
|
+
reason?: string;
|
|
78
|
+
ext?: Ext;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/** Shared definitions this specification references, re-exported under the names it used to declare them with. */
|
|
82
|
+
export type { AuthenticatorAssertionResponseLogin, Ext, Session };
|
|
83
|
+
|
|
84
|
+
/** Trust Task type URI. */
|
|
85
|
+
export const TYPE_URI = "https://trusttasks.org/spec/auth/step-up/approve-response/0.5" as const;
|
|
86
|
+
|
|
87
|
+
/** Stable alias for this specification's request payload shape. */
|
|
88
|
+
export type Payload = AuthStepUpApproveResponse;
|
|
89
|
+
|
|
90
|
+
/** Trust Task response type URI (request type URI + "#response"). */
|
|
91
|
+
export const RESPONSE_TYPE_URI = "https://trusttasks.org/spec/auth/step-up/approve-response/0.5#response" as const;
|
|
92
|
+
|
|
93
|
+
/** Stable alias for this specification's success-response payload shape. */
|
|
94
|
+
export type Response = AuthStepUpApproveResponseRelyingPartyAck;
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* This specification's payload schema, as a value.
|
|
98
|
+
*
|
|
99
|
+
* SPEC.md §7.2 item 2 is performed against this. It is shipped as data
|
|
100
|
+
* rather than only as a `.json` file because TypeScript types are erased
|
|
101
|
+
* at runtime: without a schema a consumer has nothing to validate, and
|
|
102
|
+
* every REQUIRED payload member is optional in practice. Cross-file
|
|
103
|
+
* `$ref`s are already inlined, so it needs no resolver.
|
|
104
|
+
*/
|
|
105
|
+
export const PAYLOAD_SCHEMA = {
|
|
106
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
107
|
+
"$id": "https://trusttasks.org/spec/auth/step-up/approve-response/0.5",
|
|
108
|
+
"title": "Auth — Step-up Approve Response",
|
|
109
|
+
"description": "The approver's signed ratification of a step-up: subject + challenge (+ sessionId, when the request carried one) are echoed inside a gated document so the relying party can elevate the session, or apply the approval to the one operation it was bound to.",
|
|
110
|
+
"type": "object",
|
|
111
|
+
"additionalProperties": false,
|
|
112
|
+
"required": [
|
|
113
|
+
"subject",
|
|
114
|
+
"challenge",
|
|
115
|
+
"decision"
|
|
116
|
+
],
|
|
117
|
+
"properties": {
|
|
118
|
+
"subject": {
|
|
119
|
+
"type": "string",
|
|
120
|
+
"minLength": 1,
|
|
121
|
+
"description": "Echoed from the matching approve-request. The relying party verifies it equals the subject bound to the pending step-up — the session's subject, or for a bound step-up the subject named when it was minted."
|
|
122
|
+
},
|
|
123
|
+
"sessionId": {
|
|
124
|
+
"type": "string",
|
|
125
|
+
"minLength": 1,
|
|
126
|
+
"description": "Echoed from the matching approve-request when that request carried one, and absent when it did not — a step-up bound to an operation that arrived without a session. The relying party uses it to locate the session to elevate."
|
|
127
|
+
},
|
|
128
|
+
"challenge": {
|
|
129
|
+
"type": "string",
|
|
130
|
+
"minLength": 16,
|
|
131
|
+
"description": "Echoed from the matching approve-request. The relying party verifies it equals the bound challenge."
|
|
132
|
+
},
|
|
133
|
+
"decision": {
|
|
134
|
+
"type": "string",
|
|
135
|
+
"enum": [
|
|
136
|
+
"approved",
|
|
137
|
+
"denied"
|
|
138
|
+
],
|
|
139
|
+
"description": "`approved` elevates the session per the relying party's policy. `denied` is a signed refusal — useful for audit even though it elevates nothing."
|
|
140
|
+
},
|
|
141
|
+
"deniedReason": {
|
|
142
|
+
"type": "string",
|
|
143
|
+
"maxLength": 500,
|
|
144
|
+
"description": "Required when decision is `denied`. Human-readable rationale the user provided (or which the approver inferred)."
|
|
145
|
+
},
|
|
146
|
+
"grantedAcr": {
|
|
147
|
+
"type": "string",
|
|
148
|
+
"description": "The acr the approver believes it has cryptographically demonstrated. The relying party MAY accept this, MAY upgrade to a lower value, but MUST NOT exceed it."
|
|
149
|
+
},
|
|
150
|
+
"evidence": {
|
|
151
|
+
"$ref": "#/$defs/Evidence",
|
|
152
|
+
"description": "How the approver demonstrated the factor backing this elevation. A tagged union on `kind`. When `evidence` is absent the elevation is gated solely by the document's framework `proof` (equivalent to `kind: did-signed`). When `kind: webauthn` is supplied, the carried WebAuthn assertion over `challenge` is the gate and the framework `proof` MAY be omitted."
|
|
153
|
+
},
|
|
154
|
+
"ext": {
|
|
155
|
+
"$ref": "#/$defs/Ext"
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
"$defs": {
|
|
159
|
+
"Evidence": {
|
|
160
|
+
"$anchor": "evidence",
|
|
161
|
+
"title": "Step-up Evidence",
|
|
162
|
+
"description": "Tagged union over `kind` describing the cryptographic factor the approver presents to back the elevation. Pluggable so new factor kinds can be added without disturbing existing consumers (SPEC §4.5.1 ext rules apply to unknown kinds at the producer's discretion).",
|
|
163
|
+
"oneOf": [
|
|
164
|
+
{
|
|
165
|
+
"title": "DidSigned",
|
|
166
|
+
"type": "object",
|
|
167
|
+
"additionalProperties": false,
|
|
168
|
+
"required": [
|
|
169
|
+
"kind"
|
|
170
|
+
],
|
|
171
|
+
"properties": {
|
|
172
|
+
"kind": {
|
|
173
|
+
"const": "didSigned"
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
"description": "The elevation is gated by the document's framework `proof` — a Data Integrity signature from a key the subject controls (SPEC §4.7). This is the default when `evidence` is omitted. `amr` reflects \"vta\"/\"did\"."
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"title": "WebAuthn",
|
|
180
|
+
"type": "object",
|
|
181
|
+
"additionalProperties": false,
|
|
182
|
+
"required": [
|
|
183
|
+
"kind",
|
|
184
|
+
"assertion"
|
|
185
|
+
],
|
|
186
|
+
"properties": {
|
|
187
|
+
"kind": {
|
|
188
|
+
"const": "webauthn"
|
|
189
|
+
},
|
|
190
|
+
"assertion": {
|
|
191
|
+
"$ref": "#/$defs/AssertionResponse",
|
|
192
|
+
"description": "The unmodified AuthenticatorAssertionResponse from the platform WebAuthn API (`navigator.credentials.get` / ASAuthorization / Credential Manager). Its `clientDataJSON` challenge MUST equal the step-up `challenge`. The relying party verifies it per WebAuthn Level 2 §7.2 exactly as auth/passkey/login/finish does; the assertion is the gate and `amr` reflects \"passkey\"."
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
]
|
|
197
|
+
},
|
|
198
|
+
"Response": {
|
|
199
|
+
"$anchor": "response",
|
|
200
|
+
"title": "Auth Step-up Approve Response — relying party ack",
|
|
201
|
+
"description": "Acknowledgement the relying party returns after processing the approval. Carried in a Trust Task document whose type is https://trusttasks.org/spec/auth/step-up/approve-response/0.5#response.",
|
|
202
|
+
"type": "object",
|
|
203
|
+
"additionalProperties": false,
|
|
204
|
+
"required": [
|
|
205
|
+
"status"
|
|
206
|
+
],
|
|
207
|
+
"properties": {
|
|
208
|
+
"status": {
|
|
209
|
+
"type": "string",
|
|
210
|
+
"enum": [
|
|
211
|
+
"elevated",
|
|
212
|
+
"recorded",
|
|
213
|
+
"rejected"
|
|
214
|
+
],
|
|
215
|
+
"description": "`elevated` — the approval was applied and the session's assurance level was raised. `recorded` — the approval was applied to the single operation it was bound to, and NO session was elevated; see `boundTo`. `rejected` — the approval was not applied."
|
|
216
|
+
},
|
|
217
|
+
"session": {
|
|
218
|
+
"$ref": "#/$defs/Session",
|
|
219
|
+
"description": "Present when status is `elevated`. The session's updated amr/acr after the approval was applied. Absent for `recorded`, which changes no session — a consumer reading it as a fallback would report an elevation that did not happen."
|
|
220
|
+
},
|
|
221
|
+
"boundTo": {
|
|
222
|
+
"type": "string",
|
|
223
|
+
"maxLength": 256,
|
|
224
|
+
"description": "Present when status is `recorded`. An opaque relying-party identifier for the single operation this approval authorised — for a `release: stepUp` disclosure, the `previewId`. Opaque on purpose: it is echoed for the approver's audit trail and is not a capability, since the approval it names is the relying party's own state and cannot be spent by presenting this value."
|
|
225
|
+
},
|
|
226
|
+
"reason": {
|
|
227
|
+
"type": "string",
|
|
228
|
+
"maxLength": 1024,
|
|
229
|
+
"description": "Present when status is `rejected` (e.g. \"challenge expired\", \"session not found\", \"acr ceiling exceeded\")."
|
|
230
|
+
},
|
|
231
|
+
"ext": {
|
|
232
|
+
"$ref": "#/$defs/Ext"
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
},
|
|
236
|
+
"Ext": {
|
|
237
|
+
"title": "Ext",
|
|
238
|
+
"description": "Vendor-namespaced extension object per SPEC.md §4.5.1. Each immediate key MUST be a reverse-DNS namespace; structure under each namespace is opaque to the framework.",
|
|
239
|
+
"type": "object",
|
|
240
|
+
"minProperties": 1,
|
|
241
|
+
"additionalProperties": true,
|
|
242
|
+
"propertyNames": {
|
|
243
|
+
"pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
|
|
244
|
+
}
|
|
245
|
+
},
|
|
246
|
+
"Session": {
|
|
247
|
+
"$anchor": "session",
|
|
248
|
+
"title": "Session",
|
|
249
|
+
"description": "A logical authentication context bound to a subject. Producers and consumers exchange Session-shaped data in challenge issuance, authentication responses, and introspection (whoami).",
|
|
250
|
+
"type": "object",
|
|
251
|
+
"additionalProperties": false,
|
|
252
|
+
"required": [
|
|
253
|
+
"id",
|
|
254
|
+
"subject",
|
|
255
|
+
"issuedAt",
|
|
256
|
+
"expiresAt"
|
|
257
|
+
],
|
|
258
|
+
"properties": {
|
|
259
|
+
"id": {
|
|
260
|
+
"type": "string",
|
|
261
|
+
"minLength": 1,
|
|
262
|
+
"description": "Opaque, server-chosen session identifier. Stable for the lifetime of the session. Consumers MUST treat the value as opaque; no structure is implied."
|
|
263
|
+
},
|
|
264
|
+
"subject": {
|
|
265
|
+
"type": "string",
|
|
266
|
+
"minLength": 1,
|
|
267
|
+
"description": "The authenticated party's VID (typically a DID URL)."
|
|
268
|
+
},
|
|
269
|
+
"issuedAt": {
|
|
270
|
+
"type": "string",
|
|
271
|
+
"format": "date-time",
|
|
272
|
+
"description": "ISO-8601 timestamp when the session was created."
|
|
273
|
+
},
|
|
274
|
+
"expiresAt": {
|
|
275
|
+
"type": "string",
|
|
276
|
+
"format": "date-time",
|
|
277
|
+
"description": "ISO-8601 timestamp when the session ceases to be valid. Producers SHOULD refresh before this time; consumers MUST reject after."
|
|
278
|
+
},
|
|
279
|
+
"amr": {
|
|
280
|
+
"type": "array",
|
|
281
|
+
"minItems": 1,
|
|
282
|
+
"items": {
|
|
283
|
+
"type": "string",
|
|
284
|
+
"minLength": 1
|
|
285
|
+
},
|
|
286
|
+
"description": "Authentication Methods References per [RFC 8176]. Typical values: \"did\" (challenge-response), \"passkey\" (WebAuthn), \"vta\" (verifiable-trust agent approval). Multi-factor sessions list every method used."
|
|
287
|
+
},
|
|
288
|
+
"acr": {
|
|
289
|
+
"type": "string",
|
|
290
|
+
"description": "Authentication Context Class Reference per [OIDC Core §2]. Profiles define their own values; the recommended set is \"aal1\" (single-factor DID auth), \"aal2\" (a second possession-or-biometric factor confirmed), and \"aal3\" (hardware-bound second factor)."
|
|
291
|
+
},
|
|
292
|
+
"ext": {
|
|
293
|
+
"$ref": "#/$defs/Ext",
|
|
294
|
+
"description": "Ecosystem-defined extension members per SPEC.md §4.5.1."
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
},
|
|
298
|
+
"AssertionResponse": {
|
|
299
|
+
"$anchor": "assertionResponse",
|
|
300
|
+
"title": "AuthenticatorAssertionResponse (login)",
|
|
301
|
+
"description": "The credential the client returns from `navigator.credentials.get`. Binary fields are base64url-encoded.",
|
|
302
|
+
"type": "object",
|
|
303
|
+
"additionalProperties": false,
|
|
304
|
+
"required": [
|
|
305
|
+
"id",
|
|
306
|
+
"rawId",
|
|
307
|
+
"type",
|
|
308
|
+
"response"
|
|
309
|
+
],
|
|
310
|
+
"properties": {
|
|
311
|
+
"id": {
|
|
312
|
+
"type": "string"
|
|
313
|
+
},
|
|
314
|
+
"rawId": {
|
|
315
|
+
"type": "string"
|
|
316
|
+
},
|
|
317
|
+
"type": {
|
|
318
|
+
"const": "public-key"
|
|
319
|
+
},
|
|
320
|
+
"response": {
|
|
321
|
+
"type": "object",
|
|
322
|
+
"additionalProperties": false,
|
|
323
|
+
"required": [
|
|
324
|
+
"clientDataJSON",
|
|
325
|
+
"authenticatorData",
|
|
326
|
+
"signature"
|
|
327
|
+
],
|
|
328
|
+
"properties": {
|
|
329
|
+
"clientDataJSON": {
|
|
330
|
+
"type": "string"
|
|
331
|
+
},
|
|
332
|
+
"authenticatorData": {
|
|
333
|
+
"type": "string"
|
|
334
|
+
},
|
|
335
|
+
"signature": {
|
|
336
|
+
"type": "string"
|
|
337
|
+
},
|
|
338
|
+
"userHandle": {
|
|
339
|
+
"type": [
|
|
340
|
+
"string",
|
|
341
|
+
"null"
|
|
342
|
+
]
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
},
|
|
346
|
+
"authenticatorAttachment": {
|
|
347
|
+
"enum": [
|
|
348
|
+
"platform",
|
|
349
|
+
"cross-platform"
|
|
350
|
+
]
|
|
351
|
+
},
|
|
352
|
+
"clientExtensionResults": {
|
|
353
|
+
"type": "object"
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
} as const;
|
|
359
|
+
|
|
360
|
+
/** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
|
|
361
|
+
export const RESPONSE_PAYLOAD_SCHEMA = {
|
|
362
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
363
|
+
"$ref": "#/$defs/Response",
|
|
364
|
+
"$defs": {
|
|
365
|
+
"Evidence": {
|
|
366
|
+
"$anchor": "evidence",
|
|
367
|
+
"title": "Step-up Evidence",
|
|
368
|
+
"description": "Tagged union over `kind` describing the cryptographic factor the approver presents to back the elevation. Pluggable so new factor kinds can be added without disturbing existing consumers (SPEC §4.5.1 ext rules apply to unknown kinds at the producer's discretion).",
|
|
369
|
+
"oneOf": [
|
|
370
|
+
{
|
|
371
|
+
"title": "DidSigned",
|
|
372
|
+
"type": "object",
|
|
373
|
+
"additionalProperties": false,
|
|
374
|
+
"required": [
|
|
375
|
+
"kind"
|
|
376
|
+
],
|
|
377
|
+
"properties": {
|
|
378
|
+
"kind": {
|
|
379
|
+
"const": "didSigned"
|
|
380
|
+
}
|
|
381
|
+
},
|
|
382
|
+
"description": "The elevation is gated by the document's framework `proof` — a Data Integrity signature from a key the subject controls (SPEC §4.7). This is the default when `evidence` is omitted. `amr` reflects \"vta\"/\"did\"."
|
|
383
|
+
},
|
|
384
|
+
{
|
|
385
|
+
"title": "WebAuthn",
|
|
386
|
+
"type": "object",
|
|
387
|
+
"additionalProperties": false,
|
|
388
|
+
"required": [
|
|
389
|
+
"kind",
|
|
390
|
+
"assertion"
|
|
391
|
+
],
|
|
392
|
+
"properties": {
|
|
393
|
+
"kind": {
|
|
394
|
+
"const": "webauthn"
|
|
395
|
+
},
|
|
396
|
+
"assertion": {
|
|
397
|
+
"$ref": "#/$defs/AssertionResponse",
|
|
398
|
+
"description": "The unmodified AuthenticatorAssertionResponse from the platform WebAuthn API (`navigator.credentials.get` / ASAuthorization / Credential Manager). Its `clientDataJSON` challenge MUST equal the step-up `challenge`. The relying party verifies it per WebAuthn Level 2 §7.2 exactly as auth/passkey/login/finish does; the assertion is the gate and `amr` reflects \"passkey\"."
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
]
|
|
403
|
+
},
|
|
404
|
+
"Response": {
|
|
405
|
+
"$anchor": "response",
|
|
406
|
+
"title": "Auth Step-up Approve Response — relying party ack",
|
|
407
|
+
"description": "Acknowledgement the relying party returns after processing the approval. Carried in a Trust Task document whose type is https://trusttasks.org/spec/auth/step-up/approve-response/0.5#response.",
|
|
408
|
+
"type": "object",
|
|
409
|
+
"additionalProperties": false,
|
|
410
|
+
"required": [
|
|
411
|
+
"status"
|
|
412
|
+
],
|
|
413
|
+
"properties": {
|
|
414
|
+
"status": {
|
|
415
|
+
"type": "string",
|
|
416
|
+
"enum": [
|
|
417
|
+
"elevated",
|
|
418
|
+
"recorded",
|
|
419
|
+
"rejected"
|
|
420
|
+
],
|
|
421
|
+
"description": "`elevated` — the approval was applied and the session's assurance level was raised. `recorded` — the approval was applied to the single operation it was bound to, and NO session was elevated; see `boundTo`. `rejected` — the approval was not applied."
|
|
422
|
+
},
|
|
423
|
+
"session": {
|
|
424
|
+
"$ref": "#/$defs/Session",
|
|
425
|
+
"description": "Present when status is `elevated`. The session's updated amr/acr after the approval was applied. Absent for `recorded`, which changes no session — a consumer reading it as a fallback would report an elevation that did not happen."
|
|
426
|
+
},
|
|
427
|
+
"boundTo": {
|
|
428
|
+
"type": "string",
|
|
429
|
+
"maxLength": 256,
|
|
430
|
+
"description": "Present when status is `recorded`. An opaque relying-party identifier for the single operation this approval authorised — for a `release: stepUp` disclosure, the `previewId`. Opaque on purpose: it is echoed for the approver's audit trail and is not a capability, since the approval it names is the relying party's own state and cannot be spent by presenting this value."
|
|
431
|
+
},
|
|
432
|
+
"reason": {
|
|
433
|
+
"type": "string",
|
|
434
|
+
"maxLength": 1024,
|
|
435
|
+
"description": "Present when status is `rejected` (e.g. \"challenge expired\", \"session not found\", \"acr ceiling exceeded\")."
|
|
436
|
+
},
|
|
437
|
+
"ext": {
|
|
438
|
+
"$ref": "#/$defs/Ext"
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
},
|
|
442
|
+
"Ext": {
|
|
443
|
+
"title": "Ext",
|
|
444
|
+
"description": "Vendor-namespaced extension object per SPEC.md §4.5.1. Each immediate key MUST be a reverse-DNS namespace; structure under each namespace is opaque to the framework.",
|
|
445
|
+
"type": "object",
|
|
446
|
+
"minProperties": 1,
|
|
447
|
+
"additionalProperties": true,
|
|
448
|
+
"propertyNames": {
|
|
449
|
+
"pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
|
|
450
|
+
}
|
|
451
|
+
},
|
|
452
|
+
"Session": {
|
|
453
|
+
"$anchor": "session",
|
|
454
|
+
"title": "Session",
|
|
455
|
+
"description": "A logical authentication context bound to a subject. Producers and consumers exchange Session-shaped data in challenge issuance, authentication responses, and introspection (whoami).",
|
|
456
|
+
"type": "object",
|
|
457
|
+
"additionalProperties": false,
|
|
458
|
+
"required": [
|
|
459
|
+
"id",
|
|
460
|
+
"subject",
|
|
461
|
+
"issuedAt",
|
|
462
|
+
"expiresAt"
|
|
463
|
+
],
|
|
464
|
+
"properties": {
|
|
465
|
+
"id": {
|
|
466
|
+
"type": "string",
|
|
467
|
+
"minLength": 1,
|
|
468
|
+
"description": "Opaque, server-chosen session identifier. Stable for the lifetime of the session. Consumers MUST treat the value as opaque; no structure is implied."
|
|
469
|
+
},
|
|
470
|
+
"subject": {
|
|
471
|
+
"type": "string",
|
|
472
|
+
"minLength": 1,
|
|
473
|
+
"description": "The authenticated party's VID (typically a DID URL)."
|
|
474
|
+
},
|
|
475
|
+
"issuedAt": {
|
|
476
|
+
"type": "string",
|
|
477
|
+
"format": "date-time",
|
|
478
|
+
"description": "ISO-8601 timestamp when the session was created."
|
|
479
|
+
},
|
|
480
|
+
"expiresAt": {
|
|
481
|
+
"type": "string",
|
|
482
|
+
"format": "date-time",
|
|
483
|
+
"description": "ISO-8601 timestamp when the session ceases to be valid. Producers SHOULD refresh before this time; consumers MUST reject after."
|
|
484
|
+
},
|
|
485
|
+
"amr": {
|
|
486
|
+
"type": "array",
|
|
487
|
+
"minItems": 1,
|
|
488
|
+
"items": {
|
|
489
|
+
"type": "string",
|
|
490
|
+
"minLength": 1
|
|
491
|
+
},
|
|
492
|
+
"description": "Authentication Methods References per [RFC 8176]. Typical values: \"did\" (challenge-response), \"passkey\" (WebAuthn), \"vta\" (verifiable-trust agent approval). Multi-factor sessions list every method used."
|
|
493
|
+
},
|
|
494
|
+
"acr": {
|
|
495
|
+
"type": "string",
|
|
496
|
+
"description": "Authentication Context Class Reference per [OIDC Core §2]. Profiles define their own values; the recommended set is \"aal1\" (single-factor DID auth), \"aal2\" (a second possession-or-biometric factor confirmed), and \"aal3\" (hardware-bound second factor)."
|
|
497
|
+
},
|
|
498
|
+
"ext": {
|
|
499
|
+
"$ref": "#/$defs/Ext",
|
|
500
|
+
"description": "Ecosystem-defined extension members per SPEC.md §4.5.1."
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
},
|
|
504
|
+
"AssertionResponse": {
|
|
505
|
+
"$anchor": "assertionResponse",
|
|
506
|
+
"title": "AuthenticatorAssertionResponse (login)",
|
|
507
|
+
"description": "The credential the client returns from `navigator.credentials.get`. Binary fields are base64url-encoded.",
|
|
508
|
+
"type": "object",
|
|
509
|
+
"additionalProperties": false,
|
|
510
|
+
"required": [
|
|
511
|
+
"id",
|
|
512
|
+
"rawId",
|
|
513
|
+
"type",
|
|
514
|
+
"response"
|
|
515
|
+
],
|
|
516
|
+
"properties": {
|
|
517
|
+
"id": {
|
|
518
|
+
"type": "string"
|
|
519
|
+
},
|
|
520
|
+
"rawId": {
|
|
521
|
+
"type": "string"
|
|
522
|
+
},
|
|
523
|
+
"type": {
|
|
524
|
+
"const": "public-key"
|
|
525
|
+
},
|
|
526
|
+
"response": {
|
|
527
|
+
"type": "object",
|
|
528
|
+
"additionalProperties": false,
|
|
529
|
+
"required": [
|
|
530
|
+
"clientDataJSON",
|
|
531
|
+
"authenticatorData",
|
|
532
|
+
"signature"
|
|
533
|
+
],
|
|
534
|
+
"properties": {
|
|
535
|
+
"clientDataJSON": {
|
|
536
|
+
"type": "string"
|
|
537
|
+
},
|
|
538
|
+
"authenticatorData": {
|
|
539
|
+
"type": "string"
|
|
540
|
+
},
|
|
541
|
+
"signature": {
|
|
542
|
+
"type": "string"
|
|
543
|
+
},
|
|
544
|
+
"userHandle": {
|
|
545
|
+
"type": [
|
|
546
|
+
"string",
|
|
547
|
+
"null"
|
|
548
|
+
]
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
},
|
|
552
|
+
"authenticatorAttachment": {
|
|
553
|
+
"enum": [
|
|
554
|
+
"platform",
|
|
555
|
+
"cross-platform"
|
|
556
|
+
]
|
|
557
|
+
},
|
|
558
|
+
"clientExtensionResults": {
|
|
559
|
+
"type": "object"
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
} as const;
|
|
565
|
+
|
|
566
|
+
/**
|
|
567
|
+
* SPEC.md §7.2 policy for the request variant, from this specification's
|
|
568
|
+
* front matter. Pass to `consumeInbound` — items 5b, 7 and 8 are
|
|
569
|
+
* per-specification and cannot be derived from the document alone, and
|
|
570
|
+
* item 2 needs the schema this carries.
|
|
571
|
+
*/
|
|
572
|
+
export const SPEC = {
|
|
573
|
+
typeUri: TYPE_URI,
|
|
574
|
+
isBearer: false,
|
|
575
|
+
isProofRequired: true,
|
|
576
|
+
isRecipientRequired: true,
|
|
577
|
+
isIssuedAtRequired: true,
|
|
578
|
+
payloadSchema: PAYLOAD_SCHEMA,
|
|
579
|
+
} as const;
|
|
580
|
+
|
|
581
|
+
/**
|
|
582
|
+
* SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
|
|
583
|
+
* tracks the *issuer* party's requirement because a response swaps the
|
|
584
|
+
* parties (§7.3 item 5).
|
|
585
|
+
*/
|
|
586
|
+
export const RESPONSE_SPEC = {
|
|
587
|
+
typeUri: RESPONSE_TYPE_URI,
|
|
588
|
+
isBearer: false,
|
|
589
|
+
isProofRequired: true,
|
|
590
|
+
isRecipientRequired: true,
|
|
591
|
+
isIssuedAtRequired: true,
|
|
592
|
+
payloadSchema: RESPONSE_PAYLOAD_SCHEMA,
|
|
593
|
+
} as const;
|
|
@@ -247,7 +247,8 @@ export const PAYLOAD_SCHEMA = {
|
|
|
247
247
|
"memory-read",
|
|
248
248
|
"memory-write",
|
|
249
249
|
"room-present",
|
|
250
|
-
"room-open"
|
|
250
|
+
"room-open",
|
|
251
|
+
"key-export"
|
|
251
252
|
],
|
|
252
253
|
"description": "Fine-grained capability flag scoped to the device's allowed contexts. See SPEC.md for the full semantics of each. Capability values are additive: a consumer MUST ignore a value it does not recognise rather than reject the binding, and MUST NOT treat an unrecognised value as conferring anything."
|
|
253
254
|
},
|
|
@@ -585,7 +586,8 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
|
|
|
585
586
|
"memory-read",
|
|
586
587
|
"memory-write",
|
|
587
588
|
"room-present",
|
|
588
|
-
"room-open"
|
|
589
|
+
"room-open",
|
|
590
|
+
"key-export"
|
|
589
591
|
],
|
|
590
592
|
"description": "Fine-grained capability flag scoped to the device's allowed contexts. See SPEC.md for the full semantics of each. Capability values are additive: a consumer MUST ignore a value it does not recognise rather than reject the binding, and MUST NOT treat an unrecognised value as conferring anything."
|
|
591
593
|
},
|
|
@@ -247,7 +247,8 @@ export const PAYLOAD_SCHEMA = {
|
|
|
247
247
|
"memoryRead",
|
|
248
248
|
"memoryWrite",
|
|
249
249
|
"roomPresent",
|
|
250
|
-
"roomOpen"
|
|
250
|
+
"roomOpen",
|
|
251
|
+
"keyExport"
|
|
251
252
|
],
|
|
252
253
|
"description": "Fine-grained capability flag scoped to the device's allowed contexts. See SPEC.md for the full semantics of each. Capability values are additive: a consumer MUST ignore a value it does not recognise rather than reject the binding, and MUST NOT treat an unrecognised value as conferring anything."
|
|
253
254
|
},
|
|
@@ -585,7 +586,8 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
|
|
|
585
586
|
"memoryRead",
|
|
586
587
|
"memoryWrite",
|
|
587
588
|
"roomPresent",
|
|
588
|
-
"roomOpen"
|
|
589
|
+
"roomOpen",
|
|
590
|
+
"keyExport"
|
|
589
591
|
],
|
|
590
592
|
"description": "Fine-grained capability flag scoped to the device's allowed contexts. See SPEC.md for the full semantics of each. Capability values are additive: a consumer MUST ignore a value it does not recognise rather than reject the binding, and MUST NOT treat an unrecognised value as conferring anything."
|
|
591
593
|
},
|
|
@@ -215,7 +215,8 @@ export const PAYLOAD_SCHEMA = {
|
|
|
215
215
|
"memory-read",
|
|
216
216
|
"memory-write",
|
|
217
217
|
"room-present",
|
|
218
|
-
"room-open"
|
|
218
|
+
"room-open",
|
|
219
|
+
"key-export"
|
|
219
220
|
],
|
|
220
221
|
"description": "Fine-grained capability flag scoped to the device's allowed contexts. See SPEC.md for the full semantics of each. Capability values are additive: a consumer MUST ignore a value it does not recognise rather than reject the binding, and MUST NOT treat an unrecognised value as conferring anything."
|
|
221
222
|
},
|
|
@@ -543,7 +544,8 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
|
|
|
543
544
|
"memory-read",
|
|
544
545
|
"memory-write",
|
|
545
546
|
"room-present",
|
|
546
|
-
"room-open"
|
|
547
|
+
"room-open",
|
|
548
|
+
"key-export"
|
|
547
549
|
],
|
|
548
550
|
"description": "Fine-grained capability flag scoped to the device's allowed contexts. See SPEC.md for the full semantics of each. Capability values are additive: a consumer MUST ignore a value it does not recognise rather than reject the binding, and MUST NOT treat an unrecognised value as conferring anything."
|
|
549
551
|
},
|
|
@@ -215,7 +215,8 @@ export const PAYLOAD_SCHEMA = {
|
|
|
215
215
|
"memoryRead",
|
|
216
216
|
"memoryWrite",
|
|
217
217
|
"roomPresent",
|
|
218
|
-
"roomOpen"
|
|
218
|
+
"roomOpen",
|
|
219
|
+
"keyExport"
|
|
219
220
|
],
|
|
220
221
|
"description": "Fine-grained capability flag scoped to the device's allowed contexts. See SPEC.md for the full semantics of each. Capability values are additive: a consumer MUST ignore a value it does not recognise rather than reject the binding, and MUST NOT treat an unrecognised value as conferring anything."
|
|
221
222
|
},
|
|
@@ -543,7 +544,8 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
|
|
|
543
544
|
"memoryRead",
|
|
544
545
|
"memoryWrite",
|
|
545
546
|
"roomPresent",
|
|
546
|
-
"roomOpen"
|
|
547
|
+
"roomOpen",
|
|
548
|
+
"keyExport"
|
|
547
549
|
],
|
|
548
550
|
"description": "Fine-grained capability flag scoped to the device's allowed contexts. See SPEC.md for the full semantics of each. Capability values are additive: a consumer MUST ignore a value it does not recognise rather than reject the binding, and MUST NOT treat an unrecognised value as conferring anything."
|
|
549
551
|
},
|