Paillier/ZKP is an Ada implementation of parts of the Paillier cryptosystem:

The project provides the following functionality:

  • Encryption of a vote and generation of the associated Zero-knowledge proof

  • Zero-knowledge proof verification of a cast vote

  • Weighted tallying of encrypted votes

This project was developed during the course of the master seminar "E-Voting" at the University of Applied Sciences Rapperswil.


Copyright (C) 2012 Reto Buerki <>
Copyright (C) 2012 Adrian-Ken Rueegsegger <>
University of Applied Sciences Rapperswil

This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later


Development version

The current development version of Paillier/ZKP is available through its git repository:

$ git clone

A browsable version of the repository is also available here:


To compile Paillier/ZKP on your system, you need to have the following software installed:


Paillier/ZKP contains an unit test suite which can be run by entering the following command:

$ make tests

You should then see PASS behind each of the tests.


Additional information about the Paillier cryptosystem and e-voting in general can be found here:

This project is part of a complete Paillier e-voting system implementation and realizes the modules 2 and 3 as described by the presentation found here:


The slides of the presentation about Paillier/ZKP held on June 11, 2012 as part of the master seminar at the University of Applied Sciences Rapperswil can be downloaded here.