Handle special cases correctly in exponentation functions.
[openssl.git] / crypto / rijndael / README
1 Rijndael
2 Joan Daemen
3
4 Optimised ANSI C  v2.4
5 -----------------------------------------------------------
6
7 This archive contains the following files:
8
9 Makefile:       A file that allows for easy compiling of the code with
10                 Unix `make' (tested with GNU make).
11 README:         This file.
12 boxes-fst.dat:  Tables that are needed by the reference implementation.
13                 The tables implement the S-box and its inverse, and also
14                 some temporary tables needed for multiplying in the finite
15                 field GF(2^8).
16 rijndael-alg-fst.c:
17 rijndael-alg-fst.h:
18                 Algorithm implementation.
19 rijndael-api-fst.c:
20 rijndael-api-fst.h:
21                 Interface to the C API.
22 rijndaeltest-fst.c:
23                 Implementation of the KAT and MCT.
24 table.128:
25 table.192:
26 table.256:
27                 Files needed for the KAT (for the Table Known Answer Test).
28
29
30
31 Instructions for the KAT and MCT software:
32
33 1) Compile the C code and put the executable in the same directory as the
34    table.??? files.
35 2) Run the executable. It generates all the tables in the NIST format.
36 3) Compare the generated tables with the original provided tables, e.g.
37    in Unix, with `diff'. 
38 4) The code is independent of the ENDIANness of the machine.
39    However, the code casts char pointers to int pointers.
40    On some platforms, this casting can cause problems. 
41    This will cause malfunctioning of the CBC Monte Carlo tests.
42    In this case, the compile parameter STRICT_ALIGN should be set to 1. 
43    (Of course this results in slower code.) 
44
45
46 Changes with respect to v1.0 (= round 1 submission)
47 ---------------------------------------------------
48
49 1) Removed the parameter blockLen from makeKey() and cipherInit().
50    The parameter is still present in the structures keyInstance and
51    cipherInstance.
52 2) Removed some calls to sscan().
53 3) Corrected the CBC decryption Monte Carlo test code.
54 4) Provided code for platforms with pointer alignment problems.
55  
56 ----------------------------------------------------------------------
57
58 Changes from v2.0 (= round 2 submission)
59 ----------------------------------------
60
61 Various bug fixes in CBC encryption and decryption mode.
62
63 ----------------------------------------------------------------------
64
65 Changes from v2.2
66 -----------------
67
68 --  Moved number of rounds to the keyInstance structure
69     to make implementation thread-safe
70 --  Functions used only to generate the Intermediate Value
71     Known Answer Test are now conditionally compiled
72     via #define INTERMEDIATE_VALUE_KAT
73 --  Further optimized for the default 128-bit block size
74 --  Fixed CBC decryption bug (chained IV was lost if input
75     and outBuffer were the same)
76 --  Added padding capability to CBC mode (allows encryption
77     of any number of octets, not only full blocks)
78
79 ----------------------------------------------------------------------
80
81 Changes from v2.3
82 -----------------
83
84 Fixed a small bug in CBC mode.