Implementation of Threshold Cryptography Eliptic Curve Digital Signature Algorithm proposed on the paper Using Level-1 Homomorphic Encryption To Improve Threshold DSA Signatures For Bitcoin Wallet Security.
This implementation is loosely based on the extension of Paillier Toolbox to use Level-2 Homomorphic Encryption from Princeton CITP. That code is the working example of the work in the paper mentioned earlier.
This code also implements the level-2 homomorphic encryption protocol from Dario Catalano et al, Boosting Linearly-Homomorphic Encryption to Evaluate Degree-2 Functions on Encrypted Data.
The only requirement for this library is our Threshold Paillier Implementation. It will be downloaded automatically if the module is used with Go Modules
To use the library with a module-enabled go project, you must write the following line on a terminal on the root file of the project.
go get github.com/niclabs/tcecdsa
To run the tests you just need to use go test:
go test github.com/niclabs/tcecdsa
This library does not implement the commitments used in the examples of the paper for distributing the shares between the participants. This is because this library is designed to be used in a synchronous message distribution scheme. For example, we use it the library in the DTC project, delegating to the user of the library the task of receiving the shares and send them to all the nodes.