Skip to content
Offchain private key exchange as an attestation demonstration for Ledger Blue and Nano S
C Makefile Python
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


OtherDime : secure private key swapping application

This application demonstrates a Nano S private key swapping application relying on the attestation logic, locking the code logic to the attestation. For more information, you can refer to the following Medium post :

To use this application as is, the attestation has to be set to use Ledger as Owner, setting up the attestation as follows on a Nano S

python -m ledgerblue.endorsementSetupLedger --url --perso perso_11 --key 1 --endorsement attest_1 --targetId 0x31100002

If you plan to use it within your own group, you can modify the OWNER_PUBLIC_KEY field

Several scripts are available for the most common actions in the py/ directory :

  • createKey to create a new key, ready to be exchanged

  • getPublicKey to retrieve the public key associated to a created key

  • getStatus to retrieve the status of the application regarding the key provisioning and sealing

  • sign to sign a given hash after unsealing the key following a user confirmation. Unsealing makes the key non exchangeable

  • exchange to exchange a sealed key between a personalized dongle and a non personalized dongle, following user confirmation

This application is currently usable on Nano S firmware 1.3+

You can’t perform that action at this time.