This document lists required steps to start build your own OpenSK.
OpenSK is installed as a native Wasefire applet.
In order to compile and flash a working OpenSK firmware, you will need the following:
- rustup (can be installed with Rustup)
- the OpenSSL command line tool (can be installed and configured with the
libssl-devandpkg-configpackages on Debian) - uv and python3 (optional, for sending CTAP commands for configuration, can be installed with uv)
Run the setup script and follow install instructions for rustup and uv, if
necessary.
./setup.shThe setup script is idempotent, so you can always rerun it, either because you
don't remember you've run it or because you just pulled a newer version of the
main branch with git pull. Rerun it if any command below fails.
If this is the first time installing OpenSK on a Linux host machine, you need to
install a udev rule file to allow non-root users to interact with OpenSK
devices. To install it, execute:
sudo cp rules.d/99-wasefire.rules /etc/udev/rules.d/
sudo udevadm control --reloadOpenSK stores data in the devices flash storage, for example your credentials.
When you flash Wasefire, you will erase that storage.
To keep your storage, use the --update flag with the below flash script.
The applet provides a few customization features (all disabled by default):
config-commandrecommended, enables the authenticatorConfig CTAP commandctap1recommended, enables CTAP 1 (the applet always implements CTAP 2)debugenables logging of the applet's debug messagesed25519enables support for Ed25519 (the applet always implements ECDSA P-256)fingerprintenables support for fingerprints (requires a sensor)
We provide a flash.sh script to flash the OpenSK applet for each platform.
To customize features, use --features. For example, to enable debug prints:
./flash.sh --features=ctap1,config-command,debug <target>The available targets are listed below.
The applet needs the platform to implement the following features of the board API:
api-buttonapi-clockapi-crypto-aes256-cbcapi-crypto-ed25519if the appleted25519feature is enabledapi-crypto-hmac-sha256api-crypto-p256-ecdhapi-crypto-p256-ecdsaapi-crypto-sha256api-fingerprint-matcherif the appletfingerprintfeature is enabledapi-ledapi-rngapi-storageapi-timerapi-usb-ctap
Some applet features only work for some targets, special notes will indicate when a feature is not supported, or extra steps need to be taken.
In the following sections, we describe platforms that support OpenSK.
The applet feature fingerprint is not supported.
To install, run:
./flash.sh hostThe applet feature ed25519 is not supported.
The applet feature fingerprint is supported for the development kit if an FPC
2534
is connected to the board. In that case, the fpc2534 platform feature must be
enabled.
An FPC 2532 should theoretically also be supported (but has not been tested) using the same platform feature.
For more details on the boards, see:
- Nordic nRF52840-DK - target:
nrf52840dk - Nordic nRF52840 Dongle - target:
nrf52840_dongle - Makerdiary nRF52840-MDK USB dongle - target:
nrf52840_mdk - Feitian OpenSK dongle - target:
nrf52840_dongle
The applet feature ed25519 is supported and needs the ed25519
platform feature.
The applet feature fingerprint is not supported.
A LED (active high) needs to be connected to R10. A capacitive touch needs to be connected to R13.
./flash.sh opentitan