Andreas Skriver Nielsen, Niklas Bille, Markus Valdemar Grønkjær Jensen, and Hans-Christian Kjeldsen
ElectionGuard is an open-source software development kit (SDK) by Microsoft, that aims to improve the security and transparency of elections. The primary focus is that
- Individual voters can verify that their votes have been accurately recorded.
- Voters and observers can verify that all recorded votes have been accurately counted.
Our independent verifier written in Go, allows voters and observers to confirm the consistency of an election using the supplied election record.
As a prerequisite make sure to have installed Go, which can be downloaded here. Afterwards download the verifier as a ZIP, or clone the repository from source:
$ git clone https://github.com/AU-HC/electionguard-verifier-go.git
Then get the dependencies used by the verifier:
$ cd electionguard-verifier-go
$ go get
The verifier is currently a command line utility tool, to verify an election the following command has to be executed.
$ go run main.go -p="path/to/election-record/"
It's important to note that the -p flag must be set, as it specifies the election record path. The election record
must follow the specification of ElectionGuard version 1.91.18.
The verifier also has alternate options which can be set, using the following flags:
-oof typestring: Specifies if the verifier, should output a JSON file with additional verification information to the specified path.-cof typebool: Specifies if the verifier should use multiple cores to verify the election record.-bof typeint: Specifies the amount of samples for a benchmarking run. Setting this flag with a value other than 0, will not verify the specified election.-vof typeint: Specifies the logging level for the verifier, the options are:- 0 : Will log nothing (default)
- 1 : Logging of information
- 2 : Logging of debug
The project provides one sample election in the /data/nov_2023 directory, courtesy of ElectionGuard.
To verify the College Park General Election with logging level set to information and output file output.json execute one of the following command blocks.
$ go run main.go -p="data/nov_2023/election_record/" -v=1 -o="output.json"
or (Windows)
$ go build main.go
$ electionguard-verifier-go.exe -p="data/nov_2023/election_record/" -v=1 -o="output.json"
or (Mac/Linux)
$ go build main.go
$ ./electionguard-verifier-go -p="data/nov_2023/election_record/" -v=1 -o="output.json"
- The verifier is currently verifying specification
1.91.18, a hybrid version that combines specification2.0and1.53. This specification aligns with the outlined criteria detailed in the requirements document by MITRE. - To verify a
1.0or1.1specification election use a previous version of the verifier, which can be found here.