Skip to content

Align passkey-vms task URIs to published registry specs (/1.0 → /0.1) #62

@stormer78

Description

@stormer78

Summary

The vta/passkey-vms/* Trust-Task family is now being published in the Trust-Tasks registry (trustoverip/dtgwg-trust-tasks-tf#80) at version 0.1 (draft, framework 0.2). This plugin currently emits /1.0 URIs (packages/core/src/vta/protocol.ts) and needs to align to the published specs once they merge.

This is a deliberate breaking change — we are tightening loosely-specced production contracts to match the registry's 0.x scheme.

Required change

packages/core/src/vta/protocol.ts:

const PASSKEY_VMS = "https://trusttasks.org/spec/vta/passkey-vms";
export const PasskeyVmTask = {
  enrollChallenge: `${PASSKEY_VMS}/enroll-challenge/1.0`,  // → /0.1
  enrollSubmit:    `${PASSKEY_VMS}/enroll-submit/1.0`,     // → /0.1
  list:            `${PASSKEY_VMS}/list/1.0`,              // → /0.1
  revoke:          `${PASSKEY_VMS}/revoke/1.0`,            // → /0.1
} as const;

Repoint all four task URIs from /1.0 to /0.1.

Because both sides route by exact URI, this must cut over in lockstep with the VTA change — see the companion issue on OpenVTC/verifiable-trust-infrastructure (#308).

Things to verify against the published schemas

  • Field naming — the published payloads are lowerCamelCase (ceremonyId, rpId, publicKeyMultibase, coseAlgorithm, attestationObject, clientDataJson, authenticatorData, webauthnCredentialId, webauthnTransports, webvhVersion). Confirm the @pnm/core payload interfaces and PasskeyVerificationMethod type match byte-for-byte.
  • publicKeyMultibase is advisory — the spec is explicit that the browser-supplied value is re-derived and may be rejected (vta/passkey-vms/enroll-submit:publicKeyMismatch); the plugin should treat the response verificationMethod.publicKeyMultibase as authoritative.
  • Error handling — the VTA will emit framework-standard codes plus slug-namespaced extended codes (unknownCeremony, ceremonyDidMismatch, invalidAttestation, publicKeyMismatch, alreadyEnrolled, didNotFound, fragmentNotFound). Surface these in the passkey-management UX rather than treating all failures generically.

Acceptance

  • PasskeyVmTask URIs repointed to /0.1, cut over in lockstep with the VTA
  • Payload interfaces / PasskeyVerificationMethod verified against the published 0.1 schemas
  • Extended error codes surfaced in the UI

Blocked on: registry publication of the four specs.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions