This is a fork of the Ledger U2F Applet that is focused on privacy and compatability. It has several unique features:
- Still works with JC 3.0.1 cards.
- Supports iOS via NFC, by working around a bug in Apple's FIDO2 implementation.
- Multiple counters (8), which are assigned to registrations in a round-robin fashion.
- EEPROM wear-leveling for counters
- Supports "dont-enforce-user-presence-and-sign".
This fork also fixes some problems with Extended APDUs that is present in the upstream version.
If you want to just get a CAP file and install it, you can find it in the releases section. Check the assets for the release, there should be a U2FApplet.cap
and a U2FApplet.cap.gpg
. The cap file is signed with my public gpg key.
Once you have a CAP file, you can use this script to install using GlobalPlatformPro.
What follows below is from the original project README, with a few edits for things that have clearly changed.
This applet is a Java Card implementation of the FIDO Alliance U2F standard
It uses no proprietary vendor API and is freely available on Ledger Unplugged and for a small fee on other Fidesmo devices through Fidesmo store
- Set the environment variable
JC_HOME
to the folder containg the Java Card Development Kit 3.0.2 - Run
gradlew convertJavacard
Either load the CAP file using your favorite third party software or refer to Fidesmo Gradle Plugin to use on the Fidesmo platform
The following install parameters are expected :
- 1 byte flag : provide 01 to pass the current Fido NFC interoperability tests, or 00 (You almost certainly want to pass in 00)
- 2 bytes length (big endian encoded) : length of the attestation certificate to load, supposed to be using a private key on the P-256 curve
- 32 bytes : private key of the attestation certificate
Before using the applet, the attestation certificate shall be loaded using a proprietary APDU
CLA | INS | P1 | P2 | Data |
---|---|---|---|---|
80 | 01 | offset (high) | offset (low) | Certificate data chunk |
- Download Google Authenticator
- Test on http://u2fdemo.appspot.com or https://demo.yubico.com/u2f from Chrome
- For additional API reference and implementations, check the reference code, the beta NFC API and Yubico guide
This implementation has been certified FIDO U2F compliant on December 17, 2015 (U2F100020151217001). See tag u2f-certif-171215
This application is licensed under Apache 2.0
Please contact hello@ledger.fr for any question