Skip to content

feat(ssh): add CTAP 2.1 UV token signing - #346

Merged
inureyes merged 1 commit into
mainfrom
feature/issue-339-uv-tokens
Oct 22, 2026
Merged

inureyes merged 1 commit into
mainfrom
feature/issue-339-uv-tokens

Conversation

@inureyes

Copy link
Copy Markdown
Member

Summary

  • Obtain a permission-scoped CTAP 2.1 UV token with clientPIN subcommand 0x06 for built-in-sensor authenticators, then authenticate GetAssertion while omitting options.uv.
  • Return PinRequired when sensor verification is refused so a PIN retry uses the existing 0x09 path; cover both PIN/UV auth protocols 1 and 2.
  • Preserve the CTAP 2.0 direct options.uv path and update the compatibility ledger.
  • Keep WebAuthn host-key and certificate verification deferred and tracked in blocked follow-up feat(ssh): add webauthn-sk host-key support #345 because the released ssh-key and russh stack cannot verify those signatures yet.

Test plan

  • cargo fmt --check
  • CARGO_BUILD_JOBS=5 cargo clippy --lib --tests -- -D warnings
  • CARGO_BUILD_JOBS=5 cargo test --lib security_key -- --test-threads=1 (99 passed)
  • CARGO_BUILD_JOBS=5 cargo test --bin bssh app::query -- --test-threads=1 (3 passed)
  • CARGO_BUILD_JOBS=5 cargo test --lib ssh::tokio_client::algorithms::tests -- --test-threads=1 (12 passed)

Closes #339

Built-in-sensor authenticators that advertise `pinUvAuthToken` now obtain a permission-scoped token through clientPIN subcommand 0x06, authenticate GetAssertion without sending the `uv` option, and fall back to the existing PIN prompt and subcommand 0x09 path when the sensor refuses verification. CTAP 2.0 devices retain their direct `options.uv` flow.

Extend the mock transport and focused tests across PIN/UV protocols 1 and 2, update the compatibility ledger, and track deferred WebAuthn host-signature support in #345.

Validated with formatting, clippy on library and tests, the 99-test security-key slice, the 3-test binary query slice, and the 12-test transport-algorithm slice.

Refs #339
@inureyes inureyes added type:enhancement New feature or request priority:low Low priority issue status:review Under review status:done Completed and removed status:review Under review labels Oct 22, 2026
@inureyes
inureyes merged commit 4fdc748 into main Oct 22, 2026
4 checks passed
@inureyes
inureyes deleted the feature/issue-339-uv-tokens branch October 22, 2026 14:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

priority:low Low priority issue status:done Completed type:enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(ssh): add CTAP 2.1 UV tokens to the FIDO client

1 participant