This is a repository for implementing PLUME - "Verifiably Deterministic Signatures on ECDSA" JavaCard wallets.

This repository focuses an exploration for creating code for JavaCard capable secure elements, especially over a different curve(s), for example, babyjubjub as this is the lionshare hardware wallet platfroms

PLUME docs and github

Requirements:

Device Requiremente

  • (card, contactless etc) running Javacard 3.0.5ish (possibly 3.0.4 if JCMathLib is implemented) that has support for EC point multiplication.

**This will work on existing JC wallet implementations ex. Status Keycard, Kong, and Semaphore USIM.

An explination of this can be found JCMathLib As well as a list of some supported cards here JCAlgTest

Features:

Hardware:

  • [] Creates test PLUME nullifier using test private and test hash key over babyjubjub curve
  • [] Creates PLUME nullifier using arbitrary private key and hash (imported or generated on-card)

Python CLI Tool:

  • [] Does Nullifier Test
  • [] Transfers output of hash2curve output to SE
  • [] Proves the inputs
  • [] Verifies nullifier

Installation:

To install first compile the applet with the javacard ant buildtools. Then use GlobalPlatformPro -- https://github.com/martinpaljak/GlobalPlatformPro

or the tools provided with your cards to install the CAP file generated by the above compilation step.

For Example gp -f -install PLUME.cap

Usage:

Python CLI Test Tools

Source the virtual environment and install the dependencies:

python3 -m venv .venv

&

python3 -m pip install -r requirements.txt

Then run the script to get the output nullifier.

python3 test_hash2curve.py