last changed: Jan 17, 2023
Both the encrypted and decrypted tallies may be validated against the manifest, and against each other for consistency.
Encrypted Tally Validation may be run as part of Verification 11.
-
For each EncryptedTally.Contest in the tally, the contestId must match a ContestDescription.contestId in Manifest.contests.
1.1 The EncryptedTally.Contest.contestHash must match the corresponding ContestDescription.contestHash.
-
Within the EncryptedTally.Contest and matching ContestDescription, each EncryptedTally.Selection.selectionId must match a SelectionDescription.selectionId.
2.1 The EncryptedTally.Selection.selectionHash must match the corresponding SelectionDescription.selectionHash.
-
Each EncryptedTally.Contest must have a unique contestId.
-
Within a EncryptedTally.Contest, all EncryptedTally.Selection have a unique selectionId.
DecryptedBallotOrTally validation may be run as part of verification.
-
For each DecryptedTallyOrBallot.Contest in the tally, the contestId must match a ContestDescription.contestId in Manifest.contests.
-
Within the DecryptedTallyOrBallot.Contest and matching ContestDescription, each DecryptedTallyOrBallot.Selection.selectionId must match a SelectionDescription.selectionId.
-
For each DecryptedTallyOrBallot.Contest in the tally, the contestId must match a Encrypted[Tally|Ballot].Contest.contestId.
-
Within the DecryptedTallyOrBallot.Contest and matching Encrypted[Tally|Ballot].Contest, each DecryptedTallyOrBallot.Selection.selectionId must match a Encrypted[Tally|Ballot].Selection.selectionId.
2.1 The DecryptedTallyOrBallot.Selection.message must compare equal to the Encrypted[Tally|Ballot].Selection.message.
-
All DecryptedTallyOrBallot.Contest must have a unique contestId.
1.1 In the contests map, the key must match the value.object_id. (JSON only)
-
Within a DecryptedTallyOrBallot.Contest, all DecryptedTallyOrBallot.Selection have a unique selectionId.
2.1 In the selections map, the key must match the value.object_id. (JSON only)
-
All Selection shares have a selectionId matching the Selection.selectionId.
-
Within a DecryptedTallyOrBallot.Selection, the PartialDecryption's have a unique guardianId.
-
There are nguardians PartialDecryptions in the DecryptedTallyOrBallot.Selection.
E. RecoveredPartialDecryption (when PartialDecryption contains non-empty RecoveredPartialDecryptions) LOOK probably not needed
-
Each RecoveredPartialDecryption has a non-null share.
-
Each RecoveredPartialDecryption has a unique decryptingGuardianId.
-
Each RecoveredPartialDecryption has a missingGuardianId matching the PartialDecryption's guardianId.
-
There are navailable RecoveredPartialDecryptions. Note that navailable may be greater than k = quorum.