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
- (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
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
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
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