Base64 decode error
An encrypted vote is only valid for specific values of the election public key and crs.
It may be useful to check early if a vote is valid before actually adding it to the tally,
and it is therefore important to verify that it is later added to an encrypted tally that
is consistent with the election public key and crs it was verified against.
To reduce memory occupation, we use a hash of those two values.
EncryptedTally
is formed by one ciphertext per existing option and a fingerprint that
identifies the election parameters used (crs and election public key)
ProvenDecryptShare
consists of a group element (the partial decryption), and CorrectShareGenerationZkp
,
a proof of correct decryption.
Tally
represents the decrypted tally, with one u64
result for each of the options of the
election.
TallyDecryptShare
contains one decryption share per existing option. All committee
members (todo: this will change once DKG is completed)
need to submit a TallyDecryptShare
in order to successfully decrypt
the EncryptedTally
.
ValidatedTally
can only be constructed by valid TallyDecryptShare
s, and the
corresponding EncryptedTally
. This intermediate structure ensures that only
validated decryptions are used to compute the election outcome, i.e. if the
committee members do not present valid shares, the tally decryption cannot be
computed.
This intermediate structure is particularly of interest during the distributed
decryption protocol, where, in case there is a misbehaving party, one needs to
perform certain actions between the verification of a decryption share, and its
use in the decrypted tally computation.