This project aims to provide a reference implementation of a secure multiparty computation for elliptic curve signing with two parties.
The 2P-ECDSA implementation is based on a [blog entry by Nick Money|https://duo.com/labs/tech-notes/2p-ecdsa-explained] about two-party threshold ECDSA proposed by Yehuda Lindell of Bar-Ilan University.
It is an initial reimplementation in Python to learn about and experiment with SMPC variations of partial signing for a next iteration of hardware wallets. Basically built around the tremendous benefit of MPC helping to avoid sending around secrets over networks or to expose secrets and key material over bus systems or during execution within main memory.
Replace Mike Ivanov's implementation with Paillier-gmpy2
Add Zero Knowledge proofs to Paillier's encryption to avoid malicious actors based on simple-zk-proofs
Should be compatible with Python >= 3.4.
Built as an extension to ECPy: http://cslashm.github.io/ECPy/
Paillier Partially Homomorphic Encryption is based on: https://github.com/mikeivanov/paillier
This is explanatory code and not meant for production use
Copyright (c) 2020 Tom Fuerstner P2-MPC-ECDSA
Copyright (c) 2014 Mike Ivanov Pure Python Paillier Homomorphic Cryptosystem
copyright (c) 2016 Cedric Mesnil ECPy Elliptic Curve library
This program is released under MIT Licence.