Package: electionguard
🗳 ElectionGuard PythonThis repository is a "reference implementation" of ElectionGuard written in Python 3. This implementation can be used to conduct End-to-End Verifiable Elections as well as privacy-enhanced risk-limiting audits. Components of this library can also be used to construct "Verifiers" to validate the results of an ElectionGuard election.📁 In This RepositoryFile/folderDescriptiondocsDocumentation for using the library.src/electionguardElectionGuard library.src/electionguard_toolsTools for testing and sample data.src/electionguard_verifierVerifier to validate the validity of a ballot.stubsType annotations for external libraries.testsTests to exercise this codebase.CONTRIBUTING.mdGuidelines for contributing.README.mdThis README file.LICENSEThe license for ElectionGuard-Python.dataSample election data.❓ What Is ElectionGuard?ElectionGuard is an open source software development kit (SDK) that makes voting more secure, transparent and accessible. The ElectionGuard SDK leverages homomorphic encryption to ensure that votes recorded by electronic systems of any type remain encrypted, secure, and secret. Meanwhile, ElectionGuard also allows verifiable and accurate tallying of ballots by any 3rd party organization without compromising secrecy or security.Learn More in theElectionGuard Repository🦸 How Can I use ElectionGuard?ElectionGuard supports a variety of use cases. The Primary use case is to generate verifiable end-to-end (E2E) encrypted elections. The ElectionGuard process can also be used for other use cases such as privacy enhanced risk-limiting audits (RLAs).💻 RequirementsPython 3.9+isrequiredto develop this SDK. If developer uses multiple versions of python,pyenvis suggested to assist version management.GNU Makeis used to simplify the commands and GitHub Actions. This approach is recommended to simplify the command line experience. This is built in for MacOS and Linux. For Windows, setup is simpler withChocolateyand installing the providedmake package. The other Windows option ismanually installing make.Gmpy2is used forArbitrary-precision arithmeticwhich
has its owninstallation requirements (native C libraries)on Linux and MacOS.⚠️ Note:This is not required for Windows since the gmpy2 precompiled libraries are provided.poetry 1.1.13is used to configure the python environment. Installation instructions can be foundhere.🚀 Quick StartUsingmake, the entireGitHub Action workflowcan be run with one command:makeThe unit and integration tests can also be run with make:make testA complete end-to-end election example can be run independently by executing:make test-exampleFor more detailed build and run options, see thedocumentation.📄 DocumentationOverviews:GitHub PagesRead the DocsSections:Design and ArchitectureBuild and RunProject WorkflowElection ManifestStep-by-Step Process:Configure ElectionKey CeremonyEncrypt BallotsCast and SpoilDecrypt TallyPublish and VerifyContributingThis project encourages community contributions for development, testing, documentation, code review, and performance analysis, etc. For more information on how to contribute, seethe contribution guidelinesCode of ConductThis project has adopted theMicrosoft Open Source Code of Conduct. For more information see theCode of Conduct FAQor contactopencode@microsoft.comwith any additional questions or comments.Reporting IssuesPlease report any bugs, feature requests, or enhancements using theGitHub Issue Tracker. Please do not report any security vulnerabilities using the Issue Tracker. Instead, please report them to the Microsoft Security Response Center (MSRC) athttps://msrc.microsoft.com/create-report. See theSecurity Documentationfor more information.Have Questions?Electionguard would love for you to ask questions out in the open using GitHub Issues. If you really want to email the ElectionGuard team, reach out atelectionguard@microsoft.com.LicenseThis repository is licensed under theMIT LicenseThanks! 🎉A huge thank you to those who helped to contribute to this project so far, including:Josh Benaloh(Microsoft)Keith Fung(InfernoRed Technology)Matt Wilhelm(InfernoRed Technology)Dan S. Wallach(Rice University)