sigs software provides secure digital signatures with verification at
secret-key speeds. See BLURB for a more detailed advertisement.
It runs only on i386-based UNIX machines with GMP 2. It is optimized for the Pentium.
The rest of this file is a list of systypes where various versions of
sigs have been reported to work.
How to install:
1. Compile the programs:
You will need GMP 2 installed as -lgmp.
2. Create the formatted man pages, *.0:
% make man
3. Install the programs and man pages:
# make setup
How to test:
4. Create a predictable 2048-bit ``secret'' key, and check that it
matches my prediction:
% ./predictable | ./secretkey 2048 > KEY
% cmp KEY TESTKEY
5. Create the corresponding public key, and check that it matches my
% ./publickey < KEY > PUBLIC
% cmp PUBLIC TESTPUBLIC
6. Generate a signature for snefrusboxes.c, and check that it matches
% ./sign KEY < snefrusr.c > SIG
% cmp SIG TESTSIG
7. Create a predictable ``secret'' judge, and check that it matches my
% ./predictable | ./secretjudge > JUDGE
% cmp JUDGE TESTJUDGE
8. Check that the signature refers to snefrusboxes.c:
% ./match SIG < snefrusr.c
9. Check that the signature is under this public key:
% ./prove PUBLIC SIG
10. Use the judge for an even faster verification:
% ./verify JUDGE PUBLIC SIG
11. Make your own secret key and secret judge, using a secret stream of
cryptographically random bits:
% mkdir ~/Keys
% ./secretkey 2048 < /dev/random > ~/Keys/sigs
% ./publickey < ~/Keys/sigs > ~/Keys/sigs.public
% ./secretjudge < /dev/random > ~/Keys/judge
Note that /dev/random will pause if your system is completely idle.
If your system does not support a cryptographically secure
/dev/random, find another cryptographic generator and use that.
12. Try signing and verifying an empty document with your key:
% ./sign ~/Keys/sigs < /dev/null > SIG
% ./match SIG < /dev/null
% ./verify ~/Keys/judge ~/Keys/sigs.public SIG
% ./prove ~/Keys/sigs.public SIG
% rm SIG
Now publish sigs.public. Anyone can use sigs.public to verify your
That's it! To report success:
% ( echo 'First M. Last'; cat `cat SYSDEPS` )
| mail email@example.com
Replace First M. Last with your name.