IMPORTANT! See UPDATE.DOC for latest changes
The distribution media contains the following files
README.TXT - This file
FIRST.TXT - Read this next
MSVISUAL.TXT - Microsoft Visual C++ quick-start instructions
BORLAND.TXT - Borland C quick-start instructions
ARM.TXT - ARM processor advice
SPARC.TXT - SPARC processor advise
LINUX.TXT - Some advice for Linux users
MANUAL.DOC - The Manual - read it!
PROBLEMS.TXT - Known problems with MIRACL
UPDATE.TXT - MIRACL Update History
KCMCOMBA.TXT - Using super-fast techniques
MAKEMCS.TXT - How to create your own .mcs file
DOUBLE.TXT - Using a double underlying type
CONFIG.C - Program to automatically generate a mirdef.h file
MEX.C - Program to insert fast macros into mrcomba.c/mrkcm.c
In the subdirectory SOURCE
MRMULDV.ANY - Contains assembly language versions of muldiv,muldvm,
muldvd and muldvd2
MRMULDV.S - Version of the above for Linux i386 GCC
MRMULDV.C - Version of the above for Win32
MRMULDV.CCC - Standard C version
MRMULDV.GPP - Version of the above for DJGPP GCC
MR*.C - MIRACL library source files
MRCOMBA.TPL - Template file for fast Comba method
MRKCM.TPL - Template file for fast KCM method
C.MCS - C macros for use with above
C1.MCS - Alternate C macros
MS86.MCS - Microsoft/Borland 80*86/Pentium macros for use with above
GCC386.MCS - GCC compiler compatible Pentium macros
ARM.MCS - ARM processor macros
SPARC32.MCS - 32-bit Sparc processor macros
SPARC64.MCS - 64-bit Sparc processor macros
BMARK.C - Benchmark program for Public Key methods
IMRATIO.C - Benchmark program. Calculates S/M, I/M and J/M ratios
MERSENNE.C - Mersenne primes
FACT.C - Factorials
BRUTE.C - Brute-force factorisation
BRENT.C - Brent-pollard factoring
BRENT_MT.C - Example of generic Multi-Threading
HAIL.C - Hailstone numbers
PALIN.C - Palindromic numbers
GENKEY.C - Generate Public and Private keys
ENCODE.C - Encode using RSA method
DECODE.C - Decode using RSA method
ENCIPH.C - Encipher using Probabalistic method
DECIPH.C - Decipher using Probabalistic method
PK-DEMO.C - Demo of RSA/El Gamal/Diffie-Hellman/Elliptic Curve...
IDENTITY.C - ID based key exchange program
HILBERT.C - Solve special system of equations
SAMPLE.C - Example of Flash arithmetic
ROOTS.C - Square roots
POLLARD.C - Pollard's factoring method
WILLIAMS.C - William's factoring method
LENSTRA.C - Lenstra's factoring method
QSIEVE.C - The Quadratic Sieve
RATCALC.C - Rational Scientific Calculator
FACTOR.C - Factoring Program source
KANGAROO.C - Pollards Lambda method for discrete logs
INDEX.C - Pollards rho method for discrete logs
GENPRIME.C - Generates prime for above
LIMLEE.C - Lim-Lee prime generation
DSSETUP.C - Digital Signature Standard setup program
DSSGEN.C - Digital Signature Standard key generator program
DSSIGN.C - Digital Signature Standard signature program
DSSVER.C - Digital Signature Standard verification program
ECSGEN.C - DSS (Elliptic Curve GF(p) variation) key generator program
ECSIGN.C - DSS (Elliptic Curve GF(p) variation) signature program
ECSVER.C - DSS (Elliptic Curve GF(p) variation) verification program
ECSGEN2.C - DSS (Elliptic Curve GF(2^m) variation) key generator program
ECSIGN2.C - DSS (Elliptic Curve GF(2^m) variation) signature program
ECSVER2.C - DSS (Elliptic Curve GF(2^m) variation) verification program
BRICK.C - Brickell's method for fast exponentiation
EBRICK.C - Same for GF(p) Elliptic Curves
EBRICK2.C - Same for GF(2^m) Elliptic Curves
BIG.CPP - Big function implementations
MONTY.CPP - ZZn function implementations
ELLIPTIC.CPP - ECn function implementations
EC2.CPP - EC2 function implementations
GF2M.CPP - GF(2^m) function implementations
CRT.CPP - Crt function implementations
FLASH.CPP - Flash function implementations
PAL_ENC.CPP - Paillier Homomorphic Encryption Program
PAL_DEC.CPP - Paillier Homomorphic Decryption Program
THREADWN.CPP - Example of Windows Multi-threading
THREADUX.CPP - Example of Unix Multi-Threading
FACT.CPP - Example C++ source (uses BIG.H)
HAIL.CPP - " "
PALIN.CPP - " "
BRUTE.CPP - " "
MERSENNE.CPP - " "
QSIEVE.CPP - " "
GENKEY.CPP - " "
ENCODE.CPP - " "
DECODE.CPP - " "
ENCIPH.CPP - " "
DECIPH.CPP - " "
PK-DEMO.CPP - " "
LIMLEE.CPP - " "
DSSETUP.CPP - " "
DSSGEN.CPP - " "
DSSIGN.CPP - " "
DSSVER.CPP - " "
KANGAROO.CPP - " "
INDEX.CPP - " "
GENPRIME.CPP - " "
BRICK.CPP - " "
EBRICK.CPP - Example C++ source (uses ELLIPTIC.H)
ECSGEN.CPP - " "
ECSIGN.CPP - " "
ECSVER.CPP - " "
EBRICK2.CPP - Example C++ source (uses EC2.H)
ECSGEN2.CPP - " "
ECSIGN2.CPP - " "
ECSVER2.CPP - " "
POLLARD.CPP - Example C++ source (uses MONTY.H)
WILLIAMS.CPP - " "
LENSTRA.CPP - " "
BRENT.CPP - " "
SAMPLE.CPP - Example C++ source (uses FLASH.H)
ROOTS.CPP - " "
HILBERT.CPP - " "
Note how readable the C++ versions of the example programs look.
In the subdirectory SOURCE/CURVE
CM.CPP - Complex Multiplication - creates elliptic curves
POLY.H - Polynomial Class definition, elements from ZZn
POLY.CPP - Polynomial Arithmetic with ZZn coefficients
POLY2.H - Polynomial Class definition, elements from GF(2^m)
POLY2.CPP - Polynomial Arithmetic with GF(2^m) coefficients
FPOLY.H - Polynomial Class definition, flash elements
POLY.CPP - Polynomila arithmetic with flash coefficients
COMFLASH.H - Complex Flash class definition
COMFLASH.CPP - Complex Flash number arithmetic
CM.TXT - How to build the CM application
POLYMOD.H - Polynomials mod a Polynomial - Class Definition
POLYMOD.CPP - ZZn Polynomial arithmetic wrt a Polynomial Modulus
POLY2MOD.H - Polynomials mod a Polynomial - Class Definition
POLY2MOD.CPP - GF(2^m) Polynomial arithmetic wrt a Polynomial Modulus
TRANS.CPP - A simple utility to convert elliptic curve to Weierstrass
SCHOOF.CPP - Schoof's method for counting points on a GF(p) elliptic curve
SCHOOF2.CPP - Schoof's method for counting points on a GF(2^m) elliptic curve
SCHOOF.TXT - How to build the schoof Application
SCHOOF2.TXT - How to build the schoof2 Application
PS_BIG.H - Power series with Big coefficients - Class Definition
PS_BIG.CPP - Power Series Arithmetic