mirror of
https://github.com/QuilibriumNetwork/ceremonyclient.git
synced 2026-02-21 18:37:26 +08:00
29 lines
1.4 KiB
Markdown
29 lines
1.4 KiB
Markdown
|
|
## Introduction
|
|
Implementation of the DKG-in-the-head (DKGitH) and Robust DKG-in-the-head (RDKGitH) verifiable encryption schemes.
|
|
|
|
## Description
|
|
These verifiable encryption (VE) schemes allow one to encrypt a discrete logarithm instance under an Elgamal public key and prove to anyone that the correct value is encrypted.
|
|
|
|
We use the elliptic curve implementation of [`arkworks`](https://github.com/arkworks-rs), and our implementation defaults to using the `secp256r1` curve, but is generic over the choice of curve and can easily be modified used to other curves implemented in `arkworks`.
|
|
|
|
Hashing is done with SHA512, using the Rust [`sha2`](https://docs.rs/sha2/latest/sha2/) crate.
|
|
|
|
Our seed tree implementation is inspired by the one in the C implementation of the [LegRoast](https://github.com/WardBeullens/LegRoast) signature scheme.
|
|
|
|
## Running Tests and Benchmarks
|
|
To run unit tests type `cargo test --release`.
|
|
|
|
Sizes of the proofs and ciphertexts for the two schemes are computed in unit tests, use the script `run_size_benchmarks.sh` to run the tests and display the output.
|
|
|
|
Benchmarks of the time required to run the main VE operations `Prove()`, `Verify()`, `Compress()` and `Recover()`
|
|
are also provided, and can be run with `cargo bench`. To run only the DKGitH benchmarks, use
|
|
```
|
|
cargo bench -- "^DKGitH"
|
|
```
|
|
and to run only the RDKGitH benchmarks use
|
|
```
|
|
cargo bench -- "^RDKGitH"
|
|
```
|
|
|