Paillier/ZKP is an Ada implementation of parts of the Paillier cryptosystem: http://en.wikipedia.org/wiki/Paillier.
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.
Licence
Copyright (C) 2012 Reto Buerki <reet@codelabs.ch> Copyright (C) 2012 Adrian-Ken Rueegsegger <ken@codelabs.ch> 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 version.
Download
Development version
The current development version of Paillier/ZKP is available through its git repository:
$ git clone http://git.codelabs.ch/git/paillier-zkp.git
A browsable version of the repository is also available here: http://git.codelabs.ch/?p=paillier-zkp.git.
Build
To compile Paillier/ZKP on your system, you need to have the following software installed:
-
GNAT compiler: http://www.gnu.org/software/gnat/gnat.html
-
Ahven (Test-Framework): http://ahven.stronglytyped.org/
-
GNATcoll - GNAT Component Collection: http://libre.adacore.com/tools/gnat-component-collection/
-
GMPAda (Ada GMP binding): http://mtn-host.prjek.net/projects/libgmpada/
Testing
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.
Documentation
Additional information about the Paillier cryptosystem and e-voting in general can be found here: http://security.hsr.ch/msevote/.
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: http://security.hsr.ch/msevote/fs12/Kickoff.pdf.
Slides
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.