Skip to content

Commit be31aa2

Browse files
authored
#743 Fix Guardian ids in Lagrange Coefficients (#750)
* Initial attempt at fixing the problem (that works) * Use sequence_order when announcing guardians * Description of change
1 parent ffde9a7 commit be31aa2

2 files changed

Lines changed: 12 additions & 0 deletions

File tree

src/electionguard_gui/models/election_dto.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,12 @@ def get_guardian_records(self) -> list[GuardianRecord]:
105105
raise Exception("No guardian records found")
106106
return from_list_raw(GuardianRecord, self.guardian_records)
107107

108+
def get_guardian_sequence_order(self, guardian_id: str) -> int:
109+
for record in self.get_guardian_records():
110+
if record.guardian_id == guardian_id:
111+
return record.sequence_order
112+
raise Exception("Guardian not found")
113+
108114

109115
def _get_list(election: dict[str, Any], name: str) -> list:
110116
value = election.get(name)

src/electionguard_gui/services/decryption_stages/decryption_s2_announce_service.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,12 @@ def run(self, db: Database, decryption: DecryptionDto) -> None:
3030
decryption_shares = decryption.get_decryption_shares()
3131
for decryption_share_dict in decryption_shares:
3232
self._log.debug(f"announcing {decryption_share_dict.guardian_id}")
33+
guardian_sequence_number = election.get_guardian_sequence_order(
34+
decryption_share_dict.guardian_id
35+
)
36+
# coefficients will fail validation unless the key is a numeric encoded
37+
# string of the guardian's sequence number
38+
decryption_share_dict.guardian_key.owner_id = str(guardian_sequence_number)
3339
decryption_mediator.announce(
3440
decryption_share_dict.guardian_key,
3541
decryption_share_dict.tally_share,

0 commit comments

Comments
 (0)