last update 05/22/2024
EGK Elliptic Curve (egk-ec) is an experimental implementation of ElectionGuard, version 2.0, available under an MIT-style open source License.
This version adds the option to use Elliptic Curves for the cryptography. This is an experimental feature and is not part of the ElectionGuard specification. The implementation for Elliptic Curves (EC) is taken largely from the Verificatum library, including the option to use the Verificatum C library. See VCR License for the license for this part of the library.
Switching to Elliptic Curves is mostly transparent to the ElectionGuard specification, so we are calling this version EGK 2.1, which uses the ElectionGuard 2.0 specification on top of elliptic curves.
This library also can use the Electionguard Integer Group, and so can also be used for Electionguard 2.0 compliant applications.
See EGK EC mixnet for an implementation of a mixnet using this library with Elliptic Curves.
See EGK webapps for HTTP client/server applications that use this library to allow remote workflows.
The elliptic curve group uses base64 encoding in the JSON, with point compression that reduces the byte count per ElementModP to 33 bytes. Json serialization of 1000 encrypted ballots with 34 ciphertexts each (including all the proofs) is 44.5 Mb. Zipping all into a zip archive is 12.3 Mb.
We are using the following provisional JSON serialization specification:
- John Caron (ElectionGuard Kotlin, Elliptic Curves)
- Dan S. Wallach (ElectionGuard Kotlin core package)
- Douglas Wikström (Verificatum Elliptic Curves)