@openvtc/trust-tasks 0.28.1 → 0.28.3
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 +284 -0
- package/dist/_extends.d.ts.map +1 -1
- package/dist/_extends.js +7 -1
- package/dist/_extends.js.map +1 -1
- package/dist/_runtime/document.d.ts +13 -0
- package/dist/_runtime/document.d.ts.map +1 -1
- package/dist/_runtime/document.js +17 -2
- package/dist/_runtime/document.js.map +1 -1
- package/dist/_runtime/index.d.ts +1 -1
- package/dist/_runtime/index.d.ts.map +1 -1
- package/dist/_runtime/index.js +1 -1
- package/dist/_runtime/index.js.map +1 -1
- package/dist/_shared/components.d.ts +530 -3
- package/dist/_shared/components.d.ts.map +1 -1
- package/dist/auth/step-up/approve-request/0.5/payload.d.ts +3 -3
- package/dist/auth/step-up/approve-request/0.5/payload.js +1 -1
- package/dist/auth/step-up/approve-response/0.1/payload.d.ts +4 -4
- package/dist/auth/step-up/approve-response/0.1/payload.js +1 -1
- package/dist/auth/step-up/approve-response/0.2/payload.d.ts +4 -4
- package/dist/auth/step-up/approve-response/0.2/payload.js +1 -1
- package/dist/auth/step-up/approve-response/0.3/payload.d.ts +4 -4
- package/dist/auth/step-up/approve-response/0.3/payload.js +1 -1
- package/dist/auth/step-up/approve-response/0.4/payload.d.ts +4 -4
- package/dist/auth/step-up/approve-response/0.4/payload.js +1 -1
- package/dist/auth/step-up/approve-response/0.5/payload.d.ts +4 -4
- package/dist/auth/step-up/approve-response/0.5/payload.js +1 -1
- package/dist/auth/step-up/approve-response/0.6/payload.d.ts +14 -2
- package/dist/auth/step-up/approve-response/0.6/payload.d.ts.map +1 -1
- package/dist/auth/step-up/approve-response/0.6/payload.js +1 -1
- package/dist/auth/step-up/approve-response/0.6/payload.js.map +1 -1
- package/dist/auth/step-up/approve-response/0.7/payload.d.ts +988 -0
- package/dist/auth/step-up/approve-response/0.7/payload.d.ts.map +1 -0
- package/dist/auth/step-up/approve-response/0.7/payload.js +566 -0
- package/dist/auth/step-up/approve-response/0.7/payload.js.map +1 -0
- package/dist/auth/step-up/approver/attest/0.1/payload.d.ts +3 -3
- package/dist/auth/step-up/approver/attest/0.1/payload.js +1 -1
- package/dist/index.d.ts +72 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +72 -0
- package/dist/index.js.map +1 -1
- package/dist/rooms/owner/group/remove/0.1/payload.d.ts +4 -4
- package/dist/rooms/owner/group/remove/0.1/payload.js +1 -1
- package/dist/rooms/owner/group/remove/0.2/payload.d.ts +4 -4
- package/dist/rooms/owner/group/remove/0.2/payload.js +1 -1
- package/dist/rooms/owner/group/remove/0.3/payload.d.ts +14 -2
- package/dist/rooms/owner/group/remove/0.3/payload.d.ts.map +1 -1
- package/dist/rooms/owner/group/remove/0.3/payload.js +1 -1
- package/dist/rooms/owner/group/remove/0.3/payload.js.map +1 -1
- package/dist/rooms/owner/group/remove/0.4/payload.d.ts +634 -0
- package/dist/rooms/owner/group/remove/0.4/payload.d.ts.map +1 -0
- package/dist/rooms/owner/group/remove/0.4/payload.js +331 -0
- package/dist/rooms/owner/group/remove/0.4/payload.js.map +1 -0
- package/dist/rooms/records/put/0.1/payload.d.ts +4 -4
- package/dist/rooms/records/put/0.1/payload.js +1 -1
- package/dist/rooms/records/put/0.2/payload.d.ts +4 -4
- package/dist/rooms/records/put/0.2/payload.js +1 -1
- package/dist/rooms/records/put/0.3/payload.d.ts +14 -2
- package/dist/rooms/records/put/0.3/payload.d.ts.map +1 -1
- package/dist/rooms/records/put/0.3/payload.js +1 -1
- package/dist/rooms/records/put/0.3/payload.js.map +1 -1
- package/dist/rooms/records/put/0.4/payload.d.ts +1474 -0
- package/dist/rooms/records/put/0.4/payload.d.ts.map +1 -0
- package/dist/rooms/records/put/0.4/payload.js +804 -0
- package/dist/rooms/records/put/0.4/payload.js.map +1 -0
- package/dist/task-consent/decision/0.2/payload.d.ts +5 -5
- package/dist/task-consent/decision/0.2/payload.js +2 -2
- package/dist/vta/_shared/0.3/did-key-roles.d.ts +1 -1
- package/dist/vta/_shared/0.9/did-template.d.ts +16 -0
- package/dist/vta/_shared/0.9/did-template.d.ts.map +1 -0
- package/dist/vta/_shared/0.9/did-template.js +6 -0
- package/dist/vta/_shared/0.9/did-template.js.map +1 -0
- package/dist/vta/did-templates/create/2.0/payload.d.ts +3 -3
- package/dist/vta/did-templates/create/2.0/payload.js +1 -1
- package/dist/vta/did-templates/create/3.0/payload.d.ts +3 -3
- package/dist/vta/did-templates/create/3.0/payload.js +1 -1
- package/dist/vta/did-templates/create/3.1/payload.d.ts +12 -2
- package/dist/vta/did-templates/create/3.1/payload.d.ts.map +1 -1
- package/dist/vta/did-templates/create/3.1/payload.js +1 -1
- package/dist/vta/did-templates/create/3.1/payload.js.map +1 -1
- package/dist/vta/did-templates/create/3.2/payload.d.ts +1310 -0
- package/dist/vta/did-templates/create/3.2/payload.d.ts.map +1 -0
- package/dist/vta/did-templates/create/3.2/payload.js +832 -0
- package/dist/vta/did-templates/create/3.2/payload.js.map +1 -0
- package/dist/vta/did-templates/get/2.0/payload.d.ts +3 -3
- package/dist/vta/did-templates/get/2.0/payload.js +1 -1
- package/dist/vta/did-templates/get/3.0/payload.d.ts +3 -3
- package/dist/vta/did-templates/get/3.0/payload.js +1 -1
- package/dist/vta/did-templates/get/3.1/payload.d.ts +12 -2
- package/dist/vta/did-templates/get/3.1/payload.d.ts.map +1 -1
- package/dist/vta/did-templates/get/3.1/payload.js +1 -1
- package/dist/vta/did-templates/get/3.1/payload.js.map +1 -1
- package/dist/vta/did-templates/get/3.2/payload.d.ts +928 -0
- package/dist/vta/did-templates/get/3.2/payload.d.ts.map +1 -0
- package/dist/vta/did-templates/get/3.2/payload.js +593 -0
- package/dist/vta/did-templates/get/3.2/payload.js.map +1 -0
- package/dist/vta/did-templates/list/2.0/payload.d.ts +4 -4
- package/dist/vta/did-templates/list/2.0/payload.js +1 -1
- package/dist/vta/did-templates/list/3.0/payload.d.ts +4 -4
- package/dist/vta/did-templates/list/3.0/payload.js +1 -1
- package/dist/vta/did-templates/list/3.1/payload.d.ts +14 -2
- package/dist/vta/did-templates/list/3.1/payload.d.ts.map +1 -1
- package/dist/vta/did-templates/list/3.1/payload.js +1 -1
- package/dist/vta/did-templates/list/3.1/payload.js.map +1 -1
- package/dist/vta/did-templates/list/3.2/payload.d.ts +985 -0
- package/dist/vta/did-templates/list/3.2/payload.d.ts.map +1 -0
- package/dist/vta/did-templates/list/3.2/payload.js +619 -0
- package/dist/vta/did-templates/list/3.2/payload.js.map +1 -0
- package/dist/vta/did-templates/update/2.0/payload.d.ts +3 -3
- package/dist/vta/did-templates/update/2.0/payload.js +1 -1
- package/dist/vta/did-templates/update/3.0/payload.d.ts +3 -3
- package/dist/vta/did-templates/update/3.0/payload.js +1 -1
- package/dist/vta/did-templates/update/3.1/payload.d.ts +12 -2
- package/dist/vta/did-templates/update/3.1/payload.d.ts.map +1 -1
- package/dist/vta/did-templates/update/3.1/payload.js +1 -1
- package/dist/vta/did-templates/update/3.1/payload.js.map +1 -1
- package/dist/vta/did-templates/update/3.2/payload.d.ts +1324 -0
- package/dist/vta/did-templates/update/3.2/payload.d.ts.map +1 -0
- package/dist/vta/did-templates/update/3.2/payload.js +838 -0
- package/dist/vta/did-templates/update/3.2/payload.js.map +1 -0
- package/dist/vta/dids/_shared/0.1/key-roles.d.ts +16 -0
- package/dist/vta/dids/_shared/0.1/key-roles.d.ts.map +1 -0
- package/dist/vta/dids/_shared/0.1/key-roles.js +6 -0
- package/dist/vta/dids/_shared/0.1/key-roles.js.map +1 -0
- package/dist/vta/dids/_shared/0.1/method-profiles/webvh-parameters.d.ts +11 -0
- package/dist/vta/dids/_shared/0.1/method-profiles/webvh-parameters.d.ts.map +1 -0
- package/dist/vta/dids/_shared/0.1/method-profiles/webvh-parameters.js +6 -0
- package/dist/vta/dids/_shared/0.1/method-profiles/webvh-parameters.js.map +1 -0
- package/dist/vta/dids/create/1.0/payload.d.ts +2613 -0
- package/dist/vta/dids/create/1.0/payload.d.ts.map +1 -0
- package/dist/vta/dids/create/1.0/payload.js +1554 -0
- package/dist/vta/dids/create/1.0/payload.js.map +1 -0
- package/dist/vta/dids/keys/add/1.0/payload.d.ts +2447 -0
- package/dist/vta/dids/keys/add/1.0/payload.d.ts.map +1 -0
- package/dist/vta/dids/keys/add/1.0/payload.js +1469 -0
- package/dist/vta/dids/keys/add/1.0/payload.js.map +1 -0
- package/dist/vta/dids/keys/list/1.0/payload.d.ts +1855 -0
- package/dist/vta/dids/keys/list/1.0/payload.d.ts.map +1 -0
- package/dist/vta/dids/keys/list/1.0/payload.js +1116 -0
- package/dist/vta/dids/keys/list/1.0/payload.js.map +1 -0
- package/dist/vta/dids/keys/retire/1.0/payload.d.ts +2449 -0
- package/dist/vta/dids/keys/retire/1.0/payload.d.ts.map +1 -0
- package/dist/vta/dids/keys/retire/1.0/payload.js +1469 -0
- package/dist/vta/dids/keys/retire/1.0/payload.js.map +1 -0
- package/dist/vta/dids/keys/revoke/1.0/payload.d.ts +2701 -0
- package/dist/vta/dids/keys/revoke/1.0/payload.d.ts.map +1 -0
- package/dist/vta/dids/keys/revoke/1.0/payload.js +1597 -0
- package/dist/vta/dids/keys/revoke/1.0/payload.js.map +1 -0
- package/dist/vta/dids/keys/rotate/1.0/payload.d.ts +2628 -0
- package/dist/vta/dids/keys/rotate/1.0/payload.d.ts.map +1 -0
- package/dist/vta/dids/keys/rotate/1.0/payload.js +1555 -0
- package/dist/vta/dids/keys/rotate/1.0/payload.js.map +1 -0
- package/dist/vta/dids/recover/1.0/payload.d.ts +2702 -0
- package/dist/vta/dids/recover/1.0/payload.d.ts.map +1 -0
- package/dist/vta/dids/recover/1.0/payload.js +1597 -0
- package/dist/vta/dids/recover/1.0/payload.js.map +1 -0
- package/dist/vta/dids/update/1.0/payload.d.ts +1422 -0
- package/dist/vta/dids/update/1.0/payload.d.ts.map +1 -0
- package/dist/vta/dids/update/1.0/payload.js +861 -0
- package/dist/vta/dids/update/1.0/payload.js.map +1 -0
- package/dist/vta/webvh/dids/keys/add/1.0/payload.d.ts +14 -2
- package/dist/vta/webvh/dids/keys/add/1.0/payload.d.ts.map +1 -1
- package/dist/vta/webvh/dids/keys/add/1.0/payload.js +1 -1
- package/dist/vta/webvh/dids/keys/add/1.0/payload.js.map +1 -1
- package/dist/vta/webvh/dids/keys/list/1.0/payload.d.ts +14 -2
- package/dist/vta/webvh/dids/keys/list/1.0/payload.d.ts.map +1 -1
- package/dist/vta/webvh/dids/keys/list/1.0/payload.js +1 -1
- package/dist/vta/webvh/dids/keys/list/1.0/payload.js.map +1 -1
- package/dist/vta/webvh/dids/keys/retire/1.0/payload.d.ts +14 -2
- package/dist/vta/webvh/dids/keys/retire/1.0/payload.d.ts.map +1 -1
- package/dist/vta/webvh/dids/keys/retire/1.0/payload.js +1 -1
- package/dist/vta/webvh/dids/keys/retire/1.0/payload.js.map +1 -1
- package/dist/vta/webvh/dids/keys/revoke/1.0/payload.d.ts +14 -2
- package/dist/vta/webvh/dids/keys/revoke/1.0/payload.d.ts.map +1 -1
- package/dist/vta/webvh/dids/keys/revoke/1.0/payload.js +1 -1
- package/dist/vta/webvh/dids/keys/revoke/1.0/payload.js.map +1 -1
- package/dist/vta/webvh/dids/rotate-keys/1.0/payload.d.ts +2 -14
- package/dist/vta/webvh/dids/rotate-keys/1.0/payload.d.ts.map +1 -1
- package/dist/vta/webvh/dids/rotate-keys/1.0/payload.js +1 -1
- package/dist/vta/webvh/dids/rotate-keys/1.0/payload.js.map +1 -1
- package/dist/vta/webvh/dids/rotate-keys/2.0/payload.d.ts +14 -2
- package/dist/vta/webvh/dids/rotate-keys/2.0/payload.d.ts.map +1 -1
- package/dist/vta/webvh/dids/rotate-keys/2.0/payload.js +1 -1
- package/dist/vta/webvh/dids/rotate-keys/2.0/payload.js.map +1 -1
- package/dist/vta/webvh/dids/update/1.0/payload.d.ts +2 -14
- package/dist/vta/webvh/dids/update/1.0/payload.d.ts.map +1 -1
- package/dist/vta/webvh/dids/update/1.0/payload.js +1 -1
- package/dist/vta/webvh/dids/update/1.0/payload.js.map +1 -1
- package/dist/vta/webvh/dids/update/2.0/payload.d.ts +4 -4
- package/dist/vta/webvh/dids/update/2.0/payload.d.ts.map +1 -1
- package/dist/vta/webvh/dids/update/2.0/payload.js +1 -1
- package/dist/vta/webvh/dids/update/2.0/payload.js.map +1 -1
- package/dist/vta/webvh/dids/update/2.1/payload.d.ts +14 -2
- package/dist/vta/webvh/dids/update/2.1/payload.d.ts.map +1 -1
- package/dist/vta/webvh/dids/update/2.1/payload.js +1 -1
- package/dist/vta/webvh/dids/update/2.1/payload.js.map +1 -1
- package/dist/vtc/_shared/0.2/invite.d.ts +16 -0
- package/dist/vtc/_shared/0.2/invite.d.ts.map +1 -0
- package/dist/vtc/_shared/0.2/invite.js +6 -0
- package/dist/vtc/_shared/0.2/invite.js.map +1 -0
- package/dist/vtc/admin/invites/create/0.1/payload.d.ts +12 -2
- package/dist/vtc/admin/invites/create/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/admin/invites/create/0.1/payload.js +1 -1
- package/dist/vtc/admin/invites/create/0.1/payload.js.map +1 -1
- package/dist/vtc/admin/invites/create/0.2/payload.d.ts +404 -0
- package/dist/vtc/admin/invites/create/0.2/payload.d.ts.map +1 -0
- package/dist/vtc/admin/invites/create/0.2/payload.js +230 -0
- package/dist/vtc/admin/invites/create/0.2/payload.js.map +1 -0
- package/dist/vtc/admin/invites/list/0.1/payload.d.ts +12 -2
- package/dist/vtc/admin/invites/list/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/admin/invites/list/0.1/payload.js +1 -1
- package/dist/vtc/admin/invites/list/0.1/payload.js.map +1 -1
- package/dist/vtc/admin/invites/list/0.2/payload.d.ts +431 -0
- package/dist/vtc/admin/invites/list/0.2/payload.d.ts.map +1 -0
- package/dist/vtc/admin/invites/list/0.2/payload.js +264 -0
- package/dist/vtc/admin/invites/list/0.2/payload.js.map +1 -0
- package/dist/vtc/credentials/reissue/0.1/payload.d.ts +3 -3
- package/dist/vtc/credentials/reissue/0.1/payload.js +1 -1
- package/dist/vtc/credentials/reissue/0.1/payload.js.map +1 -1
- package/dist/vtc/install/claim/finish/0.2/payload.d.ts +4 -4
- package/dist/vtc/install/claim/finish/0.2/payload.d.ts.map +1 -1
- package/dist/vtc/install/claim/finish/0.2/payload.js +1 -1
- package/dist/vtc/install/claim/finish/0.2/payload.js.map +1 -1
- package/dist/vtc/install/claim/passkey/finish/0.1/payload.d.ts +306 -0
- package/dist/vtc/install/claim/passkey/finish/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/install/claim/passkey/finish/0.1/payload.js +175 -0
- package/dist/vtc/install/claim/passkey/finish/0.1/payload.js.map +1 -0
- package/dist/vtc/install/claim/passkey/start/0.1/payload.d.ts +302 -0
- package/dist/vtc/install/claim/passkey/start/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/install/claim/passkey/start/0.1/payload.js +172 -0
- package/dist/vtc/install/claim/passkey/start/0.1/payload.js.map +1 -0
- package/dist/vtc/install/claim/start/0.2/payload.d.ts +4 -4
- package/dist/vtc/install/claim/start/0.2/payload.d.ts.map +1 -1
- package/dist/vtc/install/claim/start/0.2/payload.js +1 -1
- package/dist/vtc/install/claim/start/0.2/payload.js.map +1 -1
- package/dist/vtc/members/role/set/0.1/payload.d.ts +1867 -0
- package/dist/vtc/members/role/set/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/members/role/set/0.1/payload.js +1060 -0
- package/dist/vtc/members/role/set/0.1/payload.js.map +1 -0
- package/package.json +1 -1
- package/src/_extends.ts +5 -0
- package/src/_runtime/document.ts +18 -2
- package/src/_runtime/index.ts +1 -0
- package/src/_shared/components.ts +556 -3
- package/src/auth/step-up/approve-request/0.5/payload.ts +2 -2
- package/src/auth/step-up/approve-response/0.1/payload.ts +5 -5
- package/src/auth/step-up/approve-response/0.2/payload.ts +5 -5
- package/src/auth/step-up/approve-response/0.3/payload.ts +5 -5
- package/src/auth/step-up/approve-response/0.4/payload.ts +5 -5
- package/src/auth/step-up/approve-response/0.5/payload.ts +5 -5
- package/src/auth/step-up/approve-response/0.6/payload.ts +15 -3
- package/src/auth/step-up/approve-response/0.7/payload.ts +664 -0
- package/src/auth/step-up/approver/attest/0.1/payload.ts +2 -2
- package/src/index.ts +72 -0
- package/src/rooms/owner/group/remove/0.1/payload.ts +5 -5
- package/src/rooms/owner/group/remove/0.2/payload.ts +5 -5
- package/src/rooms/owner/group/remove/0.3/payload.ts +15 -3
- package/src/rooms/owner/group/remove/0.4/payload.ts +442 -0
- package/src/rooms/records/put/0.1/payload.ts +5 -5
- package/src/rooms/records/put/0.2/payload.ts +5 -5
- package/src/rooms/records/put/0.3/payload.ts +15 -3
- package/src/rooms/records/put/0.4/payload.ts +905 -0
- package/src/task-consent/decision/0.2/payload.ts +3 -3
- package/src/vta/_shared/0.3/did-key-roles.ts +1 -1
- package/src/vta/_shared/0.9/did-template.ts +17 -0
- package/src/vta/did-templates/create/2.0/payload.ts +4 -4
- package/src/vta/did-templates/create/3.0/payload.ts +4 -4
- package/src/vta/did-templates/create/3.1/payload.ts +13 -3
- package/src/vta/did-templates/create/3.2/payload.ts +869 -0
- package/src/vta/did-templates/get/2.0/payload.ts +4 -4
- package/src/vta/did-templates/get/3.0/payload.ts +4 -4
- package/src/vta/did-templates/get/3.1/payload.ts +13 -3
- package/src/vta/did-templates/get/3.2/payload.ts +630 -0
- package/src/vta/did-templates/list/2.0/payload.ts +5 -5
- package/src/vta/did-templates/list/3.0/payload.ts +5 -5
- package/src/vta/did-templates/list/3.1/payload.ts +15 -3
- package/src/vta/did-templates/list/3.2/payload.ts +665 -0
- package/src/vta/did-templates/update/2.0/payload.ts +4 -4
- package/src/vta/did-templates/update/3.0/payload.ts +4 -4
- package/src/vta/did-templates/update/3.1/payload.ts +13 -3
- package/src/vta/did-templates/update/3.2/payload.ts +879 -0
- package/src/vta/dids/_shared/0.1/key-roles.ts +17 -0
- package/src/vta/dids/_shared/0.1/method-profiles/webvh-parameters.ts +11 -0
- package/src/vta/dids/create/1.0/payload.ts +1648 -0
- package/src/vta/dids/keys/add/1.0/payload.ts +1553 -0
- package/src/vta/dids/keys/list/1.0/payload.ts +1178 -0
- package/src/vta/dids/keys/retire/1.0/payload.ts +1553 -0
- package/src/vta/dids/keys/revoke/1.0/payload.ts +1697 -0
- package/src/vta/dids/keys/rotate/1.0/payload.ts +1658 -0
- package/src/vta/dids/recover/1.0/payload.ts +1700 -0
- package/src/vta/dids/update/1.0/payload.ts +940 -0
- package/src/vta/webvh/dids/keys/add/1.0/payload.ts +15 -3
- package/src/vta/webvh/dids/keys/list/1.0/payload.ts +15 -3
- package/src/vta/webvh/dids/keys/retire/1.0/payload.ts +15 -3
- package/src/vta/webvh/dids/keys/revoke/1.0/payload.ts +15 -3
- package/src/vta/webvh/dids/rotate-keys/1.0/payload.ts +3 -15
- package/src/vta/webvh/dids/rotate-keys/2.0/payload.ts +15 -3
- package/src/vta/webvh/dids/update/1.0/payload.ts +3 -15
- package/src/vta/webvh/dids/update/2.0/payload.ts +5 -5
- package/src/vta/webvh/dids/update/2.1/payload.ts +15 -3
- package/src/vtc/_shared/0.2/invite.ts +17 -0
- package/src/vtc/admin/invites/create/0.1/payload.ts +13 -3
- package/src/vtc/admin/invites/create/0.2/payload.ts +289 -0
- package/src/vtc/admin/invites/list/0.1/payload.ts +13 -3
- package/src/vtc/admin/invites/list/0.2/payload.ts +294 -0
- package/src/vtc/credentials/reissue/0.1/payload.ts +2 -2
- package/src/vtc/install/claim/finish/0.2/payload.ts +5 -5
- package/src/vtc/install/claim/passkey/finish/0.1/payload.ts +228 -0
- package/src/vtc/install/claim/passkey/start/0.1/payload.ts +225 -0
- package/src/vtc/install/claim/start/0.2/payload.ts +5 -5
- package/src/vtc/members/role/set/0.1/payload.ts +1142 -0
|
@@ -0,0 +1,1855 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
|
|
3
|
+
* Source: specs/vta/dids/keys/list/1.0/payload.schema.json
|
|
4
|
+
*/
|
|
5
|
+
import type { ApprovalEvidenceKind, DidMethodName, DidVerificationRelationship, Ext, IdentityKeyCustody, IdentityKeyRole, IdentityRoleKey, KeyChangeApprovalState, KeyChangeKind, KeyChangeRecord, KeyChangeState, KeyLifecycleState, KeyListProjection, KeyOrigin, KeyRoleSummary, KeyType, ProtectionClass, RecordedApproval, UpdateKeyClass } from "../../../../../_shared/components.js";
|
|
6
|
+
/**
|
|
7
|
+
* List the key roles of a key-role identity a VTA holds keys for: each role's keys and their states, the update authority and recovery commitment, and optionally the rotation history, in the public or custody projection (CONVENTIONS.md §11).
|
|
8
|
+
*/
|
|
9
|
+
export interface VTADIDsKeysListPayload {
|
|
10
|
+
/**
|
|
11
|
+
* The key-role identity, by DID (for a `did:scid` identity, the DID without `src`).
|
|
12
|
+
*/
|
|
13
|
+
did: string;
|
|
14
|
+
/**
|
|
15
|
+
* Return only these roles. Absent returns every role. Present-but-empty is refused by the schema rather than read as 'every role'.
|
|
16
|
+
*
|
|
17
|
+
* @minItems 1
|
|
18
|
+
*/
|
|
19
|
+
roles?: [IdentityKeyRole, ...IdentityKeyRole[]];
|
|
20
|
+
/**
|
|
21
|
+
* Include `retired` and `revoked` keys. Absent reads as false. A `revoked` key the document still lists is always included.
|
|
22
|
+
*/
|
|
23
|
+
includeEnded?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Include the rotation history. Absent reads as false.
|
|
26
|
+
*/
|
|
27
|
+
includeHistory?: boolean;
|
|
28
|
+
ext?: Ext;
|
|
29
|
+
}
|
|
30
|
+
export interface VTADIDsKeysListResponsePayload {
|
|
31
|
+
did: string;
|
|
32
|
+
method: DidMethodName;
|
|
33
|
+
/**
|
|
34
|
+
* The version the answer describes. Pass it as `expectedVersionId` to a change made on its strength.
|
|
35
|
+
*/
|
|
36
|
+
versionId: string;
|
|
37
|
+
projection: KeyListProjection;
|
|
38
|
+
/**
|
|
39
|
+
* One entry per role asked for, including roles with no keys.
|
|
40
|
+
*/
|
|
41
|
+
roles: KeyRoleSummary[];
|
|
42
|
+
/**
|
|
43
|
+
* Present exactly when `includeHistory` was true. Newest first.
|
|
44
|
+
*/
|
|
45
|
+
rotations?: KeyChangeRecord[];
|
|
46
|
+
ext?: Ext;
|
|
47
|
+
}
|
|
48
|
+
/** Shared definitions this specification references, re-exported under the names it used to declare them with. */
|
|
49
|
+
export type { ApprovalEvidenceKind, DidMethodName, DidVerificationRelationship, Ext, IdentityKeyCustody, IdentityKeyRole, IdentityRoleKey, KeyChangeApprovalState, KeyChangeKind, KeyChangeRecord, KeyChangeState, KeyLifecycleState, KeyListProjection, KeyOrigin, KeyRoleSummary, KeyType, ProtectionClass, RecordedApproval, UpdateKeyClass };
|
|
50
|
+
/** Trust Task type URI. */
|
|
51
|
+
export declare const TYPE_URI: "https://trusttasks.org/spec/vta/dids/keys/list/1.0";
|
|
52
|
+
/**
|
|
53
|
+
* The earlier version of this specification that this one declares it
|
|
54
|
+
* extends (front matter `extends`, SPEC §5.2 "Declared extension"), or
|
|
55
|
+
* `null`. Only the direct declaration — follow the chain with
|
|
56
|
+
* `extendsChain` / `readForSpec`.
|
|
57
|
+
*/
|
|
58
|
+
export declare const EXTENDS: string | null;
|
|
59
|
+
/**
|
|
60
|
+
* Why this version is deprecated, or `null` while it is current. A
|
|
61
|
+
* superseded or retired version is still supported, and is withdrawn from
|
|
62
|
+
* this package in a later scheduled batch (SPEC "Superseded and Withdrawn
|
|
63
|
+
* Versions").
|
|
64
|
+
*/
|
|
65
|
+
export declare const DEPRECATION: string | null;
|
|
66
|
+
/** Stable alias for this specification's request payload shape. */
|
|
67
|
+
export type Payload = VTADIDsKeysListPayload;
|
|
68
|
+
/** Trust Task response type URI (request type URI + "#response"). */
|
|
69
|
+
export declare const RESPONSE_TYPE_URI: "https://trusttasks.org/spec/vta/dids/keys/list/1.0#response";
|
|
70
|
+
/** Stable alias for this specification's success-response payload shape. */
|
|
71
|
+
export type Response = VTADIDsKeysListResponsePayload;
|
|
72
|
+
/**
|
|
73
|
+
* This specification's payload schema, as a value.
|
|
74
|
+
*
|
|
75
|
+
* SPEC.md §7.2 item 2 is performed against this. It is shipped as data
|
|
76
|
+
* rather than only as a `.json` file because TypeScript types are erased
|
|
77
|
+
* at runtime: without a schema a consumer has nothing to validate, and
|
|
78
|
+
* every REQUIRED payload member is optional in practice. Cross-file
|
|
79
|
+
* `$ref`s are already inlined, so it needs no resolver.
|
|
80
|
+
*/
|
|
81
|
+
export declare const PAYLOAD_SCHEMA: {
|
|
82
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
83
|
+
readonly $id: "https://trusttasks.org/spec/vta/dids/keys/list/1.0";
|
|
84
|
+
readonly title: "VTA DIDs — Keys List — payload";
|
|
85
|
+
readonly description: "List the key roles of a key-role identity a VTA holds keys for: each role's keys and their states, the update authority and recovery commitment, and optionally the rotation history, in the public or custody projection (CONVENTIONS.md §11).";
|
|
86
|
+
readonly type: "object";
|
|
87
|
+
readonly additionalProperties: false;
|
|
88
|
+
readonly required: readonly ["did"];
|
|
89
|
+
readonly properties: {
|
|
90
|
+
readonly did: {
|
|
91
|
+
readonly type: "string";
|
|
92
|
+
readonly minLength: 1;
|
|
93
|
+
readonly description: "The key-role identity, by DID (for a `did:scid` identity, the DID without `src`).";
|
|
94
|
+
};
|
|
95
|
+
readonly roles: {
|
|
96
|
+
readonly type: "array";
|
|
97
|
+
readonly minItems: 1;
|
|
98
|
+
readonly uniqueItems: true;
|
|
99
|
+
readonly items: {
|
|
100
|
+
readonly $ref: "#/$defs/IdentityKeyRole";
|
|
101
|
+
};
|
|
102
|
+
readonly description: "Return only these roles. Absent returns every role. Present-but-empty is refused by the schema rather than read as 'every role'.";
|
|
103
|
+
};
|
|
104
|
+
readonly includeEnded: {
|
|
105
|
+
readonly type: "boolean";
|
|
106
|
+
readonly description: "Include `retired` and `revoked` keys. Absent reads as false. A `revoked` key the document still lists is always included.";
|
|
107
|
+
};
|
|
108
|
+
readonly includeHistory: {
|
|
109
|
+
readonly type: "boolean";
|
|
110
|
+
readonly description: "Include the rotation history. Absent reads as false.";
|
|
111
|
+
};
|
|
112
|
+
readonly ext: {
|
|
113
|
+
readonly $ref: "#/$defs/Ext";
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
readonly $defs: {
|
|
117
|
+
readonly Response: {
|
|
118
|
+
readonly $anchor: "response";
|
|
119
|
+
readonly title: "VTA DIDs — Keys List — response payload";
|
|
120
|
+
readonly type: "object";
|
|
121
|
+
readonly additionalProperties: false;
|
|
122
|
+
readonly required: readonly ["did", "method", "versionId", "projection", "roles"];
|
|
123
|
+
readonly properties: {
|
|
124
|
+
readonly did: {
|
|
125
|
+
readonly type: "string";
|
|
126
|
+
};
|
|
127
|
+
readonly method: {
|
|
128
|
+
readonly $ref: "#/$defs/DidMethodName";
|
|
129
|
+
};
|
|
130
|
+
readonly versionId: {
|
|
131
|
+
readonly type: "string";
|
|
132
|
+
readonly description: "The version the answer describes. Pass it as `expectedVersionId` to a change made on its strength.";
|
|
133
|
+
};
|
|
134
|
+
readonly projection: {
|
|
135
|
+
readonly $ref: "#/$defs/KeyListProjection";
|
|
136
|
+
};
|
|
137
|
+
readonly roles: {
|
|
138
|
+
readonly type: "array";
|
|
139
|
+
readonly items: {
|
|
140
|
+
readonly $ref: "#/$defs/KeyRoleSummary";
|
|
141
|
+
};
|
|
142
|
+
readonly description: "One entry per role asked for, including roles with no keys.";
|
|
143
|
+
};
|
|
144
|
+
readonly rotations: {
|
|
145
|
+
readonly type: "array";
|
|
146
|
+
readonly items: {
|
|
147
|
+
readonly $ref: "#/$defs/KeyChangeRecord";
|
|
148
|
+
};
|
|
149
|
+
readonly description: "Present exactly when `includeHistory` was true. Newest first.";
|
|
150
|
+
};
|
|
151
|
+
readonly ext: {
|
|
152
|
+
readonly $ref: "#/$defs/Ext";
|
|
153
|
+
};
|
|
154
|
+
};
|
|
155
|
+
};
|
|
156
|
+
readonly Ext: {
|
|
157
|
+
readonly title: "Ext";
|
|
158
|
+
readonly 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.";
|
|
159
|
+
readonly type: "object";
|
|
160
|
+
readonly minProperties: 1;
|
|
161
|
+
readonly additionalProperties: true;
|
|
162
|
+
readonly propertyNames: {
|
|
163
|
+
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
164
|
+
};
|
|
165
|
+
};
|
|
166
|
+
readonly KeyChangeRecord: {
|
|
167
|
+
readonly title: "KeyChangeRecord";
|
|
168
|
+
readonly type: "object";
|
|
169
|
+
readonly additionalProperties: false;
|
|
170
|
+
readonly required: readonly ["rotationId", "role", "kind", "state"];
|
|
171
|
+
readonly description: "One change to a role's key set, from preview to completion. The identifier's history is the authority for what was published; this record adds which change was which and, in the custody projection, who asked, who approved, and why.";
|
|
172
|
+
readonly properties: {
|
|
173
|
+
readonly rotationId: {
|
|
174
|
+
readonly type: "string";
|
|
175
|
+
readonly minLength: 1;
|
|
176
|
+
};
|
|
177
|
+
readonly role: {
|
|
178
|
+
readonly $ref: "#/$defs/IdentityKeyRole";
|
|
179
|
+
};
|
|
180
|
+
readonly kind: {
|
|
181
|
+
readonly $ref: "#/$defs/KeyChangeKind";
|
|
182
|
+
};
|
|
183
|
+
readonly state: {
|
|
184
|
+
readonly $ref: "#/$defs/KeyChangeState";
|
|
185
|
+
};
|
|
186
|
+
readonly predecessors: {
|
|
187
|
+
readonly type: "array";
|
|
188
|
+
readonly items: {
|
|
189
|
+
readonly type: "string";
|
|
190
|
+
};
|
|
191
|
+
readonly description: "Verification-method identifiers (for `update`, public keys or commitments) leaving the role.";
|
|
192
|
+
};
|
|
193
|
+
readonly successors: {
|
|
194
|
+
readonly type: "array";
|
|
195
|
+
readonly items: {
|
|
196
|
+
readonly type: "string";
|
|
197
|
+
};
|
|
198
|
+
readonly description: "Verification-method identifiers (for `update`, public keys or commitments) entering the role.";
|
|
199
|
+
};
|
|
200
|
+
readonly startedInVersionId: {
|
|
201
|
+
readonly type: "string";
|
|
202
|
+
};
|
|
203
|
+
readonly endedInVersionId: {
|
|
204
|
+
readonly type: "string";
|
|
205
|
+
};
|
|
206
|
+
readonly startedAt: {
|
|
207
|
+
readonly type: "string";
|
|
208
|
+
readonly format: "date-time";
|
|
209
|
+
};
|
|
210
|
+
readonly cacheHorizonAt: {
|
|
211
|
+
readonly type: "string";
|
|
212
|
+
readonly format: "date-time";
|
|
213
|
+
readonly description: "Planned rotations: the publishing change's cache horizon (CONVENTIONS.md §10.1). The switch and any retirement happen no earlier.";
|
|
214
|
+
};
|
|
215
|
+
readonly activatesAt: {
|
|
216
|
+
readonly type: "string";
|
|
217
|
+
readonly format: "date-time";
|
|
218
|
+
readonly description: "When the successor becomes `active` and the predecessor `retiring`; never before `cacheHorizonAt`.";
|
|
219
|
+
};
|
|
220
|
+
readonly overlapUntil: {
|
|
221
|
+
readonly type: "string";
|
|
222
|
+
readonly format: "date-time";
|
|
223
|
+
readonly description: "Custody projection only. End of the overlap.";
|
|
224
|
+
};
|
|
225
|
+
readonly autoRetire: {
|
|
226
|
+
readonly type: "boolean";
|
|
227
|
+
readonly description: "Custody projection only. Whether the VTA retires the predecessor itself at `overlapUntil`.";
|
|
228
|
+
};
|
|
229
|
+
readonly endedAt: {
|
|
230
|
+
readonly type: "string";
|
|
231
|
+
readonly format: "date-time";
|
|
232
|
+
};
|
|
233
|
+
readonly initiatedBy: {
|
|
234
|
+
readonly type: "string";
|
|
235
|
+
readonly description: "Custody projection only. VID of the administrator whose signed request started the change.";
|
|
236
|
+
};
|
|
237
|
+
readonly approvals: {
|
|
238
|
+
readonly $ref: "#/$defs/KeyChangeApprovalState";
|
|
239
|
+
};
|
|
240
|
+
readonly reason: {
|
|
241
|
+
readonly type: "string";
|
|
242
|
+
readonly maxLength: 1024;
|
|
243
|
+
readonly description: "Custody projection only. The operator's stated reason. Never published.";
|
|
244
|
+
};
|
|
245
|
+
readonly ext: {
|
|
246
|
+
readonly $ref: "#/$defs/Ext";
|
|
247
|
+
};
|
|
248
|
+
};
|
|
249
|
+
};
|
|
250
|
+
readonly KeyChangeApprovalState: {
|
|
251
|
+
readonly title: "KeyChangeApprovalState";
|
|
252
|
+
readonly type: "object";
|
|
253
|
+
readonly additionalProperties: false;
|
|
254
|
+
readonly required: readonly ["required", "received", "expiresAt"];
|
|
255
|
+
readonly description: "Approval progress of a change the VTA's policy gates on approvals (CONVENTIONS.md §6).";
|
|
256
|
+
readonly properties: {
|
|
257
|
+
readonly required: {
|
|
258
|
+
readonly type: "integer";
|
|
259
|
+
readonly minimum: 1;
|
|
260
|
+
readonly description: "Distinct approvals the VTA's policy requires.";
|
|
261
|
+
};
|
|
262
|
+
readonly received: {
|
|
263
|
+
readonly type: "integer";
|
|
264
|
+
readonly minimum: 0;
|
|
265
|
+
readonly description: "Distinct approvals recorded so far, the initiator's own included.";
|
|
266
|
+
};
|
|
267
|
+
readonly approvals: {
|
|
268
|
+
readonly type: "array";
|
|
269
|
+
readonly items: {
|
|
270
|
+
readonly $ref: "#/$defs/RecordedApproval";
|
|
271
|
+
};
|
|
272
|
+
readonly description: "The approvals recorded. Custody projection only; omitted from a response to anyone who is not themselves an eligible approver of this change.";
|
|
273
|
+
};
|
|
274
|
+
readonly expiresAt: {
|
|
275
|
+
readonly type: "string";
|
|
276
|
+
readonly format: "date-time";
|
|
277
|
+
readonly description: "When the preview, and every approval bound to it, stops being usable.";
|
|
278
|
+
};
|
|
279
|
+
};
|
|
280
|
+
};
|
|
281
|
+
readonly RecordedApproval: {
|
|
282
|
+
readonly title: "RecordedApproval";
|
|
283
|
+
readonly type: "object";
|
|
284
|
+
readonly additionalProperties: false;
|
|
285
|
+
readonly required: readonly ["approver", "evidence"];
|
|
286
|
+
readonly properties: {
|
|
287
|
+
readonly approver: {
|
|
288
|
+
readonly type: "string";
|
|
289
|
+
readonly minLength: 1;
|
|
290
|
+
readonly description: "VID of the approver.";
|
|
291
|
+
};
|
|
292
|
+
readonly evidence: {
|
|
293
|
+
readonly $ref: "#/$defs/ApprovalEvidenceKind";
|
|
294
|
+
};
|
|
295
|
+
readonly recordedAt: {
|
|
296
|
+
readonly type: "string";
|
|
297
|
+
readonly format: "date-time";
|
|
298
|
+
};
|
|
299
|
+
};
|
|
300
|
+
};
|
|
301
|
+
readonly ApprovalEvidenceKind: {
|
|
302
|
+
readonly title: "ApprovalEvidenceKind";
|
|
303
|
+
readonly type: "string";
|
|
304
|
+
readonly enum: readonly ["didSigned", "webauthn", "approverSigned"];
|
|
305
|
+
readonly description: "The evidence an approval was recorded on, as `auth/step-up/approve-response` names it. Only the approver's own evidence is ever recorded: a proof by a key the VTA records as acting for an approver — a console signing key or any other delegation — is never an approval (CONVENTIONS.md §6.3).";
|
|
306
|
+
};
|
|
307
|
+
readonly KeyChangeState: {
|
|
308
|
+
readonly title: "KeyChangeState";
|
|
309
|
+
readonly type: "string";
|
|
310
|
+
readonly enum: readonly ["pendingApproval", "awaitingRecoveryProof", "staged", "overlapping", "completed", "aborted", "expired"];
|
|
311
|
+
readonly description: "`pendingApproval` — awaiting the approvals the VTA's policy requires; nothing is published. `awaitingRecoveryProof` — approved, and waiting for the recovery custodian's proof over the change; nothing is published. `staged` — successor published, not yet used. `overlapping` — successor active, predecessor `retiring`. `completed` — every predecessor retired, or the change is published and any overlap it began has ended. `aborted` — the successor was retired instead of the predecessor, or a revocation superseded the change. `expired` — the approvals or the recovery proof did not arrive before the preview expired; nothing was published.";
|
|
312
|
+
};
|
|
313
|
+
readonly KeyChangeKind: {
|
|
314
|
+
readonly title: "KeyChangeKind";
|
|
315
|
+
readonly type: "string";
|
|
316
|
+
readonly enum: readonly ["planned", "compromise", "addition", "recovery"];
|
|
317
|
+
readonly description: "`planned` — a successor was staged, activated, and the predecessor retired on the operator's schedule. `compromise` — a key was revoked and, where the role would otherwise be empty, replaced in the same change. `addition` — a key joined a role without anything leaving it. `recovery` — the identifier's update authority moved to the committed recovery key, because the VTA's own update keys were lost or may be in someone else's hands.";
|
|
318
|
+
};
|
|
319
|
+
readonly IdentityKeyRole: {
|
|
320
|
+
readonly title: "IdentityKeyRole";
|
|
321
|
+
readonly type: "string";
|
|
322
|
+
readonly enum: readonly ["attestation", "operational", "messaging", "update", "authenticator"];
|
|
323
|
+
readonly description: "The named key role a key occupies in an identity (CONVENTIONS.md §2; VTI-KEY-070 onward). `attestation` — the only keys in `assertionMethod`; sign the identity's attestation artefacts (credentials, endorsements, status lists) through the VTA's signing service and nowhere else. Generated inside the VTA, never derived, never exportable, never in a backup. `operational` — the only keys the identity's own process uses in `authentication`; sign the node's own traffic (Trust Task requests and responses, DIDComm and TSP signatures, invitations, notices, audit checkpoints). Derived. `messaging` — the only keys in `keyAgreement`; sign nothing. X25519, derived or generated in its own right and never converted from a signing key. `update` — the identifier's change authority as its DID method states it (a did:webvh log's `updateKeys` and `nextKeyHashes`, a KERI key event log's current and next keys); never a role-bound verification method, never in `keyRoles`. Generated inside the VTA, never derived, never exportable, never in a backup, and always accompanied by a committed recovery key held outside the VTA's protection boundary. `authenticator` — a key held on a person's own authenticator (a WebAuthn passkey), listed in `authentication` of that person's identity only; used only to verify the person's WebAuthn assertions (sign-in and step-up evidence) and never to accept a Data Integrity proof. The VTA never holds its private half, so it is enrolled by the passkey ceremony and never generated, added or rotated by these tasks. Never permitted on the durable identity of a VTA, a VTC or a VTN. No role permits `capabilityInvocation` or `capabilityDelegation` (VTI-KEY-075). The set is an extensible registry: a consumer that meets a role it does not implement MUST rely on the key for nothing, and MUST NOT map it onto a role it does know (VTI-KEY-074).";
|
|
324
|
+
};
|
|
325
|
+
readonly KeyRoleSummary: {
|
|
326
|
+
readonly title: "KeyRoleSummary";
|
|
327
|
+
readonly type: "object";
|
|
328
|
+
readonly additionalProperties: false;
|
|
329
|
+
readonly required: readonly ["role", "relationships", "keys"];
|
|
330
|
+
readonly properties: {
|
|
331
|
+
readonly role: {
|
|
332
|
+
readonly $ref: "#/$defs/IdentityKeyRole";
|
|
333
|
+
};
|
|
334
|
+
readonly relationships: {
|
|
335
|
+
readonly type: "array";
|
|
336
|
+
readonly items: {
|
|
337
|
+
readonly $ref: "#/$defs/DidVerificationRelationship";
|
|
338
|
+
};
|
|
339
|
+
readonly uniqueItems: true;
|
|
340
|
+
readonly description: "The relationship this role owns. Empty for `update`.";
|
|
341
|
+
};
|
|
342
|
+
readonly keys: {
|
|
343
|
+
readonly type: "array";
|
|
344
|
+
readonly items: {
|
|
345
|
+
readonly $ref: "#/$defs/IdentityRoleKey";
|
|
346
|
+
};
|
|
347
|
+
readonly description: "The role's keys, in the order the document publishes them. Terminal-state keys are included only when the request asked for them, except a `revoked` key the document still lists, which is always included.";
|
|
348
|
+
};
|
|
349
|
+
readonly recoveryCommitted: {
|
|
350
|
+
readonly type: "boolean";
|
|
351
|
+
readonly description: "`update` only: whether the identifier's latest version commits to a recovery key in a boundary other than the VTA's (CONVENTIONS.md §5.3). `false` is a defect the VTA reports rather than hides.";
|
|
352
|
+
};
|
|
353
|
+
readonly threshold: {
|
|
354
|
+
readonly type: "string";
|
|
355
|
+
readonly description: "`update` only, where the method has one: the signing threshold over the current update keys, in the method's own notation (a KERI `kt`).";
|
|
356
|
+
};
|
|
357
|
+
};
|
|
358
|
+
};
|
|
359
|
+
readonly IdentityRoleKey: {
|
|
360
|
+
readonly title: "IdentityRoleKey";
|
|
361
|
+
readonly type: "object";
|
|
362
|
+
readonly additionalProperties: false;
|
|
363
|
+
readonly required: readonly ["role", "keyType", "state"];
|
|
364
|
+
readonly description: "One key in one role. A key is in exactly one role for its whole life; a change of role is a retirement from one and an addition to another, with fresh material under a fresh identifier.";
|
|
365
|
+
readonly properties: {
|
|
366
|
+
readonly verificationMethod: {
|
|
367
|
+
readonly type: "string";
|
|
368
|
+
readonly minLength: 1;
|
|
369
|
+
readonly description: "The full verification-method identifier (`did#fragment`) the document publishes the key under and lists in `keyRoles`. Absent for `update` keys, which are never role-bound verification methods (VTI-KEY-093). A VTA minting a method SHOULD derive its fragment from the key (VTI-KEY-150).";
|
|
370
|
+
};
|
|
371
|
+
readonly role: {
|
|
372
|
+
readonly $ref: "#/$defs/IdentityKeyRole";
|
|
373
|
+
};
|
|
374
|
+
readonly updateKeyClass: {
|
|
375
|
+
readonly $ref: "#/$defs/UpdateKeyClass";
|
|
376
|
+
};
|
|
377
|
+
readonly relationships: {
|
|
378
|
+
readonly type: "array";
|
|
379
|
+
readonly items: {
|
|
380
|
+
readonly $ref: "#/$defs/DidVerificationRelationship";
|
|
381
|
+
};
|
|
382
|
+
readonly uniqueItems: true;
|
|
383
|
+
readonly description: "The relationships the key is (or, while `pending`, will be) listed in: always exactly its role's one relationship. Empty for `update`, `retired` and `revoked` keys.";
|
|
384
|
+
};
|
|
385
|
+
readonly keyType: {
|
|
386
|
+
readonly $ref: "#/$defs/KeyType";
|
|
387
|
+
};
|
|
388
|
+
readonly publicKeyMultibase: {
|
|
389
|
+
readonly type: "string";
|
|
390
|
+
readonly minLength: 1;
|
|
391
|
+
readonly description: "The public half, multibase-encoded, exactly as published. Absent for a `committed` update key, whose public half the identifier has not yet revealed.";
|
|
392
|
+
};
|
|
393
|
+
readonly commitment: {
|
|
394
|
+
readonly type: "string";
|
|
395
|
+
readonly minLength: 1;
|
|
396
|
+
readonly description: "For a `committed` update key: the commitment the identifier publishes (a did:webvh `nextKeyHashes` entry, a KERI next-key digest), in the method's own encoding.";
|
|
397
|
+
};
|
|
398
|
+
readonly state: {
|
|
399
|
+
readonly $ref: "#/$defs/KeyLifecycleState";
|
|
400
|
+
};
|
|
401
|
+
readonly publishedInVersionId: {
|
|
402
|
+
readonly type: "string";
|
|
403
|
+
readonly description: "The method's version identifier of the change that first published the key or its commitment (method-profiles/: a did:webvh `versionId`, a KERI event's sequence number and digest). Absent while `pending`.";
|
|
404
|
+
};
|
|
405
|
+
readonly removedInVersionId: {
|
|
406
|
+
readonly type: "string";
|
|
407
|
+
readonly description: "Version identifier of the change that retired or revoked the key.";
|
|
408
|
+
};
|
|
409
|
+
readonly activatesAt: {
|
|
410
|
+
readonly type: "string";
|
|
411
|
+
readonly format: "date-time";
|
|
412
|
+
readonly description: "For a `staged` key: when the VTA will begin using it — no earlier than the publishing change's cache horizon.";
|
|
413
|
+
};
|
|
414
|
+
readonly retireAfter: {
|
|
415
|
+
readonly type: "string";
|
|
416
|
+
readonly format: "date-time";
|
|
417
|
+
readonly description: "For a `retiring` key: the end of its overlap. Custody projection only.";
|
|
418
|
+
};
|
|
419
|
+
readonly compromisedSince: {
|
|
420
|
+
readonly type: "string";
|
|
421
|
+
readonly format: "date-time";
|
|
422
|
+
readonly description: "For a `revoked` key: the compromise time (VTI-KEY-121), published as the verification method's `revoked` value. Where it cannot be established, the time the key was first published.";
|
|
423
|
+
};
|
|
424
|
+
readonly rotationId: {
|
|
425
|
+
readonly type: "string";
|
|
426
|
+
readonly description: "The rotation this key was introduced or retired by.";
|
|
427
|
+
};
|
|
428
|
+
readonly label: {
|
|
429
|
+
readonly type: "string";
|
|
430
|
+
readonly maxLength: 256;
|
|
431
|
+
readonly description: "Operator-facing label. Custody projection only.";
|
|
432
|
+
};
|
|
433
|
+
readonly custody: {
|
|
434
|
+
readonly $ref: "#/$defs/IdentityKeyCustody";
|
|
435
|
+
};
|
|
436
|
+
readonly ext: {
|
|
437
|
+
readonly $ref: "#/$defs/Ext";
|
|
438
|
+
};
|
|
439
|
+
};
|
|
440
|
+
};
|
|
441
|
+
readonly IdentityKeyCustody: {
|
|
442
|
+
readonly title: "IdentityKeyCustody";
|
|
443
|
+
readonly type: "object";
|
|
444
|
+
readonly additionalProperties: false;
|
|
445
|
+
readonly required: readonly ["exportable", "neverExportable", "inBackups", "protection"];
|
|
446
|
+
readonly description: "How a key is held. Present only in the custody projection. Carries no key material, and a conforming VTA MUST NOT place any in `ext`.";
|
|
447
|
+
readonly properties: {
|
|
448
|
+
readonly keyId: {
|
|
449
|
+
readonly type: "string";
|
|
450
|
+
readonly minLength: 1;
|
|
451
|
+
readonly description: "The custodian record identifier (`keys/*`'s `keyId`) behind this key. Absent for a key this VTA does not hold (`protection: externalCustodian`).";
|
|
452
|
+
};
|
|
453
|
+
readonly origin: {
|
|
454
|
+
readonly $ref: "#/$defs/KeyOrigin";
|
|
455
|
+
};
|
|
456
|
+
readonly exportable: {
|
|
457
|
+
readonly type: "boolean";
|
|
458
|
+
readonly description: "Whether the custodian would release the private half. Always `false` for `attestation` and `update` keys. Stated explicitly, never absent.";
|
|
459
|
+
};
|
|
460
|
+
readonly neverExportable: {
|
|
461
|
+
readonly type: "boolean";
|
|
462
|
+
readonly description: "True when no authority can make the key exportable. `true` implies `exportable: false`.";
|
|
463
|
+
};
|
|
464
|
+
readonly inBackups: {
|
|
465
|
+
readonly type: "boolean";
|
|
466
|
+
readonly description: "Whether the key, or material it can be re-derived or decrypted from, is in the VTA's backups or any state transfer. Always `false` for `attestation` and `update` keys (VTI-KEY-112).";
|
|
467
|
+
};
|
|
468
|
+
readonly protection: {
|
|
469
|
+
readonly $ref: "#/$defs/ProtectionClass";
|
|
470
|
+
};
|
|
471
|
+
readonly boundary: {
|
|
472
|
+
readonly type: "string";
|
|
473
|
+
readonly minLength: 1;
|
|
474
|
+
readonly maxLength: 128;
|
|
475
|
+
readonly description: "Opaque, VTA-assigned label of the protection boundary holding the key (CONVENTIONS.md §5.2). Two keys with the same label are lost or compromised together. A recovery update key MUST carry a label different from every routine update key's. Custody projection only; never published.";
|
|
476
|
+
};
|
|
477
|
+
readonly destroyed: {
|
|
478
|
+
readonly type: "boolean";
|
|
479
|
+
readonly description: "True once the private half has been destroyed — a retired `attestation` or `messaging` key. The record survives so the key's past signatures stay attributable.";
|
|
480
|
+
};
|
|
481
|
+
};
|
|
482
|
+
};
|
|
483
|
+
readonly ProtectionClass: {
|
|
484
|
+
readonly title: "ProtectionClass";
|
|
485
|
+
readonly type: "string";
|
|
486
|
+
readonly enum: readonly ["software", "encryptedAtRest", "enclave", "hardwareModule", "externalCustodian"];
|
|
487
|
+
readonly description: "How a private half is protected (CONVENTIONS.md §5.2). `software` — stored by the VTA without encryption independent of the host (a plain VTA). `encryptedAtRest` — wrapped under a key the VTA holds outside its store (a hardened VTA). `enclave` — held only inside an attested trusted execution environment, wrapped under a key released only to its measurement (a TEE VTA). `hardwareModule` — held by a hardware security module or cloud key service that performs the operation without releasing the key. `externalCustodian` — not held by this VTA at all: a recovery update key, or an `authenticator` key on a person's device.";
|
|
488
|
+
};
|
|
489
|
+
readonly KeyOrigin: {
|
|
490
|
+
readonly title: "KeyOrigin";
|
|
491
|
+
readonly type: "string";
|
|
492
|
+
readonly enum: readonly ["derived", "imported", "internal"];
|
|
493
|
+
readonly description: "Where the private key came from. `derived` means the maintainer generated it from a seed it holds and can reproduce it from `derivationPath`; `imported` means it arrived from outside and exists only as stored material; `internal` means the maintainer generated it from a CSPRNG and it is reproducible from nothing at all. The distinction is operationally load-bearing: a `derived` key survives a seed restore, an `imported` one is lost unless it was backed up separately, and an `internal` one cannot be recovered by any means once the maintainer's storage is gone. This member is also the only way a consumer can confirm that a `keys/create` request for an `internal` key was honoured rather than silently downgraded to a derived one — see that specification's `internal` member.";
|
|
494
|
+
readonly default: "derived";
|
|
495
|
+
};
|
|
496
|
+
readonly KeyLifecycleState: {
|
|
497
|
+
readonly title: "KeyLifecycleState";
|
|
498
|
+
readonly type: "string";
|
|
499
|
+
readonly enum: readonly ["pending", "staged", "active", "retiring", "retired", "revoked", "committed"];
|
|
500
|
+
readonly description: "Where a key is in its role's lifecycle (CONVENTIONS.md §8, §10). `pending` — planned by a preview or a change awaiting approval; not published; custody projection only. `staged` — published and bound to its role but not yet used, until the publishing change's cache horizon. `active` — the key the VTA uses for new signatures (for `messaging`, advertises for new sessions; for `update`, the current authority). `retiring` — still published but never used to sign again; a retiring `messaging` key still decrypts until retirement. `retired` — removed by planned rotation; what it signed while published stays valid, judged against the identifier version current at issuance. `revoked` — withdrawn for compromise, recorded with `compromisedSince`; what it signed from then on establishes nothing. `committed` — an `update` key the identifier commits to as a successor but has not revealed (a did:webvh `nextKeyHashes` entry, a KERI next-key digest). `retired` and `revoked` are terminal.";
|
|
501
|
+
};
|
|
502
|
+
readonly DidVerificationRelationship: {
|
|
503
|
+
readonly title: "DidVerificationRelationship";
|
|
504
|
+
readonly type: "string";
|
|
505
|
+
readonly enum: readonly ["authentication", "assertionMethod", "keyAgreement", "capabilityInvocation", "capabilityDelegation"];
|
|
506
|
+
readonly description: "A DID Core verification relationship.";
|
|
507
|
+
};
|
|
508
|
+
readonly UpdateKeyClass: {
|
|
509
|
+
readonly title: "UpdateKeyClass";
|
|
510
|
+
readonly type: "string";
|
|
511
|
+
readonly enum: readonly ["routine", "recovery"];
|
|
512
|
+
readonly description: "For an `update` key only (CONVENTIONS.md §5.3). `routine` — generated and held by the VTA, which authorizes the identity's ordinary changes with it. `recovery` — held by a recovery custodian in a protection boundary other than the VTA's; the VTA holds only its commitment, carries that commitment forward in every change it makes, and can use the key only by asking the custodian for a proof (`RecoverySigningRequest`).";
|
|
513
|
+
};
|
|
514
|
+
readonly KeyType: {
|
|
515
|
+
readonly title: "KeyType";
|
|
516
|
+
readonly type: "string";
|
|
517
|
+
readonly enum: readonly ["ed25519", "x25519", "p256", "mldsa44", "mldsa65"];
|
|
518
|
+
readonly description: "Cryptographic algorithm the key material belongs to. `ed25519` signs (EdDSA), `x25519` performs key agreement and never signs, `p256` signs (ES256), and `mldsa44` and `mldsa65` sign with the post-quantum ML-DSA scheme of US NIST FIPS 204. The set is expected to grow as algorithms are standardised, and growing it is a MINOR change under SPEC.md §5.2: `keyType` selects no schema branch, so adding a value relaxes a constraint rather than narrowing one, and the generated libraries mark this enumeration non-exhaustive so that a consumer absorbs a new value rather than failing to compile. Two ML-DSA parameter sets are carried because two specifications require different ones — W3C Quantum-Resistant Cryptosuites defines Data Integrity suites only for ML-DSA-44, while Trust Spanning Protocol Rev 3 §8.1 mandates ML-DSA-65 — so the parameter set is chosen by whatever consumes the key and the two are not redundant. A consumer that does not implement a value it receives MUST refuse the document rather than substitute one it does support.";
|
|
519
|
+
};
|
|
520
|
+
readonly KeyListProjection: {
|
|
521
|
+
readonly title: "KeyListProjection";
|
|
522
|
+
readonly type: "string";
|
|
523
|
+
readonly enum: readonly ["public", "custody"];
|
|
524
|
+
readonly description: "Which view of the identity's key roles the caller was given (CONVENTIONS.md §11). `public` — only what the published identifier document and history already reveal. `custody` — additionally the VTA's custody state: pending keys, the custodian record and protection boundary behind each key, overlap deadlines, who initiated and approved each change, and why.";
|
|
525
|
+
};
|
|
526
|
+
readonly DidMethodName: {
|
|
527
|
+
readonly title: "DidMethodName";
|
|
528
|
+
readonly type: "string";
|
|
529
|
+
readonly pattern: "^[a-z0-9]+(:[a-z0-9]+)*$";
|
|
530
|
+
readonly description: "The DID method an identity uses, as the method profile that governs it is named: `webvh` for a did:webvh identity, `scid:vh` for the did:scid:vh:1 form of one, `webs` for did:webs. Deliberately a pattern and not an enumeration: a method is added by publishing its profile under method-profiles/, never by changing this schema. A VTA MUST refuse a method it holds no profile for, or whose profile declares it ineligible, with `vta/dids:methodNotEligible`.";
|
|
531
|
+
};
|
|
532
|
+
};
|
|
533
|
+
};
|
|
534
|
+
/** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
|
|
535
|
+
export declare const RESPONSE_PAYLOAD_SCHEMA: {
|
|
536
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
537
|
+
readonly $ref: "#/$defs/Response";
|
|
538
|
+
readonly $defs: {
|
|
539
|
+
readonly Response: {
|
|
540
|
+
readonly $anchor: "response";
|
|
541
|
+
readonly title: "VTA DIDs — Keys List — response payload";
|
|
542
|
+
readonly type: "object";
|
|
543
|
+
readonly additionalProperties: false;
|
|
544
|
+
readonly required: readonly ["did", "method", "versionId", "projection", "roles"];
|
|
545
|
+
readonly properties: {
|
|
546
|
+
readonly did: {
|
|
547
|
+
readonly type: "string";
|
|
548
|
+
};
|
|
549
|
+
readonly method: {
|
|
550
|
+
readonly $ref: "#/$defs/DidMethodName";
|
|
551
|
+
};
|
|
552
|
+
readonly versionId: {
|
|
553
|
+
readonly type: "string";
|
|
554
|
+
readonly description: "The version the answer describes. Pass it as `expectedVersionId` to a change made on its strength.";
|
|
555
|
+
};
|
|
556
|
+
readonly projection: {
|
|
557
|
+
readonly $ref: "#/$defs/KeyListProjection";
|
|
558
|
+
};
|
|
559
|
+
readonly roles: {
|
|
560
|
+
readonly type: "array";
|
|
561
|
+
readonly items: {
|
|
562
|
+
readonly $ref: "#/$defs/KeyRoleSummary";
|
|
563
|
+
};
|
|
564
|
+
readonly description: "One entry per role asked for, including roles with no keys.";
|
|
565
|
+
};
|
|
566
|
+
readonly rotations: {
|
|
567
|
+
readonly type: "array";
|
|
568
|
+
readonly items: {
|
|
569
|
+
readonly $ref: "#/$defs/KeyChangeRecord";
|
|
570
|
+
};
|
|
571
|
+
readonly description: "Present exactly when `includeHistory` was true. Newest first.";
|
|
572
|
+
};
|
|
573
|
+
readonly ext: {
|
|
574
|
+
readonly $ref: "#/$defs/Ext";
|
|
575
|
+
};
|
|
576
|
+
};
|
|
577
|
+
};
|
|
578
|
+
readonly Ext: {
|
|
579
|
+
readonly title: "Ext";
|
|
580
|
+
readonly 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.";
|
|
581
|
+
readonly type: "object";
|
|
582
|
+
readonly minProperties: 1;
|
|
583
|
+
readonly additionalProperties: true;
|
|
584
|
+
readonly propertyNames: {
|
|
585
|
+
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
586
|
+
};
|
|
587
|
+
};
|
|
588
|
+
readonly KeyChangeRecord: {
|
|
589
|
+
readonly title: "KeyChangeRecord";
|
|
590
|
+
readonly type: "object";
|
|
591
|
+
readonly additionalProperties: false;
|
|
592
|
+
readonly required: readonly ["rotationId", "role", "kind", "state"];
|
|
593
|
+
readonly description: "One change to a role's key set, from preview to completion. The identifier's history is the authority for what was published; this record adds which change was which and, in the custody projection, who asked, who approved, and why.";
|
|
594
|
+
readonly properties: {
|
|
595
|
+
readonly rotationId: {
|
|
596
|
+
readonly type: "string";
|
|
597
|
+
readonly minLength: 1;
|
|
598
|
+
};
|
|
599
|
+
readonly role: {
|
|
600
|
+
readonly $ref: "#/$defs/IdentityKeyRole";
|
|
601
|
+
};
|
|
602
|
+
readonly kind: {
|
|
603
|
+
readonly $ref: "#/$defs/KeyChangeKind";
|
|
604
|
+
};
|
|
605
|
+
readonly state: {
|
|
606
|
+
readonly $ref: "#/$defs/KeyChangeState";
|
|
607
|
+
};
|
|
608
|
+
readonly predecessors: {
|
|
609
|
+
readonly type: "array";
|
|
610
|
+
readonly items: {
|
|
611
|
+
readonly type: "string";
|
|
612
|
+
};
|
|
613
|
+
readonly description: "Verification-method identifiers (for `update`, public keys or commitments) leaving the role.";
|
|
614
|
+
};
|
|
615
|
+
readonly successors: {
|
|
616
|
+
readonly type: "array";
|
|
617
|
+
readonly items: {
|
|
618
|
+
readonly type: "string";
|
|
619
|
+
};
|
|
620
|
+
readonly description: "Verification-method identifiers (for `update`, public keys or commitments) entering the role.";
|
|
621
|
+
};
|
|
622
|
+
readonly startedInVersionId: {
|
|
623
|
+
readonly type: "string";
|
|
624
|
+
};
|
|
625
|
+
readonly endedInVersionId: {
|
|
626
|
+
readonly type: "string";
|
|
627
|
+
};
|
|
628
|
+
readonly startedAt: {
|
|
629
|
+
readonly type: "string";
|
|
630
|
+
readonly format: "date-time";
|
|
631
|
+
};
|
|
632
|
+
readonly cacheHorizonAt: {
|
|
633
|
+
readonly type: "string";
|
|
634
|
+
readonly format: "date-time";
|
|
635
|
+
readonly description: "Planned rotations: the publishing change's cache horizon (CONVENTIONS.md §10.1). The switch and any retirement happen no earlier.";
|
|
636
|
+
};
|
|
637
|
+
readonly activatesAt: {
|
|
638
|
+
readonly type: "string";
|
|
639
|
+
readonly format: "date-time";
|
|
640
|
+
readonly description: "When the successor becomes `active` and the predecessor `retiring`; never before `cacheHorizonAt`.";
|
|
641
|
+
};
|
|
642
|
+
readonly overlapUntil: {
|
|
643
|
+
readonly type: "string";
|
|
644
|
+
readonly format: "date-time";
|
|
645
|
+
readonly description: "Custody projection only. End of the overlap.";
|
|
646
|
+
};
|
|
647
|
+
readonly autoRetire: {
|
|
648
|
+
readonly type: "boolean";
|
|
649
|
+
readonly description: "Custody projection only. Whether the VTA retires the predecessor itself at `overlapUntil`.";
|
|
650
|
+
};
|
|
651
|
+
readonly endedAt: {
|
|
652
|
+
readonly type: "string";
|
|
653
|
+
readonly format: "date-time";
|
|
654
|
+
};
|
|
655
|
+
readonly initiatedBy: {
|
|
656
|
+
readonly type: "string";
|
|
657
|
+
readonly description: "Custody projection only. VID of the administrator whose signed request started the change.";
|
|
658
|
+
};
|
|
659
|
+
readonly approvals: {
|
|
660
|
+
readonly $ref: "#/$defs/KeyChangeApprovalState";
|
|
661
|
+
};
|
|
662
|
+
readonly reason: {
|
|
663
|
+
readonly type: "string";
|
|
664
|
+
readonly maxLength: 1024;
|
|
665
|
+
readonly description: "Custody projection only. The operator's stated reason. Never published.";
|
|
666
|
+
};
|
|
667
|
+
readonly ext: {
|
|
668
|
+
readonly $ref: "#/$defs/Ext";
|
|
669
|
+
};
|
|
670
|
+
};
|
|
671
|
+
};
|
|
672
|
+
readonly KeyChangeApprovalState: {
|
|
673
|
+
readonly title: "KeyChangeApprovalState";
|
|
674
|
+
readonly type: "object";
|
|
675
|
+
readonly additionalProperties: false;
|
|
676
|
+
readonly required: readonly ["required", "received", "expiresAt"];
|
|
677
|
+
readonly description: "Approval progress of a change the VTA's policy gates on approvals (CONVENTIONS.md §6).";
|
|
678
|
+
readonly properties: {
|
|
679
|
+
readonly required: {
|
|
680
|
+
readonly type: "integer";
|
|
681
|
+
readonly minimum: 1;
|
|
682
|
+
readonly description: "Distinct approvals the VTA's policy requires.";
|
|
683
|
+
};
|
|
684
|
+
readonly received: {
|
|
685
|
+
readonly type: "integer";
|
|
686
|
+
readonly minimum: 0;
|
|
687
|
+
readonly description: "Distinct approvals recorded so far, the initiator's own included.";
|
|
688
|
+
};
|
|
689
|
+
readonly approvals: {
|
|
690
|
+
readonly type: "array";
|
|
691
|
+
readonly items: {
|
|
692
|
+
readonly $ref: "#/$defs/RecordedApproval";
|
|
693
|
+
};
|
|
694
|
+
readonly description: "The approvals recorded. Custody projection only; omitted from a response to anyone who is not themselves an eligible approver of this change.";
|
|
695
|
+
};
|
|
696
|
+
readonly expiresAt: {
|
|
697
|
+
readonly type: "string";
|
|
698
|
+
readonly format: "date-time";
|
|
699
|
+
readonly description: "When the preview, and every approval bound to it, stops being usable.";
|
|
700
|
+
};
|
|
701
|
+
};
|
|
702
|
+
};
|
|
703
|
+
readonly RecordedApproval: {
|
|
704
|
+
readonly title: "RecordedApproval";
|
|
705
|
+
readonly type: "object";
|
|
706
|
+
readonly additionalProperties: false;
|
|
707
|
+
readonly required: readonly ["approver", "evidence"];
|
|
708
|
+
readonly properties: {
|
|
709
|
+
readonly approver: {
|
|
710
|
+
readonly type: "string";
|
|
711
|
+
readonly minLength: 1;
|
|
712
|
+
readonly description: "VID of the approver.";
|
|
713
|
+
};
|
|
714
|
+
readonly evidence: {
|
|
715
|
+
readonly $ref: "#/$defs/ApprovalEvidenceKind";
|
|
716
|
+
};
|
|
717
|
+
readonly recordedAt: {
|
|
718
|
+
readonly type: "string";
|
|
719
|
+
readonly format: "date-time";
|
|
720
|
+
};
|
|
721
|
+
};
|
|
722
|
+
};
|
|
723
|
+
readonly ApprovalEvidenceKind: {
|
|
724
|
+
readonly title: "ApprovalEvidenceKind";
|
|
725
|
+
readonly type: "string";
|
|
726
|
+
readonly enum: readonly ["didSigned", "webauthn", "approverSigned"];
|
|
727
|
+
readonly description: "The evidence an approval was recorded on, as `auth/step-up/approve-response` names it. Only the approver's own evidence is ever recorded: a proof by a key the VTA records as acting for an approver — a console signing key or any other delegation — is never an approval (CONVENTIONS.md §6.3).";
|
|
728
|
+
};
|
|
729
|
+
readonly KeyChangeState: {
|
|
730
|
+
readonly title: "KeyChangeState";
|
|
731
|
+
readonly type: "string";
|
|
732
|
+
readonly enum: readonly ["pendingApproval", "awaitingRecoveryProof", "staged", "overlapping", "completed", "aborted", "expired"];
|
|
733
|
+
readonly description: "`pendingApproval` — awaiting the approvals the VTA's policy requires; nothing is published. `awaitingRecoveryProof` — approved, and waiting for the recovery custodian's proof over the change; nothing is published. `staged` — successor published, not yet used. `overlapping` — successor active, predecessor `retiring`. `completed` — every predecessor retired, or the change is published and any overlap it began has ended. `aborted` — the successor was retired instead of the predecessor, or a revocation superseded the change. `expired` — the approvals or the recovery proof did not arrive before the preview expired; nothing was published.";
|
|
734
|
+
};
|
|
735
|
+
readonly KeyChangeKind: {
|
|
736
|
+
readonly title: "KeyChangeKind";
|
|
737
|
+
readonly type: "string";
|
|
738
|
+
readonly enum: readonly ["planned", "compromise", "addition", "recovery"];
|
|
739
|
+
readonly description: "`planned` — a successor was staged, activated, and the predecessor retired on the operator's schedule. `compromise` — a key was revoked and, where the role would otherwise be empty, replaced in the same change. `addition` — a key joined a role without anything leaving it. `recovery` — the identifier's update authority moved to the committed recovery key, because the VTA's own update keys were lost or may be in someone else's hands.";
|
|
740
|
+
};
|
|
741
|
+
readonly IdentityKeyRole: {
|
|
742
|
+
readonly title: "IdentityKeyRole";
|
|
743
|
+
readonly type: "string";
|
|
744
|
+
readonly enum: readonly ["attestation", "operational", "messaging", "update", "authenticator"];
|
|
745
|
+
readonly description: "The named key role a key occupies in an identity (CONVENTIONS.md §2; VTI-KEY-070 onward). `attestation` — the only keys in `assertionMethod`; sign the identity's attestation artefacts (credentials, endorsements, status lists) through the VTA's signing service and nowhere else. Generated inside the VTA, never derived, never exportable, never in a backup. `operational` — the only keys the identity's own process uses in `authentication`; sign the node's own traffic (Trust Task requests and responses, DIDComm and TSP signatures, invitations, notices, audit checkpoints). Derived. `messaging` — the only keys in `keyAgreement`; sign nothing. X25519, derived or generated in its own right and never converted from a signing key. `update` — the identifier's change authority as its DID method states it (a did:webvh log's `updateKeys` and `nextKeyHashes`, a KERI key event log's current and next keys); never a role-bound verification method, never in `keyRoles`. Generated inside the VTA, never derived, never exportable, never in a backup, and always accompanied by a committed recovery key held outside the VTA's protection boundary. `authenticator` — a key held on a person's own authenticator (a WebAuthn passkey), listed in `authentication` of that person's identity only; used only to verify the person's WebAuthn assertions (sign-in and step-up evidence) and never to accept a Data Integrity proof. The VTA never holds its private half, so it is enrolled by the passkey ceremony and never generated, added or rotated by these tasks. Never permitted on the durable identity of a VTA, a VTC or a VTN. No role permits `capabilityInvocation` or `capabilityDelegation` (VTI-KEY-075). The set is an extensible registry: a consumer that meets a role it does not implement MUST rely on the key for nothing, and MUST NOT map it onto a role it does know (VTI-KEY-074).";
|
|
746
|
+
};
|
|
747
|
+
readonly KeyRoleSummary: {
|
|
748
|
+
readonly title: "KeyRoleSummary";
|
|
749
|
+
readonly type: "object";
|
|
750
|
+
readonly additionalProperties: false;
|
|
751
|
+
readonly required: readonly ["role", "relationships", "keys"];
|
|
752
|
+
readonly properties: {
|
|
753
|
+
readonly role: {
|
|
754
|
+
readonly $ref: "#/$defs/IdentityKeyRole";
|
|
755
|
+
};
|
|
756
|
+
readonly relationships: {
|
|
757
|
+
readonly type: "array";
|
|
758
|
+
readonly items: {
|
|
759
|
+
readonly $ref: "#/$defs/DidVerificationRelationship";
|
|
760
|
+
};
|
|
761
|
+
readonly uniqueItems: true;
|
|
762
|
+
readonly description: "The relationship this role owns. Empty for `update`.";
|
|
763
|
+
};
|
|
764
|
+
readonly keys: {
|
|
765
|
+
readonly type: "array";
|
|
766
|
+
readonly items: {
|
|
767
|
+
readonly $ref: "#/$defs/IdentityRoleKey";
|
|
768
|
+
};
|
|
769
|
+
readonly description: "The role's keys, in the order the document publishes them. Terminal-state keys are included only when the request asked for them, except a `revoked` key the document still lists, which is always included.";
|
|
770
|
+
};
|
|
771
|
+
readonly recoveryCommitted: {
|
|
772
|
+
readonly type: "boolean";
|
|
773
|
+
readonly description: "`update` only: whether the identifier's latest version commits to a recovery key in a boundary other than the VTA's (CONVENTIONS.md §5.3). `false` is a defect the VTA reports rather than hides.";
|
|
774
|
+
};
|
|
775
|
+
readonly threshold: {
|
|
776
|
+
readonly type: "string";
|
|
777
|
+
readonly description: "`update` only, where the method has one: the signing threshold over the current update keys, in the method's own notation (a KERI `kt`).";
|
|
778
|
+
};
|
|
779
|
+
};
|
|
780
|
+
};
|
|
781
|
+
readonly IdentityRoleKey: {
|
|
782
|
+
readonly title: "IdentityRoleKey";
|
|
783
|
+
readonly type: "object";
|
|
784
|
+
readonly additionalProperties: false;
|
|
785
|
+
readonly required: readonly ["role", "keyType", "state"];
|
|
786
|
+
readonly description: "One key in one role. A key is in exactly one role for its whole life; a change of role is a retirement from one and an addition to another, with fresh material under a fresh identifier.";
|
|
787
|
+
readonly properties: {
|
|
788
|
+
readonly verificationMethod: {
|
|
789
|
+
readonly type: "string";
|
|
790
|
+
readonly minLength: 1;
|
|
791
|
+
readonly description: "The full verification-method identifier (`did#fragment`) the document publishes the key under and lists in `keyRoles`. Absent for `update` keys, which are never role-bound verification methods (VTI-KEY-093). A VTA minting a method SHOULD derive its fragment from the key (VTI-KEY-150).";
|
|
792
|
+
};
|
|
793
|
+
readonly role: {
|
|
794
|
+
readonly $ref: "#/$defs/IdentityKeyRole";
|
|
795
|
+
};
|
|
796
|
+
readonly updateKeyClass: {
|
|
797
|
+
readonly $ref: "#/$defs/UpdateKeyClass";
|
|
798
|
+
};
|
|
799
|
+
readonly relationships: {
|
|
800
|
+
readonly type: "array";
|
|
801
|
+
readonly items: {
|
|
802
|
+
readonly $ref: "#/$defs/DidVerificationRelationship";
|
|
803
|
+
};
|
|
804
|
+
readonly uniqueItems: true;
|
|
805
|
+
readonly description: "The relationships the key is (or, while `pending`, will be) listed in: always exactly its role's one relationship. Empty for `update`, `retired` and `revoked` keys.";
|
|
806
|
+
};
|
|
807
|
+
readonly keyType: {
|
|
808
|
+
readonly $ref: "#/$defs/KeyType";
|
|
809
|
+
};
|
|
810
|
+
readonly publicKeyMultibase: {
|
|
811
|
+
readonly type: "string";
|
|
812
|
+
readonly minLength: 1;
|
|
813
|
+
readonly description: "The public half, multibase-encoded, exactly as published. Absent for a `committed` update key, whose public half the identifier has not yet revealed.";
|
|
814
|
+
};
|
|
815
|
+
readonly commitment: {
|
|
816
|
+
readonly type: "string";
|
|
817
|
+
readonly minLength: 1;
|
|
818
|
+
readonly description: "For a `committed` update key: the commitment the identifier publishes (a did:webvh `nextKeyHashes` entry, a KERI next-key digest), in the method's own encoding.";
|
|
819
|
+
};
|
|
820
|
+
readonly state: {
|
|
821
|
+
readonly $ref: "#/$defs/KeyLifecycleState";
|
|
822
|
+
};
|
|
823
|
+
readonly publishedInVersionId: {
|
|
824
|
+
readonly type: "string";
|
|
825
|
+
readonly description: "The method's version identifier of the change that first published the key or its commitment (method-profiles/: a did:webvh `versionId`, a KERI event's sequence number and digest). Absent while `pending`.";
|
|
826
|
+
};
|
|
827
|
+
readonly removedInVersionId: {
|
|
828
|
+
readonly type: "string";
|
|
829
|
+
readonly description: "Version identifier of the change that retired or revoked the key.";
|
|
830
|
+
};
|
|
831
|
+
readonly activatesAt: {
|
|
832
|
+
readonly type: "string";
|
|
833
|
+
readonly format: "date-time";
|
|
834
|
+
readonly description: "For a `staged` key: when the VTA will begin using it — no earlier than the publishing change's cache horizon.";
|
|
835
|
+
};
|
|
836
|
+
readonly retireAfter: {
|
|
837
|
+
readonly type: "string";
|
|
838
|
+
readonly format: "date-time";
|
|
839
|
+
readonly description: "For a `retiring` key: the end of its overlap. Custody projection only.";
|
|
840
|
+
};
|
|
841
|
+
readonly compromisedSince: {
|
|
842
|
+
readonly type: "string";
|
|
843
|
+
readonly format: "date-time";
|
|
844
|
+
readonly description: "For a `revoked` key: the compromise time (VTI-KEY-121), published as the verification method's `revoked` value. Where it cannot be established, the time the key was first published.";
|
|
845
|
+
};
|
|
846
|
+
readonly rotationId: {
|
|
847
|
+
readonly type: "string";
|
|
848
|
+
readonly description: "The rotation this key was introduced or retired by.";
|
|
849
|
+
};
|
|
850
|
+
readonly label: {
|
|
851
|
+
readonly type: "string";
|
|
852
|
+
readonly maxLength: 256;
|
|
853
|
+
readonly description: "Operator-facing label. Custody projection only.";
|
|
854
|
+
};
|
|
855
|
+
readonly custody: {
|
|
856
|
+
readonly $ref: "#/$defs/IdentityKeyCustody";
|
|
857
|
+
};
|
|
858
|
+
readonly ext: {
|
|
859
|
+
readonly $ref: "#/$defs/Ext";
|
|
860
|
+
};
|
|
861
|
+
};
|
|
862
|
+
};
|
|
863
|
+
readonly IdentityKeyCustody: {
|
|
864
|
+
readonly title: "IdentityKeyCustody";
|
|
865
|
+
readonly type: "object";
|
|
866
|
+
readonly additionalProperties: false;
|
|
867
|
+
readonly required: readonly ["exportable", "neverExportable", "inBackups", "protection"];
|
|
868
|
+
readonly description: "How a key is held. Present only in the custody projection. Carries no key material, and a conforming VTA MUST NOT place any in `ext`.";
|
|
869
|
+
readonly properties: {
|
|
870
|
+
readonly keyId: {
|
|
871
|
+
readonly type: "string";
|
|
872
|
+
readonly minLength: 1;
|
|
873
|
+
readonly description: "The custodian record identifier (`keys/*`'s `keyId`) behind this key. Absent for a key this VTA does not hold (`protection: externalCustodian`).";
|
|
874
|
+
};
|
|
875
|
+
readonly origin: {
|
|
876
|
+
readonly $ref: "#/$defs/KeyOrigin";
|
|
877
|
+
};
|
|
878
|
+
readonly exportable: {
|
|
879
|
+
readonly type: "boolean";
|
|
880
|
+
readonly description: "Whether the custodian would release the private half. Always `false` for `attestation` and `update` keys. Stated explicitly, never absent.";
|
|
881
|
+
};
|
|
882
|
+
readonly neverExportable: {
|
|
883
|
+
readonly type: "boolean";
|
|
884
|
+
readonly description: "True when no authority can make the key exportable. `true` implies `exportable: false`.";
|
|
885
|
+
};
|
|
886
|
+
readonly inBackups: {
|
|
887
|
+
readonly type: "boolean";
|
|
888
|
+
readonly description: "Whether the key, or material it can be re-derived or decrypted from, is in the VTA's backups or any state transfer. Always `false` for `attestation` and `update` keys (VTI-KEY-112).";
|
|
889
|
+
};
|
|
890
|
+
readonly protection: {
|
|
891
|
+
readonly $ref: "#/$defs/ProtectionClass";
|
|
892
|
+
};
|
|
893
|
+
readonly boundary: {
|
|
894
|
+
readonly type: "string";
|
|
895
|
+
readonly minLength: 1;
|
|
896
|
+
readonly maxLength: 128;
|
|
897
|
+
readonly description: "Opaque, VTA-assigned label of the protection boundary holding the key (CONVENTIONS.md §5.2). Two keys with the same label are lost or compromised together. A recovery update key MUST carry a label different from every routine update key's. Custody projection only; never published.";
|
|
898
|
+
};
|
|
899
|
+
readonly destroyed: {
|
|
900
|
+
readonly type: "boolean";
|
|
901
|
+
readonly description: "True once the private half has been destroyed — a retired `attestation` or `messaging` key. The record survives so the key's past signatures stay attributable.";
|
|
902
|
+
};
|
|
903
|
+
};
|
|
904
|
+
};
|
|
905
|
+
readonly ProtectionClass: {
|
|
906
|
+
readonly title: "ProtectionClass";
|
|
907
|
+
readonly type: "string";
|
|
908
|
+
readonly enum: readonly ["software", "encryptedAtRest", "enclave", "hardwareModule", "externalCustodian"];
|
|
909
|
+
readonly description: "How a private half is protected (CONVENTIONS.md §5.2). `software` — stored by the VTA without encryption independent of the host (a plain VTA). `encryptedAtRest` — wrapped under a key the VTA holds outside its store (a hardened VTA). `enclave` — held only inside an attested trusted execution environment, wrapped under a key released only to its measurement (a TEE VTA). `hardwareModule` — held by a hardware security module or cloud key service that performs the operation without releasing the key. `externalCustodian` — not held by this VTA at all: a recovery update key, or an `authenticator` key on a person's device.";
|
|
910
|
+
};
|
|
911
|
+
readonly KeyOrigin: {
|
|
912
|
+
readonly title: "KeyOrigin";
|
|
913
|
+
readonly type: "string";
|
|
914
|
+
readonly enum: readonly ["derived", "imported", "internal"];
|
|
915
|
+
readonly description: "Where the private key came from. `derived` means the maintainer generated it from a seed it holds and can reproduce it from `derivationPath`; `imported` means it arrived from outside and exists only as stored material; `internal` means the maintainer generated it from a CSPRNG and it is reproducible from nothing at all. The distinction is operationally load-bearing: a `derived` key survives a seed restore, an `imported` one is lost unless it was backed up separately, and an `internal` one cannot be recovered by any means once the maintainer's storage is gone. This member is also the only way a consumer can confirm that a `keys/create` request for an `internal` key was honoured rather than silently downgraded to a derived one — see that specification's `internal` member.";
|
|
916
|
+
readonly default: "derived";
|
|
917
|
+
};
|
|
918
|
+
readonly KeyLifecycleState: {
|
|
919
|
+
readonly title: "KeyLifecycleState";
|
|
920
|
+
readonly type: "string";
|
|
921
|
+
readonly enum: readonly ["pending", "staged", "active", "retiring", "retired", "revoked", "committed"];
|
|
922
|
+
readonly description: "Where a key is in its role's lifecycle (CONVENTIONS.md §8, §10). `pending` — planned by a preview or a change awaiting approval; not published; custody projection only. `staged` — published and bound to its role but not yet used, until the publishing change's cache horizon. `active` — the key the VTA uses for new signatures (for `messaging`, advertises for new sessions; for `update`, the current authority). `retiring` — still published but never used to sign again; a retiring `messaging` key still decrypts until retirement. `retired` — removed by planned rotation; what it signed while published stays valid, judged against the identifier version current at issuance. `revoked` — withdrawn for compromise, recorded with `compromisedSince`; what it signed from then on establishes nothing. `committed` — an `update` key the identifier commits to as a successor but has not revealed (a did:webvh `nextKeyHashes` entry, a KERI next-key digest). `retired` and `revoked` are terminal.";
|
|
923
|
+
};
|
|
924
|
+
readonly DidVerificationRelationship: {
|
|
925
|
+
readonly title: "DidVerificationRelationship";
|
|
926
|
+
readonly type: "string";
|
|
927
|
+
readonly enum: readonly ["authentication", "assertionMethod", "keyAgreement", "capabilityInvocation", "capabilityDelegation"];
|
|
928
|
+
readonly description: "A DID Core verification relationship.";
|
|
929
|
+
};
|
|
930
|
+
readonly UpdateKeyClass: {
|
|
931
|
+
readonly title: "UpdateKeyClass";
|
|
932
|
+
readonly type: "string";
|
|
933
|
+
readonly enum: readonly ["routine", "recovery"];
|
|
934
|
+
readonly description: "For an `update` key only (CONVENTIONS.md §5.3). `routine` — generated and held by the VTA, which authorizes the identity's ordinary changes with it. `recovery` — held by a recovery custodian in a protection boundary other than the VTA's; the VTA holds only its commitment, carries that commitment forward in every change it makes, and can use the key only by asking the custodian for a proof (`RecoverySigningRequest`).";
|
|
935
|
+
};
|
|
936
|
+
readonly KeyType: {
|
|
937
|
+
readonly title: "KeyType";
|
|
938
|
+
readonly type: "string";
|
|
939
|
+
readonly enum: readonly ["ed25519", "x25519", "p256", "mldsa44", "mldsa65"];
|
|
940
|
+
readonly description: "Cryptographic algorithm the key material belongs to. `ed25519` signs (EdDSA), `x25519` performs key agreement and never signs, `p256` signs (ES256), and `mldsa44` and `mldsa65` sign with the post-quantum ML-DSA scheme of US NIST FIPS 204. The set is expected to grow as algorithms are standardised, and growing it is a MINOR change under SPEC.md §5.2: `keyType` selects no schema branch, so adding a value relaxes a constraint rather than narrowing one, and the generated libraries mark this enumeration non-exhaustive so that a consumer absorbs a new value rather than failing to compile. Two ML-DSA parameter sets are carried because two specifications require different ones — W3C Quantum-Resistant Cryptosuites defines Data Integrity suites only for ML-DSA-44, while Trust Spanning Protocol Rev 3 §8.1 mandates ML-DSA-65 — so the parameter set is chosen by whatever consumes the key and the two are not redundant. A consumer that does not implement a value it receives MUST refuse the document rather than substitute one it does support.";
|
|
941
|
+
};
|
|
942
|
+
readonly KeyListProjection: {
|
|
943
|
+
readonly title: "KeyListProjection";
|
|
944
|
+
readonly type: "string";
|
|
945
|
+
readonly enum: readonly ["public", "custody"];
|
|
946
|
+
readonly description: "Which view of the identity's key roles the caller was given (CONVENTIONS.md §11). `public` — only what the published identifier document and history already reveal. `custody` — additionally the VTA's custody state: pending keys, the custodian record and protection boundary behind each key, overlap deadlines, who initiated and approved each change, and why.";
|
|
947
|
+
};
|
|
948
|
+
readonly DidMethodName: {
|
|
949
|
+
readonly title: "DidMethodName";
|
|
950
|
+
readonly type: "string";
|
|
951
|
+
readonly pattern: "^[a-z0-9]+(:[a-z0-9]+)*$";
|
|
952
|
+
readonly description: "The DID method an identity uses, as the method profile that governs it is named: `webvh` for a did:webvh identity, `scid:vh` for the did:scid:vh:1 form of one, `webs` for did:webs. Deliberately a pattern and not an enumeration: a method is added by publishing its profile under method-profiles/, never by changing this schema. A VTA MUST refuse a method it holds no profile for, or whose profile declares it ineligible, with `vta/dids:methodNotEligible`.";
|
|
953
|
+
};
|
|
954
|
+
};
|
|
955
|
+
};
|
|
956
|
+
/**
|
|
957
|
+
* SPEC.md §7.2 policy for the request variant, from this specification's
|
|
958
|
+
* front matter. Pass to `consumeInbound` — items 5b, 7 and 8 are
|
|
959
|
+
* per-specification and cannot be derived from the document alone, and
|
|
960
|
+
* item 2 needs the schema this carries.
|
|
961
|
+
*/
|
|
962
|
+
export declare const SPEC: {
|
|
963
|
+
readonly typeUri: "https://trusttasks.org/spec/vta/dids/keys/list/1.0";
|
|
964
|
+
readonly isBearer: false;
|
|
965
|
+
readonly isProofRequired: false;
|
|
966
|
+
readonly isRecipientRequired: true;
|
|
967
|
+
readonly isIssuedAtRequired: false;
|
|
968
|
+
readonly payloadSchema: {
|
|
969
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
970
|
+
readonly $id: "https://trusttasks.org/spec/vta/dids/keys/list/1.0";
|
|
971
|
+
readonly title: "VTA DIDs — Keys List — payload";
|
|
972
|
+
readonly description: "List the key roles of a key-role identity a VTA holds keys for: each role's keys and their states, the update authority and recovery commitment, and optionally the rotation history, in the public or custody projection (CONVENTIONS.md §11).";
|
|
973
|
+
readonly type: "object";
|
|
974
|
+
readonly additionalProperties: false;
|
|
975
|
+
readonly required: readonly ["did"];
|
|
976
|
+
readonly properties: {
|
|
977
|
+
readonly did: {
|
|
978
|
+
readonly type: "string";
|
|
979
|
+
readonly minLength: 1;
|
|
980
|
+
readonly description: "The key-role identity, by DID (for a `did:scid` identity, the DID without `src`).";
|
|
981
|
+
};
|
|
982
|
+
readonly roles: {
|
|
983
|
+
readonly type: "array";
|
|
984
|
+
readonly minItems: 1;
|
|
985
|
+
readonly uniqueItems: true;
|
|
986
|
+
readonly items: {
|
|
987
|
+
readonly $ref: "#/$defs/IdentityKeyRole";
|
|
988
|
+
};
|
|
989
|
+
readonly description: "Return only these roles. Absent returns every role. Present-but-empty is refused by the schema rather than read as 'every role'.";
|
|
990
|
+
};
|
|
991
|
+
readonly includeEnded: {
|
|
992
|
+
readonly type: "boolean";
|
|
993
|
+
readonly description: "Include `retired` and `revoked` keys. Absent reads as false. A `revoked` key the document still lists is always included.";
|
|
994
|
+
};
|
|
995
|
+
readonly includeHistory: {
|
|
996
|
+
readonly type: "boolean";
|
|
997
|
+
readonly description: "Include the rotation history. Absent reads as false.";
|
|
998
|
+
};
|
|
999
|
+
readonly ext: {
|
|
1000
|
+
readonly $ref: "#/$defs/Ext";
|
|
1001
|
+
};
|
|
1002
|
+
};
|
|
1003
|
+
readonly $defs: {
|
|
1004
|
+
readonly Response: {
|
|
1005
|
+
readonly $anchor: "response";
|
|
1006
|
+
readonly title: "VTA DIDs — Keys List — response payload";
|
|
1007
|
+
readonly type: "object";
|
|
1008
|
+
readonly additionalProperties: false;
|
|
1009
|
+
readonly required: readonly ["did", "method", "versionId", "projection", "roles"];
|
|
1010
|
+
readonly properties: {
|
|
1011
|
+
readonly did: {
|
|
1012
|
+
readonly type: "string";
|
|
1013
|
+
};
|
|
1014
|
+
readonly method: {
|
|
1015
|
+
readonly $ref: "#/$defs/DidMethodName";
|
|
1016
|
+
};
|
|
1017
|
+
readonly versionId: {
|
|
1018
|
+
readonly type: "string";
|
|
1019
|
+
readonly description: "The version the answer describes. Pass it as `expectedVersionId` to a change made on its strength.";
|
|
1020
|
+
};
|
|
1021
|
+
readonly projection: {
|
|
1022
|
+
readonly $ref: "#/$defs/KeyListProjection";
|
|
1023
|
+
};
|
|
1024
|
+
readonly roles: {
|
|
1025
|
+
readonly type: "array";
|
|
1026
|
+
readonly items: {
|
|
1027
|
+
readonly $ref: "#/$defs/KeyRoleSummary";
|
|
1028
|
+
};
|
|
1029
|
+
readonly description: "One entry per role asked for, including roles with no keys.";
|
|
1030
|
+
};
|
|
1031
|
+
readonly rotations: {
|
|
1032
|
+
readonly type: "array";
|
|
1033
|
+
readonly items: {
|
|
1034
|
+
readonly $ref: "#/$defs/KeyChangeRecord";
|
|
1035
|
+
};
|
|
1036
|
+
readonly description: "Present exactly when `includeHistory` was true. Newest first.";
|
|
1037
|
+
};
|
|
1038
|
+
readonly ext: {
|
|
1039
|
+
readonly $ref: "#/$defs/Ext";
|
|
1040
|
+
};
|
|
1041
|
+
};
|
|
1042
|
+
};
|
|
1043
|
+
readonly Ext: {
|
|
1044
|
+
readonly title: "Ext";
|
|
1045
|
+
readonly 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.";
|
|
1046
|
+
readonly type: "object";
|
|
1047
|
+
readonly minProperties: 1;
|
|
1048
|
+
readonly additionalProperties: true;
|
|
1049
|
+
readonly propertyNames: {
|
|
1050
|
+
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
1051
|
+
};
|
|
1052
|
+
};
|
|
1053
|
+
readonly KeyChangeRecord: {
|
|
1054
|
+
readonly title: "KeyChangeRecord";
|
|
1055
|
+
readonly type: "object";
|
|
1056
|
+
readonly additionalProperties: false;
|
|
1057
|
+
readonly required: readonly ["rotationId", "role", "kind", "state"];
|
|
1058
|
+
readonly description: "One change to a role's key set, from preview to completion. The identifier's history is the authority for what was published; this record adds which change was which and, in the custody projection, who asked, who approved, and why.";
|
|
1059
|
+
readonly properties: {
|
|
1060
|
+
readonly rotationId: {
|
|
1061
|
+
readonly type: "string";
|
|
1062
|
+
readonly minLength: 1;
|
|
1063
|
+
};
|
|
1064
|
+
readonly role: {
|
|
1065
|
+
readonly $ref: "#/$defs/IdentityKeyRole";
|
|
1066
|
+
};
|
|
1067
|
+
readonly kind: {
|
|
1068
|
+
readonly $ref: "#/$defs/KeyChangeKind";
|
|
1069
|
+
};
|
|
1070
|
+
readonly state: {
|
|
1071
|
+
readonly $ref: "#/$defs/KeyChangeState";
|
|
1072
|
+
};
|
|
1073
|
+
readonly predecessors: {
|
|
1074
|
+
readonly type: "array";
|
|
1075
|
+
readonly items: {
|
|
1076
|
+
readonly type: "string";
|
|
1077
|
+
};
|
|
1078
|
+
readonly description: "Verification-method identifiers (for `update`, public keys or commitments) leaving the role.";
|
|
1079
|
+
};
|
|
1080
|
+
readonly successors: {
|
|
1081
|
+
readonly type: "array";
|
|
1082
|
+
readonly items: {
|
|
1083
|
+
readonly type: "string";
|
|
1084
|
+
};
|
|
1085
|
+
readonly description: "Verification-method identifiers (for `update`, public keys or commitments) entering the role.";
|
|
1086
|
+
};
|
|
1087
|
+
readonly startedInVersionId: {
|
|
1088
|
+
readonly type: "string";
|
|
1089
|
+
};
|
|
1090
|
+
readonly endedInVersionId: {
|
|
1091
|
+
readonly type: "string";
|
|
1092
|
+
};
|
|
1093
|
+
readonly startedAt: {
|
|
1094
|
+
readonly type: "string";
|
|
1095
|
+
readonly format: "date-time";
|
|
1096
|
+
};
|
|
1097
|
+
readonly cacheHorizonAt: {
|
|
1098
|
+
readonly type: "string";
|
|
1099
|
+
readonly format: "date-time";
|
|
1100
|
+
readonly description: "Planned rotations: the publishing change's cache horizon (CONVENTIONS.md §10.1). The switch and any retirement happen no earlier.";
|
|
1101
|
+
};
|
|
1102
|
+
readonly activatesAt: {
|
|
1103
|
+
readonly type: "string";
|
|
1104
|
+
readonly format: "date-time";
|
|
1105
|
+
readonly description: "When the successor becomes `active` and the predecessor `retiring`; never before `cacheHorizonAt`.";
|
|
1106
|
+
};
|
|
1107
|
+
readonly overlapUntil: {
|
|
1108
|
+
readonly type: "string";
|
|
1109
|
+
readonly format: "date-time";
|
|
1110
|
+
readonly description: "Custody projection only. End of the overlap.";
|
|
1111
|
+
};
|
|
1112
|
+
readonly autoRetire: {
|
|
1113
|
+
readonly type: "boolean";
|
|
1114
|
+
readonly description: "Custody projection only. Whether the VTA retires the predecessor itself at `overlapUntil`.";
|
|
1115
|
+
};
|
|
1116
|
+
readonly endedAt: {
|
|
1117
|
+
readonly type: "string";
|
|
1118
|
+
readonly format: "date-time";
|
|
1119
|
+
};
|
|
1120
|
+
readonly initiatedBy: {
|
|
1121
|
+
readonly type: "string";
|
|
1122
|
+
readonly description: "Custody projection only. VID of the administrator whose signed request started the change.";
|
|
1123
|
+
};
|
|
1124
|
+
readonly approvals: {
|
|
1125
|
+
readonly $ref: "#/$defs/KeyChangeApprovalState";
|
|
1126
|
+
};
|
|
1127
|
+
readonly reason: {
|
|
1128
|
+
readonly type: "string";
|
|
1129
|
+
readonly maxLength: 1024;
|
|
1130
|
+
readonly description: "Custody projection only. The operator's stated reason. Never published.";
|
|
1131
|
+
};
|
|
1132
|
+
readonly ext: {
|
|
1133
|
+
readonly $ref: "#/$defs/Ext";
|
|
1134
|
+
};
|
|
1135
|
+
};
|
|
1136
|
+
};
|
|
1137
|
+
readonly KeyChangeApprovalState: {
|
|
1138
|
+
readonly title: "KeyChangeApprovalState";
|
|
1139
|
+
readonly type: "object";
|
|
1140
|
+
readonly additionalProperties: false;
|
|
1141
|
+
readonly required: readonly ["required", "received", "expiresAt"];
|
|
1142
|
+
readonly description: "Approval progress of a change the VTA's policy gates on approvals (CONVENTIONS.md §6).";
|
|
1143
|
+
readonly properties: {
|
|
1144
|
+
readonly required: {
|
|
1145
|
+
readonly type: "integer";
|
|
1146
|
+
readonly minimum: 1;
|
|
1147
|
+
readonly description: "Distinct approvals the VTA's policy requires.";
|
|
1148
|
+
};
|
|
1149
|
+
readonly received: {
|
|
1150
|
+
readonly type: "integer";
|
|
1151
|
+
readonly minimum: 0;
|
|
1152
|
+
readonly description: "Distinct approvals recorded so far, the initiator's own included.";
|
|
1153
|
+
};
|
|
1154
|
+
readonly approvals: {
|
|
1155
|
+
readonly type: "array";
|
|
1156
|
+
readonly items: {
|
|
1157
|
+
readonly $ref: "#/$defs/RecordedApproval";
|
|
1158
|
+
};
|
|
1159
|
+
readonly description: "The approvals recorded. Custody projection only; omitted from a response to anyone who is not themselves an eligible approver of this change.";
|
|
1160
|
+
};
|
|
1161
|
+
readonly expiresAt: {
|
|
1162
|
+
readonly type: "string";
|
|
1163
|
+
readonly format: "date-time";
|
|
1164
|
+
readonly description: "When the preview, and every approval bound to it, stops being usable.";
|
|
1165
|
+
};
|
|
1166
|
+
};
|
|
1167
|
+
};
|
|
1168
|
+
readonly RecordedApproval: {
|
|
1169
|
+
readonly title: "RecordedApproval";
|
|
1170
|
+
readonly type: "object";
|
|
1171
|
+
readonly additionalProperties: false;
|
|
1172
|
+
readonly required: readonly ["approver", "evidence"];
|
|
1173
|
+
readonly properties: {
|
|
1174
|
+
readonly approver: {
|
|
1175
|
+
readonly type: "string";
|
|
1176
|
+
readonly minLength: 1;
|
|
1177
|
+
readonly description: "VID of the approver.";
|
|
1178
|
+
};
|
|
1179
|
+
readonly evidence: {
|
|
1180
|
+
readonly $ref: "#/$defs/ApprovalEvidenceKind";
|
|
1181
|
+
};
|
|
1182
|
+
readonly recordedAt: {
|
|
1183
|
+
readonly type: "string";
|
|
1184
|
+
readonly format: "date-time";
|
|
1185
|
+
};
|
|
1186
|
+
};
|
|
1187
|
+
};
|
|
1188
|
+
readonly ApprovalEvidenceKind: {
|
|
1189
|
+
readonly title: "ApprovalEvidenceKind";
|
|
1190
|
+
readonly type: "string";
|
|
1191
|
+
readonly enum: readonly ["didSigned", "webauthn", "approverSigned"];
|
|
1192
|
+
readonly description: "The evidence an approval was recorded on, as `auth/step-up/approve-response` names it. Only the approver's own evidence is ever recorded: a proof by a key the VTA records as acting for an approver — a console signing key or any other delegation — is never an approval (CONVENTIONS.md §6.3).";
|
|
1193
|
+
};
|
|
1194
|
+
readonly KeyChangeState: {
|
|
1195
|
+
readonly title: "KeyChangeState";
|
|
1196
|
+
readonly type: "string";
|
|
1197
|
+
readonly enum: readonly ["pendingApproval", "awaitingRecoveryProof", "staged", "overlapping", "completed", "aborted", "expired"];
|
|
1198
|
+
readonly description: "`pendingApproval` — awaiting the approvals the VTA's policy requires; nothing is published. `awaitingRecoveryProof` — approved, and waiting for the recovery custodian's proof over the change; nothing is published. `staged` — successor published, not yet used. `overlapping` — successor active, predecessor `retiring`. `completed` — every predecessor retired, or the change is published and any overlap it began has ended. `aborted` — the successor was retired instead of the predecessor, or a revocation superseded the change. `expired` — the approvals or the recovery proof did not arrive before the preview expired; nothing was published.";
|
|
1199
|
+
};
|
|
1200
|
+
readonly KeyChangeKind: {
|
|
1201
|
+
readonly title: "KeyChangeKind";
|
|
1202
|
+
readonly type: "string";
|
|
1203
|
+
readonly enum: readonly ["planned", "compromise", "addition", "recovery"];
|
|
1204
|
+
readonly description: "`planned` — a successor was staged, activated, and the predecessor retired on the operator's schedule. `compromise` — a key was revoked and, where the role would otherwise be empty, replaced in the same change. `addition` — a key joined a role without anything leaving it. `recovery` — the identifier's update authority moved to the committed recovery key, because the VTA's own update keys were lost or may be in someone else's hands.";
|
|
1205
|
+
};
|
|
1206
|
+
readonly IdentityKeyRole: {
|
|
1207
|
+
readonly title: "IdentityKeyRole";
|
|
1208
|
+
readonly type: "string";
|
|
1209
|
+
readonly enum: readonly ["attestation", "operational", "messaging", "update", "authenticator"];
|
|
1210
|
+
readonly description: "The named key role a key occupies in an identity (CONVENTIONS.md §2; VTI-KEY-070 onward). `attestation` — the only keys in `assertionMethod`; sign the identity's attestation artefacts (credentials, endorsements, status lists) through the VTA's signing service and nowhere else. Generated inside the VTA, never derived, never exportable, never in a backup. `operational` — the only keys the identity's own process uses in `authentication`; sign the node's own traffic (Trust Task requests and responses, DIDComm and TSP signatures, invitations, notices, audit checkpoints). Derived. `messaging` — the only keys in `keyAgreement`; sign nothing. X25519, derived or generated in its own right and never converted from a signing key. `update` — the identifier's change authority as its DID method states it (a did:webvh log's `updateKeys` and `nextKeyHashes`, a KERI key event log's current and next keys); never a role-bound verification method, never in `keyRoles`. Generated inside the VTA, never derived, never exportable, never in a backup, and always accompanied by a committed recovery key held outside the VTA's protection boundary. `authenticator` — a key held on a person's own authenticator (a WebAuthn passkey), listed in `authentication` of that person's identity only; used only to verify the person's WebAuthn assertions (sign-in and step-up evidence) and never to accept a Data Integrity proof. The VTA never holds its private half, so it is enrolled by the passkey ceremony and never generated, added or rotated by these tasks. Never permitted on the durable identity of a VTA, a VTC or a VTN. No role permits `capabilityInvocation` or `capabilityDelegation` (VTI-KEY-075). The set is an extensible registry: a consumer that meets a role it does not implement MUST rely on the key for nothing, and MUST NOT map it onto a role it does know (VTI-KEY-074).";
|
|
1211
|
+
};
|
|
1212
|
+
readonly KeyRoleSummary: {
|
|
1213
|
+
readonly title: "KeyRoleSummary";
|
|
1214
|
+
readonly type: "object";
|
|
1215
|
+
readonly additionalProperties: false;
|
|
1216
|
+
readonly required: readonly ["role", "relationships", "keys"];
|
|
1217
|
+
readonly properties: {
|
|
1218
|
+
readonly role: {
|
|
1219
|
+
readonly $ref: "#/$defs/IdentityKeyRole";
|
|
1220
|
+
};
|
|
1221
|
+
readonly relationships: {
|
|
1222
|
+
readonly type: "array";
|
|
1223
|
+
readonly items: {
|
|
1224
|
+
readonly $ref: "#/$defs/DidVerificationRelationship";
|
|
1225
|
+
};
|
|
1226
|
+
readonly uniqueItems: true;
|
|
1227
|
+
readonly description: "The relationship this role owns. Empty for `update`.";
|
|
1228
|
+
};
|
|
1229
|
+
readonly keys: {
|
|
1230
|
+
readonly type: "array";
|
|
1231
|
+
readonly items: {
|
|
1232
|
+
readonly $ref: "#/$defs/IdentityRoleKey";
|
|
1233
|
+
};
|
|
1234
|
+
readonly description: "The role's keys, in the order the document publishes them. Terminal-state keys are included only when the request asked for them, except a `revoked` key the document still lists, which is always included.";
|
|
1235
|
+
};
|
|
1236
|
+
readonly recoveryCommitted: {
|
|
1237
|
+
readonly type: "boolean";
|
|
1238
|
+
readonly description: "`update` only: whether the identifier's latest version commits to a recovery key in a boundary other than the VTA's (CONVENTIONS.md §5.3). `false` is a defect the VTA reports rather than hides.";
|
|
1239
|
+
};
|
|
1240
|
+
readonly threshold: {
|
|
1241
|
+
readonly type: "string";
|
|
1242
|
+
readonly description: "`update` only, where the method has one: the signing threshold over the current update keys, in the method's own notation (a KERI `kt`).";
|
|
1243
|
+
};
|
|
1244
|
+
};
|
|
1245
|
+
};
|
|
1246
|
+
readonly IdentityRoleKey: {
|
|
1247
|
+
readonly title: "IdentityRoleKey";
|
|
1248
|
+
readonly type: "object";
|
|
1249
|
+
readonly additionalProperties: false;
|
|
1250
|
+
readonly required: readonly ["role", "keyType", "state"];
|
|
1251
|
+
readonly description: "One key in one role. A key is in exactly one role for its whole life; a change of role is a retirement from one and an addition to another, with fresh material under a fresh identifier.";
|
|
1252
|
+
readonly properties: {
|
|
1253
|
+
readonly verificationMethod: {
|
|
1254
|
+
readonly type: "string";
|
|
1255
|
+
readonly minLength: 1;
|
|
1256
|
+
readonly description: "The full verification-method identifier (`did#fragment`) the document publishes the key under and lists in `keyRoles`. Absent for `update` keys, which are never role-bound verification methods (VTI-KEY-093). A VTA minting a method SHOULD derive its fragment from the key (VTI-KEY-150).";
|
|
1257
|
+
};
|
|
1258
|
+
readonly role: {
|
|
1259
|
+
readonly $ref: "#/$defs/IdentityKeyRole";
|
|
1260
|
+
};
|
|
1261
|
+
readonly updateKeyClass: {
|
|
1262
|
+
readonly $ref: "#/$defs/UpdateKeyClass";
|
|
1263
|
+
};
|
|
1264
|
+
readonly relationships: {
|
|
1265
|
+
readonly type: "array";
|
|
1266
|
+
readonly items: {
|
|
1267
|
+
readonly $ref: "#/$defs/DidVerificationRelationship";
|
|
1268
|
+
};
|
|
1269
|
+
readonly uniqueItems: true;
|
|
1270
|
+
readonly description: "The relationships the key is (or, while `pending`, will be) listed in: always exactly its role's one relationship. Empty for `update`, `retired` and `revoked` keys.";
|
|
1271
|
+
};
|
|
1272
|
+
readonly keyType: {
|
|
1273
|
+
readonly $ref: "#/$defs/KeyType";
|
|
1274
|
+
};
|
|
1275
|
+
readonly publicKeyMultibase: {
|
|
1276
|
+
readonly type: "string";
|
|
1277
|
+
readonly minLength: 1;
|
|
1278
|
+
readonly description: "The public half, multibase-encoded, exactly as published. Absent for a `committed` update key, whose public half the identifier has not yet revealed.";
|
|
1279
|
+
};
|
|
1280
|
+
readonly commitment: {
|
|
1281
|
+
readonly type: "string";
|
|
1282
|
+
readonly minLength: 1;
|
|
1283
|
+
readonly description: "For a `committed` update key: the commitment the identifier publishes (a did:webvh `nextKeyHashes` entry, a KERI next-key digest), in the method's own encoding.";
|
|
1284
|
+
};
|
|
1285
|
+
readonly state: {
|
|
1286
|
+
readonly $ref: "#/$defs/KeyLifecycleState";
|
|
1287
|
+
};
|
|
1288
|
+
readonly publishedInVersionId: {
|
|
1289
|
+
readonly type: "string";
|
|
1290
|
+
readonly description: "The method's version identifier of the change that first published the key or its commitment (method-profiles/: a did:webvh `versionId`, a KERI event's sequence number and digest). Absent while `pending`.";
|
|
1291
|
+
};
|
|
1292
|
+
readonly removedInVersionId: {
|
|
1293
|
+
readonly type: "string";
|
|
1294
|
+
readonly description: "Version identifier of the change that retired or revoked the key.";
|
|
1295
|
+
};
|
|
1296
|
+
readonly activatesAt: {
|
|
1297
|
+
readonly type: "string";
|
|
1298
|
+
readonly format: "date-time";
|
|
1299
|
+
readonly description: "For a `staged` key: when the VTA will begin using it — no earlier than the publishing change's cache horizon.";
|
|
1300
|
+
};
|
|
1301
|
+
readonly retireAfter: {
|
|
1302
|
+
readonly type: "string";
|
|
1303
|
+
readonly format: "date-time";
|
|
1304
|
+
readonly description: "For a `retiring` key: the end of its overlap. Custody projection only.";
|
|
1305
|
+
};
|
|
1306
|
+
readonly compromisedSince: {
|
|
1307
|
+
readonly type: "string";
|
|
1308
|
+
readonly format: "date-time";
|
|
1309
|
+
readonly description: "For a `revoked` key: the compromise time (VTI-KEY-121), published as the verification method's `revoked` value. Where it cannot be established, the time the key was first published.";
|
|
1310
|
+
};
|
|
1311
|
+
readonly rotationId: {
|
|
1312
|
+
readonly type: "string";
|
|
1313
|
+
readonly description: "The rotation this key was introduced or retired by.";
|
|
1314
|
+
};
|
|
1315
|
+
readonly label: {
|
|
1316
|
+
readonly type: "string";
|
|
1317
|
+
readonly maxLength: 256;
|
|
1318
|
+
readonly description: "Operator-facing label. Custody projection only.";
|
|
1319
|
+
};
|
|
1320
|
+
readonly custody: {
|
|
1321
|
+
readonly $ref: "#/$defs/IdentityKeyCustody";
|
|
1322
|
+
};
|
|
1323
|
+
readonly ext: {
|
|
1324
|
+
readonly $ref: "#/$defs/Ext";
|
|
1325
|
+
};
|
|
1326
|
+
};
|
|
1327
|
+
};
|
|
1328
|
+
readonly IdentityKeyCustody: {
|
|
1329
|
+
readonly title: "IdentityKeyCustody";
|
|
1330
|
+
readonly type: "object";
|
|
1331
|
+
readonly additionalProperties: false;
|
|
1332
|
+
readonly required: readonly ["exportable", "neverExportable", "inBackups", "protection"];
|
|
1333
|
+
readonly description: "How a key is held. Present only in the custody projection. Carries no key material, and a conforming VTA MUST NOT place any in `ext`.";
|
|
1334
|
+
readonly properties: {
|
|
1335
|
+
readonly keyId: {
|
|
1336
|
+
readonly type: "string";
|
|
1337
|
+
readonly minLength: 1;
|
|
1338
|
+
readonly description: "The custodian record identifier (`keys/*`'s `keyId`) behind this key. Absent for a key this VTA does not hold (`protection: externalCustodian`).";
|
|
1339
|
+
};
|
|
1340
|
+
readonly origin: {
|
|
1341
|
+
readonly $ref: "#/$defs/KeyOrigin";
|
|
1342
|
+
};
|
|
1343
|
+
readonly exportable: {
|
|
1344
|
+
readonly type: "boolean";
|
|
1345
|
+
readonly description: "Whether the custodian would release the private half. Always `false` for `attestation` and `update` keys. Stated explicitly, never absent.";
|
|
1346
|
+
};
|
|
1347
|
+
readonly neverExportable: {
|
|
1348
|
+
readonly type: "boolean";
|
|
1349
|
+
readonly description: "True when no authority can make the key exportable. `true` implies `exportable: false`.";
|
|
1350
|
+
};
|
|
1351
|
+
readonly inBackups: {
|
|
1352
|
+
readonly type: "boolean";
|
|
1353
|
+
readonly description: "Whether the key, or material it can be re-derived or decrypted from, is in the VTA's backups or any state transfer. Always `false` for `attestation` and `update` keys (VTI-KEY-112).";
|
|
1354
|
+
};
|
|
1355
|
+
readonly protection: {
|
|
1356
|
+
readonly $ref: "#/$defs/ProtectionClass";
|
|
1357
|
+
};
|
|
1358
|
+
readonly boundary: {
|
|
1359
|
+
readonly type: "string";
|
|
1360
|
+
readonly minLength: 1;
|
|
1361
|
+
readonly maxLength: 128;
|
|
1362
|
+
readonly description: "Opaque, VTA-assigned label of the protection boundary holding the key (CONVENTIONS.md §5.2). Two keys with the same label are lost or compromised together. A recovery update key MUST carry a label different from every routine update key's. Custody projection only; never published.";
|
|
1363
|
+
};
|
|
1364
|
+
readonly destroyed: {
|
|
1365
|
+
readonly type: "boolean";
|
|
1366
|
+
readonly description: "True once the private half has been destroyed — a retired `attestation` or `messaging` key. The record survives so the key's past signatures stay attributable.";
|
|
1367
|
+
};
|
|
1368
|
+
};
|
|
1369
|
+
};
|
|
1370
|
+
readonly ProtectionClass: {
|
|
1371
|
+
readonly title: "ProtectionClass";
|
|
1372
|
+
readonly type: "string";
|
|
1373
|
+
readonly enum: readonly ["software", "encryptedAtRest", "enclave", "hardwareModule", "externalCustodian"];
|
|
1374
|
+
readonly description: "How a private half is protected (CONVENTIONS.md §5.2). `software` — stored by the VTA without encryption independent of the host (a plain VTA). `encryptedAtRest` — wrapped under a key the VTA holds outside its store (a hardened VTA). `enclave` — held only inside an attested trusted execution environment, wrapped under a key released only to its measurement (a TEE VTA). `hardwareModule` — held by a hardware security module or cloud key service that performs the operation without releasing the key. `externalCustodian` — not held by this VTA at all: a recovery update key, or an `authenticator` key on a person's device.";
|
|
1375
|
+
};
|
|
1376
|
+
readonly KeyOrigin: {
|
|
1377
|
+
readonly title: "KeyOrigin";
|
|
1378
|
+
readonly type: "string";
|
|
1379
|
+
readonly enum: readonly ["derived", "imported", "internal"];
|
|
1380
|
+
readonly description: "Where the private key came from. `derived` means the maintainer generated it from a seed it holds and can reproduce it from `derivationPath`; `imported` means it arrived from outside and exists only as stored material; `internal` means the maintainer generated it from a CSPRNG and it is reproducible from nothing at all. The distinction is operationally load-bearing: a `derived` key survives a seed restore, an `imported` one is lost unless it was backed up separately, and an `internal` one cannot be recovered by any means once the maintainer's storage is gone. This member is also the only way a consumer can confirm that a `keys/create` request for an `internal` key was honoured rather than silently downgraded to a derived one — see that specification's `internal` member.";
|
|
1381
|
+
readonly default: "derived";
|
|
1382
|
+
};
|
|
1383
|
+
readonly KeyLifecycleState: {
|
|
1384
|
+
readonly title: "KeyLifecycleState";
|
|
1385
|
+
readonly type: "string";
|
|
1386
|
+
readonly enum: readonly ["pending", "staged", "active", "retiring", "retired", "revoked", "committed"];
|
|
1387
|
+
readonly description: "Where a key is in its role's lifecycle (CONVENTIONS.md §8, §10). `pending` — planned by a preview or a change awaiting approval; not published; custody projection only. `staged` — published and bound to its role but not yet used, until the publishing change's cache horizon. `active` — the key the VTA uses for new signatures (for `messaging`, advertises for new sessions; for `update`, the current authority). `retiring` — still published but never used to sign again; a retiring `messaging` key still decrypts until retirement. `retired` — removed by planned rotation; what it signed while published stays valid, judged against the identifier version current at issuance. `revoked` — withdrawn for compromise, recorded with `compromisedSince`; what it signed from then on establishes nothing. `committed` — an `update` key the identifier commits to as a successor but has not revealed (a did:webvh `nextKeyHashes` entry, a KERI next-key digest). `retired` and `revoked` are terminal.";
|
|
1388
|
+
};
|
|
1389
|
+
readonly DidVerificationRelationship: {
|
|
1390
|
+
readonly title: "DidVerificationRelationship";
|
|
1391
|
+
readonly type: "string";
|
|
1392
|
+
readonly enum: readonly ["authentication", "assertionMethod", "keyAgreement", "capabilityInvocation", "capabilityDelegation"];
|
|
1393
|
+
readonly description: "A DID Core verification relationship.";
|
|
1394
|
+
};
|
|
1395
|
+
readonly UpdateKeyClass: {
|
|
1396
|
+
readonly title: "UpdateKeyClass";
|
|
1397
|
+
readonly type: "string";
|
|
1398
|
+
readonly enum: readonly ["routine", "recovery"];
|
|
1399
|
+
readonly description: "For an `update` key only (CONVENTIONS.md §5.3). `routine` — generated and held by the VTA, which authorizes the identity's ordinary changes with it. `recovery` — held by a recovery custodian in a protection boundary other than the VTA's; the VTA holds only its commitment, carries that commitment forward in every change it makes, and can use the key only by asking the custodian for a proof (`RecoverySigningRequest`).";
|
|
1400
|
+
};
|
|
1401
|
+
readonly KeyType: {
|
|
1402
|
+
readonly title: "KeyType";
|
|
1403
|
+
readonly type: "string";
|
|
1404
|
+
readonly enum: readonly ["ed25519", "x25519", "p256", "mldsa44", "mldsa65"];
|
|
1405
|
+
readonly description: "Cryptographic algorithm the key material belongs to. `ed25519` signs (EdDSA), `x25519` performs key agreement and never signs, `p256` signs (ES256), and `mldsa44` and `mldsa65` sign with the post-quantum ML-DSA scheme of US NIST FIPS 204. The set is expected to grow as algorithms are standardised, and growing it is a MINOR change under SPEC.md §5.2: `keyType` selects no schema branch, so adding a value relaxes a constraint rather than narrowing one, and the generated libraries mark this enumeration non-exhaustive so that a consumer absorbs a new value rather than failing to compile. Two ML-DSA parameter sets are carried because two specifications require different ones — W3C Quantum-Resistant Cryptosuites defines Data Integrity suites only for ML-DSA-44, while Trust Spanning Protocol Rev 3 §8.1 mandates ML-DSA-65 — so the parameter set is chosen by whatever consumes the key and the two are not redundant. A consumer that does not implement a value it receives MUST refuse the document rather than substitute one it does support.";
|
|
1406
|
+
};
|
|
1407
|
+
readonly KeyListProjection: {
|
|
1408
|
+
readonly title: "KeyListProjection";
|
|
1409
|
+
readonly type: "string";
|
|
1410
|
+
readonly enum: readonly ["public", "custody"];
|
|
1411
|
+
readonly description: "Which view of the identity's key roles the caller was given (CONVENTIONS.md §11). `public` — only what the published identifier document and history already reveal. `custody` — additionally the VTA's custody state: pending keys, the custodian record and protection boundary behind each key, overlap deadlines, who initiated and approved each change, and why.";
|
|
1412
|
+
};
|
|
1413
|
+
readonly DidMethodName: {
|
|
1414
|
+
readonly title: "DidMethodName";
|
|
1415
|
+
readonly type: "string";
|
|
1416
|
+
readonly pattern: "^[a-z0-9]+(:[a-z0-9]+)*$";
|
|
1417
|
+
readonly description: "The DID method an identity uses, as the method profile that governs it is named: `webvh` for a did:webvh identity, `scid:vh` for the did:scid:vh:1 form of one, `webs` for did:webs. Deliberately a pattern and not an enumeration: a method is added by publishing its profile under method-profiles/, never by changing this schema. A VTA MUST refuse a method it holds no profile for, or whose profile declares it ineligible, with `vta/dids:methodNotEligible`.";
|
|
1418
|
+
};
|
|
1419
|
+
};
|
|
1420
|
+
};
|
|
1421
|
+
};
|
|
1422
|
+
/**
|
|
1423
|
+
* SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
|
|
1424
|
+
* tracks the *issuer* party's requirement because a response swaps the
|
|
1425
|
+
* parties (§7.3 item 5).
|
|
1426
|
+
*/
|
|
1427
|
+
export declare const RESPONSE_SPEC: {
|
|
1428
|
+
readonly typeUri: "https://trusttasks.org/spec/vta/dids/keys/list/1.0#response";
|
|
1429
|
+
readonly isBearer: false;
|
|
1430
|
+
readonly isProofRequired: false;
|
|
1431
|
+
readonly isRecipientRequired: true;
|
|
1432
|
+
readonly isIssuedAtRequired: false;
|
|
1433
|
+
readonly payloadSchema: {
|
|
1434
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
1435
|
+
readonly $ref: "#/$defs/Response";
|
|
1436
|
+
readonly $defs: {
|
|
1437
|
+
readonly Response: {
|
|
1438
|
+
readonly $anchor: "response";
|
|
1439
|
+
readonly title: "VTA DIDs — Keys List — response payload";
|
|
1440
|
+
readonly type: "object";
|
|
1441
|
+
readonly additionalProperties: false;
|
|
1442
|
+
readonly required: readonly ["did", "method", "versionId", "projection", "roles"];
|
|
1443
|
+
readonly properties: {
|
|
1444
|
+
readonly did: {
|
|
1445
|
+
readonly type: "string";
|
|
1446
|
+
};
|
|
1447
|
+
readonly method: {
|
|
1448
|
+
readonly $ref: "#/$defs/DidMethodName";
|
|
1449
|
+
};
|
|
1450
|
+
readonly versionId: {
|
|
1451
|
+
readonly type: "string";
|
|
1452
|
+
readonly description: "The version the answer describes. Pass it as `expectedVersionId` to a change made on its strength.";
|
|
1453
|
+
};
|
|
1454
|
+
readonly projection: {
|
|
1455
|
+
readonly $ref: "#/$defs/KeyListProjection";
|
|
1456
|
+
};
|
|
1457
|
+
readonly roles: {
|
|
1458
|
+
readonly type: "array";
|
|
1459
|
+
readonly items: {
|
|
1460
|
+
readonly $ref: "#/$defs/KeyRoleSummary";
|
|
1461
|
+
};
|
|
1462
|
+
readonly description: "One entry per role asked for, including roles with no keys.";
|
|
1463
|
+
};
|
|
1464
|
+
readonly rotations: {
|
|
1465
|
+
readonly type: "array";
|
|
1466
|
+
readonly items: {
|
|
1467
|
+
readonly $ref: "#/$defs/KeyChangeRecord";
|
|
1468
|
+
};
|
|
1469
|
+
readonly description: "Present exactly when `includeHistory` was true. Newest first.";
|
|
1470
|
+
};
|
|
1471
|
+
readonly ext: {
|
|
1472
|
+
readonly $ref: "#/$defs/Ext";
|
|
1473
|
+
};
|
|
1474
|
+
};
|
|
1475
|
+
};
|
|
1476
|
+
readonly Ext: {
|
|
1477
|
+
readonly title: "Ext";
|
|
1478
|
+
readonly 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.";
|
|
1479
|
+
readonly type: "object";
|
|
1480
|
+
readonly minProperties: 1;
|
|
1481
|
+
readonly additionalProperties: true;
|
|
1482
|
+
readonly propertyNames: {
|
|
1483
|
+
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
1484
|
+
};
|
|
1485
|
+
};
|
|
1486
|
+
readonly KeyChangeRecord: {
|
|
1487
|
+
readonly title: "KeyChangeRecord";
|
|
1488
|
+
readonly type: "object";
|
|
1489
|
+
readonly additionalProperties: false;
|
|
1490
|
+
readonly required: readonly ["rotationId", "role", "kind", "state"];
|
|
1491
|
+
readonly description: "One change to a role's key set, from preview to completion. The identifier's history is the authority for what was published; this record adds which change was which and, in the custody projection, who asked, who approved, and why.";
|
|
1492
|
+
readonly properties: {
|
|
1493
|
+
readonly rotationId: {
|
|
1494
|
+
readonly type: "string";
|
|
1495
|
+
readonly minLength: 1;
|
|
1496
|
+
};
|
|
1497
|
+
readonly role: {
|
|
1498
|
+
readonly $ref: "#/$defs/IdentityKeyRole";
|
|
1499
|
+
};
|
|
1500
|
+
readonly kind: {
|
|
1501
|
+
readonly $ref: "#/$defs/KeyChangeKind";
|
|
1502
|
+
};
|
|
1503
|
+
readonly state: {
|
|
1504
|
+
readonly $ref: "#/$defs/KeyChangeState";
|
|
1505
|
+
};
|
|
1506
|
+
readonly predecessors: {
|
|
1507
|
+
readonly type: "array";
|
|
1508
|
+
readonly items: {
|
|
1509
|
+
readonly type: "string";
|
|
1510
|
+
};
|
|
1511
|
+
readonly description: "Verification-method identifiers (for `update`, public keys or commitments) leaving the role.";
|
|
1512
|
+
};
|
|
1513
|
+
readonly successors: {
|
|
1514
|
+
readonly type: "array";
|
|
1515
|
+
readonly items: {
|
|
1516
|
+
readonly type: "string";
|
|
1517
|
+
};
|
|
1518
|
+
readonly description: "Verification-method identifiers (for `update`, public keys or commitments) entering the role.";
|
|
1519
|
+
};
|
|
1520
|
+
readonly startedInVersionId: {
|
|
1521
|
+
readonly type: "string";
|
|
1522
|
+
};
|
|
1523
|
+
readonly endedInVersionId: {
|
|
1524
|
+
readonly type: "string";
|
|
1525
|
+
};
|
|
1526
|
+
readonly startedAt: {
|
|
1527
|
+
readonly type: "string";
|
|
1528
|
+
readonly format: "date-time";
|
|
1529
|
+
};
|
|
1530
|
+
readonly cacheHorizonAt: {
|
|
1531
|
+
readonly type: "string";
|
|
1532
|
+
readonly format: "date-time";
|
|
1533
|
+
readonly description: "Planned rotations: the publishing change's cache horizon (CONVENTIONS.md §10.1). The switch and any retirement happen no earlier.";
|
|
1534
|
+
};
|
|
1535
|
+
readonly activatesAt: {
|
|
1536
|
+
readonly type: "string";
|
|
1537
|
+
readonly format: "date-time";
|
|
1538
|
+
readonly description: "When the successor becomes `active` and the predecessor `retiring`; never before `cacheHorizonAt`.";
|
|
1539
|
+
};
|
|
1540
|
+
readonly overlapUntil: {
|
|
1541
|
+
readonly type: "string";
|
|
1542
|
+
readonly format: "date-time";
|
|
1543
|
+
readonly description: "Custody projection only. End of the overlap.";
|
|
1544
|
+
};
|
|
1545
|
+
readonly autoRetire: {
|
|
1546
|
+
readonly type: "boolean";
|
|
1547
|
+
readonly description: "Custody projection only. Whether the VTA retires the predecessor itself at `overlapUntil`.";
|
|
1548
|
+
};
|
|
1549
|
+
readonly endedAt: {
|
|
1550
|
+
readonly type: "string";
|
|
1551
|
+
readonly format: "date-time";
|
|
1552
|
+
};
|
|
1553
|
+
readonly initiatedBy: {
|
|
1554
|
+
readonly type: "string";
|
|
1555
|
+
readonly description: "Custody projection only. VID of the administrator whose signed request started the change.";
|
|
1556
|
+
};
|
|
1557
|
+
readonly approvals: {
|
|
1558
|
+
readonly $ref: "#/$defs/KeyChangeApprovalState";
|
|
1559
|
+
};
|
|
1560
|
+
readonly reason: {
|
|
1561
|
+
readonly type: "string";
|
|
1562
|
+
readonly maxLength: 1024;
|
|
1563
|
+
readonly description: "Custody projection only. The operator's stated reason. Never published.";
|
|
1564
|
+
};
|
|
1565
|
+
readonly ext: {
|
|
1566
|
+
readonly $ref: "#/$defs/Ext";
|
|
1567
|
+
};
|
|
1568
|
+
};
|
|
1569
|
+
};
|
|
1570
|
+
readonly KeyChangeApprovalState: {
|
|
1571
|
+
readonly title: "KeyChangeApprovalState";
|
|
1572
|
+
readonly type: "object";
|
|
1573
|
+
readonly additionalProperties: false;
|
|
1574
|
+
readonly required: readonly ["required", "received", "expiresAt"];
|
|
1575
|
+
readonly description: "Approval progress of a change the VTA's policy gates on approvals (CONVENTIONS.md §6).";
|
|
1576
|
+
readonly properties: {
|
|
1577
|
+
readonly required: {
|
|
1578
|
+
readonly type: "integer";
|
|
1579
|
+
readonly minimum: 1;
|
|
1580
|
+
readonly description: "Distinct approvals the VTA's policy requires.";
|
|
1581
|
+
};
|
|
1582
|
+
readonly received: {
|
|
1583
|
+
readonly type: "integer";
|
|
1584
|
+
readonly minimum: 0;
|
|
1585
|
+
readonly description: "Distinct approvals recorded so far, the initiator's own included.";
|
|
1586
|
+
};
|
|
1587
|
+
readonly approvals: {
|
|
1588
|
+
readonly type: "array";
|
|
1589
|
+
readonly items: {
|
|
1590
|
+
readonly $ref: "#/$defs/RecordedApproval";
|
|
1591
|
+
};
|
|
1592
|
+
readonly description: "The approvals recorded. Custody projection only; omitted from a response to anyone who is not themselves an eligible approver of this change.";
|
|
1593
|
+
};
|
|
1594
|
+
readonly expiresAt: {
|
|
1595
|
+
readonly type: "string";
|
|
1596
|
+
readonly format: "date-time";
|
|
1597
|
+
readonly description: "When the preview, and every approval bound to it, stops being usable.";
|
|
1598
|
+
};
|
|
1599
|
+
};
|
|
1600
|
+
};
|
|
1601
|
+
readonly RecordedApproval: {
|
|
1602
|
+
readonly title: "RecordedApproval";
|
|
1603
|
+
readonly type: "object";
|
|
1604
|
+
readonly additionalProperties: false;
|
|
1605
|
+
readonly required: readonly ["approver", "evidence"];
|
|
1606
|
+
readonly properties: {
|
|
1607
|
+
readonly approver: {
|
|
1608
|
+
readonly type: "string";
|
|
1609
|
+
readonly minLength: 1;
|
|
1610
|
+
readonly description: "VID of the approver.";
|
|
1611
|
+
};
|
|
1612
|
+
readonly evidence: {
|
|
1613
|
+
readonly $ref: "#/$defs/ApprovalEvidenceKind";
|
|
1614
|
+
};
|
|
1615
|
+
readonly recordedAt: {
|
|
1616
|
+
readonly type: "string";
|
|
1617
|
+
readonly format: "date-time";
|
|
1618
|
+
};
|
|
1619
|
+
};
|
|
1620
|
+
};
|
|
1621
|
+
readonly ApprovalEvidenceKind: {
|
|
1622
|
+
readonly title: "ApprovalEvidenceKind";
|
|
1623
|
+
readonly type: "string";
|
|
1624
|
+
readonly enum: readonly ["didSigned", "webauthn", "approverSigned"];
|
|
1625
|
+
readonly description: "The evidence an approval was recorded on, as `auth/step-up/approve-response` names it. Only the approver's own evidence is ever recorded: a proof by a key the VTA records as acting for an approver — a console signing key or any other delegation — is never an approval (CONVENTIONS.md §6.3).";
|
|
1626
|
+
};
|
|
1627
|
+
readonly KeyChangeState: {
|
|
1628
|
+
readonly title: "KeyChangeState";
|
|
1629
|
+
readonly type: "string";
|
|
1630
|
+
readonly enum: readonly ["pendingApproval", "awaitingRecoveryProof", "staged", "overlapping", "completed", "aborted", "expired"];
|
|
1631
|
+
readonly description: "`pendingApproval` — awaiting the approvals the VTA's policy requires; nothing is published. `awaitingRecoveryProof` — approved, and waiting for the recovery custodian's proof over the change; nothing is published. `staged` — successor published, not yet used. `overlapping` — successor active, predecessor `retiring`. `completed` — every predecessor retired, or the change is published and any overlap it began has ended. `aborted` — the successor was retired instead of the predecessor, or a revocation superseded the change. `expired` — the approvals or the recovery proof did not arrive before the preview expired; nothing was published.";
|
|
1632
|
+
};
|
|
1633
|
+
readonly KeyChangeKind: {
|
|
1634
|
+
readonly title: "KeyChangeKind";
|
|
1635
|
+
readonly type: "string";
|
|
1636
|
+
readonly enum: readonly ["planned", "compromise", "addition", "recovery"];
|
|
1637
|
+
readonly description: "`planned` — a successor was staged, activated, and the predecessor retired on the operator's schedule. `compromise` — a key was revoked and, where the role would otherwise be empty, replaced in the same change. `addition` — a key joined a role without anything leaving it. `recovery` — the identifier's update authority moved to the committed recovery key, because the VTA's own update keys were lost or may be in someone else's hands.";
|
|
1638
|
+
};
|
|
1639
|
+
readonly IdentityKeyRole: {
|
|
1640
|
+
readonly title: "IdentityKeyRole";
|
|
1641
|
+
readonly type: "string";
|
|
1642
|
+
readonly enum: readonly ["attestation", "operational", "messaging", "update", "authenticator"];
|
|
1643
|
+
readonly description: "The named key role a key occupies in an identity (CONVENTIONS.md §2; VTI-KEY-070 onward). `attestation` — the only keys in `assertionMethod`; sign the identity's attestation artefacts (credentials, endorsements, status lists) through the VTA's signing service and nowhere else. Generated inside the VTA, never derived, never exportable, never in a backup. `operational` — the only keys the identity's own process uses in `authentication`; sign the node's own traffic (Trust Task requests and responses, DIDComm and TSP signatures, invitations, notices, audit checkpoints). Derived. `messaging` — the only keys in `keyAgreement`; sign nothing. X25519, derived or generated in its own right and never converted from a signing key. `update` — the identifier's change authority as its DID method states it (a did:webvh log's `updateKeys` and `nextKeyHashes`, a KERI key event log's current and next keys); never a role-bound verification method, never in `keyRoles`. Generated inside the VTA, never derived, never exportable, never in a backup, and always accompanied by a committed recovery key held outside the VTA's protection boundary. `authenticator` — a key held on a person's own authenticator (a WebAuthn passkey), listed in `authentication` of that person's identity only; used only to verify the person's WebAuthn assertions (sign-in and step-up evidence) and never to accept a Data Integrity proof. The VTA never holds its private half, so it is enrolled by the passkey ceremony and never generated, added or rotated by these tasks. Never permitted on the durable identity of a VTA, a VTC or a VTN. No role permits `capabilityInvocation` or `capabilityDelegation` (VTI-KEY-075). The set is an extensible registry: a consumer that meets a role it does not implement MUST rely on the key for nothing, and MUST NOT map it onto a role it does know (VTI-KEY-074).";
|
|
1644
|
+
};
|
|
1645
|
+
readonly KeyRoleSummary: {
|
|
1646
|
+
readonly title: "KeyRoleSummary";
|
|
1647
|
+
readonly type: "object";
|
|
1648
|
+
readonly additionalProperties: false;
|
|
1649
|
+
readonly required: readonly ["role", "relationships", "keys"];
|
|
1650
|
+
readonly properties: {
|
|
1651
|
+
readonly role: {
|
|
1652
|
+
readonly $ref: "#/$defs/IdentityKeyRole";
|
|
1653
|
+
};
|
|
1654
|
+
readonly relationships: {
|
|
1655
|
+
readonly type: "array";
|
|
1656
|
+
readonly items: {
|
|
1657
|
+
readonly $ref: "#/$defs/DidVerificationRelationship";
|
|
1658
|
+
};
|
|
1659
|
+
readonly uniqueItems: true;
|
|
1660
|
+
readonly description: "The relationship this role owns. Empty for `update`.";
|
|
1661
|
+
};
|
|
1662
|
+
readonly keys: {
|
|
1663
|
+
readonly type: "array";
|
|
1664
|
+
readonly items: {
|
|
1665
|
+
readonly $ref: "#/$defs/IdentityRoleKey";
|
|
1666
|
+
};
|
|
1667
|
+
readonly description: "The role's keys, in the order the document publishes them. Terminal-state keys are included only when the request asked for them, except a `revoked` key the document still lists, which is always included.";
|
|
1668
|
+
};
|
|
1669
|
+
readonly recoveryCommitted: {
|
|
1670
|
+
readonly type: "boolean";
|
|
1671
|
+
readonly description: "`update` only: whether the identifier's latest version commits to a recovery key in a boundary other than the VTA's (CONVENTIONS.md §5.3). `false` is a defect the VTA reports rather than hides.";
|
|
1672
|
+
};
|
|
1673
|
+
readonly threshold: {
|
|
1674
|
+
readonly type: "string";
|
|
1675
|
+
readonly description: "`update` only, where the method has one: the signing threshold over the current update keys, in the method's own notation (a KERI `kt`).";
|
|
1676
|
+
};
|
|
1677
|
+
};
|
|
1678
|
+
};
|
|
1679
|
+
readonly IdentityRoleKey: {
|
|
1680
|
+
readonly title: "IdentityRoleKey";
|
|
1681
|
+
readonly type: "object";
|
|
1682
|
+
readonly additionalProperties: false;
|
|
1683
|
+
readonly required: readonly ["role", "keyType", "state"];
|
|
1684
|
+
readonly description: "One key in one role. A key is in exactly one role for its whole life; a change of role is a retirement from one and an addition to another, with fresh material under a fresh identifier.";
|
|
1685
|
+
readonly properties: {
|
|
1686
|
+
readonly verificationMethod: {
|
|
1687
|
+
readonly type: "string";
|
|
1688
|
+
readonly minLength: 1;
|
|
1689
|
+
readonly description: "The full verification-method identifier (`did#fragment`) the document publishes the key under and lists in `keyRoles`. Absent for `update` keys, which are never role-bound verification methods (VTI-KEY-093). A VTA minting a method SHOULD derive its fragment from the key (VTI-KEY-150).";
|
|
1690
|
+
};
|
|
1691
|
+
readonly role: {
|
|
1692
|
+
readonly $ref: "#/$defs/IdentityKeyRole";
|
|
1693
|
+
};
|
|
1694
|
+
readonly updateKeyClass: {
|
|
1695
|
+
readonly $ref: "#/$defs/UpdateKeyClass";
|
|
1696
|
+
};
|
|
1697
|
+
readonly relationships: {
|
|
1698
|
+
readonly type: "array";
|
|
1699
|
+
readonly items: {
|
|
1700
|
+
readonly $ref: "#/$defs/DidVerificationRelationship";
|
|
1701
|
+
};
|
|
1702
|
+
readonly uniqueItems: true;
|
|
1703
|
+
readonly description: "The relationships the key is (or, while `pending`, will be) listed in: always exactly its role's one relationship. Empty for `update`, `retired` and `revoked` keys.";
|
|
1704
|
+
};
|
|
1705
|
+
readonly keyType: {
|
|
1706
|
+
readonly $ref: "#/$defs/KeyType";
|
|
1707
|
+
};
|
|
1708
|
+
readonly publicKeyMultibase: {
|
|
1709
|
+
readonly type: "string";
|
|
1710
|
+
readonly minLength: 1;
|
|
1711
|
+
readonly description: "The public half, multibase-encoded, exactly as published. Absent for a `committed` update key, whose public half the identifier has not yet revealed.";
|
|
1712
|
+
};
|
|
1713
|
+
readonly commitment: {
|
|
1714
|
+
readonly type: "string";
|
|
1715
|
+
readonly minLength: 1;
|
|
1716
|
+
readonly description: "For a `committed` update key: the commitment the identifier publishes (a did:webvh `nextKeyHashes` entry, a KERI next-key digest), in the method's own encoding.";
|
|
1717
|
+
};
|
|
1718
|
+
readonly state: {
|
|
1719
|
+
readonly $ref: "#/$defs/KeyLifecycleState";
|
|
1720
|
+
};
|
|
1721
|
+
readonly publishedInVersionId: {
|
|
1722
|
+
readonly type: "string";
|
|
1723
|
+
readonly description: "The method's version identifier of the change that first published the key or its commitment (method-profiles/: a did:webvh `versionId`, a KERI event's sequence number and digest). Absent while `pending`.";
|
|
1724
|
+
};
|
|
1725
|
+
readonly removedInVersionId: {
|
|
1726
|
+
readonly type: "string";
|
|
1727
|
+
readonly description: "Version identifier of the change that retired or revoked the key.";
|
|
1728
|
+
};
|
|
1729
|
+
readonly activatesAt: {
|
|
1730
|
+
readonly type: "string";
|
|
1731
|
+
readonly format: "date-time";
|
|
1732
|
+
readonly description: "For a `staged` key: when the VTA will begin using it — no earlier than the publishing change's cache horizon.";
|
|
1733
|
+
};
|
|
1734
|
+
readonly retireAfter: {
|
|
1735
|
+
readonly type: "string";
|
|
1736
|
+
readonly format: "date-time";
|
|
1737
|
+
readonly description: "For a `retiring` key: the end of its overlap. Custody projection only.";
|
|
1738
|
+
};
|
|
1739
|
+
readonly compromisedSince: {
|
|
1740
|
+
readonly type: "string";
|
|
1741
|
+
readonly format: "date-time";
|
|
1742
|
+
readonly description: "For a `revoked` key: the compromise time (VTI-KEY-121), published as the verification method's `revoked` value. Where it cannot be established, the time the key was first published.";
|
|
1743
|
+
};
|
|
1744
|
+
readonly rotationId: {
|
|
1745
|
+
readonly type: "string";
|
|
1746
|
+
readonly description: "The rotation this key was introduced or retired by.";
|
|
1747
|
+
};
|
|
1748
|
+
readonly label: {
|
|
1749
|
+
readonly type: "string";
|
|
1750
|
+
readonly maxLength: 256;
|
|
1751
|
+
readonly description: "Operator-facing label. Custody projection only.";
|
|
1752
|
+
};
|
|
1753
|
+
readonly custody: {
|
|
1754
|
+
readonly $ref: "#/$defs/IdentityKeyCustody";
|
|
1755
|
+
};
|
|
1756
|
+
readonly ext: {
|
|
1757
|
+
readonly $ref: "#/$defs/Ext";
|
|
1758
|
+
};
|
|
1759
|
+
};
|
|
1760
|
+
};
|
|
1761
|
+
readonly IdentityKeyCustody: {
|
|
1762
|
+
readonly title: "IdentityKeyCustody";
|
|
1763
|
+
readonly type: "object";
|
|
1764
|
+
readonly additionalProperties: false;
|
|
1765
|
+
readonly required: readonly ["exportable", "neverExportable", "inBackups", "protection"];
|
|
1766
|
+
readonly description: "How a key is held. Present only in the custody projection. Carries no key material, and a conforming VTA MUST NOT place any in `ext`.";
|
|
1767
|
+
readonly properties: {
|
|
1768
|
+
readonly keyId: {
|
|
1769
|
+
readonly type: "string";
|
|
1770
|
+
readonly minLength: 1;
|
|
1771
|
+
readonly description: "The custodian record identifier (`keys/*`'s `keyId`) behind this key. Absent for a key this VTA does not hold (`protection: externalCustodian`).";
|
|
1772
|
+
};
|
|
1773
|
+
readonly origin: {
|
|
1774
|
+
readonly $ref: "#/$defs/KeyOrigin";
|
|
1775
|
+
};
|
|
1776
|
+
readonly exportable: {
|
|
1777
|
+
readonly type: "boolean";
|
|
1778
|
+
readonly description: "Whether the custodian would release the private half. Always `false` for `attestation` and `update` keys. Stated explicitly, never absent.";
|
|
1779
|
+
};
|
|
1780
|
+
readonly neverExportable: {
|
|
1781
|
+
readonly type: "boolean";
|
|
1782
|
+
readonly description: "True when no authority can make the key exportable. `true` implies `exportable: false`.";
|
|
1783
|
+
};
|
|
1784
|
+
readonly inBackups: {
|
|
1785
|
+
readonly type: "boolean";
|
|
1786
|
+
readonly description: "Whether the key, or material it can be re-derived or decrypted from, is in the VTA's backups or any state transfer. Always `false` for `attestation` and `update` keys (VTI-KEY-112).";
|
|
1787
|
+
};
|
|
1788
|
+
readonly protection: {
|
|
1789
|
+
readonly $ref: "#/$defs/ProtectionClass";
|
|
1790
|
+
};
|
|
1791
|
+
readonly boundary: {
|
|
1792
|
+
readonly type: "string";
|
|
1793
|
+
readonly minLength: 1;
|
|
1794
|
+
readonly maxLength: 128;
|
|
1795
|
+
readonly description: "Opaque, VTA-assigned label of the protection boundary holding the key (CONVENTIONS.md §5.2). Two keys with the same label are lost or compromised together. A recovery update key MUST carry a label different from every routine update key's. Custody projection only; never published.";
|
|
1796
|
+
};
|
|
1797
|
+
readonly destroyed: {
|
|
1798
|
+
readonly type: "boolean";
|
|
1799
|
+
readonly description: "True once the private half has been destroyed — a retired `attestation` or `messaging` key. The record survives so the key's past signatures stay attributable.";
|
|
1800
|
+
};
|
|
1801
|
+
};
|
|
1802
|
+
};
|
|
1803
|
+
readonly ProtectionClass: {
|
|
1804
|
+
readonly title: "ProtectionClass";
|
|
1805
|
+
readonly type: "string";
|
|
1806
|
+
readonly enum: readonly ["software", "encryptedAtRest", "enclave", "hardwareModule", "externalCustodian"];
|
|
1807
|
+
readonly description: "How a private half is protected (CONVENTIONS.md §5.2). `software` — stored by the VTA without encryption independent of the host (a plain VTA). `encryptedAtRest` — wrapped under a key the VTA holds outside its store (a hardened VTA). `enclave` — held only inside an attested trusted execution environment, wrapped under a key released only to its measurement (a TEE VTA). `hardwareModule` — held by a hardware security module or cloud key service that performs the operation without releasing the key. `externalCustodian` — not held by this VTA at all: a recovery update key, or an `authenticator` key on a person's device.";
|
|
1808
|
+
};
|
|
1809
|
+
readonly KeyOrigin: {
|
|
1810
|
+
readonly title: "KeyOrigin";
|
|
1811
|
+
readonly type: "string";
|
|
1812
|
+
readonly enum: readonly ["derived", "imported", "internal"];
|
|
1813
|
+
readonly description: "Where the private key came from. `derived` means the maintainer generated it from a seed it holds and can reproduce it from `derivationPath`; `imported` means it arrived from outside and exists only as stored material; `internal` means the maintainer generated it from a CSPRNG and it is reproducible from nothing at all. The distinction is operationally load-bearing: a `derived` key survives a seed restore, an `imported` one is lost unless it was backed up separately, and an `internal` one cannot be recovered by any means once the maintainer's storage is gone. This member is also the only way a consumer can confirm that a `keys/create` request for an `internal` key was honoured rather than silently downgraded to a derived one — see that specification's `internal` member.";
|
|
1814
|
+
readonly default: "derived";
|
|
1815
|
+
};
|
|
1816
|
+
readonly KeyLifecycleState: {
|
|
1817
|
+
readonly title: "KeyLifecycleState";
|
|
1818
|
+
readonly type: "string";
|
|
1819
|
+
readonly enum: readonly ["pending", "staged", "active", "retiring", "retired", "revoked", "committed"];
|
|
1820
|
+
readonly description: "Where a key is in its role's lifecycle (CONVENTIONS.md §8, §10). `pending` — planned by a preview or a change awaiting approval; not published; custody projection only. `staged` — published and bound to its role but not yet used, until the publishing change's cache horizon. `active` — the key the VTA uses for new signatures (for `messaging`, advertises for new sessions; for `update`, the current authority). `retiring` — still published but never used to sign again; a retiring `messaging` key still decrypts until retirement. `retired` — removed by planned rotation; what it signed while published stays valid, judged against the identifier version current at issuance. `revoked` — withdrawn for compromise, recorded with `compromisedSince`; what it signed from then on establishes nothing. `committed` — an `update` key the identifier commits to as a successor but has not revealed (a did:webvh `nextKeyHashes` entry, a KERI next-key digest). `retired` and `revoked` are terminal.";
|
|
1821
|
+
};
|
|
1822
|
+
readonly DidVerificationRelationship: {
|
|
1823
|
+
readonly title: "DidVerificationRelationship";
|
|
1824
|
+
readonly type: "string";
|
|
1825
|
+
readonly enum: readonly ["authentication", "assertionMethod", "keyAgreement", "capabilityInvocation", "capabilityDelegation"];
|
|
1826
|
+
readonly description: "A DID Core verification relationship.";
|
|
1827
|
+
};
|
|
1828
|
+
readonly UpdateKeyClass: {
|
|
1829
|
+
readonly title: "UpdateKeyClass";
|
|
1830
|
+
readonly type: "string";
|
|
1831
|
+
readonly enum: readonly ["routine", "recovery"];
|
|
1832
|
+
readonly description: "For an `update` key only (CONVENTIONS.md §5.3). `routine` — generated and held by the VTA, which authorizes the identity's ordinary changes with it. `recovery` — held by a recovery custodian in a protection boundary other than the VTA's; the VTA holds only its commitment, carries that commitment forward in every change it makes, and can use the key only by asking the custodian for a proof (`RecoverySigningRequest`).";
|
|
1833
|
+
};
|
|
1834
|
+
readonly KeyType: {
|
|
1835
|
+
readonly title: "KeyType";
|
|
1836
|
+
readonly type: "string";
|
|
1837
|
+
readonly enum: readonly ["ed25519", "x25519", "p256", "mldsa44", "mldsa65"];
|
|
1838
|
+
readonly description: "Cryptographic algorithm the key material belongs to. `ed25519` signs (EdDSA), `x25519` performs key agreement and never signs, `p256` signs (ES256), and `mldsa44` and `mldsa65` sign with the post-quantum ML-DSA scheme of US NIST FIPS 204. The set is expected to grow as algorithms are standardised, and growing it is a MINOR change under SPEC.md §5.2: `keyType` selects no schema branch, so adding a value relaxes a constraint rather than narrowing one, and the generated libraries mark this enumeration non-exhaustive so that a consumer absorbs a new value rather than failing to compile. Two ML-DSA parameter sets are carried because two specifications require different ones — W3C Quantum-Resistant Cryptosuites defines Data Integrity suites only for ML-DSA-44, while Trust Spanning Protocol Rev 3 §8.1 mandates ML-DSA-65 — so the parameter set is chosen by whatever consumes the key and the two are not redundant. A consumer that does not implement a value it receives MUST refuse the document rather than substitute one it does support.";
|
|
1839
|
+
};
|
|
1840
|
+
readonly KeyListProjection: {
|
|
1841
|
+
readonly title: "KeyListProjection";
|
|
1842
|
+
readonly type: "string";
|
|
1843
|
+
readonly enum: readonly ["public", "custody"];
|
|
1844
|
+
readonly description: "Which view of the identity's key roles the caller was given (CONVENTIONS.md §11). `public` — only what the published identifier document and history already reveal. `custody` — additionally the VTA's custody state: pending keys, the custodian record and protection boundary behind each key, overlap deadlines, who initiated and approved each change, and why.";
|
|
1845
|
+
};
|
|
1846
|
+
readonly DidMethodName: {
|
|
1847
|
+
readonly title: "DidMethodName";
|
|
1848
|
+
readonly type: "string";
|
|
1849
|
+
readonly pattern: "^[a-z0-9]+(:[a-z0-9]+)*$";
|
|
1850
|
+
readonly description: "The DID method an identity uses, as the method profile that governs it is named: `webvh` for a did:webvh identity, `scid:vh` for the did:scid:vh:1 form of one, `webs` for did:webs. Deliberately a pattern and not an enumeration: a method is added by publishing its profile under method-profiles/, never by changing this schema. A VTA MUST refuse a method it holds no profile for, or whose profile declares it ineligible, with `vta/dids:methodNotEligible`.";
|
|
1851
|
+
};
|
|
1852
|
+
};
|
|
1853
|
+
};
|
|
1854
|
+
};
|
|
1855
|
+
//# sourceMappingURL=payload.d.ts.map
|