All notable changes to this project will be documented in this file. The project adheres to Semantic Versioning.
(All changes are relative compared to the 0.3.0-beta.1 release)
- Add getters for participant parameters in DKG.
-
Update
elliptic-curve
andhashbrown
dependencies. -
Bump the minimum supported Rust version to 1.65.
-
Make
curve25519-dalek
dependency optional and do not force the choice of its math backend. The dependency is still enabled by default. -
Allow for the
curve25519-dalek-ng
crypto backend as an alternative tocurve25519-dalek
. This may be beneficial for applications that usebulletproofs
or other libraries depending oncurve25519-dalek-ng
. -
Implement zero-knowledge proof of equivalence between an ElGamal ciphertext and a Pedersen commitment in the same group. This proof can be used to switch from frameworks applicable to ElGamal ciphertexts, to ones applicable to Pedersen commitments (e.g., Bulletproofs for range proofs).
-
Implement distributed key generation (DKG) for threshold encryption based on Pedersen's scheme with commitments of participants' keys.
-
Update
hashbrown
dependency. -
Bump the minimum supported Rust version to 1.62.
- Fix
serde
feature. Theserde
dependency requires thealloc
feature enabled, but this was not declared previously.
-
Generalize
EncryptedChoice
to handle multi-choice polling. -
Add quadratic voting with a zero-knowledge proof of correctness.
-
Encapsulate ciphertext + original value in
CiphertextWithValue
. Allow using this type to createRangeProof
s. -
Extend supported operations for
Ciphertext
s, e.g. negation. -
Expose ciphertext components via getters.
-
Update
elliptic-curve
dependency. -
Return new error types (
VerificationError
andChoiceVerificationError
) on proof verification failure instead of signalling failure viabool
orOption
values. -
Move
EncryptedChoice
to a separateapp
module. IntroduceEncryptedChoiceParams
to encapsulate all parameters related toEncryptedChoice
creation / verification. -
Generalize
DecryptionShare
s asVerifiableDecryption
, which can be applied not only with threshold encryption with Shamir's secret sharing, but in other sharing schemes or independently. -
Make
hashbrown
an optional dependency, which is only necessary if the std library is not available.
-
Remove unused
byteorder
andsmallvec
dependencies. -
Avoid extra allocations when constructing ring proofs, which could leak information via side channels.
- Fix zeroing
SecretKey
contents on drop.
The initial release of elastic-elgamal
.