A python implementation of the Schnorr Zero-Knowledge Protocol over Elliptic Curves.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
README.md Update README.md Jan 13, 2017
ecc.py Change comments to english. Dec 4, 2016
schnorr.py

README.md

EC-Schnorr

This project is a python implementation of the Schnorr Zero-Knowledge Protocol over Elliptic Curves.

  • ecc.py is a Python class that implements the Elliptic Curve operations needed;
  • schnorr.py implements the Schnorr Zero-Knowledge Protocol over.

This project uses the following modules: sys, getopt, sys, PyCrypto, and socket.

Usage: ./schnorr.py [OPTION]... [ARGS]...

Authenticates someone using Schnorr Protocol over Elliptic Curves.
Shows this message if none of options is used.

Options:

-gk, --generate-keys Generates a Key Pair.
-a, --authenticator Uses a Public Key to authenticate a client.
-s, --supplicant Uses the Private Key to authenticate itself to a server.

Usage example:

Keypair Generation:

mmeruje@mycomputer:~/$ ./schnorr.py -gk
*  Key Generation Mode Activated
*  Generating an a random number. (Private Key)
*  Generating an elliptic curve point. (Public Key)
--- BEGIN PRIVATE KEY ---
1742413906660797398263574261320583321084828220183690165741
--- BEGIN PUBLIC KEY ---
v(x,-) = 241010344193812168014432711399629693373018093471884903517
v(-,y) = 2306444403712286640989713776754269629962048798612334189144

Run Authenticator (Server):

mmeruje@server:~/$ ./schnorr.py -a 241010344193812168014432711399629693373018093471884903517 2306444403712286640989713776754269629962048798612334189144

Run Supplicant (Client)

mmeruje@client:~/$ ./schnorr.py -s 1742413906660797398263574261320583321084828220183690165741