Skip to content

crema-labs/ecdsa-p384-circom

Repository files navigation

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.

Usage

yarn add @crema-labs/ecdsa-p384-circom
include "@crema-labs/ecdsa-p384-circom/circuits/ecdsa.circom";

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

  1. ecdsa.circom: Implements the ECDSA signature verification and private key to public key conversion for the P-384 curve.
  2. p384.circom: Implements the basic operations for the P-384 curve.

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.