forked from miracl/MIRACL
-
Notifications
You must be signed in to change notification settings - Fork 1
/
readme.txt
448 lines (418 loc) · 23.5 KB
/
readme.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
IMPORTANT! See UPDATE.TXT for latest changes
Then read FIRST.TXT
The distribution media contains the following files
README.TXT - This file
FIRST.TXT - Read this next
MSVISUAL.TXT - Microsoft Visual C++ V6.0 quick-start instructions
VC2005.TXT - Microsoft Visual C++ V8.0 quick-start instructions
BORLAND.TXT - Borland C quick-start instructions
ARM.TXT - ARM processor advice
SPARC.TXT - SPARC processor advice
ITANIUM.TXT - ITANIUM processor advice
FASTGF2M.TXT - How to speed up methods based on the field GF(2^m)
WIN64.TXT - 64-bit Windows advice
DEVCPP.TXT - DEV-CPP quick-start instructions
TEXASDSP.TXT - Texas C6713 DSP advice
AMD64.TXT - AMD64 processor advice
SSE2.TXT - SSE2 extensions advice
PIC32.TXT - PIC32 processor advice
POWERPC.TXT - POWERPC processor advice
LINUX.TXT - Some advice for Linux users
CYGWIN.TXT - How to install MIRACL using Cygwin
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
FLOAT.TXT - Multiprecision floating-point
DOUBIG.TXT - How to allow "Double Precision" big types
EDWARDS.TXT - How to use Edwards curves for Elliptic curve crypto over Fp
MANAGED.TXT - How to build a "managed code" version of MIRACL for .NET applications
AESGCM.TXT - New support for AES-GCM mode of operation
BLACKFIN.TXT - For information on Analog devices Blackfin processors
CONFIG.C - Program to automatically generate a mirdef.h file
MEX.C - Program to insert fast macros into mrcomba.c/mrkcm.c
FPE.PDF - Paper on Format Preserving Encryption
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.S64 - Version of the above for Linux x86_64 GCC
MRMULDV.W64 - Version of the above for Windows x86-64 Visual Studio
MRMULDV.GCC - GCC version of above - 32-bit
MRMULDV.G64 - GCC version of above - 64-bit
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
MRCOMBA2.TPL - Template file for fast Comba method for GF2 arithmetic
MRKCM.TPL - Template file for fast KCM method
C.MCS - C macros for use with above
C1.MCS - Alternate C macros
C2.MCS - Alternate C macros
CS.MCS - Alternate C macros
CLMUL.MCS - MSC Intrinsic macros to use PCLMULQDQ instruction
GCCLMUL.MCS - GCC assembly language to support PCLMULQDQ instruction
SMARTMIP.MCS - Macros for Smartmips smart-card processor
MIPS.MCS - Macros for 32-bit Mips processor
MS86.MCS - Microsoft/Borland 80*86/Pentium macros for use with above
GCC386.MCS - GCC compiler compatible Pentium macros
ARM.MCS - ARM processor macros
GCCARM.MCS - GCC compatable version of the above
AVR.MCS - Atmel Atmega128 processor macros
MSP430.MCS - TI msp430 support (uses hardware multiplier)
BLACKFIN.MCS - Analog Devices Blackfin processor support
GCCMSP430.MCS - GCC compatable version of the above
SPARC32.MCS - 32-bit Sparc processor macros
SPARC64.MCS - 64-bit Sparc processor macros
ITANIUM.MCS - 64-bit Itanium processor macros
WIN64.MCS - 64-bit x86-64 Windows macros
AMD64.MCS - 64-bit AMD64 procesor macros
SSE2.MCS - Pentium 4 SSE2 instructions for Microsoft compiler
GCCPPC.MCS - PowerPC processor macros
GCCSSE2.MCS - Pentium 4 SSE2 instructions for GCC compiler
BMARK.C - Benchmark program for Public Key methods
IMRATIO.C - Benchmark program. Calculates S/M, I/M and J/M ratios over GF(p)
IMRATIO2.C - Benchmark program. Calculates S/M and I/M ratios over GF(2^m)
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
ECDH2M.C - Example EC Diffie-Hellman program for 32-bit constrained environments (static stack-only)
ECDH2M16.C - 16-bit version of the above
ECDH2M8.c - 8-bit version of the above
ROMAKER2.C - Program to automatically generate ROMS for above programs
ECDHP.C - ditto, over GF(p) - 32-bit
ECDHP32.C - ditto, over GF(p) - Nice ARM example (32-bits)
ECDHP8.C - ditto, over GF(p), 8-bit version
ECDHP16.C - ditto, over GF(p), 16-bit version
ROMAKER.C - Program to automatically generate ROMS for above programs
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
ECSGEN_S.C - DSS (Elliptic Curve GF(p) variation) key generator program (static stack-only version)
ECSIGN_S.C - DSS (Elliptic Curve GF(p) variation) signature program (static stack-only version)
ECSVER_S.C - DSS (Elliptic Curve GF(p) variation) verification program (static stack-only version)
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
ECSGEN2S.C - DSS (Elliptic Curve GF(2^m) variation) key generator program (static stack-only version)
ECSIGN2S.C - DSS (Elliptic Curve GF(2^m) variation) signature program (static stack-only version)
ECSVER2S.C - DSS (Elliptic Curve GF(2^m) variation) verification program (static stack-only version)
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
ZZN.CPP - ZZn function implementations
ECN.CPP - ECn function implementations
ECNZZN.CPP - ECn <-> ZZn functions
EC2.CPP - EC2 function implementations
GF2M.CPP - GF(2^m) function implementations
CRT.CPP - Crt function implementations
FLASH.CPP - Flash function implementations
FLOATING.CPP - Float 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
THREADMP.CPP - Example of openMP Multi-Threading
FINDBASE.CPP - Find irreducible polynomial for GF(2^m) programs
IRP.CPP - Generates code to implement irreducible polynomial
NEWBASIS.CPP - Converts from one irreducible polynomial representation to another
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 ECN.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 ZZN.H)
WILLIAMS.CPP - " "
LENSTRA.CPP - " "
BRENT.CPP - " "
SAMPLE.CPP - Example C++ source (uses FLASH.H)
ROOTS.CPP - " "
HILBERT.CPP - " "
FSAMPLE.CPP - Example C++ source (uses FLOATING.H)
CARDANO.CPP - Example C++ source (uses ZZn2.H)
BP160.ECS - Brainpool 160-bit GF(p) curve
BPT160.ECS - Brainpool 160-bit GF(p) twisted curve
SECP160/192/224/256/521.ecs - Parameter files for some standard GF(p) elliptic curves
NIST163/233/283/571.ecs - Parameter files for standard GF(2^m) elliptic curves
KOB163/233/283/571.ecs - Parameter files for GF(2^m) Koblitz curves
EDWARDS.ECS - Parameter file for an Edwards GF(p) elliptic curve
Note how readable the C++ versions of the example programs look.
In the subdirectory SOURCE\CURVE
CM.CPP - Complex Multiplication - creates elliptic curves
VARIABLE.H - Dummy Variable class
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
FLPOLY.H - Polynomial Class definition, float elements
FLPOLY.CPP - Polynomial arithmetic with float coefficients
COMPLEX.H - Complex Float class definition
COMPLEX.CPP - Complex Float class 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
PS_ZZN.H - Power series with ZZN coefficients - Class Definition
PS_ZZN.CPP - Power Series Arithmetic
POLYXY.H - Bivariate Polynomials - Class Definition
POLYXY.CPP - Bivariate Polynomilas - Implementation
POLY2XY.H - Bivariate Polynomials - Class Definition
POLY2XY.CPP - Bivariate Polynomilas - Implementation
MUELLER.CPP - Program to generate Modular Polynomials
PROCESS.CPP - Program to process Modular Polynomials wrt a prime modulus
SEA.CPP - Schoof-Elkies-Atkin-Mueller algorithm
SEA.TXT - How to build the MUELLER/PROCESS/SEA applications
WEIL.CPP - Calculates number of points on curve over extension field
GLV.CPP - Calculates a GLV decomposition
In the subdirectory SOURCE\P1363
P1363.H - P1363 Header File
P1363.C - P1363 implementation file
TEST1363.c - test driver for P1363 implementation
RSA.C - quick start RSA application
OCTET.C - OCTET string handler
OCTET.H - OCTET header
ECDH.C - Elliptic Curve Code
ECDH.H - Elliptic Curve Header
TESTECC.C - Typical MIRACL Elliptic Curve API Implementation - thread-safe - no heap
In the subdirectory SOURCE\CURVE\PAIRING
BLS_SIGN.CPP - Boneh-Lynn-Shacham signature
BLS_VER.CPP - Boneh-Lynn-Shacham signature verification
GF2M4X.H - GF(2^4m) arithmetic - Header file
GF2M4X.CPP - GF(2^4m) arithmetic - Implementation file
GF2M6X.H - GF(2^6m) arithmetic - Header file
GF2M6X.CPP - GF(2^6m) arithmetic - Implementation file
GF2M12X.H - GF(2^12m) arithmetic - Header file
GF2M12X.CPP - GF(2^12m) arithmetic - Implementation file
SF2M12X.H - GF(2^12m) special extension arithmetic - Header file
SF2M12X.CPP - GF(2^12m) special extension arithmetic - Implementation file
ECN2.H - Elliptic curves over Fp2 - Header file
ECN2.CPP - Elliptic curves over Fp2 - Implementation file
ECN4.H - Elliptic curves over Fp4 - Header file
ECN4.CPP - Elliptic curves over Fp4 - Implementation file
ECN6.H - Elliptic curves over Fp6 - Header file
ECN6.CPP - Elliptic curves over Fp6 - Implementation file
ECN8.H - Elliptic curves over Fp8 - Header file
ECN8.CPP - Elliptic curves over Fp8 - Implementation file
ZZN2.H - Fp2 arithmetic - Header file
ZZN2.CPP - Fp2 arithmetic - Implementation file
ZZN3.H - Fp3 arithmetic - Header file
ZZN3.CPP - Fp3 arithmetic - Implementation file
ZZN4.H - Fp4 arithmetic - Header file
ZZN4.CPP - Fp4 arithmetic - Implementation file
ZZN8.H - Fp8 arithmetic - Header file
ZZN8.CPP - Fp8 arithmetic - Implementation file
ECN3.H/.CPP - Elliptic curves over Fp3
ZZN6.H/.CPP - Fp6 arithmetic - 2 over 3
ZZN6a.H/.CPP - Fp6 arithmetic - 3 over 2
ZZN12.H/.CPP - Fp12 arithmetic - 2 over 3 over 2
ZZN12a.H/.CPP- Fp12 arithmetic - 3 over 2 over 2
ZZN12b.H/.CPP- Fp12 arithmetic - 2 over 2 over 3
ZZN18.H/.CPP - Fp18 arithmetic - 3 over 2 over 3
ZZN24.H/.CPP - Fp24 arithmetic - 3 over 2 over 2 over 2
ZZN36.H/.CPP - Fp36 arithmetic - 3 over 2 over 2 over 3
MNT.CPP - Program to generate MNT elliptic curves
MNT.ECS - Non-supersingular curve, k=6, created by CM from MNT output
FREEMAN.CPP - Program to generate k=10 Freeman curves
FOLKLORE.CPP - program to create pairing-friendly non-SS curves
IRRED.CPP - Finds irreducible polynomial - Experimental!
AKE.TXT - Some explanation for these programs.
AKE6MNTT.CPP - Authenticated Key Exchange, MNT k=6 curve - Experimental! 1-3-6 tower
AKE6MNTX.CPP - Authenticated Key Exchange, MNT k=6 curve - Experimental! Uses "compositum" tower.
AKE6MNTA.CPP - Authenticated Key Exchange, MNT k=6 curve - Experimental! Uses "compositum" tower.
AKE6MNTT.C - Partial C version of the above
AKE4MNTT.CPP - Authenticated Key Exchange, k=4 - Experimental!
AKE4MNTT.C - Partial C version of the above
AKE4MNTA.CPP - Authenticated Key Exchange, k=4 - Experimental! - Ate pairing
AKE4MNTT.C - Partial C version of the above
AKE6FSTA.CPP - Authenticated Key Exchange, k=6, Ate pairing, sextic twist!
BN.CPP - Program to generate BN k=12 curves
KSS8.CPP - Program to generate KSS k=8 curves
KSS18.CPP - Program to generate KSS k=18 curves
BLS12.CPP - Program to generate BLS k=12 curves
BLS24.CPP - Program to generate BLS k=24 curves
BESTPAIR.CPP - Program to generate nice pairing-friendly curves
AKE12BNE.CPP - Authenticated Key Exchange, k=12, BN curve - Experimental!
AKE12BNA.CPP - Authenticated Key Exchange, k=12, BN curve, Ate pairing, sextic twist!
AKE12BNR.CPP - Authenticated Key Exchange, k=12, BN curve, R-ate pairing, sextic twist! 1-2-6-12 tower
AKE12BNX.CPP - Authenticated Key Exchange, k=12, BN curve, R-ate pairing, sextic twist! 1-2-4-12 tower
AKE12BLSA.CPP - Authenticated Key Exchange, k=12, BLS curve, ate pairing, sextic twist!
AKE18KSSX.CPP - Authenticated Key Exchange, k=18, KSS curve, R-ate pairing, sextic twist!
AKE24BLSA.CPP - Authenticated Key Exchange, k=18, BLS curve, ate pairing, sextic twist!
AKE2CPT.CPP - Same as above, but k=2 Cocks-Pinch curve
AKE2SST.CPP - Same as above, but uses a supersingular curve
AKE4CPT.CPP - Same as above, but k=4
AKEW4.CPP - Variation on the above
AKE8CPT.CPP - Same as above, but k=8 based
AKE8BWT.CPP - Variation on the above - uses Brezing-Weng curve
K2.ECS - Non-supersingular curve, k=2
K2SS.ECS - Supersingular curve, k=2
K4.ECS - Non-supersingular curve, k=4
K4MNT.ECS - MNT k=4 curve
K8.ECS - Non-supersingular curve, k=8
WENG.ECS - Non-supersingular curve, k=8
DL.CPP - Duursma-Lee Char 2 pairings
DL2.CPP - Truncnated-loop eta_T char 2 pairings
ETAT271.c - C version of eta_T pairing
BANDW.CPP - Brezing & Weng curves
AKE2NSST.CPP - Faster k=2 key exchange program - Not Superingular Curves
AKE2CPW.CPP - Uses New Weil pairing, k=2
AKE1KMT.CPP - Key Exchange program, for k=1 Koblitz-Menezes curve
MAKE_K1.CPP - Creates curves for the above
XK1.ECS - k=1 curve details
PAIRINGS.TXT - Details of pairing-based resources
PAIRING_1.H - High level type 1 pairings interface header
PAIRING_3.H - High level type 3 pairings interface header
AKE.CPP - Pairing-based Authentiated Key Exchange
BLS.CPP - Pairing-based Short Signature Scheme
DAA.CPP - Pairing-based Direct Anonymous Attestation
BMC.CPP - Pairing-based Signcryption scheme
BLMQ.CPP - Another pairing-based signcryption scheme
BB1.CPP - Boneh & Boyen BB1 IBE
FUZZY.CPP - Sahai & Waters Fuzzy IBE
PEKS.CPP - PKE with keyword search
HIBE.CPP - Hierarchical IBE (Lewko & Waters)
SK_1.CPP - Sakai-Kasahara IBE - type 1 pairing
SK_3.CPP - Sakai-Kasahara IBE - type 3 pairing
CPABE.CPP - Waters Attribute Based Cryptography
SOK.CPP - Sakai-Ohgishi-Kasahara key exchange (Type 1 pairing)
BGW.CPP - Boneh-Gentry-Waters Broadcast encryption
IPE.CPP - Inner Product Predicate Encryption
WANG.CPP - Key Exchange Protocol
CP_PAIR - AES-80 security from a Cocks-Pinch k=2 curve
MNT_PAIR.CPP - AES-80 security from an MNT k=6 curve
BN_PAIR.CPP - AES-128 security from a BN k=12 curve
KSS_PAIR.CPP - AES-192 security from a KSS k=18 curve
BLS_PAIR.CPP - AES-256 security from a BLS k=24 curve
SS2_PAIR.CPP - AES-80/128 security from a Supersingular k=4 curve over GF(2^m)
SSP_PAIR.CPP - AES-80/128 security from a Supersingular k=2 curve over GF(p)
In the subdirectory INCLUDE
MIRDEF.H16 - Standard hardware specific header file for 16-bit computer
MIRDEF.H32 - Header file for full 32-bit Computer
MIRDEF.H - Same as above
MIRDEF.H64 - Header file for full 64-bit Computer
MIRDEF.W64 - Header file for Microsoft 64-bit compiler
MIRDEF.HPC - Header file for pseudo-32 bit computer
MIRDEF.HAF - Header file for 16 bit use of 32 bit computer
MIRDEF.HIO - Integer-Only 32-bit header file
MIRDEF.HPP - Header file for full 64-bit Computer - C++ Library Build - see linux64_cpp
MIRDEF.MGW - Header file for 64-bit mingw build
MIRACL.H - Main MIRACL header
BIG.H - C++ header for 'big' numbers
FLASH.H - C++ header for 'flash' numbers
FLOATING.H - C++ header for 'float' numbers
ZZN.H - C++ header for 'big' numbers mod n
CRT.H - C++ header for chinese remainder thereom
ECN.H - C++ header for GF(p) Elliptic Curves
ECNZZN.H - ECn <-> ZZn functions
EC2.H - C++ header for GF(2^m) Elliptic Curves
GF2M.H - C++ header for GF(2^m)
BRICK.H - C++ header for Brickell's method
EBRICK.H - C++ header for Brickell's method (Elliptic Curve GF(p) version)
EBRICK2.H - C++ header for Brickell's method (Elliptic Curve GF(2^m) version)
In the subdirectory LIB
*DOIT.BAT - Batch files for constructing libraries and sample progs.
MINGW.BAT - Batch file to build library for 64-bit MINGW
MIRACL.MAK - John Kennedy's UNIX make file
LINUX - Linux bash script to build library - 32-bit
LINUX64 - Linux bash script to build library - 64-bit - C Library Build
LINUX64_CPP - Linux bash script to build library - 64-bit - C++ Library Build
To build the standard library on a standard OS, dump all of the MIRACL files
into a single directory, and move to that directory
(1) If using Windows and the Microsoft compiler, open a command window,
ensure paths are set correctly by executing the microsoft-supplied
vcvars32.bat or vcvars64.bat, and then execute either ms32doit.bat
or ms64doit.bat, depending on your system being 32-bits or 64-bits
(2) If using Linux, open a terminal window and simply execute either
"bash linux", or "bash linux64" for 64-bit systems
Otherwise
(1) Determine which of
mirdef.h64/mirdef.w64/mirdef.h32/mirdef.h16/mirdef.haf/mirdef.hpc etc
is suitable for you, and/or compile and run config.c to automatically
generate a suitable mirdef.h.
(2) If for performance reasons a non-portable version is to be built,
select suitable assembly language routines from mrmuldv.any, or
write them yourself (send us a copy!). Even better - produce a
.mcs file for the processor and use either the KCM or Comba method.
(3) Compile and link together the mr*.c components into an object library.
Also assemble and link in the assemble language component from
mrmuldv.any (if needed).
In the subdirectory EXE some precompiled example programs
FACT.EXE - Factorial program
ENCIPH.EXE - Enciphering program
DECIPH.EXE - Deciphering program
PUBLIC.KEY - Public key for use by enciphering program
PRIVATE.KEY - Private key for use by deciphering program
In the sub-directory FREE some FREEWARE 32-bit IBM PC Command prompt
specific applications. CM.EXE is free as well, but omitted here for space
reasons.
READ.TXT - Read this first
RATCALC.EXE - Rational Calculator
FACTOR.EXE - General purpose Factoring Program (80386+ only)
For maximum speed this is compiled as a true 32-bit
and runs in a 32-bit DOS Window
These files (ONLY!!) are FREEWARE, and may be freely copied
and distributed, unmodified. Copyright remains with CertiVox.