Description
We've had various interest in having a @RustCrypto implementation of ElGamal. This issue is intended for discussion and planning around how it should be implemented.
While there are existing implementations of ElGamal in its various forms in Rust, most of them are specialized to specific elliptic curve groups. One way a new implementation can differentiate itself is by being implemented generically over elliptic curve groups. The group
crate provides a system of traits which make it possible for the implementation to be generic over curve groups (and potentially other types of groups). Our RustCrypto/elliptic-curves curve implementations all support these traits.
A generic implementation is desirable for a number of reasons, but one in particular is to support curves with a larger field modulus like NIST P-384, which would make it possible to encrypt a 256-bit symmetric secret.
Some additional features which might be nice are k-of-n threshold ElGamal encryption (using e.g. Pedersen secret sharing) and additively homomorphic encryption.
cc to some people who have worked on ElGamal implementations in Rust who might be interested in contributing: @iquerejeta @eleanor-em @isislovecruft
Activity