summaryrefslogtreecommitdiffstats
path: root/crypto/rijndael
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2001-02-07 18:15:18 +0000
committerDr. Stephen Henson <steve@openssl.org>2001-02-07 18:15:18 +0000
commitdeb2c1a1c58fb738b3216b663212572170de8183 (patch)
treef6aa0527d08b8fdcf4ce63eaf85aa3d6a73b1c34 /crypto/rijndael
parentd4219c485b34818df8aa530f7d8d1c1daff44306 (diff)
Fix AES code.
Update Rijndael source to v3.0 Add AES OIDs. Change most references of Rijndael to AES. Add new draft AES ciphersuites.
Diffstat (limited to 'crypto/rijndael')
-rw-r--r--crypto/rijndael/Makefile.ssl5
-rwxr-xr-xcrypto/rijndael/README164
-rw-r--r--crypto/rijndael/boxes-fst-corrected.dat3986
-rwxr-xr-xcrypto/rijndael/rd_fst.c1814
-rwxr-xr-xcrypto/rijndael/rd_fst.h67
-rw-r--r--crypto/rijndael/rijndael.h6
6 files changed, 1486 insertions, 4556 deletions
diff --git a/crypto/rijndael/Makefile.ssl b/crypto/rijndael/Makefile.ssl
index 368a82c5bd..681af560a0 100644
--- a/crypto/rijndael/Makefile.ssl
+++ b/crypto/rijndael/Makefile.ssl
@@ -20,10 +20,9 @@ RD_ENC= rd_enc.o
# or use
#DES_ENC= bx86-elf.o
-CFLAGS= -mpentiumpro $(INCLUDES) $(CFLAG) -DINTERMEDIATE_VALUE_KAT -DBINARY_KEY_MATERIAL -O3 -fexpensive-optimizations -funroll-loops -fforce-addr
+CFLAGS= -mpentiumpro $(INCLUDES) $(CFLAG) -O3 -fexpensive-optimizations -funroll-loops -fforce-addr
GENERAL=Makefile
-#TEST=rijndael-test-fst.c table.128 table.192 table.256
TEST=
APPS=
@@ -85,4 +84,4 @@ clean:
# DO NOT DELETE THIS LINE
-rd_fst.o: boxes-fst-corrected.dat rd_fst.h
+rd_fst.o: rd_fst.h
diff --git a/crypto/rijndael/README b/crypto/rijndael/README
index 6d6f19fa49..1118ccbad8 100755
--- a/crypto/rijndael/README
+++ b/crypto/rijndael/README
@@ -1,84 +1,80 @@
-Rijndael
-Joan Daemen
-
-Optimised ANSI C v2.4
------------------------------------------------------------
-
-This archive contains the following files:
-
-Makefile: A file that allows for easy compiling of the code with
- Unix `make' (tested with GNU make).
-README: This file.
-boxes-fst.dat: Tables that are needed by the reference implementation.
- The tables implement the S-box and its inverse, and also
- some temporary tables needed for multiplying in the finite
- field GF(2^8).
-rijndael-alg-fst.c:
-rijndael-alg-fst.h:
- Algorithm implementation.
-rijndael-api-fst.c:
-rijndael-api-fst.h:
- Interface to the C API.
-rijndaeltest-fst.c:
- Implementation of the KAT and MCT.
-table.128:
-table.192:
-table.256:
- Files needed for the KAT (for the Table Known Answer Test).
-
-
-
-Instructions for the KAT and MCT software:
-
-1) Compile the C code and put the executable in the same directory as the
- table.??? files.
-2) Run the executable. It generates all the tables in the NIST format.
-3) Compare the generated tables with the original provided tables, e.g.
- in Unix, with `diff'.
-4) The code is independent of the ENDIANness of the machine.
- However, the code casts char pointers to int pointers.
- On some platforms, this casting can cause problems.
- This will cause malfunctioning of the CBC Monte Carlo tests.
- In this case, the compile parameter STRICT_ALIGN should be set to 1.
- (Of course this results in slower code.)
-
-
-Changes with respect to v1.0 (= round 1 submission)
----------------------------------------------------
-
-1) Removed the parameter blockLen from makeKey() and cipherInit().
- The parameter is still present in the structures keyInstance and
- cipherInstance.
-2) Removed some calls to sscan().
-3) Corrected the CBC decryption Monte Carlo test code.
-4) Provided code for platforms with pointer alignment problems.
-
-----------------------------------------------------------------------
-
-Changes from v2.0 (= round 2 submission)
-----------------------------------------
-
-Various bug fixes in CBC encryption and decryption mode.
-
-----------------------------------------------------------------------
-
-Changes from v2.2
------------------
-
--- Moved number of rounds to the keyInstance structure
- to make implementation thread-safe
--- Functions used only to generate the Intermediate Value
- Known Answer Test are now conditionally compiled
- via #define INTERMEDIATE_VALUE_KAT
--- Further optimized for the default 128-bit block size
--- Fixed CBC decryption bug (chained IV was lost if input
- and outBuffer were the same)
--- Added padding capability to CBC mode (allows encryption
- of any number of octets, not only full blocks)
-
-----------------------------------------------------------------------
-
-Changes from v2.3
------------------
-
-Fixed a small bug in CBC mode.
+Optimised ANSI C code for the Rijndael cipher (now AES)
+
+Authors:
+ Vincent Rijmen <vincent.rijmen@esat.kuleuven.ac.be>
+ Antoon Bosselaers <antoon.bosselaers@esat.kuleuven.ac.be>
+ Paulo Barreto <paulo.barreto@terra.com.br>
+
+All code contained in this distributed is placed in the public domain.
+
+========================================================================
+
+Disclaimer:
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+========================================================================
+
+Acknowledgements:
+
+We are deeply indebted to the following people for their bug reports,
+fixes, and improvement suggestions to the API implementation. Though we
+tried to list all contributions, we apologise in advance for any
+missing reference:
+
+Andrew Bales <Andrew.Bales@Honeywell.com>
+Markus Friedl <markus.friedl@informatik.uni-erlangen.de>
+John Skodon <skodonj@webquill.com>
+
+========================================================================
+
+Description:
+
+This optimised implementation of Rijndael is noticeably faster than the
+previous versions on Intel processors under Win32 w/ MSVC 6.0. On the
+same processor under Linux w/ gcc-2.95.2, the key setup is also
+considerably faster, but normal encryption/decryption is only marginally
+faster.
+
+To enable full loop unrolling for encryption/decryption, define the
+conditional compilation directive FULL_UNROLL. This may help increase
+performance or not, depending on the platform.
+
+To compute the intermediate value tests, define the conditional
+compilation directive INTERMEDIATE_VALUE_KAT. It may be worthwhile to
+define the TRACE_KAT_MCT directive too, which provides useful progress
+information during the generation of the KAT and MCT sets.
+
+========================================================================
+
+Contents:
+
+README This file
+rijndael-alg-fst.c The algorithm implementation.
+rijndael-alg-fst.h The corresponding header file.
+rijndael-api-fst.c NIST's implementation.
+rijndael-api-fst.h The corresponding header file.
+rijndael-test-fst.c A simple program to generate test vectors.
+table.128 Data for the table tests and 128-bit keys.
+table.192 Data for the table tests and 192-bit keys.
+table.256 Data for the table tests and 256-bit keys.
+fips-test-vectors.txt Key schedule and ciphertext intermediate values
+ (reduced set proposed for FIPS inclusion).
+Makefile A sample makefile; may need some changes,
+ depending on the C compiler used.
+
+N.B. Both the API implementation and the provisional reduced set of
+test vectors are likely to change, according to NIST's final decision
+regarding modes of operation and the FIPS contents. They are therefore
+marked as "version 2.9" rather than "version 3.0".
+
diff --git a/crypto/rijndael/boxes-fst-corrected.dat b/crypto/rijndael/boxes-fst-corrected.dat
deleted file mode 100644
index d3d01c0397..0000000000
--- a/crypto/rijndael/boxes-fst-corrected.dat
+++ /dev/null
@@ -1,3986 +0,0 @@
-word8 S[256] = {
- 99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118,
-202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192,
-183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21,
- 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117,
- 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132,
- 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207,
-208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168,
- 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210,
-205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115,
- 96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219,
-224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121,
-231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8,
-186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138,
-112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158,
-225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223,
-140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22
-};
-
-#ifdef INTERMEDIATE_VALUE_KAT
-word8 Si[256] = {
- 82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251,
-124, 227, 57, 130, 155, 47, 255, 135, 52, 142, 67, 68, 196, 222, 233, 203,
- 84, 123, 148, 50, 166, 194, 35, 61, 238, 76, 149, 11, 66, 250, 195, 78,
- 8, 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73, 109, 139, 209, 37,
-114, 248, 246, 100, 134, 104, 152, 22, 212, 164, 92, 204, 93, 101, 182, 146,
-108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132,
-144, 216, 171, 0, 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6,
-208, 44, 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, 19, 138, 107,
- 58, 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, 206, 240, 180, 230, 115,
-150, 172, 116, 34, 231, 173, 53, 133, 226, 249, 55, 232, 28, 117, 223, 110,
- 71, 241, 26, 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27,
-252, 86, 62, 75, 198, 210, 121, 32, 154, 219, 192, 254, 120, 205, 90, 244,
- 31, 221, 168, 51, 136, 7, 199, 49, 177, 18, 16, 89, 39, 128, 236, 95,
- 96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156, 239,
-160, 224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97,
- 23, 43, 4, 126, 186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125
-};
-#endif /* INTERMEDIATE_VALUE_KAT */
-
-word8 T1[256][4] = {
- {0xc6,0x63,0x63,0xa5},
- {0xf8,0x7c,0x7c,0x84},
- {0xee,0x77,0x77,0x99},
- {0xf6,0x7b,0x7b,0x8d},
-
- {0xff,0xf2,0xf2,0x0d},
- {0xd6,0x6b,0x6b,0xbd},
- {0xde,0x6f,0x6f,0xb1},
- {0x91,0xc5,0xc5,0x54},
-
- {0x60,0x30,0x30,0x50},
- {0x02,0x01,0x01,0x03},
- {0xce,0x67,0x67,0xa9},
- {0x56,0x2b,0x2b,0x7d},
-
- {0xe7,0xfe,0xfe,0x19},
- {0xb5,0xd7,0xd7,0x62},
- {0x4d,0xab,0xab,0xe6},
- {0xec,0x76,0x76,0x9a},
-
- {0x8f,0xca,0xca,0x45},
- {0x1f,0x82,0x82,0x9d},
- {0x89,0xc9,0xc9,0x40},
- {0xfa,0x7d,0x7d,0x87},
-
- {0xef,0xfa,0xfa,0x15},
- {0xb2,0x59,0x59,0xeb},
- {0x8e,0x47,0x47,0xc9},
- {0xfb,0xf0,0xf0,0x0b},
-
- {0x41,0xad,0xad,0xec},
- {0xb3,0xd4,0xd4,0x67},
- {0x5f,0xa2,0xa2,0xfd},
- {0x45,0xaf,0xaf,0xea},
-
- {0x23,0x9c,0x9c,0xbf},
- {0x53,0xa4,0xa4,0xf7},
- {0xe4,0x72,0x72,0x96},
- {0x9b,0xc0,0xc0,0x5b},
-
- {0x75,0xb7,0xb7,0xc2},
- {0xe1,0xfd,0xfd,0x1c},
- {0x3d,0x93,0x93,0xae},
- {0x4c,0x26,0x26,0x6a},
-
- {0x6c,0x36,0x36,0x5a},
- {0x7e,0x3f,0x3f,0x41},
- {0xf5,0xf7,0xf7,0x02},
- {0x83,0xcc,0xcc,0x4f},
-
- {0x68,0x34,0x34,0x5c},
- {0x51,0xa5,0xa5,0xf4},
- {0xd1,0xe5,0xe5,0x34},
- {0xf9,0xf1,0xf1,0x08},
-
- {0xe2,0x71,0x71,0x93},
- {0xab,0xd8,0xd8,0x73},
- {0x62,0x31,0x31,0x53},
- {0x2a,0x15,0x15,0x3f},
-
- {0x08,0x04,0x04,0x0c},
- {0x95,0xc7,0xc7,0x52},
- {0x46,0x23,0x23,0x65},
- {0x9d,0xc3,0xc3,0x5e},
-
- {0x30,0x18,0x18,0x28},
- {0x37,0x96,0x96,0xa1},
- {0x0a,0x05,0x05,0x0f},
- {0x2f,0x9a,0x9a,0xb5},
-
- {0x0e,0x07,0x07,0x09},
- {0x24,0x12,0x12,0x36},
- {0x1b,0x80,0x80,0x9b},
- {0xdf,0xe2,0xe2,0x3d},
-
- {0xcd,0xeb,0xeb,0x26},
- {0x4e,0x27,0x27,0x69},
- {0x7f,0xb2,0xb2,0xcd},
- {0xea,0x75,0x75,0x9f},
-
- {0x12,0x09,0x09,0x1b},
- {0x1d,0x83,0x83,0x9e},
- {0x58,0x2c,0x2c,0x74},
- {0x34,0x1a,0x1a,0x2e},
-
- {0x36,0x1b,0x1b,0x2d},
- {0xdc,0x6e,0x6e,0xb2},
- {0xb4,0x5a,0x5a,0xee},
- {0x5b,0xa0,0xa0,0xfb},
-
- {0xa4,0x52,0x52,0xf6},
- {0x76,0x3b,0x3b,0x4d},
- {0xb7,0xd6,0xd6,0x61},
- {0x7d,0xb3,0xb3,0xce},
-
- {0x52,0x29,0x29,0x7b},
- {0xdd,0xe3,0xe3,0x3e},
- {0x5e,0x2f,0x2f,0x71},
- {0x13,0x84,0x84,0x97},
-
- {0xa6,0x53,0x53,0xf5},
- {0xb9,0xd1,0xd1,0x68},
- {0x00,0x00,0x00,0x00},
- {0xc1,0xed,0xed,0x2c},
-
- {0x40,0x20,0x20,0x60},
- {0xe3,0xfc,0xfc,0x1f},
- {0x79,0xb1,0xb1,0xc8},
- {0xb6,0x5b,0x5b,0xed},
-
- {0xd4,0x6a,0x6a,0xbe},
- {0x8d,0xcb,0xcb,0x46},
- {0x67,0xbe,0xbe,0xd9},
- {0x72,0x39,0x39,0x4b},
-
- {0x94,0x4a,0x4a,0xde},
- {0x98,0x4c,0x4c,0xd4},
- {0xb0,0x58,0x58,0xe8},
- {0x85,0xcf,0xcf,0x4a},
-
- {0xbb,0xd0,0xd0,0x6b},
- {0xc5,0xef,0xef,0x2a},
- {0x4f,0xaa,0xaa,0xe5},
- {0xed,0xfb,0xfb,0x16},
-
- {0x86,0x43,0x43,0xc5},
- {0x9a,0x4d,0x4d,0xd7},
- {0x66,0x33,0x33,0x55},
- {0x11,0x85,0x85,0x94},
-
- {0x8a,0x45,0x45,0xcf},
- {0xe9,0xf9,0xf9,0x10},
- {0x04,0x02,0x02,0x06},
- {0xfe,0x7f,0x7f,0x81},
-
- {0xa0,0x50,0x50,0xf0},
- {0x78,0x3c,0x3c,0x44},
- {0x25,0x9f,0x9f,0xba},
- {0x4b,0xa8,0xa8,0xe3},
-
- {0xa2,0x51,0x51,0xf3},
- {0x5d,0xa3,0xa3,0xfe},
- {0x80,0x40,0x40,0xc0},
- {0x05,0x8f,0x8f,0x8a},
-
- {0x3f,0x92,0x92,0xad},
- {0x21,0x9d,0x9d,0xbc},
- {0x70,0x38,0x38,0x48},
- {0xf1,0xf5,0xf5,0x04},
-
- {0x63,0xbc,0xbc,0xdf},
- {0x77,0xb6,0xb6,0xc1},
- {0xaf,0xda,0xda,0x75},
- {0x42,0x21,0x21,0x63},
-
- {0x20,0x10,0x10,0x30},
- {0xe5,0xff,0xff,0x1a},
- {0xfd,0xf3,0xf3,0x0e},
- {0xbf,0xd2,0xd2,0x6d},
-
- {0x81,0xcd,0xcd,0x4c},
- {0x18,0x0c,0x0c,0x14},
- {0x26,0x13,0x13,0x35},
- {0xc3,0xec,0xec,0x2f},
-
- {0xbe,0x5f,0x5f,0xe1},
- {0x35,0x97,0x97,0xa2},
- {0x88,0x44,0x44,0xcc},
- {0x2e,0x17,0x17,0x39},
-
- {0x93,0xc4,0xc4,0x57},
- {0x55,0xa7,0xa7,0xf2},
- {0xfc,0x7e,0x7e,0x82},
- {0x7a,0x3d,0x3d,0x47},
-
- {0xc8,0x64,0x64,0xac},
- {0xba,0x5d,0x5d,0xe7},
- {0x32,0x19,0x19,0x2b},
- {0xe6,0x73,0x73,0x95},
-
- {0xc0,0x60,0x60,0xa0},
- {0x19,0x81,0x81,0x98},
- {0x9e,0x4f,0x4f,0xd1},
- {0xa3,0xdc,0xdc,0x7f},
-
- {0x44,0x22,0x22,0x66},
- {0x54,0x2a,0x2a,0x7e},
- {0x3b,0x90,0x90,0xab},
- {0x0b,0x88,0x88,0x83},
-
- {0x8c,0x46,0x46,0xca},
- {0xc7,0xee,0xee,0x29},
- {0x6b,0xb8,0xb8,0xd3},
- {0x28,0x14,0x14,0x3c},
-
- {0xa7,0xde,0xde,0x79},
- {0xbc,0x5e,0x5e,0xe2},
- {0x16,0x0b,0x0b,0x1d},
- {0xad,0xdb,0xdb,0x76},
-
- {0xdb,0xe0,0xe0,0x3b},
- {0x64,0x32,0x32,0x56},
- {0x74,0x3a,0x3a,0x4e},
- {0x14,0x0a,0x0a,0x1e},
-
- {0x92,0x49,0x49,0xdb},
- {0x0c,0x06,0x06,0x0a},
- {0x48,0x24,0x24,0x6c},
- {0xb8,0x5c,0x5c,0xe4},
-
- {0x9f,0xc2,0xc2,0x5d},
- {0xbd,0xd3,0xd3,0x6e},
- {0x43,0xac,0xac,0xef},
- {0xc4,0x62,0x62,0xa6},
-
- {0x39,0x91,0x91,0xa8},
- {0x31,0x95,0x95,0xa4},
- {0xd3,0xe4,0xe4,0x37},
- {0xf2,0x79,0x79,0x8b},
-
- {0xd5,0xe7,0xe7,0x32},
- {0x8b,0xc8,0xc8,0x43},
- {0x6e,0x37,0x37,0x59},
- {0xda,0x6d,0x6d,0xb7},
-
- {0x01,0x8d,0x8d,0x8c},
- {0xb1,0xd5,0xd5,0x64},
- {0x9c,0x4e,0x4e,0xd2},
- {0x49,0xa9,0xa9,0xe0},
-
- {0xd8,0x6c,0x6c,0xb4},
- {0xac,0x56,0x56,0xfa},
- {0xf3,0xf4,0xf4,0x07},
- {0xcf,0xea,0xea,0x25},
-
- {0xca,0x65,0x65,0xaf},
- {0xf4,0x7a,0x7a,0x8e},
- {0x47,0xae,0xae,0xe9},
- {0x10,0x08,0x08,0x18},
-
- {0x6f,0xba,0xba,0xd5},
- {0xf0,0x78,0x78,0x88},
- {0x4a,0x25,0x25,0x6f},
- {0x5c,0x2e,0x2e,0x72},
-
- {0x38,0x1c,0x1c,0x24},
- {0x57,0xa6,0xa6,0xf1},
- {0x73,0xb4,0xb4,0xc7},
- {0x97,0xc6,0xc6,0x51},
-
- {0xcb,0xe8,0xe8,0x23},
- {0xa1,0xdd,0xdd,0x7c},
- {0xe8,0x74,0x74,0x9c},
- {0x3e,0x1f,0x1f,0x21},
-
- {0x96,0x4b,0x4b,0xdd},
- {0x61,0xbd,0xbd,0xdc},
- {0x0d,0x8b,0x8b,0x86},
- {0x0f,0x8a,0x8a,0x85},
-
- {0xe0,0x70,0x70,0x90},
- {0x7c,0x3e,0x3e,0x42},
- {0x71,0xb5,0xb5,0xc4},
- {0xcc,0x66,0x66,0xaa},
-
- {0x90,0x48,0x48,0xd8},
- {0x06,0x03,0x03,0x05},
- {0xf7,0xf6,0xf6,0x01},
- {0x1c,0x0e,0x0e,0x12},
-
- {0xc2,0x61,0x61,0xa3},
- {0x6a,0x35,0x35,0x5f},
- {0xae,0x57,0x57,0xf9},
- {0x69,0xb9,0xb9,0xd0},
-
- {0x17,0x86,0x86,0x91},
- {0x99,0xc1,0xc1,0x58},
- {0x3a,0x1d,0x1d,0x27},
- {0x27,0x9e,0x9e,0xb9},
-
- {0xd9,0xe1,0xe1,0x38},
- {0xeb,0xf8,0xf8,0x13},
- {0x2b,0x98,0x98,0xb3},
- {0x22,0x11,0x11,0x33},
-
- {0xd2,0x69,0x69,0xbb},
- {0xa9,0xd9,0xd9,0x70},
- {0x07,0x8e,0x8e,0x89},
- {0x33,0x94,0x94,0xa7},
-
- {0x2d,0x9b,0x9b,0xb6},
- {0x3c,0x1e,0x1e,0x22},
- {0x15,0x87,0x87,0x92},
- {0xc9,0xe9,0xe9,0x20},
-
- {0x87,0xce,0xce,0x49},
- {0xaa,0x55,0x55,0xff},
- {0x50,0x28,0x28,0x78},
- {0xa5,0xdf,0xdf,0x7a},
-
- {0x03,0x8c,0x8c,0x8f},
- {0x59,0xa1,0xa1,0xf8},
- {0x09,0x89,0x89,0x80},
- {0x1a,0x0d,0x0d,0x17},
-
- {0x65,0xbf,0xbf,0xda},
- {0xd7,0xe6,0xe6,0x31},
- {0x84,0x42,0x42,0xc6},
- {0xd0,0x68,0x68,0xb8},
-
- {0x82,0x41,0x41,0xc3},
- {0x29,0x99,0x99,0xb0},
- {0x5a,0x2d,0x2d,0x77},
- {0x1e,0x0f,0x0f,0x11},
-
- {0x7b,0xb0,0xb0,0xcb},
- {0xa8,0x54,0x54,0xfc},
- {0x6d,0xbb,0xbb,0xd6},
- {0x2c,0x16,0x16,0x3a},
-
-};
-
-word8 T2[256][4] = {
- {0xa5,0xc6,0x63,0x63},
- {0x84,0xf8,0x7c,0x7c},
- {0x99,0xee,0x77,0x77},
- {0x8d,0xf6,0x7b,0x7b},
-
- {0x0d,0xff,0xf2,0xf2},
- {0xbd,0xd6,0x6b,0x6b},
- {0xb1,0xde,0x6f,0x6f},
- {0x54,0x91,0xc5,0xc5},
-
- {0x50,0x60,0x30,0x30},
- {0x03,0x02,0x01,0x01},
- {0xa9,0xce,0x67,0x67},
- {0x7d,0x56,0x2b,0x2b},
-
- {0x19,0xe7,0xfe,0xfe},
- {0x62,0xb5,0xd7,0xd7},
- {0xe6,0x4d,0xab,0xab},
- {0x9a,0xec,0x76,0x76},
-
- {0x45,0x8f,0xca,0xca},
- {0x9d,0x1f,0x82,0x82},
- {0x40,0x89,0xc9,0xc9},
- {0x87,0xfa,0x7d,0x7d},
-
- {0x15,0xef,0xfa,0xfa},
- {0xeb,0xb2,0x59,0x59},
- {0xc9,0x8e,0x47,0x47},
- {0x0b,0xfb,0xf0,0xf0},
-
- {0xec,0x41,0xad,0xad},
- {0x67,0xb3,0xd4,0xd4},
- {0xfd,0x5f,0xa2,0xa2},
- {0xea,0x45,0xaf,0xaf},
-
- {0xbf,0x23,0x9c,0x9c},
- {0xf7,0x53,0xa4,0xa4},
- {0x96,0xe4,0x72,0x72},
- {0x5b,0x9b,0xc0,0xc0},
-
- {0xc2,0x75,0xb7,0xb7},
- {0x1c,0xe1,0xfd,0xfd},
- {0xae,0x3d,0x93,0x93},
- {0x6a,0x4c,0x26,0x26},
-
- {0x5a,0x6c,0x36,0x36},
- {0x41,0x7e,0x3f,0x3f},
- {0x02,0xf5,0xf7,0xf7},
- {0x4f,0x83,0xcc,0xcc},
-
- {0x5c,0x68,0x34,0x34},
- {0xf4,0x51,0xa5,0xa5},
- {0x34,0xd1,0xe5,0xe5},
- {0x08,0xf9,0xf1,0xf1},
-
- {0x93,0xe2,0x71,0x71},
- {0x73,0xab,0xd8,0xd8},
- {0x53,0x62,0x31,0x31},
- {0x3f,0x2a,0x15,0x15},
-
- {0x0c,0x08,0x04,0x04},
- {0x52,0x95,0xc7,0xc7},
- {0x65,0x46,0x23,0x23},
- {0x5e,0x9d,0xc3,0xc3},
-
- {0x28,0x30,0x18,0x18},
- {0xa1,0x37,0x96,0x96},
- {0x0f,0x0a,0x05,0x05},
- {0xb5,0x2f,0x9a,0x9a},
-
- {0x09,0x0e,0x07,0x07},
- {0x36,0x24,0x12,0x12},
- {0x9b,0x1b,0x80,0x80},
- {0x3d,0xdf,0xe2,0xe2},
-
- {0x26,0xcd,0xeb,0xeb},
- {0x69,0x4e,0x27,0x27},
- {0xcd,0x7f,0xb2,0xb2},
- {0x9f,0xea,0x75,0x75},
-
- {0x1b,0x12,0x09,0x09},
- {0x9e,0x1d,0x83,0x83},
- {0x74,0x58,0x2c,0x2c},
- {0x2e,0x34,0x1a,0x1a},
-
- {0x2d,0x36,0x1b,0x1b},
- {0xb2,0xdc,0x6e,0x6e},
- {0xee,0xb4,0x5a,0x5a},
- {0xfb,0x5b,0xa0,0xa0},
-
- {0xf6,0xa4,0x52,0x52},
- {0x4d,0x76,0x3b,0x3b},
- {0x61,0xb7,0xd6,0xd6},
- {0xce,0x7d,0xb3,0xb3},
-
- {0x7b,0x52,0x29,0x29},
- {0x3e,0xdd,0xe3,0xe3},
- {0x71,0x5e,0x2f,0x2f},
- {0x97,0x13,0x84,0x84},
-
- {0xf5,0xa6,0x53,0x53},
- {0x68,0xb9,0xd1,0xd1},
- {0x00,0x00,0x00,0x00},
- {0x2c,0xc1,0xed,0xed},
-
- {0x60,0x40,0x20,0x20},
- {0x1f,0xe3,0xfc,0xfc},
- {0xc8,0x79,0xb1,0xb1},
- {0xed,0xb6,0x5b,0x5b},
-
- {0xbe,0xd4,0x6a,0x6a},
- {0x46,0x8d,0xcb,0xcb},
- {0xd9,0x67,0xbe,0xbe},
- {0x4b,0x72,0x39,0x39},
-
- {0xde,0x94,0x4a,0x4a},
- {0xd4,0x98,0x4c,0x4c},
- {0xe8,0xb0,0x58,0x58},
- {0x4a,0x85,0xcf,0xcf},
-
- {0x6b,0xbb,0xd0,0xd0},
- {0x2a,0xc5,0xef,0xef},
- {0xe5,0x4f,0xaa,0xaa},
- {0x16,0xed,0xfb,0xfb},
-
- {0xc5,0x86,0x43,0x43},
- {0xd7,0x9a,0x4d,0x4d},
- {0x55,0x66,0x33,0x33},
- {0x94,0x11,0x85,0x85},
-
- {0xcf,0x8a,0x45,0x45},
- {0x10,0xe9,0xf9,0xf9},
- {0x06,0x04,0x02,0x02},
- {0x81,0xfe,0x7f,0x7f},
-
- {0xf0,0xa0,0x50,0x50},
- {0x44,0x78,0x3c,0x3c},
- {0xba,0x25,0x9f,0x9f},
- {0xe3,0x4b,0xa8,0xa8},
-
- {0xf3,0xa2,0x51,0x51},
- {0xfe,0x5d,0xa3,0xa3},
- {0xc0,0x80,0x40,0x40},
- {0x8a,0x05,0x8f,0x8f},
-
- {0xad,0x3f,0x92,0x92},
- {0xbc,0x21,0x9d,0x9d},
- {0x48,0x70,0x38,0x38},
- {0x04,0xf1,0xf5,0xf5},
-
- {0xdf,0x63,0xbc,0xbc},
- {0xc1,0x77,0xb6,0xb6},
- {0x75,0xaf,0xda,0xda},
- {0x63,0x42,0x21,0x21},
-
- {0x30,0x20,0x10,0x10},
- {0x1a,0xe5,0xff,0xff},
- {0x0e,0xfd,0xf3,0xf3},
- {0x6d,0xbf,0xd2,0xd2},
-
- {0x4c,0x81,0xcd,0xcd},
- {0x14,0x18,0x0c,0x0c},
- {0x35,0x26,0x13,0x13},
- {0x2f,0xc3,0xec,0xec},
-
- {0xe1,0xbe,0x5f,0x5f},
- {0xa2,0x35,0x97,0x97},
- {0xcc,0x88,0x44,0x44},
- {0x39,0x2e,0x17,0x17},
-
- {0x57,0x93,0xc4,0xc4},
- {0xf2,0x55,0xa7,0xa7},
- {0x82,0xfc,0x7e,0x7e},
- {0x47,0x7a,0x3d,0x3d},
-
- {0xac,0xc8,0x64,0x64},
- {0xe7,0xba,0x5d,0x5d},
- {0x2b,0x32,0x19,0x19},
- {0x95,0xe6,0x73,0x73},
-
- {0xa0,0xc0,0x60,0x60},
- {0x98,0x19,0x81,0x81},
- {0xd1,0x9e,0x4f,0x4f},
- {0x7f,0xa3,0xdc,0xdc},
-
- {0x66,0x44,0x22,0x22},
- {0x7e,0x54,0x2a,0x2a},
- {0xab,0x3b,0x90,0x90},
- {0x83,0x0b,0x88,0x88},
-
- {0xca,0x8c,0x46,0x46},
- {0x29,0xc7,0xee,0xee},
- {0xd3,0x6b,0xb8,0xb8},
- {0x3c,0x28,0x14,0x14},
-
- {0x79,0xa7,0xde,0xde},
- {0xe2,0xbc,0x5e,0x5e},
- {0x1d,0x16,0x0b,0x0b},
- {0x76,0xad,0xdb,0xdb},
-
- {0x3b,0xdb,0xe0,0xe0},
- {0x56,0x64,0x32,0x32},
- {0x4e,0x74,0x3a,0x3a},
- {0x1e,0x14,0x0a,0x0a},
-
- {0xdb,0x92,0x49,0x49},
- {0x0a,0x0c,0x06,0x06},
- {0x6c,0x48,0x24,0x24},
- {0xe4,0xb8,0x5c,0x5c},
-
- {0x5d,0x9f,0xc2,0xc2},
- {0x6e,0xbd,0xd3,0xd3},
- {0xef,0x43,0xac,0xac},
- {0xa6,0xc4,0x62,0x62},
-
- {0xa8,0x39,0x91,0x91},
- {0xa4,0x31,0x95,0x95},
- {0x37,0xd3,0xe4,0xe4},
- {0x8b,0xf2,0x79,0x79},
-
- {0x32,0xd5,0xe7,0xe7},
- {0x43,0x8b,0xc8,0xc8},
- {0x59,0x6e,0x37,0x37},
- {0xb7,0xda,0x6d,0x6d},
-
- {0x8c,0x01,0x8d,0x8d},
- {0x64,0xb1,0xd5,0xd5},
- {0xd2,0x9c,0x4e,0x4e},
- {0xe0,0x49,0xa9,0xa9},
-
- {0xb4,0xd8,0x6c,0x6c},
- {0xfa,0xac,0x56,0x56},
- {0x07,0xf3,0xf4,0xf4},
- {0x25,0xcf,0xea,0xea},
-
- {0xaf,0xca,0x65,0x65},
- {0x8e,0xf4,0x7a,0x7a},
- {0xe9,0x47,0xae,0xae},
- {0x18,0x10,0x08,0x08},
-
- {0xd5,0x6f,0xba,0xba},
- {0x88,0xf0,0x78,0x78},
- {0x6f,0x4a,0x25,0x25},
- {0x72,0x5c,0x2e,0x2e},
-
- {0x24,0x38,0x1c,0x1c},
- {0xf1,0x57,0xa6,0xa6},
- {0xc7,0x73,0xb4,0xb4},
- {0x51,0x97,0xc6,0xc6},
-
- {0x23,0xcb,0xe8,0xe8},
- {0x7c,0xa1,0xdd,0xdd},
- {0x9c,0xe8,0x74,0x74},
- {0x21,0x3e,0x1f,0x1f},
-
- {0xdd,0x96,0x4b,0x4b},
- {0xdc,0x61,0xbd,0xbd},
- {0x86,0x0d,0x8b,0x8b},
- {0x85,0x0f,0x8a,0x8a},
-
- {0x90,0xe0,0x70,0x70},
- {0x42,0x7c,0x3e,0x3e},
- {0xc4,0x71,0xb5,0xb5},
- {0xaa,0xcc,0x66,0x66},
-
- {0xd8,0x90,0x48,0x48},
- {0x05,0x06,0x03,0x03},
- {0x01,0xf7,0xf6,0xf6},
- {0x12,0x1c,0x0e,0x0e},
-
- {0xa3,0xc2,0x61,0x61},
- {0x5f,0x6a,0x35,0x35},
- {0xf9,0xae,0x57,0x57},
- {0xd0,0x69,0xb9,0xb9},
-
- {0x91,0x17,0x86,0x86},
- {0x58,0x99,0xc1,0xc1},
- {0x27,0x3a,0x1d,0x1d},
- {0xb9,0x27,0x9e,0x9e},
-
- {0x38,0xd9,0xe1,0xe1},
- {0x13,0xeb,0xf8,0xf8},
- {0xb3,0x2b,0x98,0x98},
- {0x33,0x22,0x11,0x11},
-
- {0xbb,0xd2,0x69,0x69},
- {0x70,0xa9,0xd9,0xd9},
- {0x89,0x07,0x8e,0x8e},
- {0xa7,0x33,0x94,0x94},
-
- {0xb6,0x2d,0x9b,0x9b},
- {0x22,0x3c,0x1e,0x1e},
- {0x92,0x15,0x87,0x87},
- {0x20,0xc9,0xe9,0xe9},
-
- {0x49,0x87,0xce,0xce},
- {0xff,0xaa,0x55,0x55},
- {0x78,0x50,0x28,0x28},
- {0x7a,0xa5,0xdf,0xdf},
-
- {0x8f,0x03,0x8c,0x8c},
- {0xf8,0x59,0xa1,0xa1},
- {0x80,0x09,0x89,0x89},
- {0x17,0x1a,0x0d,0x0d},
-
- {0xda,0x65,0xbf,0xbf},
- {0x31,0xd7,0xe6,0xe6},
- {0xc6,0x84,0x42,0x42},
- {0xb8,0xd0,0x68,0x68},
-
- {0xc3,0x82,0x41,0x41},
- {0xb0,0x29,0x99,0x99},
- {0x77,0x5a,0x2d,0x2d},
- {0x11,0x1e,0x0f,0x0f},
-
- {0xcb,0x7b,0xb0,0xb0},
- {0xfc,0xa8,0x54,0x54},
- {0xd6,0x6d,0xbb,0xbb},
- {0x3a,0x2c,0x16,0x16},
-
-};
-
-word8 T3[256][4] = {
- {0x63,0xa5,0xc6,0x63},
- {0x7c,0x84,0xf8,0x7c},
- {0x77,0x99,0xee,0x77},
- {0x7b,0x8d,0xf6,0x7b},
-
- {0xf2,0x0d,0xff,0xf2},
- {0x6b,0xbd,0xd6,0x6b},
- {0x6f,0xb1,0xde,0x6f},
- {0xc5,0x54,0x91,0xc5},
-
- {0x30,0x50,0x60,0x30},
- {0x01,0x03,0x02,0x01},
- {0x67,0xa9,0xce,0x67},
- {0x2b,0x7d,0x56,0x2b},
-
- {0xfe,0x19,0xe7,0xfe},
- {0xd7,0x62,0xb5,0xd7},
- {0xab,0xe6,0x4d,0xab},
- {0x76,0x9a,0xec,0x76},
-
- {0xca,0x45,0x8f,0xca},
- {0x82,0x9d,0x1f,0x82},
- {0xc9,0x40,0x89,0xc9},
- {0x7d,0x87,0xfa,0x7d},
-
- {0xfa,0x15,0xef,0xfa},
- {0x59,0xeb,0xb2,0x59},
- {0x47,0xc9,0x8e,0x47},
- {0xf0,0x0b,0xfb,0xf0},
-
- {0xad,0xec,0x41,0xad},
- {0xd4,0x67,0xb3,0xd4},
- {0xa2,0xfd,0x5f,0xa2},
- {0xaf,0xea,0x45,0xaf},
-
- {0x9c,0xbf,0x23,0x9c},
- {0xa4,0xf7,0x53,0xa4},
- {0x72,0x96,0xe4,0x72},
- {0xc0,0x5b,0x9b,0xc0},
-
- {0xb7,0xc2,0x75,0xb7},
- {0xfd,0x1c,0xe1,0xfd},
- {0x93,0xae,0x3d,0x93},
- {0x26,0x6a,0x4c,0x26},
-
- {0x36,0x5a,0x6c,0x36},
- {0x3f,0x41,0x7e,0x3f},
- {0xf7,0x02,0xf5,0xf7},
- {0xcc,0x4f,0x83,0xcc},
-
- {0x34,0x5c,0x68,0x34},
- {0xa5,0xf4,0x51,0xa5},
- {0xe5,0x34,0xd1,0xe5},
- {0xf1,0x08,0xf9,0xf1},
-
- {0x71,0x93,0xe2,0x71},
- {0xd8,0x73,0xab,0xd8},
- {0x31,0x53,0x62,0x31},
- {0x15,0x3f,0x2a,0x15},
-
- {0x04,0x0c,0x08,0x04},
- {0xc7,0x52,0x95,0xc7},
- {0x23,0x65,0x46,0x23},
- {0xc3,0x5e,0x9d,0xc3},
-
- {0x18,0x28,0x30,0x18},
- {0x96,0xa1,0x37,0x96},
- {0x05,0x0f,0x0a,0x05},
- {0x9a,0xb5,0x2f,0x9a},
-
- {0x07,0x09,0x0e,0x07},
- {0x12,0x36,0x24,0x12},
- {0x80,0x9b,0x1b,0x80},
- {0xe2,0x3d,0xdf,0xe2},
-
- {0xeb,0x26,0xcd,0xeb},
- {0x27,0x69,0x4e,0x27},
- {0xb2,0xcd,0x7f,0xb2},
- {0x75,0x9f,0xea,0x75},
-
- {0x09,0x1b,0x12,0x09},
- {0x83,0x9e,0x1d,0x83},
- {0x2c,0x74,0x58,0x2c},
- {0x1a,0x2e,0x34,0x1a},
-
- {0x1b,0x2d,0x36,0x1b},
- {0x6e,0xb2,0xdc,0x6e},
- {0x5a,0xee,0xb4,0x5a},
- {0xa0,0xfb,0x5b,0xa0},
-
- {0x52,0xf6,0xa4,0x52},
- {0x3b,0x4d,0x76,0x3b},
- {0xd6,0x61,0xb7,0xd6},
- {0xb3,0xce,0x7d,0xb3},
-
- {0x29,0x7b,0x52,0x29},
- {0xe3,0x3e,0xdd,0xe3},
- {0x2f,0x71,0x5e,0x2f},
- {0x84,0x97,0x13,0x84},
-
- {0x53,0xf5,0xa6,0x53},
- {0xd1,0x68,0xb9,0xd1},
- {0x00,0x00,0x00,0x00},
- {0xed,0x2c,0xc1,0xed},
-
- {0x20,0x60,0x40,0x20},
- {0xfc,0x1f,0xe3,0xfc},
- {0xb1,0xc8,0x79,0xb1},
- {0x5b,0xed,0xb6,0x5b},
-
- {0x6a,0xbe,0xd4,0x6a},
- {0xcb,0x46,0x8d,0xcb},
- {0xbe,0xd9,0x67,0xbe},
- {0x39,0x4b,0x72,0x39},
-
- {0x4a,0xde,0x94,0x4a},
- {0x4c,0xd4,0x98,0x4c},
- {0x58,0xe8,0xb0,0x58},
- {0xcf,0x4a,0x85,0xcf},
-
- {0xd0,0x6b,0xbb,0xd0},
- {0xef,0x2a,0xc5,0xef},
- {0xaa,0xe5,0x4f,0xaa},
- {0xfb,0x16,0xed,0xfb},
-
- {0x43,0xc5,0x86,0x43},
- {0x4d,0xd7,0x9a,0x4d},
- {0x33,0x55,0x66,0x33},
- {0x85,0x94,0x11,0x85},
-
- {0x45,0xcf,0x8a,0x45},
- {0xf9,0x10,0xe9,0xf9},
- {0x02,0x06,0x04,0x02},
- {0x7f,0x81,0xfe,0x7f},
-
- {0x50,0xf0,0xa0,0x50},
- {0x3c,0x44,0x78,0x3c},
- {0x9f,0xba,0x25,0x9f},
- {0xa8,0xe3,0x4b,0xa8},
-
- {0x51,0xf3,0xa2,0x51},
- {0xa3,0xfe,0x5d,0xa3},
- {0x40,0xc0,0x80,0x40},
- {0x8f,0x8a,0x05,0x8f},
-
- {0x92,0xad,0x3f,0x92},
- {0x9d,0xbc,0x21,0x9d},
- {0x38,0x48,0x70,0x38},
- {0xf5,0x04,0xf1,0xf5},
-
- {0xbc,0xdf,0x63,0xbc},
- {0xb6,0xc1,0x77,0xb6},
- {0xda,0x75,0xaf,0xda},
- {0x21,0x63,0x42,0x21},
-
- {0x10,0x30,0x20,0x10},
- {0xff,0x1a,0xe5,0xff},
- {0xf3,0x0e,0xfd,0xf3},
- {0xd2,0x6d,0xbf,0xd2},
-
- {0xcd,0x4c,0x81,0xcd},
- {0x0c,0x14,0x18,0x0c},
- {0x13,0x35,0x26,0x13},
- {0xec,0x2f,0xc3,0xec},
-
- {0x5f,0xe1,0xbe,0x5f},
- {0x97,0xa2,0x35,0x97},
- {0x44,0xcc,0x88,0x44},
- {0x17,0x39,0x2e,0x17},
-
- {0xc4,0x57,0x93,0xc4},
- {0xa7,0xf2,0x55,0xa7},
- {0x7e,0x82,0xfc,0x7e},
- {0x3d,0x47,0x7a,0x3d},
-
- {0x64,0xac,0xc8,0x64},
- {0x5d,0xe7,0xba,0x5d},
- {0x19,0x2b,0x32,0x19},
- {0x73,0x95,0xe6,0x73},
-
- {0x60,0xa0,0xc0,0x60},
- {0x81,0x98,0x19,0x81},
- {0x4f,0xd1,0x9e,0x4f},
- {0xdc,0x7f,0xa3,0xdc},
-
- {0x22,0x66,0x44,0x22},
- {0x2a,0x7e,0x54,0x2a},
- {0x90,0xab,0x3b,0x90},
- {0x88,0x83,0x0b,0x88},
-
- {0x46,0xca,0x8c,0x46},
- {0xee,0x29,0xc7,0xee},
- {0xb8,0xd3,0x6b,0xb8},
- {0x14,0x3c,0x28,0x14},
-
- {0xde,0x79,0xa7,0xde},
- {0x5e,0xe2,0xbc,0x5e},
- {0x0b,0x1d,0x16,0x0b},
- {0xdb,0x76,0xad,0xdb},
-
- {0xe0,0x3b,0xdb,0xe0},
- {0x32,0x56,0x64,0x32},
- {0x3a,0x4e,0x74,0x3a},
- {0x0a,0x1e,0x14,0x0a},
-
- {0x49,0xdb,0x92,0x49},
- {0x06,0x0a,0x0c,0x06},
- {0x24,0x6c,0x48,0x24},
- {0x5c,0xe4,0xb8,0x5c},
-
- {0xc2,0x5d,0x9f,0xc2},
- {0xd3,0x6e,0xbd,0xd3},
- {0xac,0xef,0x43,0xac},
- {0x62,0xa6,0xc4,0x62},
-
- {0x91,0xa8,0x39,0x91},
- {0x95,0xa4,0x31,0x95},
- {0xe4,0x37,0xd3,0xe4}