C++ implementation of the pre-constrained group signature scheme introduced in ePrint:2022/1643
WARNING: This is an academic proof-of-concept prototype, and in particular has not received careful code review. This implementation is NOT ready for production use.
This project uses the mcl library for group arithmetic and pairings. The mcl library in turn requires GMP.
lib/pcsig.h: Library for set pre-constrained group signatures with functions for creating and verifying signatures.lib/linkpcsig.h: Library for linkable set pre-constrained group signatures with functions for creating and verifying signatures.pcsig_bench.cpp: Benchmark of the set pre-constrained group signature scheme.pcsig_bench.cpp: Benchmark of the linkable set pre-constrained group signature scheme.
Start by cloning the repositories.
git clone https://github.com/guruvamsi-policharla/pc-sigs
git clone https://github.com/herumi/mclMove the pc-sigs directory into the mcl directory and add the following line to the bottom of the CMakeLists.txt file in the mcl directory.
add_subdirectory(pc-sigs)Replace build.sh in the mcl directory with the pc-sigs/build.sh. Then execute the following command in the mcl directory
./build.sh(You may need to make build.sh executable.)
Navigate to build/bin and you should find two binaries titled pcsig_bench and linkpcsig_bench.
These binaries take two parameters:
- Number of signatures to average over.
- Message to create the signature on.
By default the parameters are set to 100 and "hello world".
Our implementation currently supports three curves BN254, BN381_1, BN462. To change the curve used, modify the preprocessor macro curveid in lib/pcsig.h and lib/linkpcsig.h and recompile by running make inside the mcl/build directory.
This library is released under the MIT License.