This is very nice, clean and to the point, I really enjoyed it. I was looking for articles similar to this as an inspiration for a series I want to write shortly. This is definitely bookmarked.
For more context, we're working on Solo, which is an open source security key. The firmware is currently C and we're working on a Rust port. There's no wifi. BUT, and here comes the interesting part I think, there's Webauthn. Browsers already have an interface to talk to the security key via usb (soon also nfc), and this interface supports extensions.
This means you can write js applications that interact with the security key with no need for a server/api on the key itself. And of course, by modifying the firmware you can support additional features. There's already code for blink, digital signature, user input (pressing the button), so it shouldn't be hard to copy & paste.
A few people have now completed the tutorial. One of them without any previous programming experience. Based on the feedback I have added some more instructions to parts that were not completely clear.
For more context, we're working on Solo, which is an open source security key. The firmware is currently C and we're working on a Rust port. There's no wifi. BUT, and here comes the interesting part I think, there's Webauthn. Browsers already have an interface to talk to the security key via usb (soon also nfc), and this interface supports extensions.
This means you can write js applications that interact with the security key with no need for a server/api on the key itself. And of course, by modifying the firmware you can support additional features. There's already code for blink, digital signature, user input (pressing the button), so it shouldn't be hard to copy & paste.
Anyway, great post, thank you for sharing.