Shared wire logic for core-keys, a split-key hardware authenticator for SSH and FIDO2: the desktop daemon and a dedicated hardware device must both participate in every authentication, and the device explicitly approves each use on its own button and display.
This crate is no_std. It holds the parts of the wire that both sides need:
- CKVP framing (docs §3) — START/CONT reassembly into logical messages
capped at 2048 B (
src/ckvp.rs). - Pairing — the commit/SAS ceremony (
src/pairing.rs). - Records — the CBOR record types carried inside a Noise transport message
(
src/records.rs).
The firmware does not link this crate — it reimplements the same wire in C. Every wire change is a two-sided edit, and the second side lives in core-keys/mule-esp32s3.
cargo testNo hardware needed.
| repo | what |
|---|---|
| spec | frozen design decisions and the section-numbered co-authorization wire protocol |
| protocol | corekeys-protocol, the shared no_std wire crate |
| daemon | corekeys-daemon, the desktop ssh-agent front end and Noise session owner |
| mule-esp32s3 | ESP-IDF firmware for the protocol mule (LilyGO T-Display-S3) |
| mechanical | 3D-printed enclosures for the boards |
Dual-licensed under either the Apache License, Version 2.0 or the MIT license, at your option. Unless you state otherwise, any contribution you intentionally submit for inclusion in this work shall be dual-licensed as above, without additional terms or conditions.
Design frozen; M1 (mule bring-up) in progress. Nothing here is fit for real credentials yet.
