@crema-labs/ecdsa-p384-circom
v0.0.1
Published
ECDSA P384 implementation for circom
Downloads
4
Readme
ecdsa-p384-circom
This repository provides implementations of Elliptic Curve Digital Signature Algorithm (ECDSA) operations for the P-384 curve using Circom. These implementations are designed for use in zero-knowledge proofs and other cryptographic applications.
Note: These circuits not audited and not yet recommended for production use.
Setup
$ git clone https://github.com/crema-labs/ecdsa-p384-circom
$ cd ecdsa-p384-circom
$ yarn
Project Structure
In this repository, we are using Circomkit to test some example circuits using Mocha. The circuits and the statements that they prove are as follows:
Circuits
ecdsa.circom
: Implements the ECDSA signature verification and private key to public key conversion for the P-384 curve.- ECDSAPrivToPub - Converts a private key to a public key in P-384.
- ECDSAVerifyNoPubkeyCheck - Verifies an ECDSA signature for a given message and public key.
p384.circom
: Implements the basic operations for the P-384 curve.- P384AddUnequal - Adds two unequal points on the P-384 curve.
- P384Double - Doubles a point on the P-384 curve.
- P384ScalarMult - Multiplies a point on the P-384 curve by a scalar.
Testing
You can use the following commands to test the circuits:
# test everything
yarn test
# test a specific circuit
yarn test -g <template-name>
Benchmarks
All tests were performed on a MacBook Pro M1 2020 with 8GB RAM. | Operation | Constraints | Time (ms) | | ------------------------------ | ----------- | --------- | | ECDSA Signature Verification | 4,429,227 | 4,21,394 | | ECDSA Point Addition (Unequal) | 4,352 | 850 | | ECDSA Point Addition (Equal) | 6,000 | 573 | | ECDSA Scalar Multiplication | 3,977,848 | 4,20,964 |
Credits
This project was made possible thanks to the support of ZK Email and OpenPassport for the grant.
Acknowledgments
This project builds upon the excellent work of the circom-ecdsa-p256 by PSE and circom-ecdsa by 0xPARC. We are grateful for their contributions to implementation of ECDSA in Circom, which formed the foundation for our work.
Contribution
Feel free to contribute to this repository by creating issues or pull requests. We are open to any suggestions or improvements.