github framefilter/keyroost v0.5.0

latest releases: v0.7.6, v0.7.5, v0.7.4...
one month ago

On-device TOTP/HOTP for Token2 FIDO keys

Token2 PIN+ / FIDO2+ security keys can now store and manage TOTP/HOTP entries
that the key itself computes — provisioning seeds, listing entries, reading
codes, configuring the button-press HOTP, and reading device configuration —
over both USB-HID and PC/SC (NFC). Available in both keyroostctl and the
desktop app's new OTP pane.

The seed-bearing commands are wrapped in the device's ECDH (P-256) + AES-256-CBC
scheme, and the wire protocol is implemented as a pure, dependency-light byte
layer (keyroost-token2otp) with the vendor spec's worked examples reproduced
as known-answer tests and a fuzz target over the response parsers.

Contributed by @token2 — the device vendor and
author of the reference client — who provided the protocol specification and
implemented the transport, crypto, and UI against real hardware. keyroost
remains an independent project; see the README's acknowledgements.

Fixes

  • No more ghost / duplicate Molto2 in the device list when a Token2 FIDO
    key is also connected (Windows). Molto2 detection was matching the bare
    "TOKEN2" brand in the PC/SC reader name, which Token2's FIDO keys share — it
    now matches the "Molto2" product name specifically. (#21)

Maintenance

  • The release publish workflow's crates.io "already published?" probe now sends
    a User-Agent (crates.io rejects UA-less API requests), restoring re-run
    safety; crates.io publishing moved to OIDC Trusted Publishing (no stored
    token).

Install

cargo install keyroostctl / cargo install keyroost, or grab a prebuilt
archive below (each is covered by SHA256SUMS and a build-provenance attestation).

Don't miss a new keyroost release

NewReleases is sending notifications on new releases.