• Stars
    star
    743
  • Rank 61,046 (Top 2 %)
  • Language
    Java
  • License
    GNU Affero Genera...
  • Created almost 8 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The Geneva electronic vote system, version 1.

CHVote Build Status

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.

Table of contents

Released components

The following components are released as opensource software:

  • The offline administration application
  • Various utility libraries needed by this application

The goals of the offline administration application are to:

  • generate the keys responsible for encrypting and decrypting the stored ballots, using passphrases from the electoral board;
  • test the generated keys and the passphrases;
  • decrypt the ballots.

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.

System overview

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 election process;
  • the system architecture including focuses on the ballot box cryptography and the use of the offline administration application;
  • the security concept.

Compiling and running

Preconditions

The following software must be installed to compile and run the application:

We do not provide support for the use of OpenJDK/OpenJFX.

Compiling

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

Running

Run the application with maven:

cd $PROJECT_ROOT/admin-offline
mvn exec:java -Dexec.mainClass="ch.ge.ve.offlineadmin.OfflineAdminApp"

Contributing

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.

Pull request policies

The master branch is dedicated to mirror the state of the production code.

  • Please use the development branch for pull requests modifying the source code.
  • You can however use the master branch for pull requests concerning the documentation only.

Security

In case of vulnerability discovery, please use the following email address for coordinated disclosure: [email protected].

Licence

CHVote components are released under AGPL 3.0.

Future

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.

More Repositories

1

chvote-protocol-poc

The Geneva electronic vote system, version 2 (prototype).
Java
29
star
2

git-sync

An application to map roles and users from an LDAP server to a GitLab server.
Java
5
star
3

noms-geographiques

Un répertoire collaboratif des noms de rues du canton de Genève.
Twig
4
star
4

blockchain-document-validateur

Application d'authentification de document PDF, utilisant la chaîne de blocs Ethereum.
CSS
4
star
5

republique-et-canton-de-geneve.github.io

Les sources de la page GitHub https://republique-et-canton-de-geneve.github.io
HTML
3
star
6

blockchain-document-horodateur

Une application d'horodatage de documents PDF, utilisant la chaîne de blocs Ethereum.
CSS
3
star
7

strategie-open-source

La stratégie open source de l'Office cantonal des systèmes informatiques et du numérique.
3
star
8

edg_sitg_map

The Drupal7 SITG map module.
JavaScript
2
star
9

follow-me

A mobile real-time GPS geolocating application for iOS and Android smartphones.
TypeScript
2
star
10

qeli-frontoffice

Une application Web de questionnaire d'éligibilité aux prestations sociales.
CSS
1
star
11

log-chainer

Application to chain up log files.
Java
1
star
12

object-detector

Python scripts to detect objects in georeferenced images using the Detectron2 deep learning platform.
1
star
13

jours-feries

Une bibliothèque et un service Web Java fournissant les jours fériés à l'État de Genève.
Java
1
star
14

.github

Le dossier descriptif de la page GitHub de l'OCSIN.
1
star
15

referentiels-ofs

Des services Web exposant les référentiels de l'Office fédéral de la statistique.
Java
1
star
16

sedex-Message-Handler

A simple message handling for the Sedex network.
Java
1
star
17

nexus-rm-management

Additional management functionalities for Nexus RM
Java
1
star