Expand description

ctap-types maps the various types involved in the FIDO CTAP protocol to Rust structures consisting of heapless data types.

We currently follow the non-public editor’s draft dated 19 March 2019. It still uses FIDO_2_1_PRE to signal new commands, but uses non-vendor API numbering (e.g. 0xA for credential management).

It also contains a lightweight CBOR deserializer, as the existing serde_cbor creates very large code.

The various transport protocols (USB, NFC, BLE) are expected to handle low-level protocol details and deserialize requests / serialize responses, so the authenticator logic is decoupled from these details.


pub use heapless;
pub use cbor_smol as serde;
pub use ctap2::Error;
pub use ctap2::Result;


The FIDO CTAP Authenticator API in terms of RPC with our types.

Because why wouldn’t pile JOSE on top of CBOR…

Types for CTAP1.

Types for CTAP2.

Subset of WebAuthn types that crept into CTAP.


A fixed capacity String

A fixed capacity Vec


Call a remote procedure with a request, receive a response, maybe.