291 Commits

Author SHA1 Message Date
Robin Krahl d53f29a1be Release v0.2.0 v0.2.0 2025-09-02 09:38:53 +02:00
Robin Krahl 1c2ac73c9a ci: Add workflow for publishing to crates.io 2025-09-02 09:32:09 +02:00
Robin Krahl 0aea58624f Cleanup Cargo.toml 2025-09-02 09:30:10 +02:00
Robin Krahl 728a9c2b97 Use Git dependencies instead of patches
This makes it possible to publish this crate to crates.io.  The reason
to use patches was to make it easier to use the crate in other crates,
but this is not relevant for dev-dependencies.
2025-09-02 09:30:10 +02:00
Robin Krahl 4b45601c5e Merge remote-tracking branch 'nitrokey/main'
This pulls in all changes from the Nitrokey/fido-authenticator
repository, improving compliance with the CTAP spec, adding support for
CTAP 2.1 and implementing new features like the largeBlob extension.
2025-08-22 17:35:09 +02:00
Robin Krahl 01a2653c37 Update trussed to use new virtual store 2025-05-15 11:52:59 +02:00
Robin Krahl cb30a2cc64 Remove usbip example
Instead, the nitrokey-3-firmware usbip runner should be used.
2025-05-15 09:34:19 +02:00
Robin Krahl 5ebb4a4830 clientPin: Support getRetries without PIN protocol
This fixes compatibility with CTAP 2.1.

Fixes: https://github.com/Nitrokey/fido-authenticator/issues/118
2025-05-12 17:42:26 +02:00
Robin Krahl 4554cb866e make_credential: Support non-discoverable credentials without PIN
Currently, we always require the PIN to be used for make_credential
operations if it is set.  This patch implements the makeCredUvNotRqd
option that allows non-discoverable credentials to be created without
using the PIN according to § 6.1.2 Step 6 of the specification, see:

https://fidoalliance.org/specs/fido-v2.1-rd-20201208/fido-client-to-authenticator-protocol-v2.1-rd-20201208.html#sctn-makeCred-authnr-alg
https://fidoalliance.org/specs/fido-v2.1-rd-20201208/fido-client-to-authenticator-protocol-v2.1-rd-20201208.html#getinfo-makecreduvnotrqd

Fixes: https://github.com/Nitrokey/fido-authenticator/issues/34
2025-05-07 22:20:20 +02:00
Robin Krahl 223bc11eec Always reject uv = true in make_credential and get_assertion
This changes the error code if uv = true to InvalidOption even if a PIN
is set.  Previously, we returned PinRequired if a PIN is set.  The new
implementation follows § 6.1.2 Step 5 of the specification more closely.

https://fidoalliance.org/specs/fido-v2.1-rd-20201208/fido-client-to-authenticator-protocol-v2.1-rd-20201208.html#sctn-makeCred-authnr-alg
2025-05-07 21:57:44 +02:00
Robin Krahl 7ff0518b68 hmac-secret: Forbid up=false
Fixes: https://github.com/Nitrokey/fido-authenticator/issues/19
2025-05-07 16:04:44 +02:00
Robin Krahl 91a57756c0 tests: Use hmac-secret extension in TestGetAssertion 2025-05-07 15:54:54 +02:00
Robin Krahl ba17bc506c Replace core::iter::repeat(_).take(_) with core::iter::repeat_n(_, _)
This fixes a new clippy lint.
2025-05-06 21:48:40 +02:00
Robin Krahl 8b8a773831 Reduce duplicated key generation and signing logic
This patch moves the key generation and signing logic into the
SigningAlgorithm enum, removing some duplicated code from the ctap2 and
ctap2::credential_management modules.
2025-05-06 21:47:02 +02:00
Robin Krahl e21d8687fc Remove references to totp signing algorithm 2025-05-06 21:29:13 +02:00
Sosthène Guédon 443eca1787 Make credential: change the path of rks to rp_id_hash.credential_id_hash from rp_id_hash/credential_id_hash
The goal is to make credential storage more efficient, by making use of littlefs's
ability to inline file contents into the directory metadata when the file is small.
2025-02-20 13:44:22 +01:00
Robin Krahl 6f260ea49a tests: Set opt-level to 2 2025-02-19 12:34:23 +01:00
Robin Krahl fed17e9b35 tests: Remove exhaustive dependency 2025-02-19 12:34:23 +01:00
Robin Krahl 2c8efe16c2 tests: Inspect filesystem after test runs 2025-02-19 12:34:22 +01:00
Robin Krahl dfcaf94096 tests: Add getNextAssertion tests 2025-02-18 10:46:12 +01:00
Robin Krahl f3679b8dd5 tests: Add changePin tests 2025-02-18 10:46:11 +01:00
Robin Krahl fd6fc9b8a8 tests: Extend setPin tests 2025-02-18 10:46:11 +01:00
Robin Krahl 726ce464be tests: Add getPinRetries tests 2025-02-18 10:46:11 +01:00
Robin Krahl add1cebd26 tests: Extend getPinToken tests 2025-02-18 10:46:11 +01:00
Robin Krahl 9e4cd65e54 tests: Extend getAssertion tests 2025-02-18 10:46:11 +01:00