Coder Social home page Coder Social logo

vk-u2f's Introduction

VivoKey fork of U2F Applet

This applet includes code to implement the FIDO2 CTAP standard.

Currently finished is basic registration, assertion, and information commands.

This is targeted at an implant form factor, for the VivoKey Apex but can be used elsewhere.

Notes:

Please change the aaguid in CTAP2.java if you fork this applet, as this is specific per-manufacturer and per-model.

This is built with JC3.0.5u3, with ant-javacard. As such, it only targets the NXP P71 (for Fidesmo), and any equivalent.

Ensure you initialise the submodules, as this will pull the sdk libraries for javacard itself.

I use VS Code to edit this, and I've included JC3.0.4 and JC3.0.5 sources for attachment.

The CTAP2 implementation is completely separate from the U2F implementation - handoff is done in U2FApplet.java in process() when the correct tagging is detected.

Attestation is incomplete, but expects a certificate to be loaded for the CTAP2 attestation pair, which is generated on-card. Load commands are not (yet) implemented.

It is envisioned we use a Yubico-compatible certificate for this, but that is outside the scope of this applet and will be covered in a personalisation project.

Push requests are welcome.

User verification, by default, is flagged as complete. This is based on our implant form factor, as we consider the tap of an implant to fulfill this. As such, PIN support is not included, because it requires you to hold the implant to the reader as you type the PIN. Feel free to submit PIN support, but I will not be dedicating time to it at present.

I've left the below, which (mostly) applies to the U2F portion of this applet.

Customized U2F Applet

This is a fork of the Ledger U2F Applet that is focused on privacy and compatability. It has several unique features:

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.


Overview

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

Building

Installing

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

Testing on Android

Certification

This implementation has been certified FIDO U2F compliant on December 17, 2015 (U2F100020151217001). See tag u2f-certif-171215

License

This application is licensed under Apache 2.0

Contact

Please contact [email protected] for any question

vk-u2f's People

Contributors

rileyg98 avatar darconeous avatar j08ny avatar martinpaljak avatar melanger avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.