CHVote aims to be an opensource, publicly owned evoting system. It is the result of the collaboration between the Geneva State Chancellery and the Geneva IT Department.
CHVote is currently used by 4 cantons in Switzerland: Basel-City, Bern, Geneva and Luzern, either for votations or elections.
The following components are released as opensource software:
The goals of the offline administration application are to:
The security objective of having an offline application is to ensure that the private key able to decrypt the ballots is never known to any system other than the offline application and its offline laptop.
The offline administration application is a key component of the evoting system in that it is the only one responsible for creating and using the private decryption key.
Please read the system overview documentation to learn how the published components contribute to the evoting system. You'll get an overview on the following themes:
The following software must be installed to compile and run the application:
UnlimitedJCEPolicyJDK8/README.txt
file in the downloaded ZIP archive for installation instructions into your JDK instance).We do not provide support for the use of OpenJDK/OpenJFX.
Compile and install the 3 modules in this sequence:
cd $PROJECT_ROOT/base-pom
mvn clean install
cd $PROJECT_ROOT/commons-base
mvn clean install
cd $PROJECT_ROOT/admin-offline
mvn clean install
Some JDK distributions do not come with the Monocle classes used by the headless GUI tests. If you're running into those cases
(java.lang.AbstractMethodError: com.sun.glass.ui.monocle.NativePlatform.createInputDeviceRegistry
appearing in the test logs),
use the following command to skip the GUI tests:
cd $PROJECT_ROOT/admin-offline
mvn -P skipJavaFXTests clean install
Run the application with maven:
cd $PROJECT_ROOT/admin-offline
mvn exec:java -Dexec.mainClass="ch.ge.ve.offlineadmin.OfflineAdminApp"
CHVote is opensourced with the main purpose of transparency to build confidence in the system.
Contributions are also welcomed, either using pull requests or by submitting issues in github. The CHVote community manager will take care of those inputs, lead exchanges around them, and actions could take place according to their relevance, their criticality, and the CHVote development roadmap.
The master branch is dedicated to mirror the state of the production code.
In case of vulnerability discovery, please use the following email address for coordinated disclosure: security-chvote@etat.ge.ch.
CHVote components are released under AGPL 3.0.
The second generation of CHVote has been under active development in 2017 and 2018. The project has since been discontinued and will not be put into production. It aimed to provide end-to-end encryption with individual and universal verifiabilities. Its source code is published here: https://chvote2.gitlab.io.