From 033cec5f7519f2f8b6e746308186897f30306ab7 Mon Sep 17 00:00:00 2001 From: Tom St Denis Date: Wed, 24 Dec 2003 18:59:57 +0000 Subject: [PATCH] added libtomcrypt-0.92 --- aes.c | 45 +- blowfish.c | 42 +- cast5.c | 60 +- changes | 56 ++ config.pl | 15 +- crypt.c | 21 +- crypt.out | 47 +- crypt.pdf | Bin 411256 -> 456096 bytes crypt.tex | 274 ++++++- demos/encrypt.c | 8 +- demos/hashsum.c | 1 + demos/test.c | 109 ++- demos/tv_gen.c | 128 +++- demos/x86_prof.c | 90 ++- des.c | 16 +- dh.c | 51 +- dh_sys.c | 62 +- dsa.c | 498 ++++++++++++ ecc.c | 98 +-- ecc_sys.c | 11 +- hash.c | 5 +- hmac.c | 37 +- makefile | 16 +- makefile.cygwin_dll | 32 + makefile.msvc | 5 +- makefile.out | 6 +- md2.c | 18 +- md4.c | 50 +- md5.c | 47 +- mpi.c | 759 +++++++++++-------- mycrypt.h | 4 +- mycrypt_cfg.h | 8 +- mycrypt_cipher.h | 18 + mycrypt_custom.h | 5 +- mycrypt_hash.h | 135 +++- mycrypt_misc.h | 3 +- mycrypt_pk.h | 26 + noekeon.c | 141 +++- notes/cipher_tv.txt | 1755 +++++++++++++++++++++++++++++++++++++++++++ notes/hash_tv.txt | 1605 +++++++++++++++++++++++++++++++++++++++ notes/hmac_tv.txt | 1605 +++++++++++++++++++++++++++++++++++++++ notes/omac_tv.txt | 407 ++++++++++ notes/tech0003.txt | 24 +- omac.c | 244 ++++++ prime.c | 72 +- rc2.c | 20 +- rc5.c | 18 +- rc6.c | 16 +- rmd128.c | 47 +- rmd160.c | 47 +- rsa.c | 17 +- safer+.c | 17 +- safer.c | 16 +- sha1.c | 53 +- sha224.c | 82 ++ sha256.c | 82 +- sha384.c | 16 +- sha512.c | 45 +- skipjack.c | 279 +++++++ strings.c | 22 + tiger.c | 43 +- tommath.h | 55 +- twofish.c | 325 +++----- twofish_tab.c | 477 ++++++++++++ xtea.c | 8 +- yarrow.c | 32 +- 66 files changed, 9123 insertions(+), 1253 deletions(-) create mode 100644 dsa.c create mode 100644 makefile.cygwin_dll create mode 100644 notes/cipher_tv.txt create mode 100644 notes/hash_tv.txt create mode 100644 notes/hmac_tv.txt create mode 100644 notes/omac_tv.txt create mode 100644 omac.c create mode 100644 sha224.c create mode 100644 skipjack.c create mode 100644 twofish_tab.c diff --git a/aes.c b/aes.c index 4a8d660..42ccf85 100644 --- a/aes.c +++ b/aes.c @@ -47,7 +47,7 @@ const struct _cipher_descriptor aes_desc = int rijndael_setup(const unsigned char *key, int keylen, int rounds, symmetric_key *skey) { - int i = 0, j; + int i, j; ulong32 temp, *rk, *rrk; _ARGCHK(key != NULL); @@ -64,6 +64,7 @@ int rijndael_setup(const unsigned char *key, int keylen, int rounds, symmetric_k skey->rijndael.Nr = 10 + ((keylen/8)-2)*2; /* setup the forward key */ + i = 0; rk = skey->rijndael.eK; LOAD32H(rk[0], key ); LOAD32H(rk[1], key + 4); @@ -83,7 +84,7 @@ int rijndael_setup(const unsigned char *key, int keylen, int rounds, symmetric_k rk[6] = rk[2] ^ rk[5]; rk[7] = rk[3] ^ rk[6]; if (++i == 10) { - break; + break; } rk += 4; } @@ -233,7 +234,11 @@ int rijndael_setup(const unsigned char *key, int keylen, int rounds, symmetric_k return CRYPT_OK; } -void rijndael_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +#ifdef CLEAN_STACK +static void _rijndael_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +#else +void rijndael_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +#endif { ulong32 s0, s1, s2, s3, t0, t1, t2, t3, *rk; int Nr, r; @@ -259,8 +264,6 @@ void rijndael_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_ */ r = Nr >> 1; for (;;) { - -/* Both of these blocks are equivalent except the top is more friendlier for x86 processors */ t0 = Te0[byte(s0, 3)] ^ Te1[byte(s1, 2)] ^ @@ -350,7 +353,20 @@ void rijndael_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_ STORE32H(s3, ct+12); } -void rijndael_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) { +#ifdef CLEAN_STACK +void rijndael_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +{ + _rijndael_ecb_encrypt(pt, ct, skey); + burn_stack(sizeof(unsigned long)*8 + sizeof(unsigned long*) + sizeof(int)*2); +} +#endif + +#ifdef CLEAN_STACK +static void _rijndael_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +#else +void rijndael_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +#endif +{ ulong32 s0, s1, s2, s3, t0, t1, t2, t3, *rk; int Nr, r; @@ -467,6 +483,15 @@ void rijndael_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_ STORE32H(s3, pt+12); } + +#ifdef CLEAN_STACK +void rijndael_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +{ + _rijndael_ecb_decrypt(ct, pt, skey); + burn_stack(sizeof(unsigned long)*8 + sizeof(unsigned long*) + sizeof(int)*2); +} +#endif + int rijndael_test(void) { #ifndef LTC_TEST @@ -508,7 +533,7 @@ int rijndael_test(void) symmetric_key key; unsigned char tmp[2][16]; - int i; + int i, y; for (i = 0; i < (int)(sizeof(tests)/sizeof(tests[0])); i++) { zeromem(&key, sizeof(key)); @@ -537,6 +562,12 @@ int rijndael_test(void) #endif return CRYPT_FAIL_TESTVECTOR; } + + /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ + for (y = 0; y < 16; y++) tmp[0][y] = 0; + for (y = 0; y < 1000; y++) rijndael_ecb_encrypt(tmp[0], tmp[0], &key); + for (y = 0; y < 1000; y++) rijndael_ecb_decrypt(tmp[0], tmp[0], &key); + for (y = 0; y < 16; y++) if (tmp[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; } return CRYPT_OK; #endif diff --git a/blowfish.c b/blowfish.c index aba8a02..80284b8 100644 --- a/blowfish.c +++ b/blowfish.c @@ -304,7 +304,10 @@ int blowfish_setup(const unsigned char *key, int keylen, int num_rounds, for (x = y = 0; x < 18; x++) { A = 0; for (z = 0; z < 4; z++) { - A = (A << 8) | ((ulong32)key[y++ % keylen]); + A = (A << 8) | ((ulong32)key[y++] & 255); + if (y == (ulong32)keylen) { + y = 0; + } } skey->blowfish.K[x] = ORIG_P[x] ^ A; } @@ -347,13 +350,6 @@ int blowfish_setup(const unsigned char *key, int keylen, int num_rounds, return CRYPT_OK; } -#if defined(__GNUC__) - #define S1 key->blowfish.S[0] - #define S2 key->blowfish.S[1] - #define S3 key->blowfish.S[2] - #define S4 key->blowfish.S[3] -#endif - #define F(x) ((S1[byte(x,3)] + S2[byte(x,2)]) ^ S3[byte(x,1)]) + S4[byte(x,0)] #ifdef CLEAN_STACK @@ -364,20 +360,16 @@ void blowfish_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_ { ulong32 L, R; int r; -#if !defined(TWOFISH_SMALL) && !defined(__GNUC__) - ulong32 *S1, *S2, *S3, *S4; -#endif + ulong32 *S1, *S2, *S3, *S4; _ARGCHK(pt != NULL); _ARGCHK(ct != NULL); _ARGCHK(key != NULL); - -#if !defined(TWOFISH_SMALL) && !defined(__GNUC__) + S1 = key->blowfish.S[0]; S2 = key->blowfish.S[1]; S3 = key->blowfish.S[2]; S4 = key->blowfish.S[3]; -#endif /* load it */ LOAD32H(L, &pt[0]); @@ -416,20 +408,16 @@ void blowfish_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_ { ulong32 L, R; int r; -#if !defined(TWOFISH_SMALL) && !defined(__GNUC__) - ulong32 *S1, *S2, *S3, *S4; -#endif + ulong32 *S1, *S2, *S3, *S4; _ARGCHK(pt != NULL); _ARGCHK(ct != NULL); _ARGCHK(key != NULL); -#if !defined(TWOFISH_SMALL) && !defined(__GNUC__) S1 = key->blowfish.S[0]; S2 = key->blowfish.S[1]; S3 = key->blowfish.S[2]; S4 = key->blowfish.S[3]; -#endif /* load it */ LOAD32H(R, &ct[0]); @@ -487,8 +475,8 @@ int blowfish_test(void) { 0x7D, 0x85, 0x6F, 0x9A, 0x61, 0x30, 0x63, 0xF2} } }; - unsigned char buf[2][8]; - int x; + unsigned char tmp[2][8]; + int x, y; for (x = 0; x < (int)(sizeof(tests) / sizeof(tests[0])); x++) { /* setup key */ @@ -497,13 +485,19 @@ int blowfish_test(void) } /* encrypt and decrypt */ - blowfish_ecb_encrypt(tests[x].pt, buf[0], &key); - blowfish_ecb_decrypt(buf[0], buf[1], &key); + blowfish_ecb_encrypt(tests[x].pt, tmp[0], &key); + blowfish_ecb_decrypt(tmp[0], tmp[1], &key); /* compare */ - if ((memcmp(buf[0], tests[x].ct, 8) != 0) || (memcmp(buf[1], tests[x].pt, 8) != 0)) { + if ((memcmp(tmp[0], tests[x].ct, 8) != 0) || (memcmp(tmp[1], tests[x].pt, 8) != 0)) { return CRYPT_FAIL_TESTVECTOR; } + + /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ + for (y = 0; y < 8; y++) tmp[0][y] = 0; + for (y = 0; y < 1000; y++) blowfish_ecb_encrypt(tmp[0], tmp[0], &key); + for (y = 0; y < 1000; y++) blowfish_ecb_decrypt(tmp[0], tmp[0], &key); + for (y = 0; y < 8; y++) if (tmp[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; } return CRYPT_OK; #endif diff --git a/cast5.c b/cast5.c index 2d79b9d..ab2ccc5 100644 --- a/cast5.c +++ b/cast5.c @@ -381,7 +381,11 @@ static const ulong32 S8[256] = { #define GB(x, i) (((x[(15-i)>>2])>>(unsigned)(8*((15-i)&3)))&255) #endif +#ifdef CLEAN_STACK +static int _cast5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) +#else int cast5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) +#endif { ulong32 x[4], z[4]; unsigned char buf[16]; @@ -431,7 +435,6 @@ int cast5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_ skey->cast5.K[i++] = S5[GB(x, 0x5)] ^ S6[GB(x, 0x4)] ^ S7[GB(x, 0xa)] ^ S8[GB(x, 0xb)] ^ S8[GB(x, 0x7)]; /* second half */ - z[3] = x[3] ^ S5[GB(x, 0xD)] ^ S6[GB(x, 0xF)] ^ S7[GB(x, 0xC)] ^ S8[GB(x, 0xE)] ^ S7[GB(x, 0x8)]; z[2] = x[1] ^ S5[GB(z, 0x0)] ^ S6[GB(z, 0x2)] ^ S7[GB(z, 0x1)] ^ S8[GB(z, 0x3)] ^ S8[GB(x, 0xA)]; z[1] = x[0] ^ S5[GB(z, 0x7)] ^ S6[GB(z, 0x6)] ^ S7[GB(z, 0x5)] ^ S8[GB(z, 0x4)] ^ S5[GB(x, 0x9)]; @@ -462,6 +465,16 @@ int cast5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_ return CRYPT_OK; } +#ifdef CLEAN_STACK +int cast5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) +{ + int z; + z = _cast5_setup(key, keylen, num_rounds, skey); + burn_stack(sizeof(ulong32)*8 + 16 + sizeof(int)*2); + return z; +} +#endif + #ifdef _MSC_VER #define INLINE __inline #else @@ -492,7 +505,11 @@ INLINE static ulong32 FIII(ulong32 R, ulong32 Km, ulong32 Kr) return ((S1[byte(I, 3)] + S2[byte(I,2)]) ^ S3[byte(I,1)]) - S4[byte(I,0)]; } +#ifdef CLEAN_STACK +static void _cast5_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key) +#else void cast5_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key) +#endif { ulong32 R, L; @@ -502,7 +519,6 @@ void cast5_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key LOAD32H(L,&pt[0]); LOAD32H(R,&pt[4]); - L ^= FI(R, key->cast5.K[0], key->cast5.K[16]); R ^= FII(L, key->cast5.K[1], key->cast5.K[17]); L ^= FIII(R, key->cast5.K[2], key->cast5.K[18]); @@ -525,7 +541,20 @@ void cast5_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key STORE32H(L,&ct[4]); } + +#ifdef CLEAN_STACK +void cast5_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key) +{ + _cast5_ecb_encrypt(pt,ct,key); + burn_stack(sizeof(ulong32)*3); +} +#endif + +#ifdef CLEAN_STACK +static void _cast5_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key) +#else void cast5_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key) +#endif { ulong32 R, L; @@ -535,14 +564,12 @@ void cast5_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key LOAD32H(R,&ct[0]); LOAD32H(L,&ct[4]); - if (key->cast5.keylen > 10) { R ^= FI(L, key->cast5.K[15], key->cast5.K[31]); L ^= FIII(R, key->cast5.K[14], key->cast5.K[30]); R ^= FII(L, key->cast5.K[13], key->cast5.K[29]); L ^= FI(R, key->cast5.K[12], key->cast5.K[28]); } - R ^= FIII(L, key->cast5.K[11], key->cast5.K[27]); L ^= FII(R, key->cast5.K[10], key->cast5.K[26]); R ^= FI(L, key->cast5.K[9], key->cast5.K[25]); @@ -555,11 +582,18 @@ void cast5_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key L ^= FIII(R, key->cast5.K[2], key->cast5.K[18]); R ^= FII(L, key->cast5.K[1], key->cast5.K[17]); L ^= FI(R, key->cast5.K[0], key->cast5.K[16]); - STORE32H(L,&pt[0]); STORE32H(R,&pt[4]); } +#ifdef CLEAN_STACK +void cast5_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key) +{ + _cast5_ecb_decrypt(ct,pt,key); + burn_stack(sizeof(ulong32)*3); +} +#endif + int cast5_test(void) { #ifndef LTC_TEST @@ -587,19 +621,24 @@ int cast5_test(void) {0x7A, 0xC8, 0x16, 0xD1, 0x6E, 0x9B, 0x30, 0x2E} } }; - int i, err; + int i, y, err; symmetric_key key; - unsigned char buf[8], buf2[8]; + unsigned char tmp[2][8]; for (i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) { if ((err = cast5_setup(tests[i].key, tests[i].keylen, 0, &key)) != CRYPT_OK) { return err; } - cast5_ecb_encrypt(tests[i].pt, buf, &key); - cast5_ecb_decrypt(buf, buf2, &key); - if ((memcmp(buf, tests[i].ct, 8) != 0) || (memcmp(buf2, tests[i].pt, 8) != 0)) { + cast5_ecb_encrypt(tests[i].pt, tmp[0], &key); + cast5_ecb_decrypt(tmp[0], tmp[1], &key); + if ((memcmp(tmp[0], tests[i].ct, 8) != 0) || (memcmp(tmp[1], tests[i].pt, 8) != 0)) { return CRYPT_FAIL_TESTVECTOR; } + /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ + for (y = 0; y < 8; y++) tmp[0][y] = 0; + for (y = 0; y < 1000; y++) cast5_ecb_encrypt(tmp[0], tmp[0], &key); + for (y = 0; y < 1000; y++) cast5_ecb_decrypt(tmp[0], tmp[0], &key); + for (y = 0; y < 8; y++) if (tmp[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; } return CRYPT_OK; @@ -618,4 +657,3 @@ int cast5_keysize(int *desired_keysize) } #endif - diff --git a/changes b/changes index 002e897..291c8d8 100644 --- a/changes +++ b/changes @@ -1,3 +1,59 @@ +Dec 24th, 2003 +v0.92 -- Updated the config.pl script so the options have more details. + -- Updated demos/tv_gen to include RIPEMD hashes + -- Updated Twofish so when TWOFISH_ALL_TABLES is defined a pre-computed RS table + is included [speedup: slight, about 4k cycles on my Athlon]. + -- Re-wrote the twofish large key generation [the four 8x32 key dependent tables]. Now about twice as fast. + With both optimizations [e.g. TWOFISH_ALL_TABLES defined] a 128-bit Twofish key can now be scheduled + in 26,000 cycles on my Athlon XP [as opposed to 49,000 before] when optimized for size. + -- config.pl has been updated so rmd128.o and rmd160.o are objects included in the build [oops] + -- Andrew Mann found a bug in rsa_exptmod() which wouldn't indicate if the wrong type of key was specified + (e.g. not PK_PRIVATE or PK_PUBLIC) + -- Fixed up demos/x86_prof so it sorts the output now :-) + -- The project is now powered by radioactive rubber pants. + -- Fixed dh_encrypt_key() so if you pass it a hash with a smaller output than the input key it + will return CRYPT_INVALID_HASH [to match what ecc_encrypt_key() will do] + -- Merge the store/encrypt key part of ecc_encrypt_key() as per dh_encrypt_key() [can you guess what I'm upto?] + -- Massive updates to the prime generation code. I use the LTM random prime functions [and provide a nice + interface between the LTC PRNG's and the LTM generic prng prototype]. I also use a variable number of tests + depending on the input size. This nicely speeds up most prime generation/testing within the library. + -- Added SHA-224 to the list of hashes. + -- Made HMAC test vectors constant and static [takes ROM space instead of RAM] + -- This release was brought to you by the letter P which stands for Patent Infringement. + -- Added generic HASH_PROCESS macro to mycrypt_hash.h which simplifies the hash "process" functions + I also optimized the compression functions of all but MD2 to not perform input copies when avoidable. + -- Removed the division from the Blowfish setup function [dropped 3k cycles on my Athlon] + -- Added stack cleaning to rijndael, cast5 so now all ciphers have CLEAN_STACK code. + -- Added Skipjack to the list of ciphers [made appropriate changes to demos/test.c, demos/tv_gen.c and + demos/x86_prof.c] + -- Added mechanical testing to cipher test vector routines. Now it encrypts 1000 times, then decrypts and + compares. Any fault (e.g. bug in code, compiler) in the routines is likely to show through. Doesn't + stress test the key gen though... + -- Matt Johnson found a bug in the blowfish.c apparently I was out of my mind and put twofish defines in there + The code now builds with any config. Thanks. + -- Added OMAC1 Message Authentication Code support to the library. + -- Re-prototyped the hash "process" and "done" to prevent buffer overflows [which don't seem easy to exploit]. + Updated HMAC code to use them too. Hazaa! + -- Fixed bug in ECC code which wouldn't do an _ARGCHK on stat in ecc_verify_hash(). + -- Fixed [temp fix] bug in all PK where the OUTPUT_BIGNUM macros would not trap errors on the to_unsigned_bin + conversion [now returns CRYPT_MEM, will fix it up better later] + -- Added DSA to the list of supported PK algorithms. + -- Fixed up various ciphers to &255 the input key bytes where required [e.g. where used to index a table] to prevent + problems on platforms where CHAR_BIT != 8 + -- Merged in LibTomMath v0.28 + -- Updated demos/x86_prof.c to use Yarrow during the key sched testing [was horribly slow on platforms with blockable + /dev/random]. + -- Added OMAC/HMAC tests to demos/tv_gen and I now store the output of this in notes/ + -- Fixed a bug in config.pl that wouldn't have TWOFISH_TABLES defined by default (too many commas on the line) + -- Fixed bug in hmac_done(). Apparently FIPS-198 [HMAC] specifies that the output can be truncated. My code + would not support that (does now just like the new OMAC code). + -- Removed "hashsize" from hmac_state as it wasn't being used. + -- Made demos/test.c stop if OMAC or HMAC tests fail (instead of just printing a failed message and keep going). + -- Updated notes/tech0003.txt to take into account the existence of Skipjack [also I fixed a few typos]. + -- Slight changes to Noekeon, with SMALL_CODE undefined it uses a fully unrolled version. Dropped +10 cycles/byte + on my Athlon (35 cycles per byte or 410.4Mbit/sec at 1795Mhz) + -- Added _ARGCHK() calls to is_prime() for the two input pointers. + Sept 25th, 2003 v0.91 -- HMAC fix of 0.90 was incorrect for keys larger than the block size of the hash. -- Added error CRYPT_FILE_NOTFOUND for the file [hmac/hash] routines. diff --git a/config.pl b/config.pl index 4aa8695..3fefaaf 100644 --- a/config.pl +++ b/config.pl @@ -34,12 +34,14 @@ "SAFER,Include Safer-64 block ciphers,y", "RIJNDAEL,Include Rijndael (AES) block cipher,y", "XTEA,Include XTEA block cipher,y", - "TWOFISH,Include Twofish block cipher,y", - "TWOFISH_SMALL,Include Use a low ram variant of Twofish,n", - "TWOFISH_TABLES,Include Use precomputed tables to speed up the low-ram variant,y", + "TWOFISH,Include Twofish block cipher (default: fast),y", + "TWOFISH_SMALL,Use a low ram variant of Twofish (slow cipher+keyschedule!),n", + "TWOFISH_TABLES,Use precomputed tables (fast cipher and faster keychedule but adds ~3.3KB to the size),y", + "TWOFISH_ALL_TABLES,Speed up the key schedule a little (adds ~8KB ontop of TWOFISH_TABLES to the size),n", "DES,Include DES and 3DES block ciphers,y", "CAST5,Include CAST5 (aka CAST-128) block cipher,y", "NOEKEON,Include Noekeon block cipher,y", + "SKIPJACK,Include Skipjack block cipher,y", "CFB,Include CFB block mode of operation,y", "OFB,Include OFB block mode of operation,y", @@ -50,6 +52,7 @@ "SHA512,Include SHA512 one-way hash,y", "SHA384,Include SHA384 one-way hash (requires SHA512),y", "SHA256,Include SHA256 one-way hash,y", + "SHA224,Include SHA224 one-way hash (requires SHA256),y", "TIGER,Include TIGER one-way hash,y", "SHA1,Include SHA1 one-way hash,y", "MD5,Include MD5 one-way hash,y", @@ -58,6 +61,7 @@ "RIPEMD128,Include RIPEMD-128 one-way hash,y", "RIPEMD160,Include RIPEMD-160 one-way hash,y", "HMAC,Include Hash based Message Authentication Support,y", + "OMAC,Include OMAC1 Message Authentication Support,y", "BASE64,Include Base64 encoding support,y", @@ -68,6 +72,7 @@ "TRY_URANDOM_FIRST,Try /dev/urandom before /dev/random?,n", "MRSA,Include RSA public key support,y", + "MDSA,Include DSA public key support,y", "MDH,Include Diffie-Hellman (over Z/pZ) public key support,y", "MECC,Include Eliptic Curve public key crypto support,y", "KR,Include Keyring support (groups all three PK systems),n", @@ -146,10 +151,10 @@ for (@settings) { # output objects print OUT "\ndefault: library\n\n"; -print OUT "OBJECTS = keyring.o gf.o mem.o sprng.o ecc.o base64.o dh.o rsa.o bits.o yarrow.o cfb.o ofb.o ecb.o ctr.o cbc.o hash.o tiger.o sha1.o md5.o md4.o md2.o sha256.o sha512.o xtea.o aes.o des.o safer_tab.o safer.o safer+.o rc4.o rc2.o rc6.o rc5.o cast5.o noekeon.o blowfish.o crypt.o mpi.o prime.o twofish.o packet.o hmac.o strings.o \n\n"; +print OUT "OBJECTS = keyring.o gf.o mem.o sprng.o ecc.o base64.o dh.o rsa.o bits.o yarrow.o cfb.o ofb.o ecb.o ctr.o cbc.o hash.o tiger.o sha1.o md5.o md4.o md2.o sha256.o sha512.o xtea.o aes.o des.o safer_tab.o safer.o safer+.o rc4.o rc2.o rc6.o rc5.o cast5.o noekeon.o blowfish.o crypt.o mpi.o prime.o twofish.o packet.o hmac.o strings.o rmd128.o rmd160.o skipjack.o omac.o dsa.o\n\n"; # some depends -print OUT "rsa.o: rsa_sys.c\ndh.o: dh_sys.c\necc.o: ecc_sys.c\n\n"; +print OUT "rsa.o: rsa_sys.c\ndh.o: dh_sys.c\necc.o: ecc_sys.c\naes.o: aes.c aes_tab.c\ntwofish.o: twofish.c twofish_tab.c\nsha512.o: sha384.c sha512.c\nsha256.o: sha256.c sha224.c\n\n"; # targets print OUT "library: \$(OBJECTS)\n\t \$(AR) r libtomcrypt.a \$(OBJECTS)\n\t ranlib libtomcrypt.a\n\n"; diff --git a/crypt.c b/crypt.c index 4c4a07f..a64248f 100644 --- a/crypt.c +++ b/crypt.c @@ -110,10 +110,10 @@ struct _prng_descriptor prng_descriptor[TAB_SIZE] = { void crypt_argchk(char *v, char *s, int d) { #ifdef SONY_PS2 - printf("_ARGCHK '%s' failure on line %d of file %s\n", + printf("_ARGCHK '%s' failure on line %d of file %s\n", v, d, s); -#else - fprintf(stderr, "_ARGCHK '%s' failure on line %d of file %s\n", +#else + fprintf(stderr, "_ARGCHK '%s' failure on line %d of file %s\n", v, d, s); #endif (void)raise(SIGABRT); @@ -345,7 +345,7 @@ int prng_is_valid(int idx) return CRYPT_OK; } -const char *crypt_build_settings = +const char *crypt_build_settings = "LibTomCrypt " SCRYPT "\n\n" "Endianess: " #if defined(ENDIAN_NEUTRAL) @@ -400,7 +400,7 @@ const char *crypt_build_settings = " Twofish " #if defined(TWOFISH_SMALL) && defined(TWOFISH_TABLES) "(small, tables)\n" - #elif defined(TWOFISH_SMALL) + #elif defined(TWOFISH_SMALL) "(small)\n" #elif defined(TWOFISH_TABLES) "(tables)\n" @@ -417,6 +417,9 @@ const char *crypt_build_settings = #if defined(NOEKEON) " Noekeon\n" #endif +#if defined(SKIPJACK) + " Skipjack\n" +#endif "\nHashes built-in:\n" #if defined(SHA512) @@ -428,6 +431,9 @@ const char *crypt_build_settings = #if defined(SHA256) " SHA-256\n" #endif +#if defined(SHA224) + " SHA-224\n" +#endif #if defined(TIGER) " TIGER\n" #endif @@ -446,6 +452,9 @@ const char *crypt_build_settings = #if defined(RIPEMD128) " RIPEMD128\n" #endif +#if defined(RIPEMD160) + " RIPEMD160\n" +#endif "\nBlock Chaining Modes:\n" #if defined(CFB) @@ -524,7 +533,7 @@ const char *crypt_build_settings = #endif #if defined(LTC_TEST) " LTC_TEST " -#endif +#endif "\n" "\n\n\n" diff --git a/crypt.out b/crypt.out index 7a3feac..ffd5f0e 100644 --- a/crypt.out +++ b/crypt.out @@ -29,6 +29,7 @@ \BOOKMARK [1][-]{section.4.2}{Hash Descriptors}{chapter.4} \BOOKMARK [2][-]{subsection.4.2.1}{Notice}{section.4.2} \BOOKMARK [1][-]{section.4.3}{Hash based Message Authenication Codes}{chapter.4} +\BOOKMARK [1][-]{section.4.4}{OMAC Support}{chapter.4} \BOOKMARK [0][-]{chapter.5}{Pseudo-Random Number Generators}{} \BOOKMARK [1][-]{section.5.1}{Core Functions}{chapter.5} \BOOKMARK [2][-]{subsection.5.1.1}{Remarks}{section.5.1} @@ -53,24 +54,30 @@ \BOOKMARK [1][-]{section.8.2}{Core Functions}{chapter.8} \BOOKMARK [1][-]{section.8.3}{ECC Packet}{chapter.8} \BOOKMARK [1][-]{section.8.4}{ECC Keysizes}{chapter.8} -\BOOKMARK [0][-]{chapter.9}{Public Keyrings}{} +\BOOKMARK [0][-]{chapter.9}{Digital Signature Algorithm}{} \BOOKMARK [1][-]{section.9.1}{Introduction}{chapter.9} -\BOOKMARK [1][-]{section.9.2}{The Keyring API}{chapter.9} -\BOOKMARK [0][-]{chapter.10}{GF\(2w\) Math Routines}{} -\BOOKMARK [0][-]{chapter.11}{Miscellaneous}{} -\BOOKMARK [1][-]{section.11.1}{Base64 Encoding and Decoding}{chapter.11} -\BOOKMARK [1][-]{section.11.2}{The Multiple Precision Integer Library \(MPI\)}{chapter.11} -\BOOKMARK [2][-]{subsection.11.2.1}{Binary Forms of ``mp\137int'' Variables}{section.11.2} -\BOOKMARK [2][-]{subsection.11.2.2}{Primality Testing}{section.11.2} -\BOOKMARK [0][-]{chapter.12}{Programming Guidelines}{} -\BOOKMARK [1][-]{section.12.1}{Secure Pseudo Random Number Generators}{chapter.12} -\BOOKMARK [1][-]{section.12.2}{Preventing Trivial Errors}{chapter.12} -\BOOKMARK [1][-]{section.12.3}{Registering Your Algorithms}{chapter.12} -\BOOKMARK [1][-]{section.12.4}{Key Sizes}{chapter.12} -\BOOKMARK [2][-]{subsection.12.4.1}{Symmetric Ciphers}{section.12.4} -\BOOKMARK [2][-]{subsection.12.4.2}{Assymetric Ciphers}{section.12.4} -\BOOKMARK [1][-]{section.12.5}{Thread Safety}{chapter.12} -\BOOKMARK [0][-]{chapter.13}{Configuring the Library}{} -\BOOKMARK [1][-]{section.13.1}{Introduction}{chapter.13} -\BOOKMARK [1][-]{section.13.2}{mycrypt\137cfg.h}{chapter.13} -\BOOKMARK [1][-]{section.13.3}{The Configure Script}{chapter.13} +\BOOKMARK [1][-]{section.9.2}{Key Generation}{chapter.9} +\BOOKMARK [1][-]{section.9.3}{Key Verification}{chapter.9} +\BOOKMARK [1][-]{section.9.4}{Signatures}{chapter.9} +\BOOKMARK [1][-]{section.9.5}{Import and Export}{chapter.9} +\BOOKMARK [0][-]{chapter.10}{Public Keyrings}{} +\BOOKMARK [1][-]{section.10.1}{Introduction}{chapter.10} +\BOOKMARK [1][-]{section.10.2}{The Keyring API}{chapter.10} +\BOOKMARK [0][-]{chapter.11}{GF\(2w\) Math Routines}{} +\BOOKMARK [0][-]{chapter.12}{Miscellaneous}{} +\BOOKMARK [1][-]{section.12.1}{Base64 Encoding and Decoding}{chapter.12} +\BOOKMARK [1][-]{section.12.2}{The Multiple Precision Integer Library \(MPI\)}{chapter.12} +\BOOKMARK [2][-]{subsection.12.2.1}{Binary Forms of ``mp\137int'' Variables}{section.12.2} +\BOOKMARK [2][-]{subsection.12.2.2}{Primality Testing}{section.12.2} +\BOOKMARK [0][-]{chapter.13}{Programming Guidelines}{} +\BOOKMARK [1][-]{section.13.1}{Secure Pseudo Random Number Generators}{chapter.13} +\BOOKMARK [1][-]{section.13.2}{Preventing Trivial Errors}{chapter.13} +\BOOKMARK [1][-]{section.13.3}{Registering Your Algorithms}{chapter.13} +\BOOKMARK [1][-]{section.13.4}{Key Sizes}{chapter.13} +\BOOKMARK [2][-]{subsection.13.4.1}{Symmetric Ciphers}{section.13.4} +\BOOKMARK [2][-]{subsection.13.4.2}{Assymetric Ciphers}{section.13.4} +\BOOKMARK [1][-]{section.13.5}{Thread Safety}{chapter.13} +\BOOKMARK [0][-]{chapter.14}{Configuring the Library}{} +\BOOKMARK [1][-]{section.14.1}{Introduction}{chapter.14} +\BOOKMARK [1][-]{section.14.2}{mycrypt\137cfg.h}{chapter.14} +\BOOKMARK [1][-]{section.14.3}{The Configure Script}{chapter.14} diff --git a/crypt.pdf b/crypt.pdf index 8784eaeaea94c5ff60df64f1ada91c09c53794b8..304e47803511d9e8a8b00e602ffb633e7d394ab6 100644 GIT binary patch delta 357036 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

(3(B+Ei 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�x-BFDfoNY(9Ekcw2hwI>73hHxtW z95I45yy#GwrMJY}1)w(qQ@MYt85cKXw7bU?)Zmq8LM zd)lDRzYmf~r-6yFIX+kQ|26ghFC(3mm5ZK{GgTLa%J#2a(%;5Oe{Y%otxNjH?-c)A z$MtuN^RKC@f58RP{B=J&D`plZj(_;_|Lm-q6bz+tjSzHGD5S_rP03;lOKy$ZbTv^( zm1IERfV@O}KN~9`($@MUO`V~P6DyYo*=-U&*jTPwsPm49kn$_jdaV(prp5_H=YOxuRN}>2dI#IJR)$yp=wN*vl`ygjfYM$SOS^z2(HfeG}U`F}+*Or&ude<LI$TC9I8tfHau-?-(*0BQ4)p%`itbLJLY zbj{F!^AcD4F_o!NA_(~tndy6$$QDzVLhWlfL6>){lf=1Gw?ClEI3!!T9rir(i-w~S zIg3!zL_&a2)M#(hz#JH!v$3L*7xGRq)Vzzl_BM;#=2iIBeJAA6QYM9+21jlXMd

Zt;F@dLRzRK+W^{x_OJ{fO$OLVfrGD3=$W|)b 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 z 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�EtsUO0?Q;le=u`NZZ7vXydu5lixcIFD=+Ce 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 delta 315905 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

7r)?$cZu_>`%W{7Ak?%DFlD|hqTP;tX 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%0ApWVXY|8#f|V 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%0AB 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≫5 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 J +int main(void) +{ + int idx, errno; + omac_state omac; + unsigned char key[16], dst[MAXBLOCKSIZE]; + unsigned long dstlen; + + /* register Rijndael */ + if (register_cipher(&rijndael_desc) == -1) { + printf("Error registering Rijndael\n"); + return -1; + } + + /* get index of Rijndael in cipher descriptor table */ + idx = find_cipher("rijndael"); + + /* we would make up our symmetric key in "key[]" here */ + + /* start the OMAC */ + if ((errno = omac_init(&omac, idx, key, 16)) != CRYPT_OK) { + printf("Error setting up omac: %s\n", error_to_string(errno)); + return -1; + } + + /* process a few octets */ + if((errno = omac_process(&omac, "hello", 5) != CRYPT_OK) { + printf("Error processing omac: %s\n", error_to_string(errno)); + return -1; + } + + /* get result (presumably to use it somehow...) */ + dstlen = sizeof(dst); + if ((errno = omac_done(&omac, dst, &dstlen)) != CRYPT_OK) { + printf("Error finishing omac: %s\n", error_to_string(errno)); + return -1; + } + printf("The omac is %lu bytes long\n", dstlen); + + /* return */ + return 0; +} +\end{verbatim} +\end{small} + \chapter{Pseudo-Random Number Generators} \section{Core Functions} @@ -1397,6 +1525,10 @@ This loads the bignum from ``in'' as a big endian word in the format PKCS specif in ``out'' and the size of the result in ``outlen''. ``which'' is set to {\bf PK\_PUBLIC} to use ``e'' (i.e. for encryption/verifying) and set to {\bf PK\_PRIVATE} to use ``d'' as the exponent (i.e. for decrypting/signing). +Note that this function does not perform padding on the input (as per PKCS). So if you send in ``0000001'' you will +get ``01'' back (when you do the opposite operation). Make sure you pad properly which usually involves setting the msb to +a non-zero value. + \section{Packet Routines} To encrypt or decrypt a symmetric key using RSA the following functions are provided. The idea is that you make up a random symmetric key and use that to encode your message. By RSA encrypting the symmetric key you can send it to a @@ -1819,6 +1951,132 @@ you have 160-bits of security (e.g. as if you signed with SHA-1). The library will not warn you if you make this mistake so it is important to check yourself before using the signatures. +\chapter{Digital Signature Algorithm} +\section{Introduction} +The Digital Signature Algorithm (or DSA) is a variant of the ElGamal Signature scheme which has been modified to +reduce the bandwidth of a signature. For example, to have ``80-bits of security'' with ElGamal you need a group of +order at least 1024-bits. With DSA you need a group of order at least 160-bits. By comparison the ElGamal signature +would require at least 256 bytes where as the DSA signature would require only at least 40 bytes. + +The API for the DSA is essentially the same as the other PK algorithms. Except in the case of DSA no encryption or +decryption routines are provided. + +\section{Key Generation} +To make a DSA key you must call the following function +\begin{verbatim} +int dsa_make_key(prng_state *prng, int wprng, + int group_size, int modulus_size, + dsa_key *key); +\end{verbatim} +The variable ``prng'' is an active PRNG state and ``wprng'' the index to the descriptor. ``group\_size'' and +``modulus\_size'' control the difficulty of forging a signature. Both parameters are in bytes. The larger the +``group\_size'' the more difficult a forgery becomes upto a limit. The value of $group\_size$ is limited by +$15 < group\_size < 1024$ and $modulus\_size - group\_size < 512$. Suggested values for the pairs are as follows. + +\begin{center} +\begin{tabular}{|c|c|c|} +\hline \textbf{Bits of Security} & \textbf{group\_size} & \textbf{modulus\_size} \\ +\hline 80 & 20 & 128 \\ +\hline 120 & 30 & 256 \\ +\hline 140 & 35 & 384 \\ +\hline 160 & 40 & 512 \\ +\hline +\end{tabular} +\end{center} + +When you are finished with a DSA key you can call the following function to free the memory used. +\begin{verbatim} +void dsa_free(dsa_key *key); +\end{verbatim} + +\section{Key Verification} +Each DSA key is composed of the following variables. + +\begin{enumerate} + \item $q$ a small prime of magnitude $256^{group\_size}$. + \item $p = qr + 1$ a large prime of magnitude $256^{modulus\_size}$ where $r$ is a random even integer. + \item $g = h^r \mbox{ (mod }p\mbox{)}$ a generator of order $q$ modulo $p$. $h$ can be any non-trivial random + value. For this library they start at $h = 2$ and step until $g$ is not $1$. + \item $x$ a random secret (the secret key) in the range $1 < x < q$ + \item $y = g^x \mbox{ (mod }p\mbox{)}$ the public key. +\end{enumerate} + +A DSA key is considered valid if it passes all of the following tests. + +\begin{enumerate} + \item $q$ must be prime. + \item $p$ must be prime. + \item $g$ cannot be one of $\lbrace -1, 0, 1 \rbrace$ (modulo $p$). + \item $g$ must be less than $p$. + \item $(p-1) \equiv 0 \mbox{ (mod }q\mbox{)}$. + \item $g^q \equiv 1 \mbox{ (mod }p\mbox{)}$. + \item $1 < y < p - 1$ + \item $y^q \equiv 1 \mbox{ (mod }p\mbox{)}$. +\end{enumerate} + +Tests one and two ensure that the values will at least form a field which is required for the signatures to +function. Tests three and four ensure that the generator $g$ is not set to a trivial value which would make signature +forgery easier. Test five ensures that $q$ divides the order of multiplicative sub-group of $\Z/p\Z$. Test six +ensures that the generator actually generates a prime order group. Tests seven and eight ensure that the public key +is within range and belongs to a group of prime order. Note that test eight does not prove that $g$ generated $y$ only +that $y$ belongs to a multiplicative sub-group of order $q$. + +The following function will perform these tests. + +\begin{verbatim} +int dsa_verify_key(dsa_key *key, int *stat); +\end{verbatim} + +This will test ``key'' and store the result in ``stat''. If the result is $stat = 0$ the DSA key failed one of the tests +and should not be used at all. If the result is $stat = 1$ the DSA key is valid (as far as valid mathematics are concerned). + + + +\section{Signatures} +To generate a DSA signature call the following function + +\begin{verbatim} +int dsa_sign_hash(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, + prng_state *prng, int wprng, dsa_key *key); +\end{verbatim} + +Which will sign the data in ``in'' of length ``inlen'' bytes. The signature is stored in ``out'' and the size +of the signature in ``outlen''. If the signature is longer than the size you initially specify in ``outlen'' nothing +is stored and the function returns an error code. The DSA ``key'' must be of the \textbf{PK\_PRIVATE} persuasion. + +To verify a hash created with that function use the following function + +\begin{verbatim} +int dsa_verify_hash(const unsigned char *sig, unsigned long siglen, + const unsigned char *hash, unsigned long inlen, + int *stat, dsa_key *key); +\end{verbatim} +Which will verify the data in ``hash'' of length ``inlen'' against the signature stored in ``sig'' of length ``siglen''. +It will set ``stat'' to $1$ if the signature is valid, otherwise it sets ``stat'' to $0$. + +\section{Import and Export} + +To export a DSA key so that it can be transported use the following function +\begin{verbatim} +int dsa_export(unsigned char *out, unsigned long *outlen, + int type, + dsa_key *key); +\end{verbatim} +This will export the DSA ``key'' to the buffer ``out'' and set the length in ``outlen'' (which must have been previously +initialized to the maximum buffer size). The ``type`` variable may be either \textbf{PK\_PRIVATE} or \textbf{PK\_PUBLIC} +depending on whether you want to export a private or public copy of the DSA key. + +To import an exported DSA key use the following function + +\begin{verbatim} +int dsa_import(const unsigned char *in, unsigned long inlen, + dsa_key *key); +\end{verbatim} + +This will import the DSA key from the buffer ``in'' of length ``inlen'' to the ``key''. If the process fails the function +will automatically free all of the heap allocated in the process (you don't have to call dsa\_free()). + \chapter{Public Keyrings} \section{Introduction} In order to simplify the usage of the public key algorithms a set of keyring routines have been developed. They let the diff --git a/demos/encrypt.c b/demos/encrypt.c index 3d90330..b6b3e5c 100644 --- a/demos/encrypt.c +++ b/demos/encrypt.c @@ -16,14 +16,14 @@ static const struct _cipher_descriptor *ciphers[] = { &saferp_desc, &rijndael_desc, &twofish_desc, &safer_k64_desc, &safer_sk64_desc, &safer_k128_desc, &safer_sk128_desc, &rc2_desc, - &des_desc, &des3_desc, &cast5_desc, NULL + &des_desc, &des3_desc, &cast5_desc, &skipjack_desc, NULL }; -int usage(void) +int usage(char *name) { int x; - printf("Usage: ./crypt [-d](ecrypt) cipher infile outfile\nCiphers:\n"); + printf("Usage: ./%s [-d](ecrypt) cipher infile outfile\nCiphers:\n", name); for (x = 0; cipher_descriptor[x].name != NULL; x++) { printf("%s\n",cipher_descriptor[x].name); } @@ -73,7 +73,7 @@ int main(int argc, char *argv[]) register_algs(); if (argc < 4) { - return usage(); + return usage(argv[0]); } if (!strcmp(argv[1], "-d")) { diff --git a/demos/hashsum.c b/demos/hashsum.c index 640ffac..27117ae 100644 --- a/demos/hashsum.c +++ b/demos/hashsum.c @@ -76,4 +76,5 @@ void register_algs(void) register_hash(&md2_desc); register_hash(&rmd128_desc); register_hash(&rmd160_desc); + register_hash(&sha224_desc); } diff --git a/demos/test.c b/demos/test.c index 6b6bb44..750600c 100644 --- a/demos/test.c +++ b/demos/test.c @@ -932,7 +932,7 @@ dh_tests (void) } /* test encrypt_key */ - dh_make_key (&prng, find_prng ("yarrow"), 96, &usera); + dh_make_key (&prng, find_prng ("yarrow"), 128, &usera); for (x = 0; x < 16; x++) buf[0][x] = x; y = sizeof (buf[1]); @@ -1337,7 +1337,9 @@ register_all_algs (void) #ifdef NOEKEON register_cipher (&noekeon_desc); #endif - +#ifdef SKIPJACK + register_cipher (&skipjack_desc); +#endif register_cipher (&null_desc); #ifdef TIGER @@ -1358,6 +1360,9 @@ register_all_algs (void) #ifdef SHA256 register_hash (&sha256_desc); #endif +#ifdef SHA224 + register_hash (&sha224_desc); +#endif #ifdef SHA384 register_hash (&sha384_desc); #endif @@ -1712,6 +1717,97 @@ test_errs (void) } +void dsa_tests(void) +{ + unsigned char msg[16], out[1024], out2[1024]; + unsigned long x, y; + int err, stat1, stat2; + dsa_key key, key2; + + /* make a random key */ + if ((err = dsa_make_key(&prng, find_prng("yarrow"), 20, 128, &key)) != CRYPT_OK) { + printf("Error making DSA key: %s\n", error_to_string(err)); + exit(-1); + } + printf("DSA Key Made\n"); + + /* verify it */ + if ((err = dsa_verify_key(&key, &stat1)) != CRYPT_OK) { + printf("Error verifying DSA key: %s\n", error_to_string(err)); + exit(-1); + } + printf("DSA key verification: %s\n", stat1 == 1 ? "passed" : "failed"); + if (stat1 == 0) exit(-1); + + /* sign the message */ + x = sizeof(out); + if ((err = dsa_sign_hash(msg, sizeof(msg), out, &x, &prng, find_prng("yarrow"), &key)) != CRYPT_OK) { + printf("Error signing with DSA key: %s\n", error_to_string(err)); + exit(-1); + } + printf("DSA 160/1024 signature is %lu bytes long\n", x); + + /* verify it once */ + if ((err = dsa_verify_hash(out, x, msg, sizeof(msg), &stat1, &key)) != CRYPT_OK) { + printf("Error verifying with DSA key 1: %s\n", error_to_string(err)); + exit(-1); + } + + /* Modify and verify again */ + msg[0] ^= 1; + if ((err = dsa_verify_hash(out, x, msg, sizeof(msg), &stat2, &key)) != CRYPT_OK) { + printf("Error verifying with DSA key 2: %s\n", error_to_string(err)); + exit(-1); + } + msg[0] ^= 1; + printf("DSA Verification: %d, %d, %s\n", stat1, stat2, (stat1 == 1 && stat2 == 0) ? "passed" : "failed"); + if (!(stat1 == 1 && stat2 == 0)) exit(-1); + + /* test exporting it */ + x = sizeof(out2); + if ((err = dsa_export(out2, &x, PK_PRIVATE, &key)) != CRYPT_OK) { + printf("Error export PK_PRIVATE DSA key: %s\n", error_to_string(err)); + exit(-1); + } + printf("Exported PK_PRIVATE DSA key in %lu bytes\n", x); + if ((err = dsa_import(out2, x, &key2)) != CRYPT_OK) { + printf("Error importing PK_PRIVATE DSA key: %s\n", error_to_string(err)); + exit(-1); + } + /* verify a signature with it */ + if ((err = dsa_verify_hash(out, x, msg, sizeof(msg), &stat1, &key2)) != CRYPT_OK) { + printf("Error verifying with DSA key 3: %s\n", error_to_string(err)); + exit(-1); + } + printf("PRIVATE Import Test: %s\n", stat1 == 1 ? "passed" : "failed"); + if (stat1 == 0) exit(-1); + dsa_free(&key2); + + /* export as public now */ + x = sizeof(out2); + if ((err = dsa_export(out2, &x, PK_PUBLIC, &key)) != CRYPT_OK) { + printf("Error export PK_PUBLIC DSA key: %s\n", error_to_string(err)); + exit(-1); + } + printf("Exported PK_PUBLIC DSA key in %lu bytes\n", x); + if ((err = dsa_import(out2, x, &key2)) != CRYPT_OK) { + printf("Error importing PK_PUBLIC DSA key: %s\n", error_to_string(err)); + exit(-1); + } + /* verify a signature with it */ + if ((err = dsa_verify_hash(out, x, msg, sizeof(msg), &stat1, &key2)) != CRYPT_OK) { + printf("Error verifying with DSA key 4: %s\n", error_to_string(err)); + exit(-1); + } + printf("PUBLIC Import Test: %s\n", stat1 == 1 ? "passed" : "failed"); + if (stat1 == 0) exit(-1); + + dsa_free(&key2); + dsa_free(&key); +} + + + int main (void) @@ -1735,8 +1831,15 @@ main (void) printf (crypt_build_settings); test_errs (); + #ifdef HMAC printf ("HMAC: %s\n", hmac_test () == CRYPT_OK ? "passed" : "failed"); + if (hmac_test() != CRYPT_OK) exit(EXIT_FAILURE); +#endif + +#ifdef HMAC + printf ("OMAC: %s\n", omac_test () == CRYPT_OK ? "passed" : "failed"); + if (omac_test() != CRYPT_OK) exit(EXIT_FAILURE); #endif store_tests (); @@ -1755,11 +1858,13 @@ main (void) #ifdef KR kr_test (); #endif + dsa_tests(); rsa_test (); pad_test (); ecc_tests (); dh_tests (); + gf_tests (); base64_test (); diff --git a/demos/tv_gen.c b/demos/tv_gen.c index 5230559..9a2f6ff 100644 --- a/demos/tv_gen.c +++ b/demos/tv_gen.c @@ -42,6 +42,9 @@ void reg_algs(void) #ifdef NOEKEON register_cipher (&noekeon_desc); #endif +#ifdef SKIPJACK + register_cipher (&skipjack_desc); +#endif #ifdef TIGER register_hash (&tiger_desc); @@ -58,6 +61,9 @@ void reg_algs(void) #ifdef SHA1 register_hash (&sha1_desc); #endif +#ifdef SHA224 + register_hash (&sha224_desc); +#endif #ifdef SHA256 register_hash (&sha256_desc); #endif @@ -67,6 +73,12 @@ void reg_algs(void) #ifdef SHA512 register_hash (&sha512_desc); #endif +#ifdef RIPEMD128 + register_hash (&rmd128_desc); +#endif +#ifdef RIPEMD160 + register_hash (&rmd160_desc); +#endif } void hash_gen(void) @@ -83,7 +95,7 @@ void hash_gen(void) for (y = 0; y <= (hash_descriptor[x].blocksize * 2); y++) { for (z = 0; z < y; z++) { - buf[z] = (unsigned char)z; + buf[z] = (unsigned char)(z & 255); } outlen = sizeof(md); hash_memory(x, buf, y, md, &outlen); @@ -108,7 +120,10 @@ void cipher_gen(void) out = fopen("cipher_tv.txt", "w"); - fprintf(out, "Cipher Test Vectors\n\nThese are test encryptions with key of nn bytes '00 01 02 03 .. (nn-1)' and original PT of the same style.\n\n"); + fprintf(out, +"Cipher Test Vectors\n\nThese are test encryptions with key of nn bytes '00 01 02 03 .. (nn-1)' and original PT of the same style.\n" +"The output of step N is used as the key and plaintext for step N+1 (key bytes repeated as required to fill the key)\n\n"); + for (x = 0; cipher_descriptor[x].name != NULL; x++) { fprintf(out, "Cipher: %s\n", cipher_descriptor[x].name); @@ -133,13 +148,19 @@ void cipher_gen(void) for (z = 0; (int)z < cipher_descriptor[x].block_length; z++) { pt[z] = (unsigned char)z; } - for (w = 0; w < 25; w++) { + for (w = 0; w < 50; w++) { cipher_descriptor[x].ecb_encrypt(pt, pt, &skey); fprintf(out, "%2lu: ", w); for (z = 0; (int)z < cipher_descriptor[x].block_length; z++) { fprintf(out, "%02X", pt[z]); } fprintf(out, "\n"); + + /* reschedule a new key */ + for (z = 0; z < (unsigned long)kl; z++) { + key[z] = pt[z % cipher_descriptor[x].block_length]; + } + cipher_descriptor[x].setup(key, kl, 0, &skey); } fprintf(out, "\n"); } @@ -147,13 +168,114 @@ void cipher_gen(void) } fclose(out); } + +void hmac_gen(void) +{ + unsigned char key[MAXBLOCKSIZE], output[MAXBLOCKSIZE], input[MAXBLOCKSIZE*2+2]; + int x, y, z, kl, err; + FILE *out; + unsigned long len; + + out = fopen("hmac_tv.txt", "w"); + + fprintf(out, +"HMAC Tests. In these tests messages of N bytes long (00,01,02,...,NN-1) are HMACed. The initial key is\n" +"of the same format (the same length as the HASH output size). The HMAC key in step N+1 is the HMAC output of\n" +"step N.\n\n"); + + for (x = 0; hash_descriptor[x].name != NULL; x++) { + fprintf(out, "HMAC-%s\n", hash_descriptor[x].name); + + /* initial key */ + for (y = 0; y < (int)hash_descriptor[x].hashsize; y++) { + key[y] = (y&255); + } + + for (y = 0; y <= (int)(hash_descriptor[x].blocksize * 2); y++) { + for (z = 0; z < y; z++) { + input[z] = (unsigned char)(z & 255); + } + len = sizeof(output); + if ((err = hmac_memory(x, key, hash_descriptor[x].hashsize, input, y, output, &len)) != CRYPT_OK) { + printf("Error hmacing: %s\n", error_to_string(err)); + exit(EXIT_FAILURE); + } + fprintf(out, "%3d: ", y); + for (z = 0; z <(int) len; z++) { + fprintf(out, "%02X", output[z]); + } + fprintf(out, "\n"); + + /* forward the key */ + memcpy(key, output, hash_descriptor[x].hashsize); + } + fprintf(out, "\n"); + } + fclose(out); +} +void omac_gen(void) +{ + unsigned char key[MAXBLOCKSIZE], output[MAXBLOCKSIZE], input[MAXBLOCKSIZE*2+2]; + int err, x, y, z, kl; + FILE *out; + unsigned long len; + + out = fopen("omac_tv.txt", "w"); + + fprintf(out, +"OMAC Tests. In these tests messages of N bytes long (00,01,02,...,NN-1) are OMAC'ed. The initial key is\n" +"of the same format (length specified per cipher). The OMAC key in step N+1 is the OMAC output of\n" +"step N (repeated as required to fill the array).\n\n"); + + for (x = 0; cipher_descriptor[x].name != NULL; x++) { + kl = cipher_descriptor[x].block_length; + + /* skip ciphers which do not have 64 or 128 bit block sizes */ + if (kl != 8 && kl != 16) continue; + + if (cipher_descriptor[x].keysize(&kl) != CRYPT_OK) { + kl = cipher_descriptor[x].max_key_length; + } + fprintf(out, "OMAC-%s (%d byte key)\n", cipher_descriptor[x].name, kl); + + /* initial key/block */ + for (y = 0; y < kl; y++) { + key[y] = (y & 255); + } + + for (y = 0; y <= (int)(cipher_descriptor[x].block_length*2); y++) { + for (z = 0; z < y; z++) { + input[z] = (unsigned char)(z & 255); + } + len = sizeof(output); + if ((err = omac_memory(x, key, kl, input, y, output, &len)) != CRYPT_OK) { + printf("Error omacing: %s\n", error_to_string(err)); + exit(EXIT_FAILURE); + } + fprintf(out, "%3d: ", y); + for (z = 0; z <(int)len; z++) { + fprintf(out, "%02X", output[z]); + } + fprintf(out, "\n"); + + /* forward the key */ + for (z = 0; z < kl; z++) { + key[z] = output[z % len]; + } + } + fprintf(out, "\n"); + } + fclose(out); +} int main(void) { reg_algs(); hash_gen(); cipher_gen(); + hmac_gen(); + omac_gen(); return 0; } diff --git a/demos/x86_prof.c b/demos/x86_prof.c index a555a2b..bfb9426 100644 --- a/demos/x86_prof.c +++ b/demos/x86_prof.c @@ -3,6 +3,51 @@ #define KTIMES 25 #define TIMES 100000 +struct list { + int id; + unsigned long spd1, spd2, avg; +} results[100]; + +int no_results; + +int sorter(const void *a, const void *b) +{ + const struct list *A, *B; + A = a; + B = b; + if (A->avg < B->avg) return -1; + if (A->avg > B->avg) return 1; + return 0; +} + +void tally_results(int type) +{ + int x; + + // qsort the results + qsort(results, no_results, sizeof(struct list), &sorter); + + printf("\n"); + if (type == 0) { + for (x = 0; x < no_results; x++) { + printf("%-20s: Schedule at %6lu\n", cipher_descriptor[results[x].id].name, (unsigned long)results[x].spd1); + } + } else if (type == 1) { + for (x = 0; x < no_results; x++) { + printf + ("%-20s: Encrypt at %5lu, Decrypt at %5lu\n", cipher_descriptor[results[x].id].name, results[x].spd1, results[x].spd2); + } + } else { + for (x = 0; x < no_results; x++) { + printf + ("%-20s: Process at %5lu\n", hash_descriptor[results[x].id].name, results[x].spd1 / 1000); + } + } +} + + + + /* RDTSC from Scott Duplichan */ static ulong64 rdtsc (void) { @@ -35,6 +80,7 @@ static ulong64 rdtsc (void) } ulong64 timer, skew = 0; +prng_state prng; void t_start(void) { @@ -107,6 +153,9 @@ void reg_algs(void) #ifdef NOEKEON register_cipher (&noekeon_desc); #endif +#ifdef SKIPJACK + register_cipher (&skipjack_desc); +#endif #ifdef TIGER register_hash (&tiger_desc); @@ -123,6 +172,9 @@ void reg_algs(void) #ifdef SHA1 register_hash (&sha1_desc); #endif +#ifdef SHA224 + register_hash (&sha224_desc); +#endif #ifdef SHA256 register_hash (&sha256_desc); #endif @@ -139,6 +191,8 @@ void reg_algs(void) register_hash (&rmd160_desc); #endif +register_prng(&yarrow_desc); +rng_make_prng(128, find_prng("yarrow"), &prng, NULL); } int time_keysched(void) @@ -151,24 +205,28 @@ int time_keysched(void) unsigned char key[MAXBLOCKSIZE]; printf ("\n\nKey Schedule Time Trials for the Symmetric Ciphers:\n(Times are cycles per key)\n"); - for (x = 0; cipher_descriptor[x].name != NULL; x++) { + no_results = 0; + for (x = 0; cipher_descriptor[x].name != NULL; x++) { #define DO1(k) func(k, kl, 0, &skey); func = cipher_descriptor[x].setup; kl = cipher_descriptor[x].min_key_length; c1 = (ulong64)-1; for (y1 = 0; y1 < KTIMES; y1++) { - rng_get_bytes(key, kl, NULL); + yarrow_read(key, kl, &prng); t_start(); DO1(key); t1 = t_read(); c1 = (t1 > c1) ? c1 : t1; } t1 = c1 - skew; - printf("%-20s: Schedule at %6lu\n", cipher_descriptor[x].name, (unsigned long)t1); + results[no_results].spd1 = results[no_results].avg = t1; + results[no_results++].id = x; + printf("."); fflush(stdout); #undef DO1 } + tally_results(0); return 0; } @@ -183,6 +241,7 @@ int time_cipher(void) printf ("\n\nECB Time Trials for the Symmetric Ciphers:\n"); + no_results = 0; for (x = 0; cipher_descriptor[x].name != NULL; x++) { cipher_descriptor[x].setup (key, cipher_descriptor[x].min_key_length, 0, &skey); @@ -220,13 +279,18 @@ int time_cipher(void) c2 = (t2 > c2 ? c2 : t2); } a2 = c2 - c1 - skew; - - printf - ("%-20s: Encrypt at %7.3f, Decrypt at %7.3f\n", cipher_descriptor[x].name, a1/(double)cipher_descriptor[x].block_length, a2/(double)cipher_descriptor[x].block_length); - + + results[no_results].id = x; + results[no_results].spd1 = a1/cipher_descriptor[x].block_length; + results[no_results].spd2 = a2/cipher_descriptor[x].block_length;; + results[no_results].avg = (results[no_results].spd1 + results[no_results].spd2+1)/2; + ++no_results; + printf("."); fflush(stdout); + #undef DO2 #undef DO1 } + tally_results(1); return 0; } @@ -236,11 +300,12 @@ int time_hash(void) unsigned long x, y1, len; ulong64 t1, t2, c1, c2; hash_state md; - void (*func)(hash_state *, const unsigned char *, unsigned long); + int (*func)(hash_state *, const unsigned char *, unsigned long); unsigned char pt[MAXBLOCKSIZE]; printf ("\n\nHASH Time Trials for:\n"); + no_results = 0; for (x = 0; hash_descriptor[x].name != NULL; x++) { hash_descriptor[x].init(&md); @@ -262,13 +327,14 @@ int time_hash(void) } t1 = c2 - c1 - skew; t1 = ((t1 * CONST64(1000))) / ((ulong64)hash_descriptor[x].blocksize); - - printf - ("%-20s: Process at %9.3f\n", hash_descriptor[x].name, t1 / 1000.0); - + results[no_results].id = x; + results[no_results].spd1 = results[no_results].avg = t1; + ++no_results; + printf("."); fflush(stdout); #undef DO2 #undef DO1 } + tally_results(2); return 0; } diff --git a/des.c b/des.c index 6c5ac35..2cbc5e0 100644 --- a/des.c +++ b/des.c @@ -1713,8 +1713,8 @@ int des_test(void) http://www.ecs.soton.ac.uk/~prw99r/ez438/vectors.txt ***/ }; - int i; - unsigned char out[8]; + int i, y; + unsigned char tmp[8]; symmetric_key des; for(i=0; i < (int)(sizeof(cases)/sizeof(cases[0])); i++) @@ -1723,14 +1723,20 @@ int des_test(void) return err; } if (cases[i].mode != 0) { - des_ecb_encrypt(cases[i].txt, out, &des); + des_ecb_encrypt(cases[i].txt, tmp, &des); } else { - des_ecb_decrypt(cases[i].txt, out, &des); + des_ecb_decrypt(cases[i].txt, tmp, &des); } - if (memcmp(cases[i].out, out, sizeof out) != 0) { + if (memcmp(cases[i].out, tmp, sizeof(tmp)) != 0) { return CRYPT_FAIL_TESTVECTOR; } + + /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ + for (y = 0; y < 8; y++) tmp[y] = 0; + for (y = 0; y < 1000; y++) des_ecb_encrypt(tmp, tmp, &des); + for (y = 0; y < 1000; y++) des_ecb_decrypt(tmp, tmp, &des); + for (y = 0; y < 8; y++) if (tmp[y] != 0) return CRYPT_FAIL_TESTVECTOR; } return CRYPT_OK; diff --git a/dh.c b/dh.c index 0d12de5..78b9948 100644 --- a/dh.c +++ b/dh.c @@ -149,34 +149,34 @@ int dh_test(void) mp_int p, g, tmp; int x, res, primality; - if (mp_init_multi(&p, &g, &tmp, NULL) != MP_OKAY) { goto error; } + if ((res = mp_init_multi(&p, &g, &tmp, NULL)) != MP_OKAY) { goto error; } for (x = 0; sets[x].size != 0; x++) { #if 0 printf("dh_test():testing size %d-bits\n", sets[x].size * 8); #endif - if (mp_read_radix(&g,(char *)sets[x].base, 64) != MP_OKAY) { goto error; } - if (mp_read_radix(&p,(char *)sets[x].prime, 64) != MP_OKAY) { goto error; } + if ((res = mp_read_radix(&g,(char *)sets[x].base, 64)) != MP_OKAY) { goto error; } + if ((res = mp_read_radix(&p,(char *)sets[x].prime, 64)) != MP_OKAY) { goto error; } /* ensure p is prime */ - if ((res = is_prime(&p, &primality)) != CRYPT_OK) { goto done; } + if ((res = is_prime(&p, &primality)) != CRYPT_OK) { goto done; } if (primality == 0) { res = CRYPT_FAIL_TESTVECTOR; goto done; } - if (mp_sub_d(&p, 1, &tmp) != MP_OKAY) { goto error; } - if (mp_div_2(&tmp, &tmp) != MP_OKAY) { goto error; } + if ((res = mp_sub_d(&p, 1, &tmp)) != MP_OKAY) { goto error; } + if ((res = mp_div_2(&tmp, &tmp)) != MP_OKAY) { goto error; } /* ensure (p-1)/2 is prime */ - if ((res = is_prime(&tmp, &primality)) != CRYPT_OK) { goto done; } + if ((res = is_prime(&tmp, &primality)) != CRYPT_OK) { goto done; } if (primality == 0) { res = CRYPT_FAIL_TESTVECTOR; goto done; } /* now see if g^((p-1)/2) mod p is in fact 1 */ - if (mp_exptmod(&g, &tmp, &p, &tmp) != MP_OKAY) { goto error; } + if ((res = mp_exptmod(&g, &tmp, &p, &tmp)) != MP_OKAY) { goto error; } if (mp_cmp_d(&tmp, 1)) { res = CRYPT_FAIL_TESTVECTOR; goto done; @@ -185,7 +185,7 @@ int dh_test(void) res = CRYPT_OK; goto done; error: - res = CRYPT_MEM; + res = mpi_to_ltc_error(res); done: mp_clear_multi(&tmp, &g, &p, NULL); return res; @@ -247,25 +247,25 @@ int dh_make_key(prng_state *prng, int wprng, int keysize, dh_key *key) } /* init parameters */ - if (mp_init_multi(&g, &p, &key->x, &key->y, NULL) != MP_OKAY) { - return CRYPT_MEM; + if ((res = mp_init_multi(&g, &p, &key->x, &key->y, NULL)) != MP_OKAY) { + return mpi_to_ltc_error(res); } - if (mp_read_radix(&g, sets[key->idx].base, 64) != MP_OKAY) { goto error; } - if (mp_read_radix(&p, sets[key->idx].prime, 64) != MP_OKAY) { goto error; } + if ((res = mp_read_radix(&g, sets[key->idx].base, 64)) != MP_OKAY) { goto error; } + if ((res = mp_read_radix(&p, sets[key->idx].prime, 64)) != MP_OKAY) { goto error; } /* load the x value */ - if (mp_read_unsigned_bin(&key->x, buf, keysize) != MP_OKAY) { goto error; } - if (mp_exptmod(&g, &key->x, &p, &key->y) != MP_OKAY) { goto error; } + if ((res = mp_read_unsigned_bin(&key->x, buf, keysize)) != MP_OKAY) { goto error; } + if ((res = mp_exptmod(&g, &key->x, &p, &key->y)) != MP_OKAY) { goto error; } key->type = PK_PRIVATE; - if (mp_shrink(&key->x) != MP_OKAY) { goto error; } - if (mp_shrink(&key->y) != MP_OKAY) { goto error; } + if ((res = mp_shrink(&key->x)) != MP_OKAY) { goto error; } + if ((res = mp_shrink(&key->y)) != MP_OKAY) { goto error; } /* free up ram */ res = CRYPT_OK; goto done2; error: - res = CRYPT_MEM; + res = mpi_to_ltc_error(res); mp_clear_multi(&key->x, &key->y, NULL); done2: mp_clear_multi(&p, &g, NULL); @@ -284,7 +284,7 @@ void dh_free(dh_key *key) z = (unsigned long)mp_unsigned_bin_size(num); \ STORE32L(z, buf2+y); \ y += 4; \ - (void)mp_to_unsigned_bin(num, buf2+y); \ + if ((err = mp_to_unsigned_bin(num, buf2+y)) != MP_OKAY) { return mpi_to_ltc_error(err); } \ y += z; \ } @@ -306,13 +306,13 @@ void dh_free(dh_key *key) } \ \ /* load it */ \ - if (mp_read_unsigned_bin(num, (unsigned char *)in+y, (int)x) != MP_OKAY) {\ - err = CRYPT_MEM; \ + if ((err = mp_read_unsigned_bin(num, (unsigned char *)in+y, (int)x)) != MP_OKAY) {\ + err = mpi_to_ltc_error(err); \ goto error; \ } \ y += x; \ - if (mp_shrink(num) != MP_OKAY) { \ - err = CRYPT_MEM; \ + if ((err = mp_shrink(num)) != MP_OKAY) { \ + err = mpi_to_ltc_error(err); \ goto error; \ } \ } @@ -322,6 +322,7 @@ int dh_export(unsigned char *out, unsigned long *outlen, int type, dh_key *key) { unsigned char buf2[1536]; unsigned long y, z; + int err; _ARGCHK(out != NULL); _ARGCHK(outlen != NULL); @@ -387,8 +388,8 @@ int dh_import(const unsigned char *in, unsigned long inlen, dh_key *key) } /* init */ - if (mp_init_multi(&key->x, &key->y, NULL) != MP_OKAY) { - return CRYPT_MEM; + if ((err = mp_init_multi(&key->x, &key->y, NULL)) != MP_OKAY) { + return mpi_to_ltc_error(err); } /* advance past packet header */ diff --git a/dh_sys.c b/dh_sys.c index ade0da5..fb10a7e 100644 --- a/dh_sys.c +++ b/dh_sys.c @@ -23,7 +23,7 @@ int dh_encrypt_key(const unsigned char *inkey, unsigned long keylen, } if (keylen > hash_descriptor[hash].hashsize) { - return CRYPT_INVALID_ARG; + return CRYPT_INVALID_HASH; } /* make a random key and export the public copy */ @@ -250,32 +250,32 @@ int dh_sign_hash(const unsigned char *in, unsigned long inlen, } /* init bignums */ - if (mp_init_multi(&a, &b, &k, &m, &p, &g, &p1, &tmp, NULL) != MP_OKAY) { - return CRYPT_MEM; + if ((err = mp_init_multi(&a, &b, &k, &m, &p, &g, &p1, &tmp, NULL)) != MP_OKAY) { + return mpi_to_ltc_error(err); } /* load k and m */ - if (mp_read_unsigned_bin(&m, (unsigned char *)in, inlen) != MP_OKAY) { goto error; } + if ((err = mp_read_unsigned_bin(&m, (unsigned char *)in, inlen)) != MP_OKAY) { goto error; } #ifdef FAST_PK - if (mp_read_unsigned_bin(&k, buf, MIN(32,sets[key->idx].size)) != MP_OKAY) { goto error; } + if ((err = mp_read_unsigned_bin(&k, buf, MIN(32,sets[key->idx].size))) != MP_OKAY) { goto error; } #else - if (mp_read_unsigned_bin(&k, buf, sets[key->idx].size) != MP_OKAY) { goto error; } + if ((err = mp_read_unsigned_bin(&k, buf, sets[key->idx].size)) != MP_OKAY) { goto error; } #endif /* load g, p and p1 */ - if (mp_read_radix(&g, sets[key->idx].base, 64) != MP_OKAY) { goto error; } - if (mp_read_radix(&p, sets[key->idx].prime, 64) != MP_OKAY) { goto error; } - if (mp_sub_d(&p, 1, &p1) != MP_OKAY) { goto error; } - if (mp_div_2(&p1, &p1) != MP_OKAY) { goto error; } /* p1 = (p-1)/2 */ + if ((err = mp_read_radix(&g, sets[key->idx].base, 64)) != MP_OKAY) { goto error; } + if ((err = mp_read_radix(&p, sets[key->idx].prime, 64)) != MP_OKAY) { goto error; } + if ((err = mp_sub_d(&p, 1, &p1)) != MP_OKAY) { goto error; } + if ((err = mp_div_2(&p1, &p1)) != MP_OKAY) { goto error; } /* p1 = (p-1)/2 */ /* now get a = g^k mod p */ - if (mp_exptmod(&g, &k, &p, &a) != MP_OKAY) { goto error; } + if ((err = mp_exptmod(&g, &k, &p, &a)) != MP_OKAY) { goto error; } /* now find M = xa + kb mod p1 or just b = (M - xa)/k mod p1 */ - if (mp_invmod(&k, &p1, &k) != MP_OKAY) { goto error; } /* k = 1/k mod p1 */ - if (mp_mulmod(&a, &key->x, &p1, &tmp) != MP_OKAY) { goto error; } /* tmp = xa */ - if (mp_submod(&m, &tmp, &p1, &tmp) != MP_OKAY) { goto error; } /* tmp = M - xa */ - if (mp_mulmod(&k, &tmp, &p1, &b) != MP_OKAY) { goto error; } /* b = (M - xa)/k */ + if ((err = mp_invmod(&k, &p1, &k)) != MP_OKAY) { goto error; } /* k = 1/k mod p1 */ + if ((err = mp_mulmod(&a, &key->x, &p1, &tmp)) != MP_OKAY) { goto error; } /* tmp = xa */ + if ((err = mp_submod(&m, &tmp, &p1, &tmp)) != MP_OKAY) { goto error; } /* tmp = M - xa */ + if ((err = mp_mulmod(&k, &tmp, &p1, &b)) != MP_OKAY) { goto error; } /* b = (M - xa)/k */ /* store header */ y = PACKET_SIZE; @@ -283,11 +283,13 @@ int dh_sign_hash(const unsigned char *in, unsigned long inlen, /* now store them both (a,b) */ x = (unsigned long)mp_unsigned_bin_size(&a); STORE32L(x, buf+y); y += 4; - mp_to_unsigned_bin(&a, buf+y); y += x; + if ((err = mp_to_unsigned_bin(&a, buf+y)) != MP_OKAY) { goto error; } + y += x; x = (unsigned long)mp_unsigned_bin_size(&b); STORE32L(x, buf+y); y += 4; - mp_to_unsigned_bin(&b, buf+y); y += x; + if ((err = mp_to_unsigned_bin(&b, buf+y)) != MP_OKAY) { goto error; } + y += x; /* check if size too big */ if (*outlen < y) { @@ -308,7 +310,7 @@ int dh_sign_hash(const unsigned char *in, unsigned long inlen, res = CRYPT_OK; goto done; error: - res = CRYPT_MEM; + res = mpi_to_ltc_error(err); done: mp_clear_multi(&tmp, &p1, &g, &p, &m, &k, &b, &a, NULL); return res; @@ -346,8 +348,8 @@ int dh_verify_hash(const unsigned char *sig, unsigned long siglen, y = PACKET_SIZE; /* init all bignums */ - if (mp_init_multi(&a, &p, &b, &g, &m, &tmp, NULL) != MP_OKAY) { - return CRYPT_MEM; + if ((err = mp_init_multi(&a, &p, &b, &g, &m, &tmp, NULL)) != MP_OKAY) { + return mpi_to_ltc_error(err); } /* load a and b */ @@ -359,7 +361,7 @@ int dh_verify_hash(const unsigned char *sig, unsigned long siglen, } y += 4; - if (mp_read_unsigned_bin(&a, (unsigned char *)sig+y, x) != MP_OKAY) { goto error; } + if ((err = mp_read_unsigned_bin(&a, (unsigned char *)sig+y, x)) != MP_OKAY) { goto error; } y += x; LOAD32L(x, sig+y); @@ -369,23 +371,23 @@ int dh_verify_hash(const unsigned char *sig, unsigned long siglen, siglen -= x; } y += 4; - if (mp_read_unsigned_bin(&b, (unsigned char *)sig+y, x) != MP_OKAY) { goto error; } + if ((err = mp_read_unsigned_bin(&b, (unsigned char *)sig+y, x)) != MP_OKAY) { goto error; } y += x; /* load p and g */ - if (mp_read_radix(&p, sets[key->idx].prime, 64) != MP_OKAY) { goto error; } - if (mp_read_radix(&g, sets[key->idx].base, 64) != MP_OKAY) { goto error; } + if ((err = mp_read_radix(&p, sets[key->idx].prime, 64)) != MP_OKAY) { goto error; } + if ((err = mp_read_radix(&g, sets[key->idx].base, 64)) != MP_OKAY) { goto error; } /* load m */ - if (mp_read_unsigned_bin(&m, (unsigned char *)hash, hashlen) != MP_OKAY) { goto error; } + if ((err = mp_read_unsigned_bin(&m, (unsigned char *)hash, hashlen)) != MP_OKAY) { goto error; } /* find g^m mod p */ - if (mp_exptmod(&g, &m, &p, &m) != MP_OKAY) { goto error; } /* m = g^m mod p */ + if ((err = mp_exptmod(&g, &m, &p, &m)) != MP_OKAY) { goto error; } /* m = g^m mod p */ /* find y^a * a^b */ - if (mp_exptmod(&key->y, &a, &p, &tmp) != MP_OKAY) { goto error; } /* tmp = y^a mod p */ - if (mp_exptmod(&a, &b, &p, &a) != MP_OKAY) { goto error; } /* a = a^b mod p */ - if (mp_mulmod(&a, &tmp, &p, &a) != MP_OKAY) { goto error; } /* a = y^a * a^b mod p */ + if ((err = mp_exptmod(&key->y, &a, &p, &tmp)) != MP_OKAY) { goto error; } /* tmp = y^a mod p */ + if ((err = mp_exptmod(&a, &b, &p, &a)) != MP_OKAY) { goto error; } /* a = a^b mod p */ + if ((err = mp_mulmod(&a, &tmp, &p, &a)) != MP_OKAY) { goto error; } /* a = y^a * a^b mod p */ /* y^a * a^b == g^m ??? */ if (mp_cmp(&a, &m) == 0) { @@ -396,7 +398,7 @@ int dh_verify_hash(const unsigned char *sig, unsigned long siglen, res = CRYPT_OK; goto done; error: - res = CRYPT_MEM; + res = mpi_to_ltc_error(err); done: mp_clear_multi(&tmp, &m, &g, &p, &b, &a, NULL); return res; diff --git a/dsa.c b/dsa.c new file mode 100644 index 0000000..d896405 --- /dev/null +++ b/dsa.c @@ -0,0 +1,498 @@ +#include "mycrypt.h" + +#ifdef MDSA + +#define DRAW(x) { char __buf[1000]; mp_toradix(x, __buf, 16); printf("\n%s == %s\n", #x, __buf); } + +int dsa_make_key(prng_state *prng, int wprng, int group_size, int modulus_size, dsa_key *key) +{ + mp_int tmp, tmp2; + int err, res; + unsigned char buf[512]; + + _ARGCHK(prng != NULL); + _ARGCHK(key != NULL); + + /* check prng */ + if ((err = prng_is_valid(wprng)) != CRYPT_OK) { + return err; + } + + /* check size */ + if (group_size >= 1024 || group_size <= 15 || + group_size >= modulus_size || (modulus_size - group_size) >= (int)sizeof(buf)) { + return CRYPT_INVALID_ARG; + } + + /* init mp_ints */ + if ((err = mp_init_multi(&tmp, &tmp2, &key->g, &key->q, &key->p, &key->x, &key->y, NULL)) != MP_OKAY) { + return mpi_to_ltc_error(err); + } + + /* make our prime q */ + if ((err = rand_prime(&key->q, group_size, prng, wprng)) != CRYPT_OK) { goto error2; } + + /* double q */ + if ((err = mp_mul_2(&key->q, &tmp)) != MP_OKAY) { goto error; } + + /* now make a random string and multply it against q */ + if (prng_descriptor[wprng].read(buf, modulus_size - group_size, prng) != (unsigned long)(modulus_size - group_size)) { + err = CRYPT_ERROR_READPRNG; + goto error2; + } + + /* force magnitude */ + buf[0] |= 0x80; + + /* force even */ + buf[modulus_size - group_size - 1] &= ~1; + + if ((err = mp_read_unsigned_bin(&tmp2, buf, modulus_size - group_size)) != MP_OKAY) { goto error; } + if ((err = mp_mul(&key->q, &tmp2, &key->p)) != MP_OKAY) { goto error; } + if ((err = mp_add_d(&key->p, 1, &key->p)) != MP_OKAY) { goto error; } + + /* now loop until p is prime */ + for (;;) { + if ((err = is_prime(&key->p, &res)) != CRYPT_OK) { goto error2; } + if (res == MP_YES) break; + + /* add 2q to p and 2 to tmp2 */ + if ((err = mp_add(&tmp, &key->p, &key->p)) != MP_OKAY) { goto error; } + if ((err = mp_add_d(&tmp2, 2, &tmp2)) != MP_OKAY) { goto error; } + } + + /* now p = (q * tmp2) + 1 is prime, find a value g for which g^tmp2 != 1 */ + mp_set(&key->g, 1); + + do { + if ((err = mp_add_d(&key->g, 1, &key->g)) != MP_OKAY) { goto error; } + if ((err = mp_exptmod(&key->g, &tmp2, &key->p, &tmp)) != MP_OKAY) { goto error; } + } while (mp_cmp_d(&tmp, 1) == MP_EQ); + + /* at this point tmp generates a group of order q mod p */ + mp_exch(&tmp, &key->g); + + /* so now we have our DH structure, generator g, order q, modulus p + Now we need a random exponent [mod q] and it's power g^x mod p + */ + do { + if (prng_descriptor[wprng].read(buf, group_size, prng) != (unsigned long)group_size) { + err = CRYPT_ERROR_READPRNG; + goto error2; + } + if ((err = mp_read_unsigned_bin(&key->x, buf, group_size)) != MP_OKAY) { goto error; } + } while (mp_cmp_d(&key->x, 1) != MP_GT); + if ((err = mp_exptmod(&key->g, &key->x, &key->p, &key->y)) != MP_OKAY) { goto error; } + + key->type = PK_PRIVATE; + key->qord = group_size; + + /* shrink the ram required */ + if ((err = mp_shrink(&key->g)) != MP_OKAY) { goto error; } + if ((err = mp_shrink(&key->p)) != MP_OKAY) { goto error; } + if ((err = mp_shrink(&key->q)) != MP_OKAY) { goto error; } + if ((err = mp_shrink(&key->x)) != MP_OKAY) { goto error; } + if ((err = mp_shrink(&key->y)) != MP_OKAY) { goto error; } + + err = CRYPT_OK; + +#ifdef CLEAN_STACK + zeromem(buf, sizeof(buf)); +#endif + + goto done; +error : err = mpi_to_ltc_error(err); +error2: mp_clear_multi(&key->g, &key->q, &key->p, &key->x, &key->y, NULL); +done : mp_clear_multi(&tmp, &tmp2, NULL); + return err; +} + +void dsa_free(dsa_key *key) +{ + _ARGCHK(key != NULL); + mp_clear_multi(&key->g, &key->q, &key->p, &key->x, &key->y, NULL); +} + + +int dsa_sign_hash(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, + prng_state *prng, int wprng, dsa_key *key) +{ + mp_int k, kinv, tmp, r, s; + unsigned char buf[512]; + int err, y; + unsigned long len; + + + _ARGCHK(in != NULL); + _ARGCHK(out != NULL); + _ARGCHK(prng != NULL); + _ARGCHK(outlen != NULL); + _ARGCHK(key != NULL); + + if ((err = prng_is_valid(wprng)) != CRYPT_OK) { + return err; + } + if (key->type != PK_PRIVATE) { + return CRYPT_PK_NOT_PRIVATE; + } + + /* check group order size */ + if (key->qord >= (int)sizeof(buf)) { + return CRYPT_INVALID_ARG; + } + + /* Init our temps */ + if ((err = mp_init_multi(&k, &kinv, &r, &s, &tmp, NULL)) != MP_OKAY) { goto error; } + +retry: + /* gen random k */ + if (prng_descriptor[wprng].read(buf, key->qord, prng) != (unsigned long)key->qord) { + err = CRYPT_ERROR_READPRNG; + goto done; + } + + /* read k */ + if ((err = mp_read_unsigned_bin(&k, buf, key->qord)) != MP_OKAY) { goto error; } + + /* now find 1/k mod q */ + if ((err = mp_invmod(&k, &key->q, &kinv)) != MP_OKAY) { goto error; } + + /* now find r = g^k mod p mod q */ + if ((err = mp_exptmod(&key->g, &k, &key->p, &r)) != MP_OKAY) { goto error; } + if ((err = mp_mod(&r, &key->q, &r)) != MP_OKAY) { goto error; } + + if (mp_iszero(&r) == MP_YES) { goto retry; } + + /* now find s = (in + xr)/k mod q */ + if ((err = mp_read_unsigned_bin(&tmp, (unsigned char *)in, inlen)) != MP_OKAY) { goto error; } + if ((err = mp_mul(&key->x, &r, &s)) != MP_OKAY) { goto error; } + if ((err = mp_add(&s, &tmp, &s)) != MP_OKAY) { goto error; } + if ((err = mp_mulmod(&s, &kinv, &key->q, &s)) != MP_OKAY) { goto error; } + + if (mp_iszero(&s) == MP_YES) { goto retry; } + + /* now store em both */ + + /* first check that we have enough room */ + if (*outlen < (unsigned long)(PACKET_SIZE + 4 + mp_unsigned_bin_size(&s) + mp_unsigned_bin_size(&r))) { + err = CRYPT_BUFFER_OVERFLOW; + goto done; + } + + /* packet header */ + packet_store_header(out, PACKET_SECT_DSA, PACKET_SUB_SIGNED); + y = PACKET_SIZE; + + /* store length of r */ + len = mp_unsigned_bin_size(&r); + out[y++] = (len>>8)&255; + out[y++] = (len & 255); + + /* store r */ + mp_to_unsigned_bin(&r, out+y); + y += len; + + /* store length of s */ + len = mp_unsigned_bin_size(&s); + out[y++] = (len>>8)&255; + out[y++] = (len & 255); + + /* store s */ + mp_to_unsigned_bin(&s, out+y); + y += len; + + /* reset size */ + *outlen = y; + + err = CRYPT_OK; + goto done; + +error : err = mpi_to_ltc_error(err); +done : mp_clear_multi(&k, &kinv, &r, &s, &tmp, NULL); +#ifdef CLEAN_STACK + zeromem(buf, sizeof(buf)); +#endif + return err; +} + +int dsa_verify_hash(const unsigned char *sig, unsigned long siglen, + const unsigned char *hash, unsigned long inlen, + int *stat, dsa_key *key) +{ + mp_int r, s, w, v, u1, u2; + unsigned long x, y; + int err; + + _ARGCHK(sig != NULL); + _ARGCHK(hash != NULL); + _ARGCHK(stat != NULL); + _ARGCHK(key != NULL); + + /* default to invalid signature */ + *stat = 0; + + if (siglen < PACKET_SIZE+2+2) { + return CRYPT_INVALID_PACKET; + } + + /* is the message format correct? */ + if ((err = packet_valid_header((unsigned char *)sig, PACKET_SECT_DSA, PACKET_SUB_SIGNED)) != CRYPT_OK) { + return err; + } + + /* skip over header */ + y = PACKET_SIZE; + + /* init our variables */ + if ((err = mp_init_multi(&r, &s, &w, &v, &u1, &u2, NULL)) != MP_OKAY) { + return mpi_to_ltc_error(err); + } + + /* read in r followed by s */ + x = ((unsigned)sig[y]<<8)|((unsigned)sig[y+1]); + y += 2; + if (y + x > siglen) { + err = CRYPT_INVALID_PACKET; + goto done; + } + if ((err = mp_read_unsigned_bin(&r, (unsigned char *)sig+y, x)) != MP_OKAY) { goto error; } + y += x; + + /* load s */ + x = ((unsigned)sig[y]<<8)|((unsigned)sig[y+1]); + y += 2; + if (y + x > siglen) { + err = CRYPT_INVALID_PACKET; + goto done; + } + if ((err = mp_read_unsigned_bin(&s, (unsigned char *)sig+y, x)) != MP_OKAY) { goto error; } + + /* w = 1/s mod q */ + if ((err = mp_invmod(&s, &key->q, &w)) != MP_OKAY) { goto error; } + + /* u1 = m * w mod q */ + if ((err = mp_read_unsigned_bin(&u1, (unsigned char *)hash, inlen)) != MP_OKAY) { goto error; } + if ((err = mp_mulmod(&u1, &w, &key->q, &u1)) != MP_OKAY) { goto error; } + + /* u2 = r*w mod q */ + if ((err = mp_mulmod(&r, &w, &key->q, &u2)) != MP_OKAY) { goto error; } + + /* v = g^u1 * y^u2 mod p mod q */ + if ((err = mp_exptmod(&key->g, &u1, &key->p, &u1)) != MP_OKAY) { goto error; } + if ((err = mp_exptmod(&key->y, &u2, &key->p, &u2)) != MP_OKAY) { goto error; } + if ((err = mp_mulmod(&u1, &u2, &key->p, &v)) != MP_OKAY) { goto error; } + if ((err = mp_mod(&v, &key->q, &v)) != MP_OKAY) { goto error; } + + /* if r = v then we're set */ + if (mp_cmp(&r, &v) == MP_EQ) { + *stat = 1; + } + + err = CRYPT_OK; + goto done; + +error : err = mpi_to_ltc_error(err); +done : mp_clear_multi(&r, &s, &w, &v, &u1, &u2, NULL); + return err; +} + +#define OUTPUT_BIGNUM(num, buf2, y, z) \ +{ \ + z = (unsigned long)mp_unsigned_bin_size(num); \ + if ((y + 4 + z) > *outlen) { return CRYPT_BUFFER_OVERFLOW; } \ + STORE32L(z, out+y); \ + y += 4; \ + if (mp_to_unsigned_bin(num, out+y) != MP_OKAY) { return CRYPT_MEM; } \ + y += z; \ +} + +int dsa_export(unsigned char *out, unsigned long *outlen, int type, dsa_key *key) +{ + unsigned long y, z; + + _ARGCHK(out != NULL); + _ARGCHK(outlen != NULL); + _ARGCHK(key != NULL); + + if (type == PK_PRIVATE && key->type != PK_PRIVATE) { + return CRYPT_PK_TYPE_MISMATCH; + } + + if (type != PK_PUBLIC && type != PK_PRIVATE) { + return CRYPT_INVALID_ARG; + } + + /* can we store the static header? */ + if (*outlen < (PACKET_SIZE + 1 + 2)) { + return CRYPT_BUFFER_OVERFLOW; + } + + /* store header */ + packet_store_header(out, PACKET_SECT_DSA, PACKET_SUB_KEY); + y = PACKET_SIZE; + + /* store g, p, q, qord */ + out[y++] = type; + out[y++] = (key->qord>>8)&255; + out[y++] = key->qord & 255; + + OUTPUT_BIGNUM(&key->g,out,y,z); + OUTPUT_BIGNUM(&key->p,out,y,z); + OUTPUT_BIGNUM(&key->q,out,y,z); + + /* public exponent */ + OUTPUT_BIGNUM(&key->y,out,y,z); + + if (type == PK_PRIVATE) { + OUTPUT_BIGNUM(&key->x,out,y,z); + } + + *outlen = y; + return CRYPT_OK; +} + +#define INPUT_BIGNUM(num, in, x, y) \ +{ \ + /* load value */ \ + if (y+4 > inlen) { \ + err = CRYPT_INVALID_PACKET; \ + goto error; \ + } \ + LOAD32L(x, in+y); \ + y += 4; \ + \ + /* sanity check... */ \ + if (y+x > inlen) { \ + err = CRYPT_INVALID_PACKET; \ + goto error; \ + } \ + \ + /* load it */ \ + if (mp_read_unsigned_bin(num, (unsigned char *)in+y, (int)x) != MP_OKAY) {\ + err = CRYPT_MEM; \ + goto error; \ + } \ + y += x; \ + if (mp_shrink(num) != MP_OKAY) { \ + err = CRYPT_MEM; \ + goto error; \ + } \ +} + +int dsa_import(const unsigned char *in, unsigned long inlen, dsa_key *key) +{ + unsigned long x, y; + int err; + + _ARGCHK(in != NULL); + _ARGCHK(key != NULL); + + /* check length */ + if ((1+2+PACKET_SIZE) > inlen) { + return CRYPT_INVALID_PACKET; + } + + /* check type */ + if ((err = packet_valid_header((unsigned char *)in, PACKET_SECT_DSA, PACKET_SUB_KEY)) != CRYPT_OK) { + return err; + } + y = PACKET_SIZE; + + /* init key */ + if (mp_init_multi(&key->p, &key->g, &key->q, &key->x, &key->y, NULL) != MP_OKAY) { + return CRYPT_MEM; + } + + /* read type/qord */ + key->type = in[y++]; + key->qord = ((unsigned)in[y]<<8)|((unsigned)in[y+1]); + y += 2; + + /* input publics */ + INPUT_BIGNUM(&key->g,in,x,y); + INPUT_BIGNUM(&key->p,in,x,y); + INPUT_BIGNUM(&key->q,in,x,y); + INPUT_BIGNUM(&key->y,in,x,y); + if (key->type == PK_PRIVATE) { + INPUT_BIGNUM(&key->x,in,x,y); + } + + return CRYPT_OK; +error: + mp_clear_multi(&key->p, &key->g, &key->q, &key->x, &key->y, NULL); + return err; +} + +int dsa_verify_key(dsa_key *key, int *stat) +{ + mp_int tmp, tmp2; + int res, err; + + _ARGCHK(key != NULL); + _ARGCHK(stat != NULL); + + *stat = 0; + + /* first make sure key->q and key->p are prime */ + if ((err = is_prime(&key->q, &res)) != CRYPT_OK) { + return err; + } + if (res == 0) { + return CRYPT_OK; + } + + + if ((err = is_prime(&key->p, &res)) != CRYPT_OK) { + return err; + } + if (res == 0) { + return CRYPT_OK; + } + + /* now make sure that g is not -1, 0 or 1 and

g, 0) == MP_EQ || mp_cmp_d(&key->g, 1) == MP_EQ) { + return CRYPT_OK; + } + if ((err = mp_init_multi(&tmp, &tmp2, NULL)) != MP_OKAY) { goto error; } + if ((err = mp_sub_d(&key->p, 1, &tmp)) != MP_OKAY) { goto error; } + if (mp_cmp(&tmp, &key->g) == MP_EQ || mp_cmp(&key->g, &key->p) != MP_LT) { + err = CRYPT_OK; + goto done; + } + + /* 1 < y < p-1 */ + if (!(mp_cmp_d(&key->y, 1) == MP_GT && mp_cmp(&key->y, &tmp) == MP_LT)) { + err = CRYPT_OK; + goto done; + } + + /* now we have to make sure that g^q = 1, and that p-1/q gives 0 remainder */ + if ((err = mp_div(&tmp, &key->q, &tmp, &tmp2)) != MP_OKAY) { goto error; } + if (mp_iszero(&tmp2) != MP_YES) { + err = CRYPT_OK; + goto done; + } + + if ((err = mp_exptmod(&key->g, &key->q, &key->p, &tmp)) != MP_OKAY) { goto error; } + if (mp_cmp_d(&tmp, 1) != MP_EQ) { + err = CRYPT_OK; + goto done; + } + + /* now we have to make sure that y^q = 1, this makes sure y \in g^x mod p */ + if ((err = mp_exptmod(&key->y, &key->q, &key->p, &tmp)) != MP_OKAY) { goto error; } + if (mp_cmp_d(&tmp, 1) != MP_EQ) { + err = CRYPT_OK; + goto done; + } + + /* at this point we are out of tests ;-( */ + err = CRYPT_OK; + *stat = 1; + goto done; +error: err = mpi_to_ltc_error(err); +done : mp_clear_multi(&tmp, &tmp2, NULL); + return err; +} +#endif diff --git a/ecc.c b/ecc.c index 036f7cb..13c23da 100644 --- a/ecc.c +++ b/ecc.c @@ -250,39 +250,39 @@ static int dbl_point(ecc_point *P, ecc_point *R, mp_int *modulus, mp_int *mu) mp_int s, tmp, tmpx; int res; - if (mp_init_multi(&s, &tmp, &tmpx, NULL) != MP_OKAY) { - return CRYPT_MEM; + if ((res = mp_init_multi(&s, &tmp, &tmpx, NULL)) != MP_OKAY) { + return mpi_to_ltc_error(res); } /* s = (3Xp^2 + a) / (2Yp) */ - if (mp_mul_2(&P->y, &tmp) != MP_OKAY) { goto error; } /* tmp = 2*y */ - if (mp_invmod(&tmp, modulus, &tmp) != MP_OKAY) { goto error; } /* tmp = 1/tmp mod modulus */ - if (mp_sqr(&P->x, &s) != MP_OKAY) { goto error; } /* s = x^2 */ - if (mp_reduce(&s, modulus, mu) != MP_OKAY) { goto error; } - if (mp_mul_d(&s,(mp_digit)3, &s) != MP_OKAY) { goto error; } /* s = 3*(x^2) */ - if (mp_sub_d(&s,(mp_digit)3, &s) != MP_OKAY) { goto error; } /* s = 3*(x^2) - 3 */ + if ((res = mp_mul_2(&P->y, &tmp)) != MP_OKAY) { goto error; } /* tmp = 2*y */ + if ((res = mp_invmod(&tmp, modulus, &tmp)) != MP_OKAY) { goto error; } /* tmp = 1/tmp mod modulus */ + if ((res = mp_sqr(&P->x, &s)) != MP_OKAY) { goto error; } /* s = x^2 */ + if ((res = mp_reduce(&s, modulus, mu)) != MP_OKAY) { goto error; } + if ((res = mp_mul_d(&s,(mp_digit)3, &s)) != MP_OKAY) { goto error; } /* s = 3*(x^2) */ + if ((res = mp_sub_d(&s,(mp_digit)3, &s)) != MP_OKAY) { goto error; } /* s = 3*(x^2) - 3 */ if (mp_cmp_d(&s, 0) == MP_LT) { /* if s < 0 add modulus */ - if (mp_add(&s, modulus, &s) != MP_OKAY) { goto error; } + if ((res = mp_add(&s, modulus, &s)) != MP_OKAY) { goto error; } } - if (mp_mul(&s, &tmp, &s) != MP_OKAY) { goto error; } /* s = tmp * s mod modulus */ - if (mp_reduce(&s, modulus, mu) != MP_OKAY) { goto error; } + if ((res = mp_mul(&s, &tmp, &s)) != MP_OKAY) { goto error; } /* s = tmp * s mod modulus */ + if ((res = mp_reduce(&s, modulus, mu)) != MP_OKAY) { goto error; } /* Xr = s^2 - 2Xp */ - if (mp_sqr(&s, &tmpx) != MP_OKAY) { goto error; } /* tmpx = s^2 */ - if (mp_reduce(&tmpx, modulus, mu) != MP_OKAY) { goto error; } /* tmpx = tmpx mod modulus */ - if (mp_sub(&tmpx, &P->x, &tmpx) != MP_OKAY) { goto error; } /* tmpx = tmpx - x */ - if (mp_submod(&tmpx, &P->x, modulus, &tmpx) != MP_OKAY) { goto error; } /* tmpx = tmpx - x mod modulus */ + if ((res = mp_sqr(&s, &tmpx)) != MP_OKAY) { goto error; } /* tmpx = s^2 */ + if ((res = mp_reduce(&tmpx, modulus, mu)) != MP_OKAY) { goto error; } /* tmpx = tmpx mod modulus */ + if ((res = mp_sub(&tmpx, &P->x, &tmpx)) != MP_OKAY) { goto error; } /* tmpx = tmpx - x */ + if ((res = mp_submod(&tmpx, &P->x, modulus, &tmpx)) != MP_OKAY) { goto error; } /* tmpx = tmpx - x mod modulus */ /* Yr = -Yp + s(Xp - Xr) */ - if (mp_sub(&P->x, &tmpx, &tmp) != MP_OKAY) { goto error; } /* tmp = x - tmpx */ - if (mp_mul(&tmp, &s, &tmp) != MP_OKAY) { goto error; } /* tmp = tmp * s */ - if (mp_submod(&tmp, &P->y, modulus, &R->y) != MP_OKAY) { goto error; } /* y = tmp - y mod modulus */ - if (mp_copy(&tmpx, &R->x) != MP_OKAY) { goto error; } /* x = tmpx */ + if ((res = mp_sub(&P->x, &tmpx, &tmp)) != MP_OKAY) { goto error; } /* tmp = x - tmpx */ + if ((res = mp_mul(&tmp, &s, &tmp)) != MP_OKAY) { goto error; } /* tmp = tmp * s */ + if ((res = mp_submod(&tmp, &P->y, modulus, &R->y)) != MP_OKAY) { goto error; } /* y = tmp - y mod modulus */ + if ((res = mp_copy(&tmpx, &R->x)) != MP_OKAY) { goto error; } /* x = tmpx */ res = CRYPT_OK; goto done; error: - res = CRYPT_MEM; + res = mpi_to_ltc_error(res); done: mp_clear_multi(&tmpx, &tmp, &s, NULL); return res; @@ -294,14 +294,14 @@ static int add_point(ecc_point *P, ecc_point *Q, ecc_point *R, mp_int *modulus, mp_int s, tmp, tmpx; int res; - if (mp_init(&tmp) != MP_OKAY) { - return CRYPT_MEM; + if ((res = mp_init(&tmp)) != MP_OKAY) { + return mpi_to_ltc_error(res); } /* is P==Q or P==-Q? */ - if (mp_neg(&Q->y, &tmp) != MP_OKAY || mp_mod(&tmp, modulus, &tmp) != MP_OKAY) { + if (((res = mp_neg(&Q->y, &tmp)) != MP_OKAY) || ((res = mp_mod(&tmp, modulus, &tmp)) != MP_OKAY)) { mp_clear(&tmp); - return CRYPT_MEM; + return mpi_to_ltc_error(res); } if (mp_cmp(&P->x, &Q->x) == MP_EQ) @@ -310,40 +310,40 @@ static int add_point(ecc_point *P, ecc_point *Q, ecc_point *R, mp_int *modulus, return dbl_point(P, R, modulus, mu); } - if (mp_init_multi(&tmpx, &s, NULL) != MP_OKAY) { + if ((res = mp_init_multi(&tmpx, &s, NULL)) != MP_OKAY) { mp_clear(&tmp); - return CRYPT_MEM; + return mpi_to_ltc_error(res); } /* get s = (Yp - Yq)/(Xp-Xq) mod p */ - if (mp_sub(&P->x, &Q->x, &tmp) != MP_OKAY) { goto error; } /* tmp = Px - Qx mod modulus */ + if ((res = mp_sub(&P->x, &Q->x, &tmp)) != MP_OKAY) { goto error; } /* tmp = Px - Qx mod modulus */ if (mp_cmp_d(&tmp, 0) == MP_LT) { /* if tmp<0 add modulus */ - if (mp_add(&tmp, modulus, &tmp) != MP_OKAY) { goto error; } + if ((res = mp_add(&tmp, modulus, &tmp)) != MP_OKAY) { goto error; } } - if (mp_invmod(&tmp, modulus, &tmp) != MP_OKAY) { goto error; } /* tmp = 1/tmp mod modulus */ - if (mp_sub(&P->y, &Q->y, &s) != MP_OKAY) { goto error; } /* s = Py - Qy mod modulus */ + if ((res = mp_invmod(&tmp, modulus, &tmp)) != MP_OKAY) { goto error; } /* tmp = 1/tmp mod modulus */ + if ((res = mp_sub(&P->y, &Q->y, &s)) != MP_OKAY) { goto error; } /* s = Py - Qy mod modulus */ if (mp_cmp_d(&s, 0) == MP_LT) { /* if s<0 add modulus */ - if (mp_add(&s, modulus, &s) != MP_OKAY) { goto error; } + if ((res = mp_add(&s, modulus, &s)) != MP_OKAY) { goto error; } } - if (mp_mul(&s, &tmp, &s) != MP_OKAY) { goto error; } /* s = s * tmp mod modulus */ - if (mp_reduce(&s, modulus, mu) != MP_OKAY) { goto error; } + if ((res = mp_mul(&s, &tmp, &s)) != MP_OKAY) { goto error; } /* s = s * tmp mod modulus */ + if ((res = mp_reduce(&s, modulus, mu)) != MP_OKAY) { goto error; } /* Xr = s^2 - Xp - Xq */ - if (mp_sqr(&s, &tmp) != MP_OKAY) { goto error; } /* tmp = s^2 mod modulus */ - if (mp_reduce(&tmp, modulus, mu) != MP_OKAY) { goto error; } - if (mp_sub(&tmp, &P->x, &tmp) != MP_OKAY) { goto error; } /* tmp = tmp - Px */ - if (mp_sub(&tmp, &Q->x, &tmpx) != MP_OKAY) { goto error; } /* tmpx = tmp - Qx */ + if ((res = mp_sqr(&s, &tmp)) != MP_OKAY) { goto error; } /* tmp = s^2 mod modulus */ + if ((res = mp_reduce(&tmp, modulus, mu)) != MP_OKAY) { goto error; } + if ((res = mp_sub(&tmp, &P->x, &tmp)) != MP_OKAY) { goto error; } /* tmp = tmp - Px */ + if ((res = mp_sub(&tmp, &Q->x, &tmpx)) != MP_OKAY) { goto error; } /* tmpx = tmp - Qx */ /* Yr = -Yp + s(Xp - Xr) */ - if (mp_sub(&P->x, &tmpx, &tmp) != MP_OKAY) { goto error; } /* tmp = Px - tmpx */ - if (mp_mul(&tmp, &s, &tmp) != MP_OKAY) { goto error; } /* tmp = tmp * s */ - if (mp_submod(&tmp, &P->y, modulus, &R->y) != MP_OKAY) { goto error; } /* Ry = tmp - Py mod modulus */ - if (mp_mod(&tmpx, modulus, &R->x) != MP_OKAY) { goto error; } /* Rx = tmpx mod modulus */ + if ((res = mp_sub(&P->x, &tmpx, &tmp)) != MP_OKAY) { goto error; } /* tmp = Px - tmpx */ + if ((res = mp_mul(&tmp, &s, &tmp)) != MP_OKAY) { goto error; } /* tmp = tmp * s */ + if ((res = mp_submod(&tmp, &P->y, modulus, &R->y)) != MP_OKAY) { goto error; } /* Ry = tmp - Py mod modulus */ + if ((res = mp_mod(&tmpx, modulus, &R->x)) != MP_OKAY) { goto error; } /* Rx = tmpx mod modulus */ res = CRYPT_OK; goto done; error: - res = CRYPT_MEM; + res = mpi_to_ltc_error(res); done: mp_clear_multi(&s, &tmpx, &tmp, NULL); return res; @@ -362,12 +362,12 @@ static int ecc_mulmod(mp_int *k, ecc_point *G, ecc_point *R, mp_int *modulus) int first, bitbuf, bitcpy, bitcnt, mode, digidx; /* init barrett reduction */ - if (mp_init(&mu) != MP_OKAY) { - return CRYPT_MEM; + if ((res = mp_init(&mu)) != MP_OKAY) { + return mpi_to_ltc_error(res); } - if (mp_reduce_setup(&mu, modulus) != MP_OKAY) { + if ((res = mp_reduce_setup(&mu, modulus)) != MP_OKAY) { mp_clear(&mu); - return CRYPT_MEM; + return mpi_to_ltc_error(res); } /* alloc ram for window temps */ @@ -748,7 +748,7 @@ done: z = (unsigned long)mp_unsigned_bin_size(num); \ STORE32L(z, buf2+y); \ y += 4; \ - (void)mp_to_unsigned_bin(num, buf2+y); \ + if (mp_to_unsigned_bin(num, buf2+y) != MP_OKAY) { return CRYPT_MEM; } \ y += z; \ } @@ -771,12 +771,12 @@ done: \ /* load it */ \ if (mp_read_unsigned_bin(num, (unsigned char *)in+y, (int)x) != MP_OKAY) {\ - err = CRYPT_MEM; \ + err = CRYPT_MEM; \ goto error; \ } \ y += x; \ if (mp_shrink(num) != MP_OKAY) { \ - err = CRYPT_MEM; \ + err = CRYPT_MEM; \ goto error; \ } \ } diff --git a/ecc_sys.c b/ecc_sys.c index 1dd19e1..cae3614 100644 --- a/ecc_sys.c +++ b/ecc_sys.c @@ -56,11 +56,6 @@ int ecc_encrypt_key(const unsigned char *inkey, unsigned long keylen, return err; } - /* Encrypt the key */ - for (x = 0; x < keylen; x++) { - skey[x] ^= inkey[x]; - } - /* output header */ y = PACKET_SIZE; @@ -78,9 +73,9 @@ int ecc_encrypt_key(const unsigned char *inkey, unsigned long keylen, STORE32L(keylen, out+y); y += 4; - /* Store the encrypted key */ + /* Encrypt/Store the encrypted key */ for (x = 0; x < keylen; x++, y++) { - out[y] = skey[x]; + out[y] = skey[x] ^ inkey[x]; } /* store header */ @@ -324,7 +319,7 @@ int ecc_verify_hash(const unsigned char *sig, unsigned long siglen, _ARGCHK(sig != NULL); _ARGCHK(hash != NULL); - _ARGCHK(hash != NULL); + _ARGCHK(stat != NULL); _ARGCHK(key != NULL); /* default to invalid signature */ diff --git a/hash.c b/hash.c index e42c4fa..9ebb2d6 100644 --- a/hash.c +++ b/hash.c @@ -82,7 +82,10 @@ int hash_file(int hash, const char *fname, unsigned char *dst, unsigned long *ou } err = hash_filehandle(hash, in, dst, outlen); - (void)fclose(in); + if (fclose(in) != 0) { + return CRYPT_ERROR; + } + return err; #endif } diff --git a/hmac.c b/hmac.c index ea98d9a..236e5cf 100644 --- a/hmac.c +++ b/hmac.c @@ -45,7 +45,7 @@ int hmac_init(hmac_state *hmac, int hash, const unsigned char *key, unsigned lon hmac->hash = hash; // (1) make sure we have a large enough key - hmac->hashsize = hashsize = hash_descriptor[hash].hashsize; + hashsize = hash_descriptor[hash].hashsize; if(keylen > HMAC_BLOCKSIZE) { z = (unsigned long)sizeof(hmac->key); if ((err = hash_memory(hash, key, keylen, hmac->key, &z)) != CRYPT_OK) { @@ -82,8 +82,7 @@ int hmac_process(hmac_state *hmac, const unsigned char *buf, unsigned long len) if ((err = hash_is_valid(hmac->hash)) != CRYPT_OK) { return err; } - hash_descriptor[hmac->hash].process(&hmac->md, buf, len); - return CRYPT_OK; + return hash_descriptor[hmac->hash].process(&hmac->md, buf, len); } int hmac_done(hmac_state *hmac, unsigned char *hashOut, unsigned long *outlen) @@ -101,15 +100,13 @@ int hmac_done(hmac_state *hmac, unsigned char *hashOut, unsigned long *outlen) return err; } - /* ensure the output size is valid */ + /* get the hash message digest size */ hashsize = hash_descriptor[hash].hashsize; - if (*outlen < hashsize) { - return CRYPT_BUFFER_OVERFLOW; - } - *outlen = hashsize; // Get the hash of the first HMAC vector plus the data - hash_descriptor[hash].done(&hmac->md, isha); + if ((err = hash_descriptor[hash].done(&hmac->md, isha)) != CRYPT_OK) { + return err; + } // Create the second HMAC vector vector for step (3) for(i=0; i < HMAC_BLOCKSIZE; i++) { @@ -120,12 +117,18 @@ int hmac_done(hmac_state *hmac, unsigned char *hashOut, unsigned long *outlen) hash_descriptor[hash].init(&hmac->md); hash_descriptor[hash].process(&hmac->md, buf, HMAC_BLOCKSIZE); hash_descriptor[hash].process(&hmac->md, isha, hashsize); - hash_descriptor[hash].done(&hmac->md, hashOut); + hash_descriptor[hash].done(&hmac->md, buf); + + // copy to output + for (i = 0; i < hashsize && i < *outlen; i++) { + hashOut[i] = buf[i]; + } + *outlen = i; #ifdef CLEAN_STACK zeromem(isha, sizeof(buf)); zeromem(buf, sizeof(isha)); - zeromem(hmac->key, sizeof(hmac->key)); + zeromem(hmac, sizeof(*hmac)); #endif return CRYPT_OK; } @@ -193,12 +196,16 @@ int hmac_file(int hash, const char *fname, const unsigned char *key, /* process the file contents */ do { x = fread(buf, 1, sizeof(buf), in); - if ((err = hmac_process(&hmac, buf, (unsigned long)x)) != CRYPT_OK) { - (void)fclose(in); + if ((err = hmac_process(&hmac, buf, (unsigned long)x)) != CRYPT_OK) { + /* we don't trap this error since we're already returning an error! */ + fclose(in); return err; } } while (x == sizeof(buf)); - (void)fclose(in); + + if (fclose(in) != 0) { + return CRYPT_ERROR; + } /* get final hmac */ if ((err = hmac_done(&hmac, dst, dstlen)) != CRYPT_OK) { @@ -235,7 +242,7 @@ int hmac_test(void) unsigned char digest[MAXBLOCKSIZE]; int i; - struct hmac_test_case { + static const struct hmac_test_case { int num; char *algo; unsigned char key[128]; diff --git a/makefile b/makefile index 3856a08..db830d7 100644 --- a/makefile +++ b/makefile @@ -9,16 +9,16 @@ # a build. This is easy to remedy though, for those that have problems. # The version -VERSION=0.91 +VERSION=0.92 #ch1-01-1 # Compiler and Linker Names -CC=gcc -LD=ld +#CC=gcc +#LD=ld # Archiver [makes .a files] -AR=ar -ARFLAGS=r +#AR=ar +#ARFLAGS=r #ch1-01-1 #ch1-01-3 @@ -66,7 +66,7 @@ OBJECTS=keyring.o gf.o mem.o sprng.o ecc.o base64.o dh.o rsa.o \ bits.o yarrow.o cfb.o ofb.o ecb.o ctr.o cbc.o hash.o tiger.o sha1.o \ md5.o md4.o md2.o sha256.o sha512.o xtea.o aes.o des.o \ safer_tab.o safer.o safer+.o rc4.o rc2.o rc6.o rc5.o cast5.o noekeon.o blowfish.o crypt.o \ -prime.o twofish.o packet.o hmac.o strings.o rmd128.o rmd160.o $(MPIOBJECT) +prime.o twofish.o packet.o hmac.o strings.o rmd128.o rmd160.o skipjack.o omac.o dsa.o $(MPIOBJECT) TESTOBJECTS=demos/test.o HASHOBJECTS=demos/hashsum.o @@ -94,7 +94,9 @@ rsa.o: rsa.c rsa_sys.c ecc.o: ecc.c ecc_sys.c dh.o: dh.c dh_sys.c aes.o: aes.c aes_tab.c +twofish.o: twofish.c twofish_tab.c sha512.o: sha512.c sha384.c +sha256.o: sha256.c sha224.c #This rule makes the libtomcrypt library. library: $(LIBNAME) @@ -140,7 +142,7 @@ install: library docs clean: rm -f $(OBJECTS) $(TESTOBJECTS) $(HASHOBJECTS) $(CRYPTOBJECTS) $(SMALLOBJECTS) $(LEFTOVERS) $(LIBNAME) rm -f $(TEST) $(HASH) $(COMPRESSED) $(PROFS) $(PROF) $(TVS) $(TV) - rm -f *stackdump *.lib *.exe *.obj demos/*.obj demos/*.o *.bat hash_tv.txt cipher_tv.txt + rm -f *.a *.dll *stackdump *.lib *.exe *.obj demos/*.obj demos/*.o *.bat *.txt #This builds the crypt.pdf file. Note that the rm -f *.pdf has been removed #from the clean command! This is because most people would like to keep the diff --git a/makefile.cygwin_dll b/makefile.cygwin_dll new file mode 100644 index 0000000..39bbbdd --- /dev/null +++ b/makefile.cygwin_dll @@ -0,0 +1,32 @@ + + +default: ltc_dll + + +# Compilation flags. Note the += does not write over the user's CFLAGS! +CFLAGS += -I./ -Wall -Wsign-compare -W -Wno-unused -Wshadow -Werror -mno-cygwin -DWIN32 + +# optimize for SPEED +#CFLAGS += -O3 -funroll-loops + +#add -fomit-frame-pointer. v3.2 is buggy for certain platforms! +#CFLAGS += -fomit-frame-pointer + +# optimize for SIZE +CFLAGS += -Os + +#Leave MPI built-in or force developer to link against libtommath? +MPIOBJECT=mpi.o + +OBJECTS=keyring.o gf.o mem.o sprng.o ecc.o base64.o dh.o rsa.o \ +bits.o yarrow.o cfb.o ofb.o ecb.o ctr.o cbc.o hash.o tiger.o sha1.o \ +md5.o md4.o md2.o sha256.o sha512.o xtea.o aes.o des.o \ +safer_tab.o safer.o safer+.o rc4.o rc2.o rc6.o rc5.o cast5.o noekeon.o blowfish.o crypt.o \ +prime.o twofish.o packet.o hmac.o strings.o rmd128.o rmd160.o skipjack.o omac.o dsa.o $(MPIOBJECT) + +ltc_dll: $(OBJECTS) $(MPIOBJECT) + gcc -mno-cygwin -mdll -o libtomcrypt.dll -Wl,--out-implib=libtomcrypt.dll.a -Wl,--export-all-symbols *.o -ladvapi32 + ranlib libtomcrypt.dll.a + +test: ltc_dll + gcc $(CFLAGS) demos/test.c libtomcrypt.dll.a -Wl,--enable-auto-import -o test -s diff --git a/makefile.msvc b/makefile.msvc index e9aa51d..327d23d 100644 --- a/makefile.msvc +++ b/makefile.msvc @@ -10,7 +10,8 @@ OBJECTS=keyring.obj gf.obj mem.obj sprng.obj ecc.obj base64.obj dh.obj rsa.obj \ bits.obj yarrow.obj cfb.obj ofb.obj ecb.obj ctr.obj cbc.obj hash.obj tiger.obj sha1.obj \ md5.obj md4.obj md2.obj sha256.obj sha512.obj xtea.obj aes.obj des.obj \ safer_tab.obj safer.obj safer+.obj rc4.obj rc2.obj rc6.obj rc5.obj cast5.obj noekeon.obj \ -blowfish.obj crypt.obj mpi.obj prime.obj twofish.obj packet.obj hmac.obj strings.obj rmd128.obj rmd160.obj +blowfish.obj crypt.obj mpi.obj prime.obj twofish.obj packet.obj hmac.obj strings.obj rmd128.obj rmd160.obj \ +skipjack.obj omac.obj dsa.obj library: $(OBJECTS) lib /out:tomcrypt.lib $(OBJECTS) @@ -28,4 +29,4 @@ tv_gen: demos/tv_gen.c library cl $(CFLAGS) demos/tv_gen.c tomcrypt.lib advapi32.lib hashsum: demos/hashsum.c library - cl $(CFLAGS) demos/hashsum.c tomcrypt.lib advapi32.lib \ No newline at end of file + cl $(CFLAGS) demos/hashsum.c tomcrypt.lib advapi32.lib diff --git a/makefile.out b/makefile.out index fd73e82..5aff811 100644 --- a/makefile.out +++ b/makefile.out @@ -9,11 +9,15 @@ CFLAGS += -Os -Wall -Wsign-compare -W -Wno-unused -Werror -I./ default: library -OBJECTS = keyring.o gf.o mem.o sprng.o ecc.o base64.o dh.o rsa.o bits.o yarrow.o cfb.o ofb.o ecb.o ctr.o cbc.o hash.o tiger.o sha1.o md5.o md4.o md2.o sha256.o sha512.o xtea.o aes.o des.o safer_tab.o safer.o safer+.o rc4.o rc2.o rc6.o rc5.o cast5.o noekeon.o blowfish.o crypt.o mpi.o prime.o twofish.o packet.o hmac.o strings.o +OBJECTS = keyring.o gf.o mem.o sprng.o ecc.o base64.o dh.o rsa.o bits.o yarrow.o cfb.o ofb.o ecb.o ctr.o cbc.o hash.o tiger.o sha1.o md5.o md4.o md2.o sha256.o sha512.o xtea.o aes.o des.o safer_tab.o safer.o safer+.o rc4.o rc2.o rc6.o rc5.o cast5.o noekeon.o blowfish.o crypt.o mpi.o prime.o twofish.o packet.o hmac.o strings.o rmd128.o rmd160.o skipjack.o omac.o dsa.o rsa.o: rsa_sys.c dh.o: dh_sys.c ecc.o: ecc_sys.c +aes.o: aes.c aes_tab.c +twofish.o: twofish.c twofish_tab.c +sha512.o: sha384.c sha512.c +sha256.o: sha256.c sha224.c library: $(OBJECTS) $(AR) r libtomcrypt.a $(OBJECTS) diff --git a/md2.c b/md2.c index 249f53a..90e1395 100644 --- a/md2.c +++ b/md2.c @@ -47,7 +47,7 @@ static void md2_update_chksum(hash_state *md) /* caution, the RFC says its "C[j] = S[M[i*16+j] xor L]" but the reference source code [and test vectors] say otherwise. */ - L = (md->md2.chksum[j] ^= PI_SUBST[(int)(md->md2.buf[j] ^ L)]); + L = (md->md2.chksum[j] ^= PI_SUBST[(int)(md->md2.buf[j] ^ L)] & 255); } } @@ -67,7 +67,7 @@ static void md2_compress(hash_state *md) /* do 18 rounds */ for (j = 0; j < 18; j++) { for (k = 0; k < 48; k++) { - t = (md->md2.X[k] ^= PI_SUBST[(int)t]); + t = (md->md2.X[k] ^= PI_SUBST[(int)(t & 255)]); } t = (t + (unsigned char)j) & 255; } @@ -84,11 +84,14 @@ void md2_init(hash_state *md) md->md2.curlen = 0; } -void md2_process(hash_state *md, const unsigned char *buf, unsigned long len) +int md2_process(hash_state *md, const unsigned char *buf, unsigned long len) { unsigned long n; _ARGCHK(md != NULL); _ARGCHK(buf != NULL); + if (md-> md2 .curlen > sizeof(md-> md2 .buf)) { + return CRYPT_INVALID_ARG; + } while (len > 0) { n = MIN(len, (16 - md->md2.curlen)); memcpy(md->md2.buf + md->md2.curlen, buf, (size_t)n); @@ -103,15 +106,21 @@ void md2_process(hash_state *md, const unsigned char *buf, unsigned long len) md->md2.curlen = 0; } } + return CRYPT_OK; } -void md2_done(hash_state * md, unsigned char *hash) +int md2_done(hash_state * md, unsigned char *hash) { unsigned long i, k; _ARGCHK(md != NULL); _ARGCHK(hash != NULL); + if (md->md2.curlen >= sizeof(md->md2.buf)) { + return CRYPT_INVALID_ARG; + } + + /* pad the message */ k = 16 - md->md2.curlen; for (i = md->md2.curlen; i < 16; i++) { @@ -132,6 +141,7 @@ void md2_done(hash_state * md, unsigned char *hash) #ifdef CLEAN_STACK zeromem(md, sizeof(hash_state)); #endif + return CRYPT_OK; } int md2_test(void) diff --git a/md4.c b/md4.c index d7b8d5e..6a2afad 100644 --- a/md4.c +++ b/md4.c @@ -53,12 +53,12 @@ const struct _hash_descriptor md4_desc = } #ifdef CLEAN_STACK -static void _md4_compress(hash_state *md) +static void _md4_compress(hash_state *md, unsigned char *buf) #else -static void md4_compress(hash_state *md) +static void md4_compress(hash_state *md, unsigned char *buf) #endif { - unsigned long x[16], a, b, c, d; + ulong32 x[16], a, b, c, d; int i; _ARGCHK(md != NULL); @@ -71,7 +71,7 @@ static void md4_compress(hash_state *md) /* copy the state into 512-bits into W[0..15] */ for (i = 0; i < 16; i++) { - LOAD32L(x[i], md->md4.buf + (4*i)); + LOAD32L(x[i], buf + (4*i)); } /* Round 1 */ @@ -137,10 +137,10 @@ static void md4_compress(hash_state *md) } #ifdef CLEAN_STACK -static void md4_compress(hash_state *md) +static void md4_compress(hash_state *md, unsigned char *buf) { - _md4_compress(md); - burn_stack(sizeof(unsigned long) * 20 + sizeof(int)); + _md4_compress(md, buf); + burn_stack(sizeof(ulong32) * 20 + sizeof(int)); } #endif @@ -152,37 +152,22 @@ void md4_init(hash_state * md) md->md4.state[2] = 0x98badcfeUL; md->md4.state[3] = 0x10325476UL; md->md4.length = 0; - md->md4.curlen = 0; + md->md4.curlen = 0; } -void md4_process(hash_state * md, const unsigned char *buf, unsigned long len) -{ - unsigned long n; - _ARGCHK(md != NULL); - _ARGCHK(buf != NULL); - while (len > 0) { - n = MIN(len, (64 - md->md4.curlen)); - memcpy(md->md4.buf + md->md4.curlen, buf, (size_t)n); - md->md4.curlen += n; - buf += n; - len -= n; +HASH_PROCESS(md4_process, md4_compress, md4, 64) - /* is 64 bytes full? */ - if (md->md4.curlen == 64) { - md4_compress(md); - md->md4.length += 512; - md->md4.curlen = 0; - } - } -} - -void md4_done(hash_state * md, unsigned char *hash) +int md4_done(hash_state * md, unsigned char *hash) { int i; _ARGCHK(md != NULL); _ARGCHK(hash != NULL); + if (md->md4.curlen >= sizeof(md->md4.buf)) { + return CRYPT_INVALID_ARG; + } + /* increase the length of the message */ md->md4.length += md->md4.curlen * 8; @@ -197,7 +182,7 @@ void md4_done(hash_state * md, unsigned char *hash) while (md->md4.curlen < 64) { md->md4.buf[md->md4.curlen++] = (unsigned char)0; } - md4_compress(md); + md4_compress(md, md->md4.buf); md->md4.curlen = 0; } @@ -208,7 +193,7 @@ void md4_done(hash_state * md, unsigned char *hash) /* store length */ STORE64L(md->md4.length, md->md4.buf+56); - md4_compress(md); + md4_compress(md, md->md4.buf); /* copy output */ for (i = 0; i < 4; i++) { @@ -216,7 +201,8 @@ void md4_done(hash_state * md, unsigned char *hash) } #ifdef CLEAN_STACK zeromem(md, sizeof(hash_state)); -#endif +#endif + return CRYPT_OK; } int md4_test(void) diff --git a/md5.c b/md5.c index 1a4dc95..b387de1 100644 --- a/md5.c +++ b/md5.c @@ -32,18 +32,18 @@ const struct _hash_descriptor md5_desc = a = (a + I(b,c,d) + M + t); a = ROL(a, s) + b; #ifdef CLEAN_STACK -static void _md5_compress(hash_state *md) +static void _md5_compress(hash_state *md, unsigned char *buf) #else -static void md5_compress(hash_state *md) +static void md5_compress(hash_state *md, unsigned char *buf) #endif { - unsigned long i, W[16], a, b, c, d; + ulong32 i, W[16], a, b, c, d; _ARGCHK(md != NULL); /* copy the state into 512-bits into W[0..15] */ for (i = 0; i < 16; i++) { - LOAD32L(W[i], md->md5.buf + (4*i)); + LOAD32L(W[i], buf + (4*i)); } /* copy state */ @@ -124,10 +124,10 @@ static void md5_compress(hash_state *md) } #ifdef CLEAN_STACK -static void md5_compress(hash_state *md) +static void md5_compress(hash_state *md, unsigned char *buf) { - _md5_compress(md); - burn_stack(sizeof(unsigned long) * 21); + _md5_compress(md, buf); + burn_stack(sizeof(ulong32) * 21); } #endif @@ -142,34 +142,20 @@ void md5_init(hash_state * md) md->md5.length = 0; } -void md5_process(hash_state * md, const unsigned char *buf, unsigned long len) -{ - unsigned long n; - _ARGCHK(md != NULL); - _ARGCHK(buf != NULL); - while (len > 0) { - n = MIN(len, (64 - md->md5.curlen)); - memcpy(md->md5.buf + md->md5.curlen, buf, (size_t)n); - md->md5.curlen += n; - buf += n; - len -= n; +HASH_PROCESS(md5_process, md5_compress, md5, 64) - /* is 64 bytes full? */ - if (md->md5.curlen == 64) { - md5_compress(md); - md->md5.length += 512; - md->md5.curlen = 0; - } - } -} - -void md5_done(hash_state * md, unsigned char *hash) +int md5_done(hash_state * md, unsigned char *hash) { int i; _ARGCHK(md != NULL); _ARGCHK(hash != NULL); + if (md->md5.curlen >= sizeof(md->md5.buf)) { + return CRYPT_INVALID_ARG; + } + + /* increase the length of the message */ md->md5.length += md->md5.curlen * 8; @@ -184,7 +170,7 @@ void md5_done(hash_state * md, unsigned char *hash) while (md->md5.curlen < 64) { md->md5.buf[md->md5.curlen++] = (unsigned char)0; } - md5_compress(md); + md5_compress(md, md->md5.buf); md->md5.curlen = 0; } @@ -195,7 +181,7 @@ void md5_done(hash_state * md, unsigned char *hash) /* store length */ STORE64L(md->md5.length, md->md5.buf+56); - md5_compress(md); + md5_compress(md, md->md5.buf); /* copy output */ for (i = 0; i < 4; i++) { @@ -204,6 +190,7 @@ void md5_done(hash_state * md, unsigned char *hash) #ifdef CLEAN_STACK zeromem(md, sizeof(hash_state)); #endif + return CRYPT_OK; } int md5_test(void) diff --git a/mpi.c b/mpi.c index ec95104..88ada33 100644 --- a/mpi.c +++ b/mpi.c @@ -13,8 +13,7 @@ * * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org */ -#include "mycrypt.h" -#include "tommath.h" +#include static const struct { int code; @@ -61,10 +60,10 @@ char *mp_error_to_string(int code) */ #include -/* computes the modular inverse via binary extended euclidean algorithm, - * that is c = 1/a mod b +/* computes the modular inverse via binary extended euclidean algorithm, + * that is c = 1/a mod b * - * Based on mp_invmod except this is optimized for the case where b is + * Based on mp_invmod except this is optimized for the case where b is * odd as per HAC Note 14.64 on pp. 610 */ int @@ -73,11 +72,8 @@ fast_mp_invmod (mp_int * a, mp_int * b, mp_int * c) mp_int x, y, u, v, B, D; int res, neg; - /* 2. [modified] if a,b are both even then return an error! - * - * That is if gcd(a,b) = 2**k * q then obviously there is no inverse. - */ - if (mp_iseven (a) == 1 && mp_iseven (b) == 1) { + /* 2. [modified] b must be odd */ + if (mp_iseven (b) == 1) { return MP_VAL; } @@ -270,7 +266,7 @@ fast_mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) * that W[ix-1] have the carry cleared (see after the inner loop) */ register mp_digit mu; - mu = ((W[ix] & MP_MASK) * rho) & MP_MASK; + mu = (mp_digit) (((W[ix] & MP_MASK) * rho) & MP_MASK); /* a = a + mu * m * b**i * @@ -384,15 +380,15 @@ fast_mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) /* Fast (comba) multiplier * - * This is the fast column-array [comba] multiplier. It is - * designed to compute the columns of the product first - * then handle the carries afterwards. This has the effect + * This is the fast column-array [comba] multiplier. It is + * designed to compute the columns of the product first + * then handle the carries afterwards. This has the effect * of making the nested loops that compute the columns very * simple and schedulable on super-scalar processors. * - * This has been modified to produce a variable number of - * digits of output so if say only a half-product is required - * you don't have to compute the upper half (a feature + * This has been modified to produce a variable number of + * digits of output so if say only a half-product is required + * you don't have to compute the upper half (a feature * required for fast Barrett reduction). * * Based on Algorithm 14.12 on pp.595 of HAC. @@ -417,8 +413,8 @@ fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) /* calculate the columns */ pa = a->used; for (ix = 0; ix < pa; ix++) { - /* this multiplier has been modified to allow you to - * control how many digits of output are produced. + /* this multiplier has been modified to allow you to + * control how many digits of output are produced. * So at most we want to make upto "digs" digits of output. * * this adds products to distinct columns (at ix+iy) of W @@ -466,11 +462,11 @@ fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) * correct result we must take the extra bits from each column and * carry them down * - * Note that while this adds extra code to the multiplier it - * saves time since the carry propagation is removed from the - * above nested loop.This has the effect of reducing the work - * from N*(N+N*c)==N**2 + c*N**2 to N**2 + N*c where c is the - * cost of the shifting. On very small numbers this is slower + * Note that while this adds extra code to the multiplier it + * saves time since the carry propagation is removed from the + * above nested loop.This has the effect of reducing the work + * from N*(N+N*c)==N**2 + c*N**2 to N**2 + N*c where c is the + * cost of the shifting. On very small numbers this is slower * but on most cryptographic size numbers it is faster. * * In this particular implementation we feed the carries from @@ -557,12 +553,12 @@ fast_s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) /* alias for right side */ tmpy = b->dp + iy; - - /* alias for the columns of output. Offset to be equal to or above the - * smallest digit place requested + + /* alias for the columns of output. Offset to be equal to or above the + * smallest digit place requested */ - _W = W + digs; - + _W = W + digs; + /* skip cases below zero where ix > digs */ if (iy < 0) { iy = abs(iy); @@ -762,7 +758,7 @@ fast_s_mp_sqr (mp_int * a, mp_int * b) */ #include -/* computes a = 2**b +/* computes a = 2**b * * Simple algorithm which zeroes the int, grows it then just sets one bit * as required. @@ -808,7 +804,7 @@ mp_2expt (mp_int * a, int b) */ #include -/* b = |a| +/* b = |a| * * Simple function copies the input and fixes the sign to positive */ @@ -850,8 +846,7 @@ mp_abs (mp_int * a, mp_int * b) #include /* high level addition (handles signs) */ -int -mp_add (mp_int * a, mp_int * b, mp_int * c) +int mp_add (mp_int * a, mp_int * b, mp_int * c) { int sa, sb, res; @@ -1102,7 +1097,7 @@ mp_and (mp_int * a, mp_int * b, mp_int * c) */ #include -/* trim unused digits +/* trim unused digits * * This is used to ensure that leading zero digits are * trimed and the leading "used" digit will be non-zero @@ -1154,7 +1149,7 @@ mp_clear (mp_int * a) memset (a->dp, 0, sizeof (mp_digit) * a->used); /* free ram */ - XFREE (a->dp); + XFREE(a->dp); /* reset members to make debugging easier */ a->dp = NULL; @@ -1183,7 +1178,7 @@ mp_clear (mp_int * a) #include #include -void mp_clear_multi(mp_int *mp, ...) +void mp_clear_multi(mp_int *mp, ...) { mp_int* next_mp = mp; va_list args; @@ -1226,7 +1221,7 @@ mp_cmp (mp_int * a, mp_int * b) return MP_GT; } } - + /* compare digits */ if (a->sign == MP_NEG) { /* if negative compare opposite direction */ @@ -1256,8 +1251,7 @@ mp_cmp (mp_int * a, mp_int * b) #include /* compare a digit */ -int -mp_cmp_d (mp_int * a, mp_digit b) +int mp_cmp_d(mp_int * a, mp_digit b) { /* compare based on sign */ if (a->sign == MP_NEG) { @@ -1299,8 +1293,7 @@ mp_cmp_d (mp_int * a, mp_digit b) #include /* compare maginitude of two ints (unsigned) */ -int -mp_cmp_mag (mp_int * a, mp_int * b) +int mp_cmp_mag (mp_int * a, mp_int * b) { int n; mp_digit *tmpa, *tmpb; @@ -1309,7 +1302,7 @@ mp_cmp_mag (mp_int * a, mp_int * b) if (a->used > b->used) { return MP_GT; } - + if (a->used < b->used) { return MP_LT; } @@ -1477,7 +1470,7 @@ mp_count_bits (mp_int * a) /* get number of digits and add that */ r = (a->used - 1) * DIGIT_BIT; - + /* take the last digit and count the bits in it */ q = a->dp[a->used - 1]; while (q > ((mp_digit) 0)) { @@ -1506,21 +1499,20 @@ mp_count_bits (mp_int * a) */ #include -/* integer signed division. +/* integer signed division. * c*b + d == a [e.g. a/b, c=quotient, d=remainder] * HAC pp.598 Algorithm 14.20 * - * Note that the description in HAC is horribly - * incomplete. For example, it doesn't consider - * the case where digits are removed from 'x' in - * the inner loop. It also doesn't consider the + * Note that the description in HAC is horribly + * incomplete. For example, it doesn't consider + * the case where digits are removed from 'x' in + * the inner loop. It also doesn't consider the * case that y has fewer than three digits, etc.. * - * The overall algorithm is as described as + * The overall algorithm is as described as * 14.20 from HAC but fixed to treat these cases. */ -int -mp_div (mp_int * a, mp_int * b, mp_int * c, mp_int * d) +int mp_div (mp_int * a, mp_int * b, mp_int * c, mp_int * d) { mp_int q, x, y, t1, t2; int res, n, t, i, norm, neg; @@ -1607,7 +1599,7 @@ mp_div (mp_int * a, mp_int * b, mp_int * c, mp_int * d) continue; } - /* step 3.1 if xi == yt then set q{i-t-1} to b-1, + /* step 3.1 if xi == yt then set q{i-t-1} to b-1, * otherwise set q{i-t-1} to (xi*b + x{i-1})/yt */ if (x.dp[i] == y.dp[t]) { q.dp[i - t - 1] = ((((mp_digit)1) << DIGIT_BIT) - 1); @@ -1621,10 +1613,10 @@ mp_div (mp_int * a, mp_int * b, mp_int * c, mp_int * d) q.dp[i - t - 1] = (mp_digit) (tmp & (mp_word) (MP_MASK)); } - /* while (q{i-t-1} * (yt * b + y{t-1})) > - xi * b**2 + xi-1 * b + xi-2 - - do q{i-t-1} -= 1; + /* while (q{i-t-1} * (yt * b + y{t-1})) > + xi * b**2 + xi-1 * b + xi-2 + + do q{i-t-1} -= 1; */ q.dp[i - t - 1] = (q.dp[i - t - 1] + 1) & MP_MASK; do { @@ -1675,10 +1667,10 @@ mp_div (mp_int * a, mp_int * b, mp_int * c, mp_int * d) } } - /* now q is the quotient and x is the remainder - * [which we have to normalize] + /* now q is the quotient and x is the remainder + * [which we have to normalize] */ - + /* get sign before writing to c */ x.sign = a->sign; @@ -1723,8 +1715,7 @@ __Q:mp_clear (&q); #include /* b = a/2 */ -int -mp_div_2 (mp_int * a, mp_int * b) +int mp_div_2(mp_int * a, mp_int * b) { int x, res, oldused; @@ -1790,8 +1781,7 @@ mp_div_2 (mp_int * a, mp_int * b) #include /* shift right by a certain bit count (store quotient in c, optional remainder in d) */ -int -mp_div_2d (mp_int * a, int b, mp_int * c, mp_int * d) +int mp_div_2d (mp_int * a, int b, mp_int * c, mp_int * d) { mp_digit D, r, rr; int x, res; @@ -1893,14 +1883,14 @@ mp_div_3 (mp_int * a, mp_int *c, mp_digit * d) mp_word w, t; mp_digit b; int res, ix; - + /* b = 2**DIGIT_BIT / 3 */ b = (((mp_word)1) << ((mp_word)DIGIT_BIT)) / ((mp_word)3); if ((res = mp_init_size(&q, a->used)) != MP_OKAY) { return res; } - + q.used = a->used; q.sign = a->sign; w = 0; @@ -1938,7 +1928,7 @@ mp_div_3 (mp_int * a, mp_int *c, mp_digit * d) mp_exch(&q, c); } mp_clear(&q); - + return res; } @@ -2020,32 +2010,32 @@ mp_div_d (mp_int * a, mp_digit b, mp_int * c, mp_digit * d) if ((res = mp_init_size(&q, a->used)) != MP_OKAY) { return res; } - + q.used = a->used; q.sign = a->sign; w = 0; for (ix = a->used - 1; ix >= 0; ix--) { w = (w << ((mp_word)DIGIT_BIT)) | ((mp_word)a->dp[ix]); - + if (w >= b) { t = (mp_digit)(w / b); - w = w % b; + w -= ((mp_word)t) * ((mp_word)b); } else { t = 0; } q.dp[ix] = (mp_digit)t; } - + if (d != NULL) { *d = (mp_digit)w; } - + if (c != NULL) { mp_clamp(&q); mp_exch(&q, c); } mp_clear(&q); - + return res; } @@ -2208,7 +2198,7 @@ void mp_dr_setup(mp_int *a, mp_digit *d) /* the casts are required if DIGIT_BIT is one less than * the number of bits in a mp_digit [e.g. DIGIT_BIT==31] */ - *d = (mp_digit)((((mp_word)1) << ((mp_word)DIGIT_BIT)) - + *d = (mp_digit)((((mp_word)1) << ((mp_word)DIGIT_BIT)) - ((mp_word)a->dp[0])); } @@ -2232,7 +2222,7 @@ void mp_dr_setup(mp_int *a, mp_digit *d) */ #include -/* swap the elements of two integers, for cases where you can't simply swap the +/* swap the elements of two integers, for cases where you can't simply swap the * mp_int pointers around */ void @@ -2265,8 +2255,7 @@ mp_exch (mp_int * a, mp_int * b) #include /* calculate c = a**b using a square-multiply algorithm */ -int -mp_expt_d (mp_int * a, mp_digit b, mp_int * c) +int mp_expt_d (mp_int * a, mp_digit b, mp_int * c) { int res, x; mp_int g; @@ -2326,8 +2315,7 @@ mp_expt_d (mp_int * a, mp_digit b, mp_int * c) * embedded in the normal function but that wasted alot of stack space * for nothing (since 99% of the time the Montgomery code would be called) */ -int -mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) +int mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) { int dr; @@ -2373,7 +2361,7 @@ mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) if (dr == 0) { dr = mp_reduce_is_2k(P) << 1; } - + /* if the modulus is odd or dr != 0 use the fast method */ if (mp_isodd (P) == 1 || dr != 0) { return mp_exptmod_fast (G, X, P, Y, dr); @@ -2698,10 +2686,10 @@ __M: int mp_fread(mp_int *a, int radix, FILE *stream) { int err, ch, neg, y; - + /* clear a */ mp_zero(a); - + /* if first digit is - then set negative */ ch = fgetc(stream); if (ch == '-') { @@ -2710,7 +2698,7 @@ int mp_fread(mp_int *a, int radix, FILE *stream) } else { neg = MP_ZPOS; } - + for (;;) { /* find y in the radix map */ for (y = 0; y < radix; y++) { @@ -2721,7 +2709,7 @@ int mp_fread(mp_int *a, int radix, FILE *stream) if (y == radix) { break; } - + /* shift up and add */ if ((err = mp_mul_d(a, radix, a)) != MP_OKAY) { return err; @@ -2729,13 +2717,13 @@ int mp_fread(mp_int *a, int radix, FILE *stream) if ((err = mp_add_d(a, y, a)) != MP_OKAY) { return err; } - + ch = fgetc(stream); } if (mp_cmp_d(a, 0) != MP_EQ) { a->sign = neg; } - + return MP_OKAY; } @@ -2763,30 +2751,30 @@ int mp_fwrite(mp_int *a, int radix, FILE *stream) { char *buf; int err, len, x; - + len = mp_radix_size(a, radix); if (len == 0) { return MP_VAL; } - - buf = XMALLOC(len); + + buf = XMALLOC (len); if (buf == NULL) { return MP_MEM; } - + if ((err = mp_toradix(a, buf, radix)) != MP_OKAY) { - free(buf); + XFREE (buf); return err; } - + for (x = 0; x < len; x++) { if (fputc(buf[x], stream) == EOF) { - free(buf); + XFREE (buf); return MP_VAL; } } - - free(buf); + + XFREE (buf); return MP_OKAY; } @@ -2811,8 +2799,7 @@ int mp_fwrite(mp_int *a, int radix, FILE *stream) #include /* Greatest Common Divisor using the binary method */ -int -mp_gcd (mp_int * a, mp_int * b, mp_int * c) +int mp_gcd (mp_int * a, mp_int * b, mp_int * c) { mp_int u, v; int k, u_lsb, v_lsb, res; @@ -2880,17 +2867,17 @@ mp_gcd (mp_int * a, mp_int * b, mp_int * c) /* swap u and v to make sure v is >= u */ mp_exch(&u, &v); } - + /* subtract smallest from largest */ if ((res = s_mp_sub(&v, &u, &v)) != MP_OKAY) { goto __V; } - + /* Divide out all factors of two */ if ((res = mp_div_2d(&v, mp_cnt_lsb(&v), &v, NULL)) != MP_OKAY) { goto __V; - } - } + } + } /* multiply by 2**k which we divided out at the beginning */ if ((res = mp_mul_2d (&u, k, c)) != MP_OKAY) { @@ -2923,13 +2910,11 @@ __U:mp_clear (&v); #include /* grow as required */ -int -mp_grow (mp_int * a, int size) +int mp_grow (mp_int * a, int size) { int i; mp_digit *tmp; - /* if the alloc size is smaller alloc more ram */ if (a->alloc < size) { /* ensure there are always at least MP_PREC digits extra on top */ @@ -2980,11 +2965,10 @@ mp_grow (mp_int * a, int size) #include /* init a new bigint */ -int -mp_init (mp_int * a) +int mp_init (mp_int * a) { /* allocate memory required and clear it */ - a->dp = OPT_CAST calloc (sizeof (mp_digit), MP_PREC); + a->dp = OPT_CAST XCALLOC (sizeof (mp_digit), MP_PREC); if (a->dp == NULL) { return MP_MEM; } @@ -3018,8 +3002,7 @@ mp_init (mp_int * a) #include /* creates "a" then copies b into it */ -int -mp_init_copy (mp_int * a, mp_int * b) +int mp_init_copy (mp_int * a, mp_int * b) { int res; @@ -3049,7 +3032,7 @@ mp_init_copy (mp_int * a, mp_int * b) #include #include -int mp_init_multi(mp_int *mp, ...) +int mp_init_multi(mp_int *mp, ...) { mp_err res = MP_OKAY; /* Assume ok until proven otherwise */ int n = 0; /* Number of ok inits */ @@ -3063,11 +3046,11 @@ int mp_init_multi(mp_int *mp, ...) succeeded in init-ing, then return error. */ va_list clean_args; - + /* end the current list */ va_end(args); - - /* now start cleaning up */ + + /* now start cleaning up */ cur_arg = mp; va_start(clean_args, mp); while (n--) { @@ -3106,14 +3089,13 @@ int mp_init_multi(mp_int *mp, ...) #include /* init an mp_init for a given size */ -int -mp_init_size (mp_int * a, int size) +int mp_init_size (mp_int * a, int size) { /* pad size so there are always extra digits */ - size += (MP_PREC * 2) - (size % MP_PREC); - + size += (MP_PREC * 2) - (size % MP_PREC); + /* alloc mem */ - a->dp = OPT_CAST calloc (sizeof (mp_digit), size); + a->dp = OPT_CAST XCALLOC (sizeof (mp_digit), size); if (a->dp == NULL) { return MP_MEM; } @@ -3144,8 +3126,7 @@ mp_init_size (mp_int * a, int size) #include /* hac 14.61, pp608 */ -int -mp_invmod (mp_int * a, mp_int * b, mp_int * c) +int mp_invmod (mp_int * a, mp_int * b, mp_int * c) { mp_int x, y, u, v, A, B, C, D; int res; @@ -3159,9 +3140,9 @@ mp_invmod (mp_int * a, mp_int * b, mp_int * c) if (mp_isodd (b) == 1) { return fast_mp_invmod (a, b, c); } - + /* init temps */ - if ((res = mp_init_multi(&x, &y, &u, &v, + if ((res = mp_init_multi(&x, &y, &u, &v, &A, &B, &C, &D, NULL)) != MP_OKAY) { return res; } @@ -3288,14 +3269,14 @@ top: goto __ERR; } } - + /* too big */ while (mp_cmp_mag(&C, b) != MP_LT) { if ((res = mp_sub(&C, b, &C)) != MP_OKAY) { goto __ERR; } } - + /* C is now the inverse */ mp_exch (&C, c); res = MP_OKAY; @@ -3325,8 +3306,7 @@ __ERR:mp_clear_multi (&x, &y, &u, &v, &A, &B, &C, &D, NULL); /* computes the jacobi c = (a | n) (or Legendre if n is prime) * HAC pp. 73 Algorithm 2.149 */ -int -mp_jacobi (mp_int * a, mp_int * p, int *c) +int mp_jacobi (mp_int * a, mp_int * p, int *c) { mp_int a1, p1; int k, s, r, res; @@ -3426,33 +3406,33 @@ __A1:mp_clear (&a1); */ #include -/* c = |a| * |b| using Karatsuba Multiplication using +/* c = |a| * |b| using Karatsuba Multiplication using * three half size multiplications * - * Let B represent the radix [e.g. 2**DIGIT_BIT] and - * let n represent half of the number of digits in + * Let B represent the radix [e.g. 2**DIGIT_BIT] and + * let n represent half of the number of digits in * the min(a,b) * * a = a1 * B**n + a0 * b = b1 * B**n + b0 * - * Then, a * b => + * Then, a * b => a1b1 * B**2n + ((a1 - a0)(b1 - b0) + a0b0 + a1b1) * B + a0b0 * - * Note that a1b1 and a0b0 are used twice and only need to be - * computed once. So in total three half size (half # of - * digit) multiplications are performed, a0b0, a1b1 and + * Note that a1b1 and a0b0 are used twice and only need to be + * computed once. So in total three half size (half # of + * digit) multiplications are performed, a0b0, a1b1 and * (a1-b1)(a0-b0) * * Note that a multiplication of half the digits requires - * 1/4th the number of single precision multiplications so in - * total after one call 25% of the single precision multiplications - * are saved. Note also that the call to mp_mul can end up back - * in this function if the a0, a1, b0, or b1 are above the threshold. - * This is known as divide-and-conquer and leads to the famous - * O(N**lg(3)) or O(N**1.584) work which is asymptopically lower than - * the standard O(N**2) that the baseline/comba methods use. - * Generally though the overhead of this method doesn't pay off + * 1/4th the number of single precision multiplications so in + * total after one call 25% of the single precision multiplications + * are saved. Note also that the call to mp_mul can end up back + * in this function if the a0, a1, b0, or b1 are above the threshold. + * This is known as divide-and-conquer and leads to the famous + * O(N**lg(3)) or O(N**1.584) work which is asymptopically lower than + * the standard O(N**2) that the baseline/comba methods use. + * Generally though the overhead of this method doesn't pay off * until a certain size (N ~ 80) is reached. */ int @@ -3524,7 +3504,7 @@ mp_karatsuba_mul (mp_int * a, mp_int * b, mp_int * c) } } - /* only need to clamp the lower words since by definition the + /* only need to clamp the lower words since by definition the * upper words x1/y1 must have a known number of digits */ mp_clamp (&x0); @@ -3532,7 +3512,7 @@ mp_karatsuba_mul (mp_int * a, mp_int * b, mp_int * c) /* now calc the products x0y0 and x1y1 */ /* after this x0 is no longer required, free temp [x0==t2]! */ - if (mp_mul (&x0, &y0, &x0y0) != MP_OKAY) + if (mp_mul (&x0, &y0, &x0y0) != MP_OKAY) goto X1Y1; /* x0y0 = x0*y0 */ if (mp_mul (&x1, &y1, &x1y1) != MP_OKAY) goto X1Y1; /* x1y1 = x1*y1 */ @@ -3595,11 +3575,11 @@ ERR: */ #include -/* Karatsuba squaring, computes b = a*a using three +/* Karatsuba squaring, computes b = a*a using three * half size squarings * - * See comments of mp_karatsuba_mul for details. It - * is essentially the same algorithm but merely + * See comments of mp_karatsuba_mul for details. It + * is essentially the same algorithm but merely * tuned to perform recursive squarings. */ int @@ -3716,8 +3696,7 @@ ERR: #include /* computes least common multiple as |a*b|/(a, b) */ -int -mp_lcm (mp_int * a, mp_int * b, mp_int * c) +int mp_lcm (mp_int * a, mp_int * b, mp_int * c) { int res; mp_int t1, t2; @@ -3775,8 +3754,7 @@ __T: #include /* shift left a certain amount of digits */ -int -mp_lshd (mp_int * a, int b) +int mp_lshd (mp_int * a, int b) { int x, res; @@ -4059,7 +4037,7 @@ mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) * following inner loop to reduce the * input one digit at a time */ - mu = ((mp_word)x->dp[ix]) * ((mp_word)rho) & MP_MASK; + mu = (mp_digit) (((mp_word)x->dp[ix]) * ((mp_word)rho) & MP_MASK); /* a = a + mu * m * b**i */ { @@ -4196,8 +4174,7 @@ mp_montgomery_setup (mp_int * n, mp_digit * rho) #include /* high level multiplication (handles sign) */ -int -mp_mul (mp_int * a, mp_int * b, mp_int * c) +int mp_mul (mp_int * a, mp_int * b, mp_int * c) { int res, neg; neg = (a->sign == b->sign) ? MP_ZPOS : MP_NEG; @@ -4211,14 +4188,14 @@ mp_mul (mp_int * a, mp_int * b, mp_int * c) } else { /* can we use the fast multiplier? * - * The fast multiplier can be used if the output will - * have less than MP_WARRAY digits and the number of + * The fast multiplier can be used if the output will + * have less than MP_WARRAY digits and the number of * digits won't affect carry propagation */ int digs = a->used + b->used + 1; if ((digs < MP_WARRAY) && - MIN(a->used, b->used) <= + MIN(a->used, b->used) <= (1 << ((CHAR_BIT * sizeof (mp_word)) - (2 * DIGIT_BIT)))) { res = fast_s_mp_mul_digs (a, b, c, digs); } else { @@ -4250,8 +4227,7 @@ mp_mul (mp_int * a, mp_int * b, mp_int * c) #include /* b = a*2 */ -int -mp_mul_2 (mp_int * a, mp_int * b) +int mp_mul_2(mp_int * a, mp_int * b) { int x, res, oldused; @@ -4270,24 +4246,24 @@ mp_mul_2 (mp_int * a, mp_int * b) /* alias for source */ tmpa = a->dp; - + /* alias for dest */ tmpb = b->dp; /* carry */ r = 0; for (x = 0; x < a->used; x++) { - - /* get what will be the *next* carry bit from the - * MSB of the current digit + + /* get what will be the *next* carry bit from the + * MSB of the current digit */ rr = *tmpa >> ((mp_digit)(DIGIT_BIT - 1)); - + /* now shift up this digit, add in the carry [from the previous] */ *tmpb++ = ((*tmpa++ << ((mp_digit)1)) | r) & MP_MASK; - - /* copy the carry that would be from the source - * digit into the next iteration + + /* copy the carry that would be from the source + * digit into the next iteration */ r = rr; } @@ -4299,8 +4275,8 @@ mp_mul_2 (mp_int * a, mp_int * b) ++(b->used); } - /* now zero any excess digits on the destination - * that we didn't write to + /* now zero any excess digits on the destination + * that we didn't write to */ tmpb = b->dp + b->used; for (x = b->used; x < oldused; x++) { @@ -4331,8 +4307,7 @@ mp_mul_2 (mp_int * a, mp_int * b) #include /* shift left by a certain bit count */ -int -mp_mul_2d (mp_int * a, int b, mp_int * c) +int mp_mul_2d (mp_int * a, int b, mp_int * c) { mp_digit d; int res; @@ -4385,7 +4360,7 @@ mp_mul_2d (mp_int * a, int b, mp_int * c) /* set the carry to the carry bits of the current word */ r = rr; } - + /* set final carry */ if (r != 0) { c->dp[(c->used)++] = r; @@ -4497,7 +4472,6 @@ mp_mulmod (mp_int * a, mp_int * b, mp_int * c, mp_int * d) int res; mp_int t; - if ((res = mp_init (&t)) != MP_OKAY) { return res; } @@ -4530,18 +4504,17 @@ mp_mulmod (mp_int * a, mp_int * b, mp_int * c, mp_int * d) */ #include -/* find the n'th root of an integer +/* find the n'th root of an integer * - * Result found such that (c)**b <= a and (c+1)**b > a + * Result found such that (c)**b <= a and (c+1)**b > a * - * This algorithm uses Newton's approximation - * x[i+1] = x[i] - f(x[i])/f'(x[i]) - * which will find the root in log(N) time where - * each step involves a fair bit. This is not meant to + * This algorithm uses Newton's approximation + * x[i+1] = x[i] - f(x[i])/f'(x[i]) + * which will find the root in log(N) time where + * each step involves a fair bit. This is not meant to * find huge roots [square and cube, etc]. */ -int -mp_n_root (mp_int * a, mp_digit b, mp_int * c) +int mp_n_root (mp_int * a, mp_digit b, mp_int * c) { mp_int t1, t2, t3; int res, neg; @@ -4577,31 +4550,31 @@ mp_n_root (mp_int * a, mp_digit b, mp_int * c) } /* t2 = t1 - ((t1**b - a) / (b * t1**(b-1))) */ - + /* t3 = t1**(b-1) */ - if ((res = mp_expt_d (&t1, b - 1, &t3)) != MP_OKAY) { + if ((res = mp_expt_d (&t1, b - 1, &t3)) != MP_OKAY) { goto __T3; } /* numerator */ /* t2 = t1**b */ - if ((res = mp_mul (&t3, &t1, &t2)) != MP_OKAY) { + if ((res = mp_mul (&t3, &t1, &t2)) != MP_OKAY) { goto __T3; } /* t2 = t1**b - a */ - if ((res = mp_sub (&t2, a, &t2)) != MP_OKAY) { + if ((res = mp_sub (&t2, a, &t2)) != MP_OKAY) { goto __T3; } /* denominator */ /* t3 = t1**(b-1) * b */ - if ((res = mp_mul_d (&t3, b, &t3)) != MP_OKAY) { + if ((res = mp_mul_d (&t3, b, &t3)) != MP_OKAY) { goto __T3; } /* t3 = (t1**b - a)/(b * t1**(b-1)) */ - if ((res = mp_div (&t2, &t3, &t3, NULL)) != MP_OKAY) { + if ((res = mp_div (&t2, &t3, &t3, NULL)) != MP_OKAY) { goto __T3; } @@ -4662,8 +4635,7 @@ __T1:mp_clear (&t1); #include /* b = -a */ -int -mp_neg (mp_int * a, mp_int * b) +int mp_neg (mp_int * a, mp_int * b) { int res; if ((res = mp_copy (a, b)) != MP_OKAY) { @@ -4695,8 +4667,7 @@ mp_neg (mp_int * a, mp_int * b) #include /* OR two ints together */ -int -mp_or (mp_int * a, mp_int * b, mp_int * c) +int mp_or (mp_int * a, mp_int * b, mp_int * c) { int res, ix, px; mp_int t, *x; @@ -4744,21 +4715,20 @@ mp_or (mp_int * a, mp_int * b, mp_int * c) #include /* performs one Fermat test. - * + * * If "a" were prime then b**a == b (mod a) since the order of * the multiplicative sub-group would be phi(a) = a-1. That means * it would be the same as b**(a mod (a-1)) == b**1 == b (mod a). * * Sets result to 1 if the congruence holds, or zero otherwise. */ -int -mp_prime_fermat (mp_int * a, mp_int * b, int *result) +int mp_prime_fermat (mp_int * a, mp_int * b, int *result) { mp_int t; int err; /* default to composite */ - *result = 0; + *result = MP_NO; /* ensure b > 1 */ if (mp_cmp_d(b, 1) != MP_GT) { @@ -4777,7 +4747,7 @@ mp_prime_fermat (mp_int * a, mp_int * b, int *result) /* is it equal to b? */ if (mp_cmp (&t, b) == MP_EQ) { - *result = 1; + *result = MP_YES; } err = MP_OKAY; @@ -4804,19 +4774,18 @@ __T:mp_clear (&t); */ #include -/* determines if an integers is divisible by one +/* determines if an integers is divisible by one * of the first PRIME_SIZE primes or not * * sets result to 0 if not, 1 if yes */ -int -mp_prime_is_divisible (mp_int * a, int *result) +int mp_prime_is_divisible (mp_int * a, int *result) { int err, ix; mp_digit res; /* default to not */ - *result = 0; + *result = MP_NO; for (ix = 0; ix < PRIME_SIZE; ix++) { /* what is a mod __prime_tab[ix] */ @@ -4826,7 +4795,7 @@ mp_prime_is_divisible (mp_int * a, int *result) /* is the residue zero? */ if (res == 0) { - *result = 1; + *result = MP_YES; return MP_OKAY; } } @@ -4860,14 +4829,13 @@ mp_prime_is_divisible (mp_int * a, int *result) * * Sets result to 1 if probably prime, 0 otherwise */ -int -mp_prime_is_prime (mp_int * a, int t, int *result) +int mp_prime_is_prime (mp_int * a, int t, int *result) { mp_int b; int ix, err, res; /* default to no */ - *result = 0; + *result = MP_NO; /* valid value of t? */ if (t <= 0 || t > PRIME_SIZE) { @@ -4888,7 +4856,7 @@ mp_prime_is_prime (mp_int * a, int t, int *result) } /* return if it was trivially divisible */ - if (res == 1) { + if (res == MP_YES) { return MP_OKAY; } @@ -4905,13 +4873,13 @@ mp_prime_is_prime (mp_int * a, int t, int *result) goto __B; } - if (res == 0) { + if (res == MP_NO) { goto __B; } } /* passed the test */ - *result = 1; + *result = MP_YES; __B:mp_clear (&b); return err; } @@ -4935,26 +4903,25 @@ __B:mp_clear (&b); */ #include -/* Miller-Rabin test of "a" to the base of "b" as described in +/* Miller-Rabin test of "a" to the base of "b" as described in * HAC pp. 139 Algorithm 4.24 * * Sets result to 0 if definitely composite or 1 if probably prime. - * Randomly the chance of error is no more than 1/4 and often + * Randomly the chance of error is no more than 1/4 and often * very much lower. */ -int -mp_prime_miller_rabin (mp_int * a, mp_int * b, int *result) +int mp_prime_miller_rabin (mp_int * a, mp_int * b, int *result) { mp_int n1, y, r; int s, j, err; /* default */ - *result = 0; + *result = MP_NO; /* ensure b > 1 */ if (mp_cmp_d(b, 1) != MP_GT) { return MP_VAL; - } + } /* get n1 = a - 1 */ if ((err = mp_init_copy (&n1, a)) != MP_OKAY) { @@ -5011,7 +4978,7 @@ mp_prime_miller_rabin (mp_int * a, mp_int * b, int *result) } /* probably prime now */ - *result = 1; + *result = MP_YES; __Y:mp_clear (&y); __R:mp_clear (&r); __N1:mp_clear (&n1); @@ -5169,12 +5136,12 @@ int mp_prime_next_prime(mp_int *a, int t, int bbs_style) if ((err = mp_prime_miller_rabin(a, &b, &res)) != MP_OKAY) { goto __ERR; } - if (res == 0) { + if (res == MP_NO) { break; } } - if (res == 1) { + if (res == MP_YES) { break; } } @@ -5188,6 +5155,84 @@ __ERR: /* End: bn_mp_prime_next_prime.c */ +/* Start: bn_mp_prime_random.c */ +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ +#include + +/* makes a truly random prime of a given size (bytes), + * call with bbs = 1 if you want it to be congruent to 3 mod 4 + * + * You have to supply a callback which fills in a buffer with random bytes. "dat" is a parameter you can + * have passed to the callback (e.g. a state or something). This function doesn't use "dat" itself + * so it can be NULL + * + * The prime generated will be larger than 2^(8*size). + */ + +/* this sole function may hold the key to enslaving all mankind! */ +int mp_prime_random(mp_int *a, int t, int size, int bbs, ltm_prime_callback cb, void *dat) +{ + unsigned char *tmp; + int res, err; + + /* sanity check the input */ + if (size <= 0) { + return MP_VAL; + } + + /* we need a buffer of size+1 bytes */ + tmp = XMALLOC(size+1); + if (tmp == NULL) { + return MP_MEM; + } + + /* fix MSB */ + tmp[0] = 1; + + do { + /* read the bytes */ + if (cb(tmp+1, size, dat) != size) { + err = MP_VAL; + goto error; + } + + /* fix the LSB */ + tmp[size] |= (bbs ? 3 : 1); + + /* read it in */ + if ((err = mp_read_unsigned_bin(a, tmp, size+1)) != MP_OKAY) { + goto error; + } + + /* is it prime? */ + if ((err = mp_prime_is_prime(a, t, &res)) != MP_OKAY) { + goto error; + } + } while (res == MP_NO); + + err = MP_OKAY; +error: + XFREE(tmp); + return err; +} + + + +/* End: bn_mp_prime_random.c */ + /* Start: bn_mp_radix_size.c */ /* LibTomMath, multiple-precision integer library -- Tom St Denis * @@ -5218,28 +5263,36 @@ mp_radix_size (mp_int * a, int radix) return mp_count_bits (a) + (a->sign == MP_NEG ? 1 : 0) + 1; } + /* make sure the radix is in range */ if (radix < 2 || radix > 64) { return 0; } + /* init a copy of the input */ if ((res = mp_init_copy (&t, a)) != MP_OKAY) { return 0; } + /* digs is the digit count */ digs = 0; + + /* if it's negative add one for the sign */ if (t.sign == MP_NEG) { ++digs; t.sign = MP_ZPOS; } + /* fetch out all of the digits */ while (mp_iszero (&t) == 0) { if ((res = mp_div_d (&t, (mp_digit) radix, &t, &d)) != MP_OKAY) { mp_clear (&t); - return 0; + return res; } ++digs; } mp_clear (&t); + + /* return digs + 1, the 1 is for the NULL byte that would be required. */ return digs + 1; } @@ -5350,8 +5403,8 @@ mp_read_radix (mp_int * a, char *str, int radix) return MP_VAL; } - /* if the leading digit is a - * minus set the sign to negative. + /* if the leading digit is a + * minus set the sign to negative. */ if (*str == '-') { ++str; @@ -5362,7 +5415,7 @@ mp_read_radix (mp_int * a, char *str, int radix) /* set the integer to the default of zero */ mp_zero (a); - + /* process each digit of the string */ while (*str) { /* if the radix < 36 the conversion is case insensitive @@ -5376,9 +5429,9 @@ mp_read_radix (mp_int * a, char *str, int radix) } } - /* if the char was found in the map + /* if the char was found in the map * and is less than the given radix add it - * to the number, otherwise exit the loop. + * to the number, otherwise exit the loop. */ if (y < radix) { if ((res = mp_mul_d (a, (mp_digit) radix, a)) != MP_OKAY) { @@ -5392,7 +5445,7 @@ mp_read_radix (mp_int * a, char *str, int radix) } ++str; } - + /* set the sign only if a != 0 */ if (mp_iszero(a) != 1) { a->sign = neg; @@ -5513,7 +5566,7 @@ mp_read_unsigned_bin (mp_int * a, unsigned char *b, int c) */ #include -/* reduces x mod m, assumes 0 < x < m**2, mu is +/* reduces x mod m, assumes 0 < x < m**2, mu is * precomputed via mp_reduce_setup. * From HAC pp.604 Algorithm 14.42 */ @@ -5529,7 +5582,7 @@ mp_reduce (mp_int * x, mp_int * m, mp_int * mu) } /* q1 = x / b**(k-1) */ - mp_rshd (&q, um - 1); + mp_rshd (&q, um - 1); /* according to HAC this optimization is ok */ if (((unsigned long) um) > (((mp_digit)1) << (DIGIT_BIT - 1))) { @@ -5543,7 +5596,7 @@ mp_reduce (mp_int * x, mp_int * m, mp_int * mu) } /* q3 = q2 / b**(k+1) */ - mp_rshd (&q, um + 1); + mp_rshd (&q, um + 1); /* x = x mod b**(k+1), quick (no division) */ if ((res = mp_mod_2d (x, DIGIT_BIT * (um + 1), x)) != MP_OKAY) { @@ -5575,7 +5628,7 @@ mp_reduce (mp_int * x, mp_int * m, mp_int * mu) goto CLEANUP; } } - + CLEANUP: mp_clear (&q); @@ -5607,35 +5660,35 @@ mp_reduce_2k(mp_int *a, mp_int *n, mp_digit k) { mp_int q; int p, res; - + if ((res = mp_init(&q)) != MP_OKAY) { return res; } - - p = mp_count_bits(n); + + p = mp_count_bits(n); top: /* q = a/2**p, a = a mod 2**p */ if ((res = mp_div_2d(a, p, &q, a)) != MP_OKAY) { goto ERR; } - + if (k != 1) { /* q = q * k */ - if ((res = mp_mul_d(&q, k, &q)) != MP_OKAY) { + if ((res = mp_mul_d(&q, k, &q)) != MP_OKAY) { goto ERR; } } - + /* a = a + q */ if ((res = s_mp_add(a, &q, a)) != MP_OKAY) { goto ERR; } - + if (mp_cmp_mag(a, n) != MP_LT) { s_mp_sub(a, n, a); goto top; } - + ERR: mp_clear(&q); return res; @@ -5662,27 +5715,27 @@ ERR: #include /* determines the setup value */ -int +int mp_reduce_2k_setup(mp_int *a, mp_digit *d) { int res, p; mp_int tmp; - + if ((res = mp_init(&tmp)) != MP_OKAY) { return res; } - + p = mp_count_bits(a); if ((res = mp_2expt(&tmp, p)) != MP_OKAY) { mp_clear(&tmp); return res; } - + if ((res = s_mp_sub(&tmp, a, &tmp)) != MP_OKAY) { mp_clear(&tmp); return res; } - + *d = tmp.dp[0]; mp_clear(&tmp); return MP_OKAY; @@ -5708,22 +5761,29 @@ mp_reduce_2k_setup(mp_int *a, mp_digit *d) #include /* determines if mp_reduce_2k can be used */ -int -mp_reduce_is_2k(mp_int *a) +int mp_reduce_is_2k(mp_int *a) { - int ix, iy; - + int ix, iy, iz, iw; + if (a->used == 0) { return 0; } else if (a->used == 1) { return 1; } else if (a->used > 1) { iy = mp_count_bits(a); + iz = 1; + iw = 1; + + /* Test every bit from the second digit up, must be 1 */ for (ix = DIGIT_BIT; ix < iy; ix++) { - if ((a->dp[ix/DIGIT_BIT] & - ((mp_digit)1 << (mp_digit)(ix % DIGIT_BIT))) == 0) { + if ((a->dp[iw] & iz) == 0) { return 0; } + iz <<= 1; + if (iz > (int)MP_MASK) { + ++iw; + iz = 1; + } } } return 1; @@ -5756,7 +5816,7 @@ int mp_reduce_setup (mp_int * a, mp_int * b) { int res; - + if ((res = mp_2expt (a, b->used * 2 * DIGIT_BIT)) != MP_OKAY) { return res; } @@ -5783,8 +5843,7 @@ mp_reduce_setup (mp_int * a, mp_int * b) #include /* shift right a certain amount of digits */ -void -mp_rshd (mp_int * a, int b) +void mp_rshd (mp_int * a, int b) { int x; @@ -5810,8 +5869,8 @@ mp_rshd (mp_int * a, int b) /* top [offset into digits] */ top = a->dp + b; - /* this is implemented as a sliding window where - * the window is b-digits long and digits from + /* this is implemented as a sliding window where + * the window is b-digits long and digits from * the top of the window are copied to the bottom * * e.g. @@ -5829,7 +5888,7 @@ mp_rshd (mp_int * a, int b) *bottom++ = 0; } } - + /* remove excess digits */ a->used -= b; } @@ -5854,8 +5913,7 @@ mp_rshd (mp_int * a, int b) #include /* set to a digit */ -void -mp_set (mp_int * a, mp_digit b) +void mp_set (mp_int * a, mp_digit b) { mp_zero (a); a->dp[0] = b & MP_MASK; @@ -5882,13 +5940,12 @@ mp_set (mp_int * a, mp_digit b) #include /* set a 32-bit const */ -int -mp_set_int (mp_int * a, unsigned int b) +int mp_set_int (mp_int * a, unsigned long b) { int x, res; mp_zero (a); - + /* set four bits at a time */ for (x = 0; x < 8; x++) { /* shift the number up four bits */ @@ -5929,8 +5986,7 @@ mp_set_int (mp_int * a, unsigned int b) #include /* shrink a bignum */ -int -mp_shrink (mp_int * a) +int mp_shrink (mp_int * a) { mp_digit *tmp; if (a->alloc != a->used) { @@ -6001,8 +6057,8 @@ mp_sqr (mp_int * a, mp_int * b) res = mp_karatsuba_sqr (a, b); } else { /* can we use the fast comba multiplier? */ - if ((a->used * 2 + 1) < MP_WARRAY && - a->used < + if ((a->used * 2 + 1) < MP_WARRAY && + a->used < (1 << (sizeof(mp_word) * CHAR_BIT - 2*DIGIT_BIT - 1))) { res = fast_s_mp_sqr (a, b); } else { @@ -6335,22 +6391,22 @@ mp_to_unsigned_bin (mp_int * a, unsigned char *b) #include /* multiplication using the Toom-Cook 3-way algorithm */ -int +int mp_toom_mul(mp_int *a, mp_int *b, mp_int *c) { mp_int w0, w1, w2, w3, w4, tmp1, tmp2, a0, a1, a2, b0, b1, b2; int res, B; - + /* init temps */ - if ((res = mp_init_multi(&w0, &w1, &w2, &w3, &w4, - &a0, &a1, &a2, &b0, &b1, + if ((res = mp_init_multi(&w0, &w1, &w2, &w3, &w4, + &a0, &a1, &a2, &b0, &b1, &b2, &tmp1, &tmp2, NULL)) != MP_OKAY) { return res; } - + /* B */ B = MIN(a->used, b->used) / 3; - + /* a = a2 * B**2 + a1 * B + a0 */ if ((res = mp_mod_2d(a, DIGIT_BIT * B, &a0)) != MP_OKAY) { goto ERR; @@ -6366,7 +6422,7 @@ mp_toom_mul(mp_int *a, mp_int *b, mp_int *c) goto ERR; } mp_rshd(&a2, B*2); - + /* b = b2 * B**2 + b1 * B + b0 */ if ((res = mp_mod_2d(b, DIGIT_BIT * B, &b0)) != MP_OKAY) { goto ERR; @@ -6382,17 +6438,17 @@ mp_toom_mul(mp_int *a, mp_int *b, mp_int *c) goto ERR; } mp_rshd(&b2, B*2); - + /* w0 = a0*b0 */ if ((res = mp_mul(&a0, &b0, &w0)) != MP_OKAY) { goto ERR; } - + /* w4 = a2 * b2 */ if ((res = mp_mul(&a2, &b2, &w4)) != MP_OKAY) { goto ERR; } - + /* w1 = (a2 + 2(a1 + 2a0))(b2 + 2(b1 + 2b0)) */ if ((res = mp_mul_2(&a0, &tmp1)) != MP_OKAY) { goto ERR; @@ -6406,7 +6462,7 @@ mp_toom_mul(mp_int *a, mp_int *b, mp_int *c) if ((res = mp_add(&tmp1, &a2, &tmp1)) != MP_OKAY) { goto ERR; } - + if ((res = mp_mul_2(&b0, &tmp2)) != MP_OKAY) { goto ERR; } @@ -6419,11 +6475,11 @@ mp_toom_mul(mp_int *a, mp_int *b, mp_int *c) if ((res = mp_add(&tmp2, &b2, &tmp2)) != MP_OKAY) { goto ERR; } - + if ((res = mp_mul(&tmp1, &tmp2, &w1)) != MP_OKAY) { goto ERR; } - + /* w3 = (a0 + 2(a1 + 2a2))(b0 + 2(b1 + 2b2)) */ if ((res = mp_mul_2(&a2, &tmp1)) != MP_OKAY) { goto ERR; @@ -6437,7 +6493,7 @@ mp_toom_mul(mp_int *a, mp_int *b, mp_int *c) if ((res = mp_add(&tmp1, &a0, &tmp1)) != MP_OKAY) { goto ERR; } - + if ((res = mp_mul_2(&b2, &tmp2)) != MP_OKAY) { goto ERR; } @@ -6450,11 +6506,11 @@ mp_toom_mul(mp_int *a, mp_int *b, mp_int *c) if ((res = mp_add(&tmp2, &b0, &tmp2)) != MP_OKAY) { goto ERR; } - + if ((res = mp_mul(&tmp1, &tmp2, &w3)) != MP_OKAY) { goto ERR; } - + /* w2 = (a2 + a1 + a0)(b2 + b1 + b0) */ if ((res = mp_add(&a2, &a1, &tmp1)) != MP_OKAY) { @@ -6472,19 +6528,19 @@ mp_toom_mul(mp_int *a, mp_int *b, mp_int *c) if ((res = mp_mul(&tmp1, &tmp2, &w2)) != MP_OKAY) { goto ERR; } - - /* now solve the matrix - + + /* now solve the matrix + 0 0 0 0 1 1 2 4 8 16 1 1 1 1 1 16 8 4 2 1 1 0 0 0 0 - - using 12 subtractions, 4 shifts, - 2 small divisions and 1 small multiplication + + using 12 subtractions, 4 shifts, + 2 small divisions and 1 small multiplication */ - + /* r1 - r4 */ if ((res = mp_sub(&w1, &w4, &w1)) != MP_OKAY) { goto ERR; @@ -6556,7 +6612,7 @@ mp_toom_mul(mp_int *a, mp_int *b, mp_int *c) if ((res = mp_div_3(&w3, &w3, NULL)) != MP_OKAY) { goto ERR; } - + /* at this point shift W[n] by B*n */ if ((res = mp_lshd(&w1, 1*B)) != MP_OKAY) { goto ERR; @@ -6569,8 +6625,8 @@ mp_toom_mul(mp_int *a, mp_int *b, mp_int *c) } if ((res = mp_lshd(&w4, 4*B)) != MP_OKAY) { goto ERR; - } - + } + if ((res = mp_add(&w0, &w1, c)) != MP_OKAY) { goto ERR; } @@ -6582,15 +6638,15 @@ mp_toom_mul(mp_int *a, mp_int *b, mp_int *c) } if ((res = mp_add(&tmp1, c, c)) != MP_OKAY) { goto ERR; - } - + } + ERR: - mp_clear_multi(&w0, &w1, &w2, &w3, &w4, - &a0, &a1, &a2, &b0, &b1, + mp_clear_multi(&w0, &w1, &w2, &w3, &w4, + &a0, &a1, &a2, &b0, &b1, &b2, &tmp1, &tmp2, NULL); return res; -} - +} + /* End: bn_mp_toom_mul.c */ @@ -6844,6 +6900,7 @@ mp_toradix (mp_int * a, char *str, int radix) mp_digit d; char *_s = str; + /* check range of the radix */ if (radix < 2 || radix > 64) { return MP_VAL; } @@ -6882,8 +6939,7 @@ mp_toradix (mp_int * a, char *str, int radix) bn_reverse ((unsigned char *)_s, digs); /* append a NULL so the string is properly terminated */ - *str++ = '\0'; - + *str = '\0'; mp_clear (&t); return MP_OKAY; @@ -6996,6 +7052,79 @@ mp_zero (mp_int * a) /* End: bn_mp_zero.c */ +/* Start: bn_prime_sizes_tab.c */ +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ +#include + +/* this table gives the # of rabin miller trials for a prob of failure lower than 2^-96 */ +static const struct { + int k, t; +} sizes[] = { +{ 128, 28 }, +{ 256, 16 }, +{ 384, 10 }, +{ 512, 7 }, +{ 640, 6 }, +{ 768, 5 }, +{ 896, 4 }, +{ 1024, 4 }, +{ 1152, 3 }, +{ 1280, 3 }, +{ 1408, 3 }, +{ 1536, 3 }, +{ 1664, 3 }, +{ 1792, 2 }, +{ 1920, 2 }, +{ 2048, 2 }, +{ 2176, 2 }, +{ 2304, 2 }, +{ 2432, 2 }, +{ 2560, 2 }, +{ 2688, 2 }, +{ 2816, 2 }, +{ 2944, 2 }, +{ 3072, 2 }, +{ 3200, 2 }, +{ 3328, 2 }, +{ 3456, 2 }, +{ 3584, 2 }, +{ 3712, 2 }, +{ 3840, 1 }, +{ 3968, 1 }, +{ 4096, 1 } }; + +/* returns # of RM trials required for a given bit size */ +int mp_prime_rabin_miller_trials(int size) +{ + int x; + + for (x = 0; x < (int)(sizeof(sizes)/(sizeof(sizes[0]))); x++) { + if (sizes[x].k == size) { + return sizes[x].t; + } else if (sizes[x].k > size) { + return (x == 0) ? sizes[0].t : sizes[x - 1].t; + } + } + return 1; +} + + + +/* End: bn_prime_sizes_tab.c */ + /* Start: bn_prime_tab.c */ /* LibTomMath, multiple-precision integer library -- Tom St Denis * @@ -7168,8 +7297,8 @@ s_mp_add (mp_int * a, mp_int * b, mp_int * c) *tmpc++ &= MP_MASK; } - /* now copy higher words if any, that is in A+B - * if A or B has more digits add those in + /* now copy higher words if any, that is in A+B + * if A or B has more digits add those in */ if (min != max) { for (; i < max; i++) { @@ -7256,7 +7385,7 @@ s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) /* init M array */ /* init first cell */ if ((err = mp_init(&M[1])) != MP_OKAY) { - return err; + return err; } /* now init the second half of the array */ @@ -7280,25 +7409,25 @@ s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) /* create M table * - * The M table contains powers of the base, + * The M table contains powers of the base, * e.g. M[x] = G**x mod P * - * The first half of the table is not + * The first half of the table is not * computed though accept for M[0] and M[1] */ if ((err = mp_mod (G, P, &M[1])) != MP_OKAY) { goto __MU; } - /* compute the value at M[1<<(winsize-1)] by squaring - * M[1] (winsize-1) times + /* compute the value at M[1<<(winsize-1)] by squaring + * M[1] (winsize-1) times */ if ((err = mp_copy (&M[1], &M[1 << (winsize - 1)])) != MP_OKAY) { goto __MU; } for (x = 0; x < (winsize - 1); x++) { - if ((err = mp_sqr (&M[1 << (winsize - 1)], + if ((err = mp_sqr (&M[1 << (winsize - 1)], &M[1 << (winsize - 1)])) != MP_OKAY) { goto __MU; } @@ -7456,7 +7585,7 @@ __M: #include /* multiplies |a| * |b| and only computes upto digs digits of result - * HAC pp. 595, Algorithm 14.12 Modified so you can control how + * HAC pp. 595, Algorithm 14.12 Modified so you can control how * many digits of output are created. */ int @@ -7470,7 +7599,7 @@ s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) /* can we use the fast multiplier? */ if (((digs) < MP_WARRAY) && - MIN (a->used, b->used) < + MIN (a->used, b->used) < (1 << ((CHAR_BIT * sizeof (mp_word)) - (2 * DIGIT_BIT)))) { return fast_s_mp_mul_digs (a, b, c, digs); } @@ -7492,10 +7621,10 @@ s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) /* setup some aliases */ /* copy of the digit from a used within the nested loop */ tmpx = a->dp[ix]; - + /* an alias for the destination shifted ix places */ tmpt = t.dp + ix; - + /* an alias for the digits of b */ tmpy = b->dp; @@ -7633,7 +7762,9 @@ s_mp_sqr (mp_int * a, mp_int * b) pa = a->used; if ((res = mp_init_size (&t, 2*pa + 1)) != MP_OKAY) { return res; - } + } + + /* default used is maximum possible size */ t.used = 2*pa + 1; for (ix = 0; ix < pa; ix++) { @@ -7643,20 +7774,20 @@ s_mp_sqr (mp_int * a, mp_int * b) ((mp_word)a->dp[ix])*((mp_word)a->dp[ix]); /* store lower part in result */ - t.dp[2*ix] = (mp_digit) (r & ((mp_word) MP_MASK)); + t.dp[ix+ix] = (mp_digit) (r & ((mp_word) MP_MASK)); /* get the carry */ - u = (mp_digit)(r >> ((mp_word) DIGIT_BIT)); + u = (mp_digit)(r >> ((mp_word) DIGIT_BIT)); /* left hand side of A[ix] * A[iy] */ - tmpx = a->dp[ix]; + tmpx = a->dp[ix]; /* alias for where to store the results */ - tmpt = t.dp + (2*ix + 1); - + tmpt = t.dp + (2*ix + 1); + for (iy = ix + 1; iy < pa; iy++) { /* first calculate the product */ - r = ((mp_word)tmpx) * ((mp_word)a->dp[iy]); + r = ((mp_word)tmpx) * ((mp_word)a->dp[iy]); /* now calculate the double precision result, note we use * addition instead of *2 since it's easier to optimize @@ -7801,9 +7932,9 @@ s_mp_sub (mp_int * a, mp_int * b, mp_int * c) /* configured for a AMD XP Thoroughbred core with etc/tune.c */ int KARATSUBA_MUL_CUTOFF = 109, /* Min. number of digits before Karatsuba multiplication is used. */ KARATSUBA_SQR_CUTOFF = 127, /* Min. number of digits before Karatsuba squaring is used. */ - + TOOM_MUL_CUTOFF = 350, /* no optimal values of these are known yet so set em high */ - TOOM_SQR_CUTOFF = 400; + TOOM_SQR_CUTOFF = 400; /* End: bncore.c */ diff --git a/mycrypt.h b/mycrypt.h index 07306ce..bed0896 100644 --- a/mycrypt.h +++ b/mycrypt.h @@ -16,8 +16,8 @@ extern "C" { #endif /* version */ -#define CRYPT 0x0091 -#define SCRYPT "0.91" +#define CRYPT 0x0092 +#define SCRYPT "0.92" /* max size of either a cipher/hash block or symmetric key [largest of the two] */ #define MAXBLOCKSIZE 128 diff --git a/mycrypt_cfg.h b/mycrypt_cfg.h index 0897f44..02107fc 100644 --- a/mycrypt_cfg.h +++ b/mycrypt_cfg.h @@ -48,12 +48,6 @@ extern clock_t XCLOCK(void); #define ENDIAN_NEUTRAL #endif -#ifdef SHA384 - #ifndef SHA512 - #error The SHA384 hash requires SHA512 to be defined! - #endif -#endif - #ifdef YARROW #ifndef CTR #error YARROW requires CTR chaining mode to be defined! @@ -71,7 +65,7 @@ extern clock_t XCLOCK(void); #define PACKET_SECT_RSA 0 #define PACKET_SECT_DH 1 #define PACKET_SECT_ECC 2 - #define PACKET_SECT_DSA 4 + #define PACKET_SECT_DSA 3 /* Subsection Tags for the first three sections */ #define PACKET_SUB_KEY 0 diff --git a/mycrypt_cipher.h b/mycrypt_cipher.h index 3071bde..25d1953 100644 --- a/mycrypt_cipher.h +++ b/mycrypt_cipher.h @@ -95,6 +95,12 @@ struct noekeon_key { }; #endif +#ifdef SKIPJACK +struct skipjack_key { + unsigned char key[10]; +}; +#endif + typedef union Symmetric_key { #ifdef DES struct des_key des; @@ -133,6 +139,9 @@ typedef union Symmetric_key { #ifdef NOEKEON struct noekeon_key noekeon; #endif +#ifdef SKIPJACK + struct skipjack_key skipjack; +#endif } symmetric_key; /* A block cipher ECB structure */ @@ -312,6 +321,15 @@ extern int noekeon_keysize(int *desired_keysize); extern const struct _cipher_descriptor noekeon_desc; #endif +#ifdef SKIPJACK +extern int skipjack_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); +extern void skipjack_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key); +extern void skipjack_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key); +extern int skipjack_test(void); +extern int skipjack_keysize(int *desired_keysize); +extern const struct _cipher_descriptor skipjack_desc; +#endif + #ifdef ECB extern int ecb_start(int cipher, const unsigned char *key, int keylen, int num_rounds, symmetric_ECB *ecb); diff --git a/mycrypt_custom.h b/mycrypt_custom.h index 3f4084c..6a926d7 100644 --- a/mycrypt_custom.h +++ b/mycrypt_custom.h @@ -16,7 +16,6 @@ #define XCLOCK clock #define XCLOCKS_PER_SEC CLOCKS_PER_SEC #define SMALL_CODE -#define CLEAN_STACK #define LTC_TEST #define BLOWFISH #define RC2 @@ -31,6 +30,7 @@ #define DES #define CAST5 #define NOEKEON +#define SKIPJACK #define CFB #define OFB #define ECB @@ -39,6 +39,7 @@ #define SHA512 #define SHA384 #define SHA256 +#define SHA224 #define TIGER #define SHA1 #define MD5 @@ -47,12 +48,14 @@ #define RIPEMD128 #define RIPEMD160 #define HMAC +#define OMAC #define BASE64 #define YARROW #define SPRNG #define RC4 #define DEVRANDOM #define MRSA +#define MDSA #define MDH #define MECC #define DH768 diff --git a/mycrypt_hash.h b/mycrypt_hash.h index 84b623e..40a4fc7 100644 --- a/mycrypt_hash.h +++ b/mycrypt_hash.h @@ -10,7 +10,7 @@ struct sha512_state { #ifdef SHA256 struct sha256_state { ulong64 length; - unsigned long state[8], curlen; + ulong32 state[8], curlen; unsigned char buf[64]; }; #endif @@ -18,7 +18,7 @@ struct sha256_state { #ifdef SHA1 struct sha1_state { ulong64 length; - unsigned long state[5], curlen; + ulong32 state[5], curlen; unsigned char buf[64]; }; #endif @@ -26,7 +26,7 @@ struct sha1_state { #ifdef MD5 struct md5_state { ulong64 length; - unsigned long state[4], curlen; + ulong32 state[4], curlen; unsigned char buf[64]; }; #endif @@ -34,7 +34,7 @@ struct md5_state { #ifdef MD4 struct md4_state { ulong64 length; - unsigned long state[4], curlen; + ulong32 state[4], curlen; unsigned char buf[64]; }; #endif @@ -58,7 +58,7 @@ struct md2_state { struct rmd128_state { ulong64 length; unsigned char buf[64]; - unsigned long curlen, state[4]; + ulong32 curlen, state[4]; }; #endif @@ -66,7 +66,7 @@ struct rmd128_state { struct rmd160_state { ulong64 length; unsigned char buf[64]; - unsigned long curlen, state[5]; + ulong32 curlen, state[5]; }; #endif @@ -106,87 +106,101 @@ extern struct _hash_descriptor { unsigned long hashsize; /* digest output size in bytes */ unsigned long blocksize; /* the block size the hash uses */ void (*init)(hash_state *); - void (*process)(hash_state *, const unsigned char *, unsigned long); - void (*done)(hash_state *, unsigned char *); + int (*process)(hash_state *, const unsigned char *, unsigned long); + int (*done)(hash_state *, unsigned char *); int (*test)(void); } hash_descriptor[]; #ifdef SHA512 extern void sha512_init(hash_state * md); -extern void sha512_process(hash_state * md, const unsigned char *buf, unsigned long len); -extern void sha512_done(hash_state * md, unsigned char *hash); +extern int sha512_process(hash_state * md, const unsigned char *buf, unsigned long len); +extern int sha512_done(hash_state * md, unsigned char *hash); extern int sha512_test(void); extern const struct _hash_descriptor sha512_desc; #endif #ifdef SHA384 +#ifndef SHA512 + #error SHA512 is required for SHA384 +#endif extern void sha384_init(hash_state * md); -extern void sha384_process(hash_state * md, const unsigned char *buf, unsigned long len); -extern void sha384_done(hash_state * md, unsigned char *hash); +#define sha384_process sha512_process +extern int sha384_done(hash_state * md, unsigned char *hash); extern int sha384_test(void); extern const struct _hash_descriptor sha384_desc; #endif #ifdef SHA256 extern void sha256_init(hash_state * md); -extern void sha256_process(hash_state * md, const unsigned char *buf, unsigned long len); -extern void sha256_done(hash_state * md, unsigned char *hash); +extern int sha256_process(hash_state * md, const unsigned char *buf, unsigned long len); +extern int sha256_done(hash_state * md, unsigned char *hash); extern int sha256_test(void); extern const struct _hash_descriptor sha256_desc; + +#ifdef SHA224 +#ifndef SHA256 + #error SHA256 is required for SHA224 +#endif +extern void sha224_init(hash_state * md); +#define sha224_process sha256_process +extern int sha224_done(hash_state * md, unsigned char *hash); +extern int sha224_test(void); +extern const struct _hash_descriptor sha224_desc; +#endif #endif #ifdef SHA1 extern void sha1_init(hash_state * md); -extern void sha1_process(hash_state * md, const unsigned char *buf, unsigned long len); -extern void sha1_done(hash_state * md, unsigned char *hash); +extern int sha1_process(hash_state * md, const unsigned char *buf, unsigned long len); +extern int sha1_done(hash_state * md, unsigned char *hash); extern int sha1_test(void); extern const struct _hash_descriptor sha1_desc; #endif #ifdef MD5 extern void md5_init(hash_state * md); -extern void md5_process(hash_state * md, const unsigned char *buf, unsigned long len); -extern void md5_done(hash_state * md, unsigned char *hash); +extern int md5_process(hash_state * md, const unsigned char *buf, unsigned long len); +extern int md5_done(hash_state * md, unsigned char *hash); extern int md5_test(void); extern const struct _hash_descriptor md5_desc; #endif #ifdef MD4 extern void md4_init(hash_state * md); -extern void md4_process(hash_state * md, const unsigned char *buf, unsigned long len); -extern void md4_done(hash_state * md, unsigned char *hash); +extern int md4_process(hash_state * md, const unsigned char *buf, unsigned long len); +extern int md4_done(hash_state * md, unsigned char *hash); extern int md4_test(void); extern const struct _hash_descriptor md4_desc; #endif #ifdef MD2 extern void md2_init(hash_state * md); -extern void md2_process(hash_state * md, const unsigned char *buf, unsigned long len); -extern void md2_done(hash_state * md, unsigned char *hash); +extern int md2_process(hash_state * md, const unsigned char *buf, unsigned long len); +extern int md2_done(hash_state * md, unsigned char *hash); extern int md2_test(void); extern const struct _hash_descriptor md2_desc; #endif #ifdef TIGER extern void tiger_init(hash_state * md); -extern void tiger_process(hash_state * md, const unsigned char *buf, unsigned long len); -extern void tiger_done(hash_state * md, unsigned char *hash); +extern int tiger_process(hash_state * md, const unsigned char *buf, unsigned long len); +extern int tiger_done(hash_state * md, unsigned char *hash); extern int tiger_test(void); extern const struct _hash_descriptor tiger_desc; #endif #ifdef RIPEMD128 extern void rmd128_init(hash_state * md); -extern void rmd128_process(hash_state * md, const unsigned char *buf, unsigned long len); -extern void rmd128_done(hash_state * md, unsigned char *hash); +extern int rmd128_process(hash_state * md, const unsigned char *buf, unsigned long len); +extern int rmd128_done(hash_state * md, unsigned char *hash); extern int rmd128_test(void); extern const struct _hash_descriptor rmd128_desc; #endif #ifdef RIPEMD160 extern void rmd160_init(hash_state * md); -extern void rmd160_process(hash_state * md, const unsigned char *buf, unsigned long len); -extern void rmd160_done(hash_state * md, unsigned char *hash); +extern int rmd160_process(hash_state * md, const unsigned char *buf, unsigned long len); +extern int rmd160_done(hash_state * md, unsigned char *hash); extern int rmd160_test(void); extern const struct _hash_descriptor rmd160_desc; #endif @@ -202,13 +216,44 @@ extern int hash_memory(int hash, const unsigned char *data, unsigned long len, u extern int hash_filehandle(int hash, FILE *in, unsigned char *dst, unsigned long *outlen); extern int hash_file(int hash, const char *fname, unsigned char *dst, unsigned long *outlen); +/* a simple macro for making hash "process" functions */ +#define HASH_PROCESS(func_name, compress_name, state_var, block_size) \ +int func_name (hash_state * md, const unsigned char *buf, unsigned long len) \ +{ \ + unsigned long n; \ + _ARGCHK(md != NULL); \ + _ARGCHK(buf != NULL); \ + if (md-> state_var .curlen > sizeof(md-> state_var .buf)) { \ + return CRYPT_INVALID_ARG; \ + } \ + while (len > 0) { \ + if (md-> state_var .curlen == 0 && len >= block_size) { \ + compress_name (md, (unsigned char *)buf); \ + md-> state_var .length += block_size * 8; \ + buf += block_size; \ + len -= block_size; \ + } else { \ + n = MIN(len, (block_size - md-> state_var .curlen)); \ + memcpy(md-> state_var .buf + md-> state_var.curlen, buf, (size_t)n); \ + md-> state_var .curlen += n; \ + buf += n; \ + len -= n; \ + if (md-> state_var .curlen == block_size) { \ + compress_name (md, md-> state_var .buf); \ + md-> state_var .length += 8*block_size; \ + md-> state_var .curlen = 0; \ + } \ + } \ + } \ + return CRYPT_OK; \ +} + #ifdef HMAC typedef struct Hmac_state { - hash_state md; - int hash; - unsigned long hashsize; /* here for your reference */ - hash_state hashstate; - unsigned char key[MAXBLOCKSIZE]; + hash_state md; + int hash; + hash_state hashstate; + unsigned char key[MAXBLOCKSIZE]; } hmac_state; extern int hmac_init(hmac_state *hmac, int hash, const unsigned char *key, unsigned long keylen); @@ -222,3 +267,27 @@ extern int hmac_file(int hash, const char *fname, const unsigned char *key, unsigned long keylen, unsigned char *dst, unsigned long *dstlen); #endif + +#ifdef OMAC + +typedef struct { + int cipher_idx, + buflen, + blklen; + unsigned char block[MAXBLOCKSIZE], + prev[MAXBLOCKSIZE], + Lu[2][MAXBLOCKSIZE]; + symmetric_key key; +} omac_state; + +extern int omac_init(omac_state *omac, int cipher, const unsigned char *key, unsigned long keylen); +extern int omac_process(omac_state *state, const unsigned char *buf, unsigned long len); +extern int omac_done(omac_state *state, unsigned char *out, unsigned long *outlen); +extern int omac_memory(int cipher, const unsigned char *key, unsigned long keylen, + const unsigned char *msg, unsigned long msglen, + unsigned char *out, unsigned long *outlen); +extern int omac_file(int cipher, const unsigned char *key, unsigned long keylen, + const char *filename, unsigned char *out, unsigned long *outlen); +extern int omac_test(void); +#endif + diff --git a/mycrypt_misc.h b/mycrypt_misc.h index 408d5c5..b5e804c 100644 --- a/mycrypt_misc.h +++ b/mycrypt_misc.h @@ -11,8 +11,7 @@ extern int base64_decode(const unsigned char *in, unsigned long len, extern void zeromem(void *dst, size_t len); extern void burn_stack(unsigned long len); -/* ch1-01-1*/ extern const char *error_to_string(int err); -/* ch1-01-1*/ +extern int mpi_to_ltc_error(int err); extern const char *crypt_build_settings; diff --git a/mycrypt_pk.h b/mycrypt_pk.h index d08acdf..0945243 100644 --- a/mycrypt_pk.h +++ b/mycrypt_pk.h @@ -170,3 +170,29 @@ extern int ecc_verify_hash(const unsigned char *sig, unsigned long siglen, const unsigned char *hash, unsigned long hashlen, int *stat, ecc_key *key); #endif + +#ifdef MDSA + +typedef struct { + int type, qord; + mp_int g, q, p, x, y; +} dsa_key; + +extern int dsa_make_key(prng_state *prng, int wprng, int group_size, int modulus_size, dsa_key *key); +extern void dsa_free(dsa_key *key); + +extern int dsa_sign_hash(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, + prng_state *prng, int wprng, dsa_key *key); + +extern int dsa_verify_hash(const unsigned char *sig, unsigned long siglen, + const unsigned char *hash, unsigned long inlen, + int *stat, dsa_key *key); + +extern int dsa_import(const unsigned char *in, unsigned long inlen, dsa_key *key); + +extern int dsa_export(unsigned char *out, unsigned long *outlen, int type, dsa_key *key); + +extern int dsa_verify_key(dsa_key *key, int *stat); + +#endif diff --git a/noekeon.c b/noekeon.c index ac1cafb..d2c8156 100644 --- a/noekeon.c +++ b/noekeon.c @@ -24,7 +24,7 @@ static const ulong32 RC[] = { }; -#define kTHETA(a, b, c, d) \ +#define kTHETA(a, b, c, d) \ temp = a^c; temp = temp ^ ROL(temp, 8) ^ ROR(temp, 8); \ b ^= temp; d ^= temp; \ temp = b^d; temp = temp ^ ROL(temp, 8) ^ ROR(temp, 8); \ @@ -32,11 +32,9 @@ static const ulong32 RC[] = { #define THETA(k, a, b, c, d) \ temp = a^c; temp = temp ^ ROL(temp, 8) ^ ROR(temp, 8); \ - b ^= temp; d ^= temp; \ - a ^= k[0]; b ^= k[1]; \ - c ^= k[2]; d ^= k[3]; \ + b ^= temp ^ k[1]; d ^= temp ^ k[3]; \ temp = b^d; temp = temp ^ ROL(temp, 8) ^ ROR(temp, 8); \ - a ^= temp; c ^= temp; + a ^= temp ^ k[0]; c ^= temp ^ k[2]; #define GAMMA(a, b, c, d) \ b ^= ~(d|c); \ @@ -89,7 +87,9 @@ void noekeon_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_k #endif { ulong32 a,b,c,d,temp; +#ifdef SMALL_CODE int r; +#endif _ARGCHK(key != NULL); _ARGCHK(pt != NULL); @@ -98,17 +98,32 @@ void noekeon_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_k LOAD32L(a,&pt[0]); LOAD32L(b,&pt[4]); LOAD32L(c,&pt[8]); LOAD32L(d,&pt[12]); -#define ROUND(i) \ - a ^= RC[r+i]; \ + +#ifdef SMALL_CODE +#define ROUND \ + a ^= RC[r]; \ THETA(key->noekeon.K, a,b,c,d); \ PI1(a,b,c,d); \ GAMMA(a,b,c,d); \ PI2(a,b,c,d); - for (r = 0; r < 16; r += 2) { - ROUND(0); - ROUND(1); + for (r = 0; r < 16; ++r) { + ROUND; } +#else + +#define ROUND(i) \ + a ^= RC[i]; \ + THETA(key->noekeon.K, a,b,c,d); \ + PI1(a,b,c,d); \ + GAMMA(a,b,c,d); \ + PI2(a,b,c,d); + + ROUND( 0); ROUND( 1); ROUND( 2); ROUND( 3); + ROUND( 4); ROUND( 5); ROUND( 6); ROUND( 7); + ROUND( 8); ROUND( 9); ROUND(10); ROUND(11); + ROUND(12); ROUND(13); ROUND(14); ROUND(15); +#endif #undef ROUND @@ -134,7 +149,9 @@ void noekeon_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_k #endif { ulong32 a,b,c,d, temp; +#ifdef SMALL_CODE int r; +#endif _ARGCHK(key != NULL); _ARGCHK(pt != NULL); @@ -143,18 +160,35 @@ void noekeon_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_k LOAD32L(a,&ct[0]); LOAD32L(b,&ct[4]); LOAD32L(c,&ct[8]); LOAD32L(d,&ct[12]); -#define ROUND(i) \ + +#ifdef SMALL_CODE + +#define ROUND \ THETA(key->noekeon.dK, a,b,c,d); \ - a ^= RC[r-i]; \ + a ^= RC[r]; \ PI1(a,b,c,d); \ GAMMA(a,b,c,d); \ PI2(a,b,c,d); - - for (r = 16; r > 0; r -= 2) { - ROUND(0); - ROUND(1); + for (r = 16; r > 0; --r) { + ROUND; } + +#else + +#define ROUND(i) \ + THETA(key->noekeon.dK, a,b,c,d); \ + a ^= RC[i]; \ + PI1(a,b,c,d); \ + GAMMA(a,b,c,d); \ + PI2(a,b,c,d); + + ROUND(16); ROUND(15); ROUND(14); ROUND(13); + ROUND(12); ROUND(11); ROUND(10); ROUND( 9); + ROUND( 8); ROUND( 7); ROUND( 6); ROUND( 5); + ROUND( 4); ROUND( 3); ROUND( 2); ROUND( 1); + +#endif #undef ROUND @@ -176,31 +210,58 @@ int noekeon_test(void) { #ifndef LTC_TEST return CRYPT_NOP; - #else - static const unsigned char - key[] = - { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }, - pt[] = - { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }, - ct[] = - { 0x57, 0x9a, 0x6c, 0xe8, 0x91, 0x16, 0x52, 0x53, - 0x32, 0x00, 0xca, 0x0a, 0x17, 0x5d, 0x28, 0x0e }; - unsigned char tmp[2][16]; - int err; - symmetric_key skey; - - if ((err = noekeon_setup(key, 16, 0, &skey)) != CRYPT_OK) { - return err; + #else + static const struct { + int keylen; + unsigned char key[16], pt[16], ct[16]; + } tests[] = { + { + 16, + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }, + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }, + { 0x57, 0x9a, 0x6c, 0xe8, 0x91, 0x16, 0x52, 0x53, + 0x32, 0x00, 0xca, 0x0a, 0x17, 0x5d, 0x28, 0x0e } } - - noekeon_ecb_encrypt(pt, tmp[0], &skey); - noekeon_ecb_decrypt(tmp[0], tmp[1], &skey); - - if (memcmp(tmp[0], ct, 16) != 0 || memcmp(tmp[1], pt, 16) != 0) { - return CRYPT_FAIL_TESTVECTOR; - } - - return CRYPT_OK; + }; + symmetric_key key; + unsigned char tmp[2][16]; + int err, i, y; + + for (i = 0; i < (int)(sizeof(tests)/sizeof(tests[0])); i++) { + zeromem(&key, sizeof(key)); + if ((err = noekeon_setup(tests[i].key, tests[i].keylen, 0, &key)) != CRYPT_OK) { + return err; + } + + noekeon_ecb_encrypt(tests[i].pt, tmp[0], &key); + noekeon_ecb_decrypt(tmp[0], tmp[1], &key); + if (memcmp(tmp[0], tests[i].ct, 16) || memcmp(tmp[1], tests[i].pt, 16)) { +#if 0 + printf("\n\nTest %d failed\n", i); + if (memcmp(tmp[0], tests[i].ct, 16)) { + printf("CT: "); + for (i = 0; i < 16; i++) { + printf("%02x ", tmp[0][i]); + } + printf("\n"); + } else { + printf("PT: "); + for (i = 0; i < 16; i++) { + printf("%02x ", tmp[1][i]); + } + printf("\n"); + } +#endif + return CRYPT_FAIL_TESTVECTOR; + } + + /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ + for (y = 0; y < 16; y++) tmp[0][y] = 0; + for (y = 0; y < 1000; y++) noekeon_ecb_encrypt(tmp[0], tmp[0], &key); + for (y = 0; y < 1000; y++) noekeon_ecb_decrypt(tmp[0], tmp[0], &key); + for (y = 0; y < 16; y++) if (tmp[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; + } + return CRYPT_OK; #endif } diff --git a/notes/cipher_tv.txt b/notes/cipher_tv.txt new file mode 100644 index 0000000..0da1315 --- /dev/null +++ b/notes/cipher_tv.txt @@ -0,0 +1,1755 @@ +Cipher Test Vectors + +These are test encryptions with key of nn bytes '00 01 02 03 .. (nn-1)' and original PT of the same style. +The output of step N is used as the key and plaintext for step N+1 (key bytes repeated as required to fill the key) + +Cipher: aes +Key Size: 16 bytes + 0: 0A940BB5416EF045F1C39458C653EA5A + 1: 2B20AF92A928562CF645B1B824F2E6D9 + 2: FC29C3356937ECC3159D8D6EF5E883A1 + 3: 4C07B5A2EF31A3229C87AB2E4DE88602 + 4: 93AFA1147E793FFCC3D852695A62D008 + 5: D4BCC317DC9AFE0E6C7AD1E76F79DBE9 + 6: FEDB3371F3C65162AFCCDC6D18C79A65 + 7: 4AF2A76F93F07C14161C16B5C176E439 + 8: 00A1A596AF7CF44FD12981FA12CB1515 + 9: 8013D7006AB38AEBD40D0DC10328751C +10: 81A077F3A262FA4D00D98EE4D1BEC390 +11: 0CCBC99A3135F26D2BE824D633C0366F +12: CDBB5568610AD428706408B64DB66E50 +13: CE94461EB0D57C8DB6AEB2BC8E8CE1D2 +14: 06F14868F4298979462595C0FBF33F5A +15: FE22A7097513246074B7C8DFD57D32B2 +16: 0F2D936610F6D9E32C0E624568BB8E6F +17: F32BCD92B563D475E98322E5850AC277 +18: 6E6FCB72930D81469F9E05B20FD406C0 +19: 42FF674CBA6C19C4AD84D42816173099 +20: 41C12474A49B6B2B5E7D38E03A4DD4E0 +21: F9E234E3CE3FCED184C775B6140AD733 +22: 7EB5CC6B183D8B3EB4FBA4717CD8838A +23: CB6C5D78F9721E5BF8E980F0EDCAD4AF +24: B3F20EF6C26FD9301576D82DA6D50809 +25: F9375037377D86599FB4F241166C43E9 +26: 98BAF9AB7402479C2DA356F5DAE35D5F +27: 58D1A8E0DC3BC53FD995BB0F60F25FE7 +28: 0A75C0D22D2627C97BA2A7344B9B8C74 +29: 88C299B2F8C9EDAF86A301BBF534BDA7 +30: 755E3A17420281F2C619588A6B521FF9 +31: 0E540DD25C0C147461146E11F832A63D +32: DC5B58691C6BA5B243036A41301BD7D1 +33: E9299A7336C2D8A51D6C7E2BD1B8F054 +34: 78CA6F682FC649DB289DD62D28D3A22D +35: 98D96EDA081DE416083650B22BD3869D +36: E747DE96D122CE1EF6F89BDE0FAE75FF +37: E48DDF2EDDEB54C861A1E42F5B649EEE +38: C650C2CF1E903B7F9C8536A2446CA762 +39: CF0BCDCE0F1FE7EB40016C1231FB2962 +40: 37B1C8BE3812147E0D5D115A797663EF +41: 45DD8184581049C4B28FBC0809690C5D +42: 11B0D889F96E677EEC2E934E9F7F5398 +43: CEC30BC1128A96CD506E406B5ADFAE19 +44: DE67D5439BF83D5338D53F362FCF79B6 +45: 724FBB2D95CBEABC568AA44941D9B6E5 +46: C63F480DA3C73B2A661F1FBC3E4D1F89 +47: 225CD18789D18FF09C982EF38AEF0AAF +48: B493DEC7E3D11911DEF8788102453670 +49: 23E0B12A67DF025CB77CBDF9E295FCAF + +Key Size: 24 bytes + 0: 0060BFFE46834BB8DA5CF9A61FF220AE + 1: 597FA00D03EDDC81C2575B4DD6B6AEFD + 2: 4881E4EF69005DCB9110BA327CAC8460 + 3: FC4A968AF65FCFF45E4698455918673D + 4: 3079D7B27A3DA5C0805A61CC37109EE0 + 5: 9B3F2C7C35806276E2C53826EC1B3C84 + 6: FCDFCB1FD9FCF1B63E1AB6737FC154E8 + 7: 4A8012AFD410D29CE2CEE0FD195EF9DA + 8: 9F4201C4174C71A3AEF8FD6822197D67 + 9: DE3E5E98DA60E895389A1C17E3D50DA1 +10: 20C9064A076C01D1BC121A5A2A1F913C +11: BA41A36CD24B515545B8B464B244E5BE +12: 2CC1DE9DBCAC45269C6DBBC9203095F4 +13: 2ED2499CFEB30203E6305B3E1C329C4D +14: FD709FC0AB48B204C95B74AD189C8832 +15: 7ED298B472C53A4CB7A3BAE588805E86 +16: CB0C6FE2BA76901F9EDE752634DCC31D +17: 6C5CA6EFCF7101881507AB8770ACF1DE +18: DEC3C5209E98BBFAA469C5FE6C02A674 +19: CFAC040C1198C8264679CACEAA7E9DE7 +20: EF990992EBA8ECA7E5F95E3B9D69D3A4 +21: 8FC1B640EB55A96D08D83D1184B77769 +22: E1F3DFB9D055BCB2D6CED6DCB8361BFB +23: 6621F47057706F2A079819DBC0197B9C +24: 882611AC68778CBD6A46FB5DD4611A37 +25: F35E1367A283CC641FBCE26512A8F2F1 +26: 5A4A71F69056CFBAB67DDA777F5CD945 +27: C446F2BFAD060A9E9E17F71B05ADABD0 +28: 1F0E50F71A67FAA7D169A7A1017FFD65 +29: A6A38588848915509451A2354D2AAC8E +30: 4C887574F2C5DB00ED4FBAF814A70302 +31: 1B642944162A049CCA9FD0284D7AB4C3 +32: 431BD9293C5BFD12F948C255C838880B +33: 32CD23A30039AE2FB80B804B905362B1 +34: EBB30E07E7517580A645CD1B5F664182 +35: 292F2BB28BB172620B05C7621BA347D6 +36: 46C06E1223F392D57B98EFCF4C832C18 +37: 451DFBAD2AA92080204F85432236A42C +38: 768D6206D2B3DD1B9C26FAA5977A6477 +39: 3705F9CEBFE8F91ECE07F84578C05494 +40: 085EB0DCF360F5403FF1E7402A0F7A03 +41: 2A0D56F2E7C7FCE3095F511BDE4AD9A2 +42: A8AB2F3643A61AF164F99FEFAE2CE1B4 +43: E73FD4B1FAE0E5E6A6A31CCC2AF96386 +44: 578E84FD1AA16FF350374E4FD5FDD529 +45: EEAE301DD57084801DB01F8B9C4036CE +46: 1C44A93B404298327857F71962E0604C +47: B5F64CD5835C85A68DC23E26D4B8FF80 +48: 6C6F97850A87088AF195D0500B3F5D78 +49: 0BAB3A60A25CD1A750C2C443AA01C57A + +Key Size: 32 bytes + 0: 5A6E045708FB7196F02E553D02C3A692 + 1: 5F7229D6AACF0DAFE3B518C0D4ADBAB4 + 2: 96477F47C0A6F482AC4036D2C60FAAD8 + 3: 7F791D54914F12E9F0D92F4416EFBEC0 + 4: 87DDB19415BEDC42BD361FE380553C5A + 5: 8EDB2A09DC8731DB76D9F67A03AC4D9E + 6: 269A7C08C28D5E4D9355DDBA161F862E + 7: 042A3397BA5029C443DD76755008DB2A + 8: 469C82A94BC5F7B2DF57F0CE1716EE74 + 9: 5A84A93077FA19146078310035F4B7E4 +10: 28CAF1C0D811F86CFD3C5EFC30DF79F9 +11: 05B575D06C2D593B708F7C695CE97571 +12: B7E8CACF0A0BD7F2F5DA0B09CC8B8AEC +13: 0ADDE90F66F1BCF38CEC63EFBF9DBD46 +14: 9BF99E7F5B8F176DD686AF017D5196E2 +15: ABC189EE80D4A4588B3D54DDACCD9778 +16: A57405378580B1E8A8D877791300374C +17: D1EF03F72FAB3DB68022FC60A2CEC13D +18: 3D2406231BA17FF7CC973C5E203872DF +19: C3E07233BD101502953D6186001838E4 +20: DC281C0CE02A83098C80D6C9463F3449 +21: A923023D2390B2230FCE9217776AAAFC +22: 92E28E69009959FB84046C5ED1B64D1A +23: CEF8F684EC64A31C651280CDC942DFC2 +24: 5A954684B22691F9CFC60442A654EF61 +25: 56A38A0D93188BAA50DFAF2CB799A76C +26: 54503340C5DE26679AA5F35215DE85EA +27: E74BFAF64946DFD699583FF9C47A1EAF +28: 01F234F9868B085E9B1A2EC84738E2DB +29: BBCA3DAEAB24EF25BC7B623F4D9FD680 +30: 3956C880F7F7D94ABC259D3D86157F27 +31: 4672C2149054C839C537BDA1F5BBF8F4 +32: CF1E9ACBEB391062593BD88C7948F64D +33: CA5B4E867AE9D8BA2D4416C908EB99F1 +34: 36666180C768636CF1708CC5C85A6875 +35: 53E396D2755218675494C7AA515A2310 +36: C2B7D31A59A602A65E155F80353DB83D +37: 0EBCE19FF6FC03E327A2602F858D835E +38: E47CC2A5E6C7FEF185806E2CFB304D91 +39: D61F15FF75E0F523FA3872132A09AF42 +40: DCC25495052980986AE30756BA0417DA +41: 451BF5B7C1F1AED9F3D5E18A391EA4DA +42: 1B6B105C580083D23F3A8EACE41B7984 +43: 8C2F86CD6C86B67C9EBDCAFC5720E4F8 +44: 41360BDB3E4C6836BE0D15B659CEC5AA +45: F972104AD851BAE0AD963817A3F03F58 +46: 396095F7C102B5A238110DD3D6D4ADFF +47: F58391AEB9A5D8BB32A3055B37556E81 +48: A23789B146CE89C876F3C331901261D8 +49: 2684AF345C4B13FA154E93A3E2CD2A90 + + +Cipher: blowfish +Key Size: 8 bytes + 0: 84BF44A1442B8217 + 1: 3981205BDD22C01E + 2: 0ACC5CCBA118CD07 + 3: DF76980D5E089145 + 4: A8503E8D849C599D + 5: 5E56574687038F5F + 6: D63296B036996F50 + 7: FD2FD7A0669A9E7A + 8: BC6583720A962585 + 9: 4B38C2856256103E +10: 48A4FA354DB3A8A6 +11: EF97C32734BE2A10 +12: A7467E9C729F8123 +13: 04D2507F9C4B5854 +14: 57F76A4D406B22D1 +15: ED0A3B26D842C8F2 +16: 047CB457E9730CD1 +17: 9F13BB1A97BF5E2F +18: 628CA4F77161C95A +19: 37C7D8EF718DFD50 +20: 2C9A9C655B839B1E +21: AB222D66579DBE0D +22: 57950CDEAD6FAE88 +23: 67AAB3669431E403 +24: 6B35C87144F6B748 +25: 94C2E8A1DBC963C2 +26: ECD68F56EED1F78E +27: 2E7BE0B866B1D3C7 +28: 6671DCDCB3D8EED4 +29: 8ACBE7A2F77FBB35 +30: 0BF0AC4EAE284F93 +31: 29928AE5DC8A57C6 +32: 84E48C27E21264DF +33: 4EF0E943E4F48ED3 +34: DA155BEFBFFD2638 +35: 611EC83E0931FFBE +36: 3BDDEC15BC543A92 +37: D7B9564BBAEE19FC +38: DE44907E9F0A1F11 +39: C8638C0594D13614 +40: 9E67F1B15418BF14 +41: EDF531A083F72852 +42: 7E5F8F9A72890BB3 +43: 2A0B060E3EDDE9C3 +44: 9B4B0F6FE6511106 +45: 328658F222C7FCE4 +46: F6F1B50B4F9F9C93 +47: A620519E69952F5E +48: 24DA24DFE96AD818 +49: 226C43435FBDA34A + +Key Size: 32 bytes + 0: 46CDCC4D4D14BA2E + 1: C079641BD6584E5A + 2: 38828DF8B4C4920C + 3: B4ABCF6B78A721F3 + 4: 8E7E2914CBBA708C + 5: C0EBE7002C888495 + 6: C60F404DE7CF9B78 + 7: B29E843E1771EF26 + 8: 983033386CA6A09B + 9: 76F1F89AFDCF7130 +10: BED4E2114F4376FA +11: 879A2B9D19AFAB87 +12: 366201BC87532AE5 +13: 6F409580FA907A64 +14: F7A202F00A38863E +15: 98B0A9C79FFC27B1 +16: 1CB68D9BBF8A1A8A +17: C21A2C54E5471D23 +18: 76A81C3DFC149934 +19: C7A0627412FC323A +20: A034684D7058E7A6 +21: AC87722F27029BC2 +22: 36A6C2AF10245E3E +23: 1F85B90D11217EBE +24: 9C2A0C383A4AB7D5 +25: 11D5C689039CA179 +26: B0B38C7077E1450B +27: C59C7DCCC3B8A1BB +28: 9BC539F29208AC24 +29: 8546F17C77C60C05 +30: B189C3E92AF53844 +31: 3C7689163B8D2776 +32: 6AFEB9A0671156A8 +33: 05514E39F2990008 +34: C941E31A2A1F42BF +35: 87C3777C74A730A0 +36: 2861667755C8B727 +37: AF75A0312433B151 +38: F76939331E9C9792 +39: 819FF8C81FC7C8DC +40: 31E7B07EB03D170D +41: 696E5EC1A741170E +42: 6C5BF0E0BA48FEC3 +43: 6D751BCCDC475797 +44: BB5A91D0CA7E60F4 +45: 7F7EC0531C88B14C +46: 9F302392529B70E8 +47: CAC9A1A88F09AC1D +48: 39D56A652E02D5B0 +49: 13641D42BC126517 + +Key Size: 56 bytes + 0: 373C66BBA50EB9CC + 1: A4E8C602AE3A2CEB + 2: A59F08BA78502F32 + 3: D0D4968015F4E4FF + 4: 0D3C2F291E6C2EE0 + 5: 3F99F5DADAD5FD2C + 6: 5BA41EC1A506396D + 7: 0BDE3B5B50591D35 + 8: 5C4A6AEFA69A115D + 9: ADABFE96D6D159E8 +10: F97F0B9C88ACD5C0 +11: 8882A163F0F02BB2 +12: F00556C9F5A56A32 +13: 257615BEC96CC228 +14: D58DAEC547DD8B89 +15: E677F4953EC44097 +16: 20156D066DC37000 +17: 6F18E01C6FDF947E +18: C8DFF24F12621237 +19: 032F91C5119AE308 +20: 394194AD8BC1E5CF +21: 6F24E937F3925581 +22: 086A4510D95759F3 +23: 073204BADF0EE942 +24: 5BC8B8E402D90F43 +25: A10B7E9D01DD3809 +26: 22C0B183AFFDA506 +27: 216306AE6DDBAF3F +28: E275E1F52430A1FD +29: C3BDB49D588D31BB +30: B860818C5923B688 +31: BE1BC7A444B0E141 +32: E4C4B67900DBC8DB +33: 36D7B7ECB6679A9C +34: C1EAD201EE34BEF7 +35: 9ABBC877CE825B14 +36: 3B211121C0C3C09A +37: BE3B34FF2E83F5A7 +38: 46C2B3E628A53EAD +39: B7E7DDE16C7DFF62 +40: 3C9A14C4226EBCC5 +41: C5FD46242DB29704 +42: D45A96723FF62201 +43: BB015D10878CF70D +44: 71DB021BE398D41A +45: 06F52D237F06C260 +46: 3552F47E8CCFC73F +47: 769E33828AD5D88E +48: 659861DDF080AA67 +49: CF7A13782F317342 + + +Cipher: xtea +Key Size: 16 bytes + 0: 256004E1F55BC0C7 + 1: 2D385C151A691C42 + 2: F93BFEA758A7DDB4 + 3: 2A905D97C0CA3E48 + 4: 12C7C2787B913AE6 + 5: FB24B1F32549EF59 + 6: 2A8BFF867FB4FF73 + 7: 5692243526C6BA77 + 8: 4CD423ADFCDD1B6C + 9: 9B99AFC35EB2FED0 +10: 416B4AA4E07DA7F4 +11: 4DBC9052ABFF9510 +12: 8AF9457F8E599216 +13: BC3CA2B1C7267395 +14: E4BE31DF42282F7A +15: B344CA8AA57E9E40 +16: 57A1F94CD2F4576D +17: 96177FCD28BFF1BB +18: 78A1F63A0EBAAC33 +19: 5F3FCBCD7442B617 +20: D6F7CD5ECA688967 +21: D92EDF70CBDE703F +22: E2E2C2EE5D18E58E +23: 4BF00478CB7833C3 +24: F9936D550815FE8F +25: 19A3B07B3E47D7D8 +26: ACA441F099A7E30C +27: F70183F199988E3F +28: 0A41FC22F369310A +29: ABFAF40853A4A38C +30: 6B5D29DB1155D96B +31: 0DD0C08A27561D66 +32: 4C56E22292F17AA3 +33: 3F925ED65613DF4A +34: 521B4C97081DC901 +35: 2B1EC3E1C8CF84EC +36: 2A412556F42A48F6 +37: 0A57B8A527DFE507 +38: EB55C9C157E3C922 +39: 6E6D6E9AB925ED92 +40: A4C5C90A0D4A8F16 +41: 7F9F9F658C427D55 +42: 9A5139994FF04C3F +43: 9054771F027E29BC +44: 90543E7BAED313BD +45: 5DEC1EBE6A617D36 +46: 19AB6A708CDB9B2D +47: BABB97BB5CF9D4E4 +48: 2C2ADC05AF255861 +49: 52266710153E3F7E + + +Cipher: rc5 +Key Size: 8 bytes + 0: 04F6B9B18E6828C1 + 1: BEA50D165E50EA04 + 2: 6F3728FE19F09B03 + 3: C682C26278B372FE + 4: 78BCC81E144E1B0F + 5: B62775716366450F + 6: 5BC49690F97CBCFC + 7: 359414E9EACDE379 + 8: D3331D8ECBF684FF + 9: 13129FB10EAFC82E +10: 7F29218421CC4B5A +11: FC225A4F31A75162 +12: 29BF8BFDA8A15D37 +13: 6854AC5BD98EEE95 +14: DEF05AB6D102E992 +15: 317C3EA6F0600016 +16: D6F3658B2E80B77F +17: 7C1DF7ED6C92C23D +18: F8665145BAFE28C5 +19: 9D8059C34B79F0EF +20: DC8D1617D3EBC7DB +21: 2D8FF59FCA19BE6C +22: 5C6956743715EA13 +23: 91160BE1F4F3D4A0 +24: 1D482C2359EC93F5 +25: 9C21D1A3755A7251 +26: E48D1BB926D51E63 +27: 08A054946263F617 +28: 9C900BA37199B7C7 +29: 0C6C58743EC83082 +30: B24197EEB5603D3D +31: CF5B735F8A492E49 +32: 337C504698BBE553 +33: 3A2BCCC88BE9ED51 +34: F3E9241743203ABF +35: B67BCC625815C585 +36: F8E96E4EEBC2566C +37: E27D162006C67C8D +38: 08CE8C1A5E3C169A +39: 0CF8AD04125EFCD8 +40: 6712F9F044864FAA +41: 0FD465AFFD64085E +42: 6BA8C82B3974391F +43: A5FFF24CE9659357 +44: 0947F81E1EB4970E +45: DEA966CA50243067 +46: 1F1BE4866F48E39F +47: 03A7D7CE793F52C7 +48: A1FADE3F801B414A +49: DE7DA6D14A50E305 + +Key Size: 68 bytes + 0: C8704ABBDA9624EE + 1: C719C645E301FC16 + 2: 32D82553B0E35EF8 + 3: C63C77EE6C2A6E36 + 4: F84EDA1E77ECB5F0 + 5: 382C1E72AA1FD1BC + 6: 6B00939F535F9C83 + 7: 3CE0825AE10C2B0E + 8: 1F9E7738602BDD0A + 9: 9273E7933CED0B0A +10: 4CAB45EEA45C32DC +11: FD0208C6A89FB519 +12: 520D8E6912E9551D +13: 5B88684544868BD5 +14: 32AA2A8EE58135D4 +15: 281045702DD38766 +16: 26D68E073C996747 +17: 23DFB9E174D86192 +18: E32FD5AF5101E45C +19: 3DEFB679670A143C +20: E616394D859BFE94 +21: 217B9BE0ED47DDAD +22: 4F7901A5620EA484 +23: 6654C042783F5737 +24: 752AA74BACF9BE65 +25: 2FAEBEB8B325F89B +26: 6FEA020B058F32CB +27: 2A32682A36691665 +28: 338C8AB628A30105 +29: DFAE9DD082DFE38C +30: 51B451C29DBA19C4 +31: A2993DA9B8C1D5FD +32: 24D92FA331E2F93A +33: 821A961C0524C89D +34: A07BF305EE8964D9 +35: 981652361262C5CE +36: 3DD770C3761B695B +37: F36359AFE1C8A07C +38: BEBC629B8938F4A3 +39: 2E31DC53F77898B3 +40: 52E4104C4E8E6901 +41: 75C912DA610525EA +42: 2F280F70963F82DE +43: D7E3FCCA75AEE5DF +44: 8EBC7E825A14A2BB +45: C1138701F64187DB +46: 1294E21ED2550DFA +47: 577820D772BE2C8E +48: 48CE93C46BFD33CD +49: 3B50D264382E03BC + +Key Size: 128 bytes + 0: 236CF0A207576E8E + 1: AC12D8F1AE55F057 + 2: CEC4230F747B547A + 3: 61EA1B510D033B26 + 4: E064F51998E20804 + 5: 6247797DF02BAEF7 + 6: D25A766244063A7F + 7: 2C2B3FDDA0E07067 + 8: 04EED646C3F6FF90 + 9: 05487E7702865E4A +10: 6C0A92AC23ED07C5 +11: 6E54E768C797F797 +12: A7C53BF7B252A884 +13: 731052795E12C80B +14: 3E4DAD15A826C43D +15: 10B1191B4012C2A0 +16: ADD244B33AEAEF7E +17: F6CC7B5F0885E056 +18: E23489F3B7BE438E +19: B0C27661692FDE4C +20: E81CE014DA769F07 +21: 7A8BE0D2D52623A8 +22: 082F444E00D5E127 +23: AE42F684ADD1DAC7 +24: 9061BA686F76A450 +25: 9BEB7141B8F6F5F0 +26: 38CBA9933AEF85E7 +27: C66F4245901CB341 +28: 8659AA47E6B06BC3 +29: 357AB20DCE2DDA3E +30: 236689C2F36976D9 +31: 331EFD7D5CF7AD50 +32: C373526C2D44DB80 +33: 79F7ACBA770F5C92 +34: 64325C5A67F364F6 +35: DF2F720829FF1694 +36: 9EE17F47ED487BC6 +37: C41067896AF4CFC5 +38: 5776E1E5FBE59933 +39: 07A05B1508B739E0 +40: B19EF72A65B3C035 +41: F8BF5FF4095C0173 +42: 7F1226C6CA7B4072 +43: 8A6C8F26A97DD33B +44: 62948A9A627E98AD +45: 9EC58E3F8A477D21 +46: A656F285AE0684B4 +47: 8489690681A53EE5 +48: 940915E733721837 +49: 1221956BCEE0143B + + +Cipher: rc6 +Key Size: 8 bytes + 0: 6533F7041D69B9B883A5305180A85520 + 1: 496683D6356950E8F4AF4582630BE46C + 2: CA421828FCFCEF2F042F6D81F14CBE76 + 3: 92DB67F2F057858FC806E071D239F245 + 4: 203CDFE0C36434AEDDBE2DA68ADC5EF0 + 5: 8EB23BDBD58A279C1F3BF75199FC9E34 + 6: 8FA8BB4E772E09DD1EFBE03090E77FF8 + 7: 2018803BFD91D157AE20C6E8FF1894B0 + 8: 267319634294F0684AFA7B26EB612B3C + 9: 108745E1F2E80864D9043582CD5550EE +10: E4F9EFE5A6C426BB719EA17174890D0A +11: EFFD4CAE649740B3309692AA19ACA227 +12: EB909E6D0789F649538E7EA1686FC0F9 +13: 0216851E23EDAE52D9964939DA0A7493 +14: D6A9CD3429D1679D26A9599EBDE5409A +15: 5DCDECA6E89A7F0EB40649EFDE6420AF +16: B74FD556B06C07BA8D9E517348CC66CC +17: 9A22CB5B73EF1DDE68A5AEF1B1510ECC +18: 77F78557143E08A7449A75A13098FEF8 +19: 548FE6700BD17D0AE247B07C2F1AB0E7 +20: B7DFD8CB428A36733BBE9A51CF45C072 +21: E7E8B7AA2D93E3DE99C543A473CC6760 +22: 3FA5821248B0F0AEB5CF00EEF7958F5E +23: 0A655AC6C51DB33849BCDA72DAE106F1 +24: 9EE93EAB01E1A1DC57B698C266469481 +25: A7D398720E0ABA2D0D143D8306FD5AC8 +26: 98A46C94125BD2E5600BD26EEA420F2A +27: F4789EDC3C50BC4186816F14A86403D1 +28: F8AFBA8EC652EFDC3AF5EA5CFE143E16 +29: CEEEBD4B6724A30E1859A5B4EF9B2B3D +30: 766715B4C4FA7CD4B365A2A67C79E48A +31: 92C5EB7BE61155D79DE0A6F55715DA22 +32: 42CF0C9B2BAACB085CB1603688037D0F +33: 6C4BE816F7B573CCFA8BB6E399EEB17F +34: B6D7E606CC99D267ECCFDBC006878691 +35: 2048B58B74F9A721B2E33D2EB86F5991 +36: 3E458C1015ECB08CC7B8980135E71893 +37: E4E28A032CF2F3C8262CD4BBE7A4CDF8 +38: 701EAA449AD9E5AF81DF3F436AB25620 +39: D1C3FB7C16F5249503EB389A692B112F +40: 7012790DB65526DC87F9A2BF0FBB5664 +41: B782A3104FFE65DDB340F713ACFFE25B +42: A155F033E4536FB1176EBDF9EB5FEC4C +43: 8898BCC7A008127014850D5529327352 +44: 8F4B3BE150FAA0371CDE69891E52A3C9 +45: D371C8283F68DE983C98D98A7563B934 +46: DEB679915E8F0D0B65B37918BE4596F7 +47: 84D74F7FA199304A47BB37B8AF893CF0 +48: 5367B0187496539F6DF6CCE0965B376D +49: 4B9C6011D43CF2D8FAFA2E7105D85024 + +Key Size: 68 bytes + 0: 6BBF763FF30876A4BBB68A7E7E290770 + 1: 59852279E82E98B8B680E5CEE12BB99A + 2: F96989565E5B163EA483FF74ACA22DC9 + 3: 221F7A410F5AD73C1C67DEBA99683E0A + 4: 55F058D1D9B8C372E2A28AB6E953A851 + 5: 24A8F7E07620A55D69CC3981B92E5CCE + 6: F4D9DA95BF66FE28BA3A84E77E62822D + 7: EE7EAC2BD34DDE6F83E6D4F23C0A49D3 + 8: 4218AA697FB7C5D897E66EB00A9FB489 + 9: 55A8CDF8608A3B1A6B14275E2258A096 +10: 18D50743982F5C8A5C528BDB5896CDFC +11: 391403B889F0CEE865893EBE9F1BF90A +12: F3CA9C30C163C510432D3207DB6967EA +13: B14B6574DF53257BE4508DBE78843B47 +14: F52F1E5FD6FB19C1F5466276F9C33A97 +15: 9D5AABA86E8B65E4F633B6EDE17516E8 +16: 9038CF746F722DA1A0C34461359FD378 +17: 398E317E9CC074C2293B59598F72EA64 +18: 9D75D897D487DD2B5BC534B4B223ADD1 +19: 6C6DFF734BFB9700EDD6B3CFC6E311F7 +20: E27591407CA9771F227A5B6B3A77C928 +21: 1618F15FFA8E2692A3B3EF8EB6151427 +22: FA426AC6161F31F0D63FC9DA97A6A393 +23: 1281869E9959DED2CF75F50DA7FAB66A +24: E8BF17E4B76D6DC5C1D07DC80970665A +25: 9A869B6C5EEF391C7E7C4585FFD9FF3A +26: 59564F799AFC984D39A8168D1A30C8C8 +27: 1D3927AA2E2C48E6CFEF88D04ADD30DE +28: 39BF89DE1365DF15A8ABA86856ED074B +29: 0CCC4A4DEB36A000E7EB271F5EE54543 +30: 26476623D35A514B8833D868426A2BE9 +31: C3C85993EA15AB2D056D670707851802 +32: BF5F7ED18E1320BAD536DCEDEE1A9AF7 +33: 337BDC5FF0F7AD44E6A3F5D6712BD5DF +34: 7DBA76B3D9C818D0CE1A530BC79E77D2 +35: 20DF55E617CD2598F18534DA7A22B555 +36: B0A0C1BDF9E81B4F07F47D31A9CC8408 +37: CB9586F4B27F759B9B9C6C7DB01D26A8 +38: 1E79A2894906A64098AC43799CEFED38 +39: 82FA120F237EB0B3A1F8B52379B8346F +40: 3DB9848603E3B1134585E5C9001D119B +41: A750875900E244996887EC995131D151 +42: 12133748D3745F77C161470A921F73BD +43: A265C351694574B44517FDAD8816133F +44: 5E50CC8281C2A69FD376250D99620DD3 +45: 443ABBC1AD5605A0BA05B8E6ABA5D2A1 +46: 73546A87B39C54F0639EBEC118ADA007 +47: 380244C822817453C75405B727D67C4B +48: 73F1E23DFF05EFAB5D39E503031C4165 +49: 8030071491490590A8913AE4B5D082CC + +Key Size: 128 bytes + 0: 24B06811BD97AE9512B3799E3189DCD3 + 1: 92DBA6269E880F8D8A09143D792A46DE + 2: F956F459C333DFBA4C6A309C613DD661 + 3: C31488EA551CC0FC8885F6817CA696FF + 4: F59634FE907F9DF9467BD1059F82DAAC + 5: 051AF11DD2FCF742169B58A786128CE7 + 6: 87326A3A4A98CC15B23DFBFFC5AE16D3 + 7: 58FCDE2E88A79D5682729ADB4D971142 + 8: EAA787D68EB68CA79CCC6BFAC3BE9247 + 9: 8BCF6980AEED36AF38B68A50DD454AF0 +10: 4B0E31AE48E903DFF52939800BB16DC0 +11: 19766AA929B40840715D53D9170C986F +12: F9CAEB36F03CE7B3BB363AC7EB3ACF99 +13: C8E34A6BDEDA4DB836DF3D863D02A6EB +14: 370547CEA441FDCBAFD281A8653BE2D4 +15: 77E0F33343158A8C3AC3C6D14FD69431 +16: 7A985B1368F842C644538C654D081FD3 +17: 60E0C8933F43D40003030196E8E881AC +18: 3473474B58AE6BC7582ADD7AE24711B7 +19: 75936C8D46F6D5AF5C7EE0E8DCEB5AB2 +20: 4A04F619FB0E05F7B07C43F4B9F2E134 +21: FD53A5A7F4F0B9D933E38D9F07AC88CD +22: F62EE43B20F582AC77879AD7E66FCCAC +23: 4436AD771624896683D7D29E8879F89F +24: F88F3C0EF2B9FD0CA997BEF17787DA2F +25: FF5576F42CE9A0665A1D6A2420A691D0 +26: C077D6AEBA65B61CD1A9AAE17FCFC04D +27: 84D0D7C52D6DB3979BC3F6F34456CB91 +28: F163121D9EB7569CA7DE3B7619E0BE51 +29: 727D23FB43215467B57DC67A8890CF26 +30: 60BA577F3C6627267D7B33E693FB7BCB +31: 82C66B23586CCEA2AE1480B469B3F3C3 +32: A65092726D6CF2F77CE00648E2D117B0 +33: EC30662CBA891A3380B846DA6C64024E +34: CE1B253FBCE36B217ED1EFBAAAD2E783 +35: 9D963CD5E65A9ECD2DAEE93B6C6C1178 +36: 1B8E3D07E7BD4BB4248B6A7DF8935980 +37: DBC3FD5888B80C4CEFC6C5E170E271CE +38: 307CA8CDDFE5DA152B66E10346BB2E1C +39: 8858250F933650D978B403A4504EA581 +40: F06005FA6E56E0C0D96988A3FAD359FC +41: 816CBE37FDE3719804DBFD093E3FD87D +42: 4878C07B127D696214393DDC66F5EB36 +43: EFBA6045243050C0D8D82046B17008E8 +44: 3D30C3E5892D32BA3C685DC5B186E959 +45: D4A4C41F0E6687E4021FB90D7A8A9F81 +46: FE1057B2013308C4CE839B4186F43B4C +47: D7333AC65F66ED6D4BB8D069E265020F +48: 33C262F58BF0D91DF2047E799BAA5F37 +49: B960A18764D7A6E17FA1F88487EFF192 + + +Cipher: safer+ +Key Size: 16 bytes + 0: 7D42607880B424C27E5A73A34FECE686 + 1: 1A99D469F1946EA46523083FBAA79CBB + 2: 831385E400FD681C8A30AAD9477F1ABB + 3: 5C1BB8F259CDEC2C1BE0B803C7D9447F + 4: C57C1CBB18D87FCF72A87B247392752D + 5: 1625183B0C595A33FE0E8AE0DCE40ADE + 6: 4AF3A9D6733DC4FFF3422AA5BE5ADC94 + 7: 853133894C87A23318DFAD2B247FBFF3 + 8: 8C7F68E01A8413D19B9A479246E54722 + 9: 8620898ECD3BF91A47CC54E6D9987FA7 +10: 33F12ABB7CC6A9041543A2073AEDFFA7 +11: A096E46F2834F79C096D0B655EDC9A63 +12: 3DD0D7824A87C9F5D8D25F5AF57E70B7 +13: 6B7C99E5CD29AC1C5A8D66AB460E5AD5 +14: 95A9F6009AB4DD2AC7E8E45F36D91E9C +15: 60CCEFC6630329C341782B17365995A2 +16: 0276C96A7B1191BC16C8A9C98468DB05 +17: 1F352CB77C21139C058837B8194E3E64 +18: 2DB8E340F58844705F217551782F6B4D +19: 34E99832E0722C5AE8F0CA1A50E9E7E2 +20: 7E1538DC10C1F56C3723A87BFD127743 +21: 36B9714A8ACDC8B8A17E85E2803A8C88 +22: 11848329B0DB9DC7768C07D95F0CF662 +23: 93ECEDEB4C6369AC56AF1F49345720A6 +24: A3ED7F9D17067C2650728E266B623124 +25: F33574590B435D1DDBBA925F0D0EA8AD +26: 87E542DBD40DCBD80C4AB52555C264C1 +27: 6D806991AB8E3604C8267AC1EBEC2E21 +28: 4B7333F87EBB46BB2A8ECD392C85A12B +29: 4FF49ACA62898F558AC065B66CAD0234 +30: 62DE7B2133B09544EDD0DF66DC4F5E2A +31: 82195B39FF7B8A85D7F0EE52D19E510F +32: 24FA56176A4F0B37F851CBAB176C9702 +33: 85FA9230D9B93CDCC0752FC738211703 +34: D441132032BDAC6715F4453CBC2434D8 +35: 438AB9BEA8A900368D84EF870EAF7E84 +36: 433BE5BFE1529BFA7C5688CFE3BD4DE5 +37: 2A79FB6F37AA08533445B8BEA5098EA2 +38: B9C986EE45D204B6A1CA152944912C9F +39: 8289C9F78760D02AA71873FD97E2ECB8 +40: 48B0D1244523165055BE9A5E95CF852E +41: 471E211E5E784C2AF476DB3CB555CF35 +42: F290CBEB1F1009D250F7B12E044B80C3 +43: 1B9796D80C3976FE3071B1C01154D42E +44: A80E21A1A1007B69E8BCAE728BBE6A92 +45: 652058EF0FAF8549424F998669660931 +46: 89418FB4740E9801F6DFFEDC593FA32E +47: 907561A69CFA117F167A52B88777D89C +48: EA2EB4B1EE739320F99894B476A8A51E +49: E627E64AAB6E2FF6B99643A7FBB84BFC + +Key Size: 24 bytes + 0: E8975F94A8B1392FBA78CBDDCC8E8F08 + 1: 708CEFB68A0281AEA424B3D4698D2F2B + 2: 21A0DE56545BC950FCE4DF209C96CE6F + 3: F2CA4103B703264D46CBC09E13D5B8EE + 4: 2892101077FEE427C434CCFBBAB598B5 + 5: C2F191CC5C681CBFC098B264C479B2AD + 6: 308C3B794C8A7971BBA96FE4C727F48E + 7: 8A4F9D4463B5DC4DD461ED0763CDAEA2 + 8: B7E1BBBE455AEDF18329A6EECD6E222C + 9: C80DAAE7FBDF56DE05A897FBDBB53DEC +10: 6A3D38758BF0390156F22F83C20F0262 +11: CA493DF771E37A93822D6117ED14B60C +12: 623012748826A08F3C59B71FF3D66327 +13: A283BCB126B9795D306B129035BCC2DC +14: 3790A6704BB0F119139A0264F7E8B2C8 +15: 9B369BBC095428EBD712517B2C4D06F0 +16: 0F488018162193ADB11E4C39CFDEE0DC +17: 8AFB7C6FD7D6DD64C2C77DA3A0D91EE2 +18: B8BEFA241BA339BF6F059464C533F9F0 +19: E76141C8CD54200FAB2F8C2B76AF5FEE +20: 80B4FE57851C0240D81E78DA8200F195 +21: 8BF1C690EF5FCE7ADC74E31C24F83F5E +22: D30C4F78703BDE91750E0E49FA0E8982 +23: 86C5D1E0B88EF0AF9B899850510000EB +24: FDE727442BCC0305A7B06E6EE179D836 +25: 0B4A719342F9226FA680796887A98FA5 +26: 980D4BE9AF3E3CF9D4558478D1DD03AB +27: 03ECD11992D3D5864B8D1987966BA544 +28: 8DBC2931D7D17657BF38E3931F486850 +29: 76AE069E39FA7308BBF507ABE35BC1E8 +30: 9541B59CE18EA255CDC06DFD3FFCD1C1 +31: 5A382748AE3641ABF6D9CA24A35B2002 +32: 9B7A49DCC2CFC5A6078AB41E6F62B4CD +33: 91B2EAC878E5628DBCC7C876B91B73D1 +34: 31125CFFC41A0D3528FB16BAE761C47A +35: 916D2A769DA002ADCA8C87F8241BB50D +36: 681C3F601EE5D82F9B040932F2FB4AEF +37: 6B6F32E5EAC2F424074C33F7C988D5FE +38: D15A5FDC2A4956DE61BA6E1C98867242 +39: 0747BCFE1B979E947EED5225FAFCA44F +40: 133B43C85CCBC360DF8649BBBD2EB45B +41: 052D943062A6D475D30100EA412C30EE +42: BD6401C591D585F4A82CDCF678679D5B +43: F95D1A5E338F56760C425D972D67B57B +44: 9B1569308608CA00BB1E2BC9E20289A7 +45: B6454C52C64F64D69F1D36D2D224A222 +46: 529B5B013AE3F37E38BE340D1D200A64 +47: 1B65904F177212AC8E9ED4D8DB287810 +48: CD5CAC56236E0B9A25A5D306F12D8C4B +49: 01DF7E1D0F5F7A5DAA0B379388425126 + +Key Size: 32 bytes + 0: 7FBC212996ECE9CA2C4D5BD88FA0B3D9 + 1: EA3D788C25CF3BE7F4101EDECF23455B + 2: BD0B98481366AE0869ABA11DB18D1E95 + 3: 53393E2B757C90489EB6B47F67837337 + 4: E1D350640CCA6C13648C3B57BE00B950 + 5: 951E1EF99E6DE72744A9D8D9EBFBA94E + 6: 433E4D4E64B41818097BD5E2EBA01D8E + 7: 8FCBD07E303B381B2935FB82CA0CBF13 + 8: CF46569005BD968B9310149E892B4D69 + 9: F1B672657C2657AD53BFFE2BA5DDE1D2 +10: 0035337210703240F9CF2F5A9184FDB7 +11: 773951841F77DCF8A6730109DEDF3E9A +12: E47DC0FB381DB86EBD208A0D649E7B03 +13: 0D9E34ADB257146EAB95AF14636301D2 +14: AB5D5C106E52AC7662C26F9F27F2CD55 +15: 6938F205DC23C3500B7723281E9F626F +16: 3CABD52558D7F418CAF6B41CEC334DAD +17: D2192F1E5AFC3B989C42C396B3764862 +18: 59D32E3A41141C6CAA2A8F44FD587D94 +19: 483CFECF65D71CB2994E1C12A1A7F907 +20: 8F086AD81B1FD5B13195EDB4DAB7DC73 +21: EFEB1328CE7AE6A63E7D8B3ECA9E12B9 +22: 362AAE308B3BBA588DBCFBB7197E693C +23: B817A136EB30CD127B5015A85A7B6E95 +24: 03796E7F244CC916BE02AF61E5FEC42F +25: 5854F2889CFF44B0688718C23B0A822D +26: 0F772AC6E37364AA7B844AEACB33F4A2 +27: B3E95F5195BA646DAF333AA89130451F +28: 911A32AF7CC44309B37D75E158A4AB18 +29: 232CFE228EB72A949616B307C2BEED15 +30: 7C8989F135B8DE6FD26C7792B8354F35 +31: E79231779BFB9F792BD179C0625280A8 +32: 015F6CCAE8A1275A2E836A207D8254EA +33: 4EB94709245CE1FBF7C6D9587FA92D40 +34: 63D82005320F974EFDC4C021FB73ABB5 +35: 0F15B2E8E389C2D59289D7DA41ABD07D +36: CEE7FBBF766540D4E39903D0494DB797 +37: FB564C18A15D53108C1954FCD3518FC1 +38: A67C5F4A4A95AF2BD8E4FC1182B2EEBB +39: 0D354E664C35B9364E4EE9DB8DE0CA76 +40: 3295826D52F3B980B50EFF3E9317F1CB +41: BC65592A9C0BADD84F363A175EE6BC54 +42: 58DE762ADA621FE2A7A6A83F68E93213 +43: AD774FC8402F7DDBB881B703EC836057 +44: F1C95AD5E004AF35AE315AE88A2577FA +45: 968775A2C3485875B024B008D96182EC +46: 623E736238B5800ACD9B67D76C84D236 +47: 1C5E9F65D43343D743E50C80D0E0F648 +48: A62E4A197E15CF90C2569DC38D9FC915 +49: 165B139BE483A71381B9A8E93D9473DA + + +Cipher: twofish +Key Size: 16 bytes + 0: 9FB63337151BE9C71306D159EA7AFAA4 + 1: 8CC5A931DEC29B4C7D85595D24FF8405 + 2: E867FC0E144FDEA24FEA88D22D8776EA + 3: B450A2969C67D93E1AE3A4093BA4C48F + 4: 7AEA41F9956149F336612E868E42B3C4 + 5: F201FBB730E6E58CF9E5AD1DC4844C4C + 6: 13D8869E66412C6C288B5D7F37F2D94A + 7: CD57DDDDB782C0A04C40E47D920799DC + 8: 65371C8ABC919EC09004A7D63D9302BF + 9: CC31DFD3B7DCCC86866CC79D45A89C3F +10: 541D548D311714EF8661BFA721568D16 +11: 269F3AA2D2D10DBD3DD3992BFEE23C05 +12: F86DA5D73AFBA94A9D592D02B5855D25 +13: EAD8D785B50E036437E39F3B27DB4657 +14: 2AD0A13C493B9F3EDD259E11A495B205 +15: C05F9D72AA384F05B28A3519AF218CA9 +16: D442072F588D38AC8B9D447762E9FCF3 +17: FDD3BFB91EFD127196FF9F19ADADBF28 +18: F56717661B424E41D7DE1CD13E21DF89 +19: 0F6C952D9BE6CA49B5147EFD44455A92 +20: 6C214935726364F2766BE7B4C2B64362 +21: 5D5316D7E057FF481CCC10C7452D1A17 +22: 56C78DBD802CC9B040446A3EFF3F12AC +23: A38CEADA8448DBE29C2D11DF2A487715 +24: CB2F786AB8063350F3FAE11EC8C65A5B +25: F5B7298B6F558E2C4FCC11744AD22653 +26: 01BF89C1B48C5F6918FC6BDC10B12A21 +27: A031F25AAFF294EE79220BC76E73E52E +28: 42C94B50E12499DA35F14BB6BB6E684D +29: FD68B6840DC9A271CDE2032EF0200295 +30: A9863C1B04B3FE3945D29966F67B87E2 +31: 6226D4CEEC1E8AEC1B7B3E13D80A83FF +32: 6100A71B1E3ABBBA48A9ED280DD1617E +33: 5CE93A26D4EFF0CC7DFA2DD43A511871 +34: 282D165BFBA0F7F229161BE533BFC4D9 +35: E6AC479970891392972B2845C949A068 +36: 4E4A887368F8443BE51FA7CD16CF0B87 +37: 121AFC81AA2750572B35D100BDC34DB5 +38: 7C41FA7E0A18A87E44BE488F331B35E0 +39: C8847D295E1F505C04E2F5CE2CBF5E00 +40: 4686EE8628BC1BBB92CE825F04B1D5E8 +41: 397DFACD19C283B3FC27D3FCBE952254 +42: 815B6C69608B5A379E3C9E67FB1BA15A +43: A73E72B912EB3AA4929E9EAF73A448BB +44: 5BC4E2C88512BCD55408CC5AEAD15A91 +45: EF20B2BF297456DED1F4AB7BE0747902 +46: 3D876135E19BB56B98050450C6B0FD06 +47: D68100E1BAD07B438786337C0957471D +48: CE85A91938049B5E21C983F7C45ECA3E +49: 9FACEFFB9D08BB65DDC34E3C575B8442 + +Key Size: 24 bytes + 0: 95ACCC625366547617F8BE4373D10CD7 + 1: 99AEB25CCE73B3796C351A19791ACD52 + 2: 56B9D6689830275C1A3E4266B3D56D53 + 3: 2F5F822E11F087BCB8A0F428414855A0 + 4: 65400F729990FE175AAA894BCFBB1A59 + 5: 947BA33D20194BBB0D4904023FB32FFB + 6: 116B0C6744D215AE98DEB1F9FF1D36C0 + 7: BA6964C101FA044ED06877E46D540850 + 8: A36B18526FA0004CF557C99A3AC1423A + 9: 573099674B8AFC2DD6424A2E4C581B89 +10: F46169CFE9496A2696A93EEB7EC561FB +11: 2C64BC052898F3F3A2B78F2591F2BF1E +12: E8A0D40B08585459199DD6ECC108A490 +13: 47927989BE5EB55B9A0F294C04FF035F +14: 54A3024E3AD86005A2C44E4B8BDBBEFB +15: D0AD51D1DADFAD7ED0EBCC756DBCDCC9 +16: 5DE698B7014C34AA6F0099CBB5937A20 +17: 9BA30F49470C6DB9632C5EDE34F8EE73 +18: 0BDF558A2AE9298288E60616442D3408 +19: 25F6DD23BA4E090E1CFFA6EE3487AFA7 +20: DAC5FB99E299D2672F79F0C38E177D83 +21: 58CB113430895C9890D96EA60E3DDC23 +22: 48A0771F0049B776A44AE8877B57EFFB +23: 2F12B26A4BF7065076417530CDEE14CC +24: AA6ADCB0176D5324C4C1FFD640D502EE +25: 384B52A66F4C7A70ED36091BC3FEA09C +26: 2AFE7ACF071C6B0FD69930A09D6DD5E5 +27: 9A2DB9A5E7712A5BFB095D2C09453CA3 +28: 716C0EF522A13EA05A48F16BAD3FD10A +29: 44AB46F3CCFD02BDD2C77A332293A4D9 +30: CE6AB27A0F60F410B1B3CACD9AB923A8 +31: 69EAFAFC171C55D1D90ED1C6E1F3A48F +32: 5EEEB0B7833121AD7D27BCFAF2D4F8ED +33: 47133445A4EBCC60E27B29FCC160FA75 +34: 9F1BFEB9715A20D5FA7BA3BFF1A27BBC +35: 516D4615F07756B4DBE7D37EBBF4684E +36: B88744E53073BDA0F1B115E3DB224E83 +37: 1B77C3D067BBE00420450BA5CD9A83CA +38: 94B87AC96F8CBFF36B01A68E0651E591 +39: 52ACE87A1A8E46655935536FB3701290 +40: B406BB632D5B7985400EC78D621C8801 +41: 20F9ABCBF97A9917EC6C5DE3CB2C925B +42: 539A8AF920833F9E81A20A6D10543176 +43: B79AFB8BB39B0351094F37C6EC93F8A9 +44: 5830BD21289FED3F95C3E3740AC6C5BF +45: 86C4AF5839ECB9860B175642ADA32895 +46: A6427E5E08CEA2A50B8426B063AEE189 +47: 2E872129B5BC5F535BCE2B81F013A103 +48: 2203EB9B2BF51FC2025549D0BF1924A7 +49: 6A5E383A4FC78F6E03B9B276F81195BE + +Key Size: 32 bytes + 0: 8EF0272C42DB838BCF7B07AF0EC30F38 + 1: 9F8801E94E41A7DC875665663BFA7912 + 2: EBE2CA6B45A0BEE83B54402E1A843A3B + 3: F6C5A1187AEF4B5A88E97E866CD757A1 + 4: B3E62CD473E53812EDF9ECE875F39F5B + 5: D8C38B1EC23264BB7C42B5589C1300B2 + 6: BE315EB75B944EC9E51F5EAE65F70BD2 + 7: D4275409941A44993037364886B60598 + 8: FC34F1D4E9C4A634C1349F6D4E9AB94E + 9: BE712387C59A40A8A35F854333A0302E +10: 1F1FE164834BABC71DBFDFCCA7D2B4B6 +11: BB2413CCB5347B5157651819E698D988 +12: 6EB5523A968ECE965D9AA4B975D7C2EF +13: B5DD49AB7E269F9D8516FB57EB47D57D +14: 74F5D81856F192D49A70B3743945BFC0 +15: 95437BB00D57CD88BD52DE0A66D934C6 +16: AE4804A975D67C6B6F99176F407AAA3C +17: 5E5B2FB9B2A028A5467B56F8BDBA6980 +18: 8C617FF1F9C50A36BE2EC19A629BA96B +19: E3401F7CBE177A1D224117894E7EA08A +20: F8451D9DD31A08BE828FA9AF39708921 +21: 5BE66DD577826804817B85A07BCEDE28 +22: E426227780943AA1A830B7E7D7F7CA0A +23: B39C7277C3A5CA21897563DBD8DD6D94 +24: FA9992385396F959841D1E0E68CCE00D +25: E1DE89B1DD5CC31685558A51CC731E6C +26: 64618455C46C6FF117F19FF300B3B557 +27: 882758C02B3C11D406A21012977D4BF8 +28: F948B62F8038D3A3AFB73041B2F263AE +29: AE3BF626020D2877052B90B31E70B8A4 +30: F1C6DBBC166985C9EC2E1A3A61BD8E75 +31: 82C343FA36B6D4E9E7AF6D0B7741FB09 +32: 0BFB756EC55AC63BEA71E4A8187C2B10 +33: F1941AD10BE60DAD3FBA33CB899B63A3 +34: 18236A39CD34743DE7B60B2575A9B204 +35: AA37FBC2525F74710D7561D316E8D90B +36: 413E0F72C2B349FE2691554F77162B5C +37: 5B9E6F98B2CA0F637E463BE4A6EFD39E +38: 1B4A4CA36DC60D51BA981392D6070379 +39: B1E26163A90F339E33F86D252EFBAB99 +40: BB98F9F844FA81B25ECC89A8482404BE +41: CE142F512A42A28F4788847B971AA7E9 +42: C5CE782936F3D28C69C2BD45FD7BC117 +43: 9B6E142582E0A309EDB550DED51238B0 +44: 0D9D80C01612977FF3A2C7A982D0894A +45: A7630C752B1F787B07C382693334C6AF +46: 9F24990F270D575881C746481A59C245 +47: C38B5E11479C200B5ACE1D6522FC6B1F +48: 99118D8114D24B6559CC5D9456F1BEDB +49: F8B974A4BC134F39BE9B27BD8B2F1129 + + +Cipher: safer-k64 +Key Size: 8 bytes + 0: 533F0CD7CCC6DDF6 + 1: C3CD66BB1E5E5C17 + 2: 079DFD68F6AF9A79 + 3: 84EB4922264A1204 + 4: 31F3A7D739C7E42C + 5: 381F88FB46E1DCA2 + 6: CAF4AC443E50EF47 + 7: 2914E255DA9BDDBB + 8: A160A24120E4FECC + 9: F748C6009FFBC465 +10: 8B3CB5784846D2B0 +11: 4F98C1621473399B +12: B486B0BC365ABEE9 +13: 314EAB2B4E9F7840 +14: 613FE3637968A8FE +15: 28935352361E1239 +16: 0DCB090233B8EB3C +17: CF0BC7F307586C8B +18: 64DF354F96CB0781 +19: D2B73C6BAACA7FB1 +20: 638FCEEF49A29743 +21: 204C4E0E0C0A8B63 +22: F041EF6BE046D8AA +23: 76954D822F5E2C32 +24: 6700C60971A73C9E +25: 80019293AA929DF2 +26: 8EF4DE13F054ED98 +27: 41DDF9845ABA2B7A +28: B91834079643850C +29: 8F44EC823D5D70DC +30: EC2FF8DE726C84CE +31: 25DF59DC2EA22CB5 +32: FC1130B511794ABB +33: ED3259359D2E68D4 +34: D7773C04804033F6 +35: C1A32C114589251C +36: 51647E61EE32542E +37: B95A8037457C8425 +38: 4F84B3D483F239EE +39: 458401C3787BCA5E +40: F59B5A93FD066F8A +41: 1450E10189CC4000 +42: 0F758B71804B3AB3 +43: 51B744B271554626 +44: B55ADA1ED1B29F0D +45: 585DF794461FEBDA +46: 3790CC4DCA437505 +47: 7F7D46616FF05DFA +48: 6AE981921DFCFB13 +49: FE89299D55465BC6 + + +Cipher: safer-sk64 +Key Size: 8 bytes + 0: 14A391FCE1DECD95 + 1: 16A5418C990D77F4 + 2: EE33161465F7E2DD + 3: AB85A34464D58EC4 + 4: 3D247C84C1B98737 + 5: D88D275545132F17 + 6: 00B45A81780E3441 + 7: 6830FAE6C4A6D0D3 + 8: 93DF6918E1975723 + 9: 15AB9036D02AA290 +10: 0933666F0BA4486E +11: 93F42DEE726D949C +12: 756E7BA3A6D4DE2E +13: 4922DCE8EED38CFD +14: 8EC07AFBD42DF21C +15: E82BEBCFB1D7C6B4 +16: B3EDB4CB62B8A9BA +17: 5521307CA52DD2F3 +18: 54B5D75512E1F8F3 +19: 1A736293F2D460A8 +20: 778C71384545F710 +21: CBC041D3BF742253 +22: 9C47FC0FDA1FE8D9 +23: B84E290D4BF6EE66 +24: FC3E514CE66BB9E3 +25: E8742C92E3640AA8 +26: 4DA275A571BDE1F0 +27: C5698E3F6AC5ED9D +28: AC3E758DBC7425EA +29: B1D316FC0C5A59FD +30: 2861C78CA59069B9 +31: E742B9B6525201CF +32: 2072746EDF9B32A6 +33: 41EF55A26D66FEBC +34: EC57905E4EED5AC9 +35: 5854E6D1C2FB2B88 +36: 492D7E4A699EA6D6 +37: D3E6B9298813982C +38: 65071A860261288B +39: 401EEF4839AC3C2E +40: 1025CA9BD9109F1D +41: 0C28B570A1AE84EA +42: BFBE239720E4B3C5 +43: 09FB0339ACCEC228 +44: DFF2E0E2631B556D +45: ECE375020575B084 +46: 1C4C14890D44EB42 +47: EA9062A14D4E1F7F +48: 82773D9EEFCAB1AB +49: 516C78FF770B6A2F + + +Cipher: safer-k128 +Key Size: 16 bytes + 0: 4D791DB28D724E55 + 1: 53788205114E1200 + 2: 4472BCCAF3DDEF59 + 3: FE9B3640ED11589C + 4: 4DDD7859819857D7 + 5: 6BF901C4B46CC9DB + 6: 930DBFC0DE0F5007 + 7: E89F702158A00D82 + 8: BEB661953BF46D50 + 9: 6F0DA64C0FD101F9 +10: 4EBBCE4E5A37BED8 +11: 996EAA0AF92A09AC +12: AED6BB9522E0B00F +13: DF9C643624A271B4 +14: 2E5C789DD44EF0CF +15: 86A5BA1060177330 +16: 2385DBA4DEBEB4A3 +17: 82E2FC765722094D +18: B3CA2161757695EF +19: F8A4C6081F3ABC06 +20: 6422316E1BEFFAC8 +21: C178511BFBFF380E +22: 049B8CBEDE5942A9 +23: 0E181292C1B1DEFC +24: C347BA0632A49E55 +25: 32FDA46669714F99 +26: 0523743E30C16788 +27: 782BE96A93769ED0 +28: 9F99C9E8BD4A69D8 +29: 104C094F120C926D +30: 1F7EA3C4654D59E6 +31: 90C263629BC81D53 +32: 1803469BE59FED9E +33: 1478C7C176B86336 +34: 362FE111601411FF +35: 6428417432ECC3C8 +36: D74C42FCC6946FC5 +37: 1A8F3A82C78C2BE6 +38: EE22C641DC096375 +39: 59D34A0187C5C021 +40: F68CC96F09686A30 +41: CF8C608BDCC4A7FC +42: D2896AB16C284A85 +43: 8375C5B139D93189 +44: 0F0462F9D8EBAED0 +45: C3359B7CF78B3963 +46: E4F7233D6F05DCC9 +47: 8533D1062397119B +48: 4B300915F320DFCE +49: A050956A4F705DB9 + + +Cipher: safer-sk128 +Key Size: 16 bytes + 0: 511E4D5D8D70B37E + 1: 3C688F629490B796 + 2: 41CB15571FE700C6 + 3: F1CBFE79F0AD23C8 + 4: 0A0DC4AA14C2E8AA + 5: 05740CF7CD1CA039 + 6: 24E886AD6E0C0A67 + 7: EEF14D7B967066BC + 8: 6ABDF6D8AF85EAA0 + 9: 0EB947521357ED27 +10: BDD2C15957F9EC95 +11: 0989B87A74A2D454 +12: 04C793BA2FAB7462 +13: 3DAD2FACDDFA3C45 +14: D1194935CC4E1BD7 +15: BAC0A2C8248FF782 +16: 7DD5894A82298C64 +17: A59F552A4377C08B +18: 8DDDE41AB4586151 +19: 7CC4261B38FFA833 +20: E99204D6584158EC +21: AACC8ED0803CB5C4 +22: C105CA72A7688E79 +23: 3D662FDC35B88C09 +24: A4BCEDC0AE99E30E +25: EAECF9B6024D353C +26: 214651A3D34AFF40 +27: 807099325F9D73C2 +28: 45EC21AEB6B90A24 +29: DCED39526687F219 +30: 2CC248E301D3101D +31: C7F37AB8570BA13C +32: BB9B31A34A39641B +33: 5314570844948CAC +34: 4581F837C02CD4F4 +35: 4E036B1B62303BF3 +36: 7B3B88DE1F5492A4 +37: CEF2865C14875035 +38: 14DE8BEE09A155DE +39: 3AA284C74867161B +40: 3616B4607369D597 +41: 07512F57E75EDEF7 +42: 710D1641FCE64DC2 +43: DB2A089E87C867A2 +44: A192D7B392AA2E2F +45: 8D797A62FBFE6C81 +46: E52CE898E19BF110 +47: 72695C25158CB870 +48: 29F945B733FB498F +49: 27057037E976F3FB + + +Cipher: rc2 +Key Size: 8 bytes + 0: 83B189DE87161805 + 1: 7DCB9C9E50D15508 + 2: C724D535853CDE79 + 3: 113AFD4BA7D3D7E3 + 4: CFA06CFB93C2280C + 5: B3F291C1AAD9CB07 + 6: 606F74D9AAD4FA71 + 7: 1CC3F7AD551C5F89 + 8: 43F8772BA6C6B60D + 9: 2F933E12F57689DD +10: 2BC1AF0D5571D17E +11: 4123AAFABDB254E5 +12: 413E0AD5C709DCE0 +13: 6B3CF01A7542BD2F +14: 1E5E2CA0CD605999 +15: D0F7C9DC472A0709 +16: 00482798857A2BB9 +17: EED583440CFA8B48 +18: DFB377FE1EE5E055 +19: 30511C4C565E8F75 +20: F74A72482B43B99E +21: 1EE4EA7849B0B070 +22: DB7A4ACF022706FD +23: 2D7EBABC8C8E4DD4 +24: 6F0369BF66A8B637 +25: 59E5D13B247EE0F6 +26: C7BAB430AA89A5FE +27: AE0F03746D38138B +28: 942DF0B523D02482 +29: 929CE0963CFA46B1 +30: F8C68A91DC53B7CC +31: 5735395C63E15094 +32: 7821605C18D83D42 +33: DEC892FD743BA6DC +34: 77AC80C1177963D3 +35: 3E223EB4EA297456 +36: AF63B231D671D9DC +37: 665CA287AF32E92C +38: E451EAB337DC1EB6 +39: 95B179EC950992CA +40: B8937115492802AE +41: 355A6E5EDF40A939 +42: 353E77D4A5A28D79 +43: C958FA5903F921B8 +44: C334E296BCB24ABE +45: 4F37F7F652FE31ED +46: 77304A655B03ED67 +47: 3548A4209ACB6EE2 +48: 696E712B1911B695 +49: E4B63641D22A3DDD + +Key Size: 68 bytes + 0: 7ED68E8B30A7D5DA + 1: 867E18AE64B783EE + 2: 032E554D6AAD7055 + 3: 26BD785D0DDAD48B + 4: FFBD4009ABF53D03 + 5: A71006E1E30C3855 + 6: 92638EE741BE65B5 + 7: FC8C5F28CB38C83D + 8: F03F145CBCC4CF80 + 9: A28A7C63F67DDE7B +10: 3089486A2247B72A +11: CDD6E6BA5ED53A8D +12: B75A2DE8CB96A267 +13: F74D72A2CD68CEF5 +14: 3865AC8D170EEDBA +15: B1B520CE5FC2BA39 +16: 658DACFDD701B4EA +17: 6B5C1DA9484FCEDF +18: E3CDFB5755BDFFC1 +19: 56DAFF7E9A908880 +20: B6F8B970F68BC2BD +21: 7A00DEE6977A91F2 +22: 6C0CE4FD2D02B36C +23: 8EDA10D868504648 +24: 76FB106689E66EA7 +25: 67F45BB28A20E110 +26: 5F3207099AF93B07 +27: F5E382F7266AB342 +28: 0E31AC2E4CEFFBDC +29: 8DBA1B2FC6980FF0 +30: 311368E62EC2A9E2 +31: 50DD1F7A319727EB +32: F0DE146C9ECF5662 +33: 81CE0842CE223F15 +34: 4C442535A8BC9AD2 +35: 06EE8869DB91EBDA +36: 4078E7CAC29DCEE7 +37: 115D619FB705F289 +38: 3D3F8A380DCB8FB1 +39: 9044E5AB8049D21A +40: 66327F00B07CFC76 +41: 811AB23A4AD3F132 +42: D4A507E96BB39BC2 +43: 51C9E4C9318F87D9 +44: D2255C13DBD09E88 +45: ECB76BCB961F812D +46: 83D7E39727BBBEC5 +47: 415540F0AE34DD65 +48: 232D20F9E188E2C7 +49: EE37261ABA270B22 + +Key Size: 128 bytes + 0: 8A8F8E5C5A04C73B + 1: B197CF922883CE71 + 2: 8AF3F896460CC597 + 3: 755F313AEB18D3B8 + 4: F1DB52688BB879A8 + 5: 29D68EA6456B1CF9 + 6: BE7C444267A7925D + 7: 46A7BF7DED575933 + 8: E2C7AD7C902E5E15 + 9: 90A38AE1DD69C2EA +10: AA95FA050CD3388C +11: 23822B6AD5B83018 +12: 8FD42F0DBFF3FEE1 +13: 645098BC94FDE21B +14: 7E43D43EAC50E992 +15: 2F540FC66A9E0F43 +16: 453E52EA7B2D1F92 +17: F6F731E8C5A32C54 +18: B1E89646504E4D7C +19: AB8168452A7984E1 +20: 044BB0758DB5435B +21: E9BAE7C99A152BFF +22: B758F70708B6597E +23: 23A1EFD0AA925D7E +24: CA60DD174CBA23DC +25: 5E916F2DF7B6B3CF +26: F2723A9BFD82BB62 +27: 2BC381F6C048687E +28: 573BFD71896A4133 +29: 03DF7250C3D69801 +30: 8639060454669BCB +31: E31945F0A87221AB +32: AA39447BBF0A77EA +33: 174F1B65BF6A34A3 +34: 2712F966022A9589 +35: B6358876D6D56D16 +36: 2A92C131E68B77BE +37: 040C6935F4CFC43B +38: F23503C74121C660 +39: EDD120883F1F813D +40: AFC6500D34BD9D33 +41: 963117444417BDD3 +42: 2FC3A58861B4A58E +43: CFDB70ED8BCD1173 +44: 91B75760CF38B8D5 +45: 93A59048B78B3415 +46: 7E60C5E75225D45F +47: D4212C6422878FFA +48: DDD1B241E0E0EF6E +49: 20337DB931078078 + + +Cipher: des +Key Size: 8 bytes + 0: E1B246E5A7C74CBC + 1: 9262AFD8AD571E2E + 2: 36D2067D960EB870 + 3: 319834DC66705192 + 4: B4508A7C5F012C93 + 5: CAD1DECDDEE81342 + 6: AE9E1CBB71C719E6 + 7: D7FBB1CDAFD5B2C1 + 8: BE1A70564E3BFB5A + 9: 96D9EC1407A1BD34 +10: 05E4B9AF3A4DABB3 +11: 0DC77419E1F12C02 +12: F73E62369190A5E3 +13: 830C1CA7820ABA2D +14: D2574B6AEED0A4F4 +15: BC08782E293546A1 +16: A35DCC9AAD1EBFB3 +17: 79B2224667B33706 +18: F9462FFD2808233A +19: D6421CD0D9697DC5 +20: 57CB2173D67E7001 +21: DBE2DB0BDC07644F +22: 014E72E7E99C969F +23: 37901B1963D0B29B +24: 8E12C23929125686 +25: 73AA9E2A60C327A1 +26: 54A19D07D941EAC2 +27: ADB8CBBAEE1848D6 +28: 3997E866119856B5 +29: 4D647526FE7E1E27 +30: D574FE7342104F93 +31: B84383E34A790E11 +32: 322214BE9B93BB6F +33: D4C8E0B7AA139D68 +34: 2B9747CD280E48C8 +35: F92EB2E3711FEE2C +36: 5CEE84E124B7882B +37: 82427488597FF618 +38: B1E8B313D2DC76CF +39: 03E237CD40D7F214 +40: 8C8DC1299293E15D +41: D6C7463FE86D4EF8 +42: CF1550CACE647779 +43: B998B3D32B69F00B +44: 1B94C342C3D91107 +45: ABD4551B27F58BE8 +46: 2B24D978D1BFB3DA +47: 85361D36950635CB +48: 448009F38F1DBB4A +49: 6B901B2B79B6950C + + +Cipher: 3des +Key Size: 24 bytes + 0: 58ED248F77F6B19E + 1: DA5C39983FD34F30 + 2: 0BD322177B935920 + 3: 9D093F3174EDBAE3 + 4: 756B1F2CDF02B791 + 5: 57C31C2A913C1126 + 6: CF936257517C53FA + 7: 5F06305849E5E158 + 8: 9A85DFD788C59D19 + 9: 6392279BBE29DC1F +10: 76B0AF835D79C4E8 +11: 7073F36DB1E31464 +12: 276258605F2CAB3B +13: 3B69E97811FDA996 +14: 3E6E491D2862A1F3 +15: F8F3F68BDB006520 +16: FD376E66D401A097 +17: CA2FE47825804996 +18: 6F5C256F84FD14AF +19: D7B07F5C40FF0CDE +20: 73F2E074F1324496 +21: 0B2A35016F24BD21 +22: B040D2E3B311C193 +23: 3938DEA347112E2E +24: 9D7C1703CEC0BFAA +25: A07949F76BDFAF68 +26: 43087EEF52564C4C +27: 11132B599734AF0E +28: 62A04C819FDD9A8C +29: B74F0E5649D33690 +30: 8E77E5009B0AA322 +31: 5174134B9A1889B9 +32: 053E33441D11AE63 +33: 01EF381013F86E4C +34: BCA358DEF35DFD60 +35: 5908A88513E2E5A0 +36: A3214C8367E04B05 +37: B2CBBE851A54BE9C +38: B271817F63B3B76A +39: 08AFBF82ABB97D8A +40: 2CE02ED014186B86 +41: 63F3011C97F6E990 +42: C392351F432738D9 +43: 0534DDA50E685725 +44: 1509456871F5CC20 +45: 2383029935901342 +46: 8714F1A53CCB213A +47: 2491B2FD3CE6A7CB +48: 4BB02399D85BB66E +49: B8AC2CDFF7AC22C1 + + +Cipher: cast5 +Key Size: 5 bytes + 0: 9B32EF7653DAB4E6 + 1: 48AEB06B1BDB2397 + 2: B530927183622D58 + 3: 0ECC8F24BA742216 + 4: F6352F9B6461D82C + 5: AF6315AE98E12A71 + 6: C364D4B506EF28B9 + 7: 817061BEDF5E0A5D + 8: C19DE7B1F2066C04 + 9: A6E1345E3AA1B79D +10: 06B036B04785428F +11: 244DAB3F7223F567 +12: B9CF3791F6C79F4A +13: 86C5A02AF0517C5E +14: A16E3198F1317E04 +15: CF72A44C01E36DDD +16: 199C72ECD5E632ED +17: 0BC66BF05EB7887A +18: AE1F696F3D6B7952 +19: 685C92084F600885 +20: DBC1353A95AD2097 +21: F481E98CB36CAB3B +22: 8F1C06A482C70BB6 +23: EA087739954A9CE5 +24: 6D0AD727D8E4EF9D +25: 61CA0F7965FEE246 +26: 0D664CA16BA785DA +27: 2359D363755605B9 +28: 6B6E3A216ABFB55A +29: 6FBCCF7B0342D3C9 +30: 3431F4572E2CBE57 +31: 36D84FCE6D5D8FE4 +32: C234F6AD41E34E76 +33: 522F12E8D0617263 +34: AD8199B6E94D4E74 +35: 56DEC7C21C83B2AD +36: 22CDBFBC5B476E69 +37: 70BAD497381F378D +38: 4584F15DBC0EB7F3 +39: DE0603CEE19BCFCD +40: EA8D582C1CE62FC9 +41: 4299C28A912CE568 +42: 7208AB000E3FA9D4 +43: 7AAE6CB398D01665 +44: 33A6AA42B6D7949C +45: 2AEC5640AD535D69 +46: 74D37D9DD7B67248 +47: A5300FFF5CF85833 +48: 834F83398D591C38 +49: 85C787A8B7E519DB + +Key Size: 10 bytes + 0: 95827CB504BD43C7 + 1: 8FBF4EBCB8413ABF + 2: 5CFF411BECED9971 + 3: CEE2AEB4415E0A5D + 4: BB3A8DF7C54FA88F + 5: D508B933EF335111 + 6: 993745722EF0D8D3 + 7: 04EFB233AA88E796 + 8: 478A7DCEAF243F90 + 9: 269CC3D138ED48E7 +10: 88EBD14D2F999C89 +11: B7441626D4487A20 +12: 46A6E2CE6C66058E +13: 60687D2D5381757F +14: 885D05ABBF187B89 +15: 5032A7ECD3D51521 +16: 50BAF36BC5C14A8B +17: 8E805499569FBB0E +18: F8359B18AF3E69C5 +19: F24E415CB4D2AA95 +20: 361805D4E45B56B4 +21: 3172336F01E3530C +22: 333A551E0A03C4A3 +23: E2B991995A2D2962 +24: 067CEEDD8F213B67 +25: FEC3F306851F8616 +26: 4B80DAE6AB11894F +27: 250C26E21A8273A2 +28: 313F2A505915C909 +29: 42E0DC3D4816B38D +30: 9FAEEF0510DEE721 +31: 3BB5F5EF74B4CD7E +32: 0FBC9007F462BEAC +33: B9D1467B0D7A1043 +34: D9B991C9348DF321 +35: 061D577806C50742 +36: 48AEA67AAAB6FA23 +37: 22F7910383BDA87C +38: 9987087EDBA56FD8 +39: 2FCC8341B69BAA14 +40: 29DEDB6C2A433F50 +41: E067D2746B99A9CB +42: A5C9CB975A856D57 +43: AAFEFD3A82D6185B +44: BBE8952CC93CCCC8 +45: FC08CE0934EF2E25 +46: E44E642DBA7CF3F0 +47: CC26F0E8E85AB372 +48: D95D63B8389082E0 +49: BCA941C921B91E16 + +Key Size: 16 bytes + 0: 20B42D77A79EBAE5 + 1: 96CF6C91E5183CA2 + 2: BD87E77A38DDB4E2 + 3: E7454CA30B69DE2D + 4: 888F278D219384EE + 5: 972CB887CDE920F8 + 6: 49BEC1E7913F3CAE + 7: 96A81B37FEF63CA5 + 8: 408DD23A6DA940FC + 9: DA86E92BB735755F +10: 2032F2D972F228BD +11: 8F9EF7DEEF74EFEA +12: 547C92025DCAF9F4 +13: 80CD440DFF2EA62A +14: 7D6141D102E1B941 +15: 307596ABF5C9A6B2 +16: 82E3F1B17EBD52FE +17: 5917DDD11EDB55A3 +18: 2909F77166F24F9F +19: 88BDE9D686328942 +20: 8F987B737F6A011A +21: A74B3D1D6433B9F4 +22: DA8F95DE949482EC +23: 953BA9B26B9AC476 +24: 76A52FE193CBFAF9 +25: 4BB7D2597A78F2D8 +26: 5C8BE951251F4B1D +27: 6E8AB32A4A279D84 +28: BB94BC9937B42848 +29: FF0EE686F97BF8DB +30: 4146656AB1477E13 +31: 1BFCA7053E6DB8AC +32: 4B9A6A349BFA926E +33: 3B5F6FDD127B0A87 +34: 53C996E956598599 +35: 62C142E63C28B5EE +36: BBB71D6548F32693 +37: 107576AA26352455 +38: DE32E31FFE02B6F9 +39: 4C5DB81D1715FF5C +40: 8E5C706206F493A6 +41: 4BBC51E184A67C92 +42: AAE216B413DE2A06 +43: 77AE26F467233B06 +44: E8680D0E71F6AAD6 +45: 7061DCED4BC94F78 +46: 06772D63818C7E86 +47: EE5B9CFC06CBD639 +48: 5784B3EFCDC28DD4 +49: 4F962107A2EF843C + + +Cipher: noekeon +Key Size: 16 bytes + 0: 579A6CE8911652533200CA0A175D280E + 1: 63912A26125657DEA632A0AE4111D4EE + 2: 0F25F642860261CDC4474D6CFC6F3D90 + 3: 5747B5798279426E91FD69C6F471B608 + 4: 298B7486227A423729EEB0BFD653DCD1 + 5: 47FFD11C5F6B5638F846FE55F9BCF192 + 6: BF7F5610C79727BFF3A0E2318F35F92C + 7: 418713351CA5800DEFD0976872B6BD5F + 8: 46B0BFA8FFCF1B90294AD630CEF353F7 + 9: 933E10C381138CFA2419D56BFF3DBF24 +10: F47B4FD4B400E3A5CAE5C2E2732AF77D +11: 7BEAFF8299E5C530A9F0928195798D5D +12: A254293BCC71E208698AFAA1C5630C29 +13: 6374FEF1DFC16151F31E71BFE476DD2B +14: 578ADFFE69E5072E5AC617E99C2A890C +15: DB8EABA030B5B7425A279E397260D385 +16: B886B5150FABE45F81C111317AA8E1FA +17: 0156DE757EC43054CA2B8BD300B3A43A +18: FB423A1AD74955E5E937DEFEBC130A96 +19: 4358F88BCA4649A5C12A2E438F7A416F +20: B8A8B6A336B7A750EC5C8A635A1DE2C4 +21: 2397C77016C8D1FAA5913390EB66B9D1 +22: F458C608E1A35743726EDA8E94F236F6 +23: D91DCCAF1419704CF7C39DD486C48BB0 +24: 551C9932FF89212454061D77E9E58897 +25: 5FB1F24CA23AB487ACC825F900B43DEA +26: 76DFFAFB4A7F79B5748795BBB687BA11 +27: 70D34BC18EC3DA47F5E7AF716F5E767A +28: 4E8410F31F869487956CCA4922E4A787 +29: 68519971FD65F6076FBFDE99AE5F5878 +30: 8C1C64C7E1650F5A09822597A3E25E9B +31: 82EE58A56C050612BC9AD23AB83B2D5F +32: 741B22347DC979154DC4FF81ACCEB0A1 +33: 79D8A56ACA0EB5A0FD6ABB34DF4EC2AE +34: CAA1D93E89FFEC73689B642628297342 +35: 529BC07FB15CA79BBD93F63E14899898 +36: 7027D39A8CF02F8FB14D87940ED4EA15 +37: 4CF18E695D534EF04B8C15974FA31A53 +38: 113C632737E908F45DF5238904A88B95 +39: 723A9D4DFCEE39D6A2C1D90C1AFF9FE8 +40: BEA1D634560BF4F2DB05A40B79C13413 +41: D3B75F2568C0F57E13C8A19E4AC192B6 +42: 27CCAFC6BCDFB20344102D2021879828 +43: FE94A00B65DAF91DF1E99FA2784F930D +44: 24626085EC4C2F85968E4C60CD591E3F +45: 2612AE4CE03A5E1066AAAEDEF388E8CE +46: 4B8E6E59642E19874DF38BB66F65F0A5 +47: 47C145C37C2C048E73E7E85F28B2662C +48: 79D71CD15255964407198165F32C26F4 +49: 8F02BA60E7E3FC32223CDFD308D4C6FC + + +Cipher: skipjack +Key Size: 10 bytes + 0: F62E83484FE30190 + 1: 03B4DFE5423A117B + 2: 8CE4DAA2307CF018 + 3: 77D8C958DAE4336D + 4: 00D367D5C1FC95D8 + 5: C1F1305A5B01A474 + 6: C3956225C846F695 + 7: 2A8977DC186749A3 + 8: 433AC6B56AE5C200 + 9: 10489A7E87F803CE +10: F176DF022D02D136 +11: 1395AE1C0C00AA1B +12: 0C1C3FF32E93F789 +13: 901EAAD562EE92DF +14: 59D55D9EE3EA0154 +15: D9135CE0BBF68AC7 +16: 90A8E4A8E76349A3 +17: C04ED52AA69D1ED0 +18: 19E842698B5008A4 +19: 26FCA0FA3AA7718D +20: 62635FD1A542C7C0 +21: 5A3695398C979E40 +22: 34998BB72108D89F +23: F889CF892998D689 +24: 2C6A4D61F468F19C +25: EC70D59FC906349B +26: B95F11FD098B34A6 +27: 32F86206BB4E525B +28: E6BE51063B60CB9A +29: 8964E47BAC22F995 +30: B1C297883819747B +31: F2AE1F39F55FB6C2 +32: E633EA2DE342767E +33: AF1F0ECBCA788A28 +34: 6A898F4407696B27 +35: CD9CB5374EA080BD +36: 15881B0200AE6A42 +37: 579D05E5F5DE7840 +38: 86F8C683D23EB976 +39: FDAC7DC6C8F7777D +40: 10D6F7641409F027 +41: FCDAA0872D1EC61A +42: 7A353991A81344DC +43: 43661187956D3F8D +44: 5190FDFB904A78F0 +45: EF651E67F65CCD57 +46: 5E539C61748BDE3D +47: E11E23BA8BEBA42E +48: BAEF0956173B32AD +49: 0AAB29DF65861F4C + + diff --git a/notes/hash_tv.txt b/notes/hash_tv.txt new file mode 100644 index 0000000..a7f074f --- /dev/null +++ b/notes/hash_tv.txt @@ -0,0 +1,1605 @@ +Hash Test Vectors: + +These are the hashes of nn bytes '00 01 02 03 .. (nn-1)' + +Hash: tiger + 0: 3293AC630C13F0245F92BBB1766E16167A4E58492DDE73F3 + 1: 5D9ED00A030E638BDB753A6A24FB900E5A63B8E73E6C25B6 + 2: 65B0E1EA36CA17EDE2F055E67EAD67B1C282A11A5BA3A8E0 + 3: AB7FB8D21CE3D8D9BB5F1AF1F2FA0D3C277906160DB8D226 + 4: FE2E9D43F74B199D91B9291D73CCFCA0BEA5F068FBA244FF + 5: 3DF6D672FE9DAAB21523EB04705D8A8B72B78B00AD465D1C + 6: E05724353FE29957C3E8DEBAA21D0C2DD49CCA22191D5AD3 + 7: 4056DDBF82AE74AB56720DEAF079ACA2F076ED046D044DE5 + 8: 801FB9BE1A9AC7337A81345B3845E4E7C13AF1FBADB73723 + 9: 430156547A82492CA859385304748F65F2D4A7E2664AE2B1 + 10: FC435137CD652D720A11EDF47ABE4680BA4AD5BD810C9835 + 11: 20A8143DF47F5715FA0905FE6F9D1D2B5B2D4E26FA98930B + 12: E4A2063019FBC034DEB01E2A95296042319CBC039DA69A91 + 13: B5F0FA570C4CD69A3C68448BE42C865BDF77ED68B93875E7 + 14: 802BE6EA2CE86A0B371F2354944B19CB3231AF7FB4F00FF8 + 15: D7C08863B5E5E3D69B5404A116315A698E128EBAF8636B70 + 16: 5C5288CB0E4E533056BA5293440D9BE6F3C461233BF1ED51 + 17: 88D3A94F3820E4087DA69D8BBE2CF415466063709C450C4D + 18: C07B4B155F9F75805D9D087087FCDD28D08A9D022192447E + 19: EE473E569FF3E092CF8996B31CE665EA7D61520D42E27395 + 20: E13DAE8098139CFCEA755D2060F107E3C7581EDF9F4B3B85 + 21: B48A9C09F26B379AA28FBC750B50CEF69D0D0EE37FF765F7 + 22: 574A01456373014F4179CDA14541E2E3C5A1CDDA9F9D071C + 23: F2E2831E5BB4AF05914C4BA61BB8D600D1EF071C5DF02269 + 24: B7808A5B6258CBE718EDA938978C69D3FFC45A222E9DBF4C + 25: D8E4E076DDE78950D51EAC9F97D2D1916A0910465D45A55C + 26: 4EDECFAAE1DE98B7E056E64CA24003422BBE6F048129B24C + 27: 0DE283B5A4953EAAEC6F3FDE50D7875C8EE57FA79BDC70FC + 28: ECDD4BA1936DB9E6F83E2BD7F39D23927A1A17B2D52A8649 + 29: BE11893460E49659F7DF3FB3BD5E3E9A319F85FD3496E26C + 30: AEC0DA0F2CC0646325CC03319A0E080F68B46B33F81920D6 + 31: 8824FD39984F6A52FFFF19016E27C594921452086373F2EE + 32: 8B6592AFBB02E227AA451B5CFDC821B84245D34B96BF4F13 + 33: 960DF9C349EC6619FF37E3F0F4832E19CC6A4E4D68962651 + 34: F4E2B7AA72BC7D6E0CF6DA1094BEEFAA9C55610327C62900 + 35: 05FD1B80CA4C7C14FE5BF0ACBD0EA3DAE498DC391DCF2277 + 36: C5E95F953898C68355B591507BB714F0E5DAB9989D083900 + 37: B2D4E286CF7EA8AB6ECD650C9E48CA23497EADE55485DB1E + 38: 9D51657E11C54FFDF205DBB435097A2BC6F93C4BE8D6180B + 39: 3C6AE3911356A343AE3113735F07FCFB5E046ACD47B00FBB + 40: 664342CDECC825ED340A7FFE2E57107DD0B5F24C24B2C3F0 + 41: 4EF7FCA13CE684D81DE4F566D2897CEB407FBB3DDE81FD64 + 42: 54689FECED63F297B13CD494B85E686680F4F78DE7EC81D5 + 43: AF434BDBDC7EF90BE03E40A033F16E8A57B41840E1E8AB59 + 44: A32DB678F44905C18968F5D898CA7992EBE2E4CC3318B96C + 45: DEE9D519A12ACFB8A0935A368D6E6C75EEEEE6F2B0D5D191 + 46: CBC74863472D1C9D23C526F4908BD4D4234E00CBCC99A9E9 + 47: 6C228A1D4871E802E035C9BB16C5187354841FB6BE3C69B6 + 48: CAA755C55AA869E633CB3C6D93A561944AC7418154E2B0F0 + 49: A6835F7C0C6CA8F4A45787BAFA77478AE9ADDBEFBC3052D3 + 50: E406755957EC21BA6A64B5D3AAF31749CF98DF92F1B1FFE0 + 51: 0C2D4A44A803DBA99B7A467553C9293B46A538558BD77DD4 + 52: F04F011B09D275A185528CC040EB719649C8471A87B259B3 + 53: 3DA8B57FF52FCAE7C32636EC6C80708189CED8113C5CDE1E + 54: 6C6C88B8E18DF5CB22EDB61A2D3ED74741A708BC46576FB7 + 55: 2D48EE2BF85DE234754BECF3C6F5B0E62988B5BF24AEA5BB + 56: 0D17702DDCA078ED1CC51B95DF29EA1053CE97F69395C613 + 57: 9D8C2AD327DE43D5782D5F20881F4A8C433BA19AFC8C15AD + 58: 227BA419B760D9D10DBB09585EDD475AC2734FD4539F8275 + 59: 2F5220A828EF94E327BD51D4DF5C58609F8A93B9FE01FFF6 + 60: 0EED9F91E1A33A50B8E913DBA0B5E248D263E1FC72C6A449 + 61: 766B707E999FF3C51EE01168513BA0DCEFEAB222DD1F69F6 + 62: 85E6710694E7C36A2340DA6A371C0560450F3D44D35AD98C + 63: D401F9B13D39C24477C0AE6971C705C63C067F29508C29C9 + 64: 212DF89C57155270344ACCB19027B0B26B104FA0FBBE0FE4 + 65: 3BEDE767AA4A7507DBEFF83D1BC33F67EBA9C64945066227 + 66: 79FED1FB9F17C4980108E8605C10D9E176AC8FE4F6A65064 + 67: 48D9B7622AB7F8968ED926255F78E8CE461E4C9162FFE8B7 + 68: 6638C83837297B3F53B0F824C087D9A0B8D9FC6265683B8F + 69: 174421CF6D331FF51924F8946E8244555C9020D38E31B6DB + 70: 03E42AFB5FFF9B9C3794A3DBEC99FA7E3F7305EF07BD29EF + 71: CCAFC68D4B3ED889DC9F28CB9225808A40AA8E0D5CA343FF + 72: E824F93B4022011886EFC54539D4D5D51863ADA329FB4E22 + 73: 7CF0DC01B326687530F42040BA0D0CE93174455E8A990D14 + 74: 7A8E619479F4F5C418EC041806850E6723CA56AFBC3D32CC + 75: 083C5CA90F4B296C42040559C8296149D4EEBAB5EF2CB82D + 76: 3581B7AC32FA8A0986FD14F277FB106E112B92D18CD689BD + 77: 258E822D9CC1ECA8B55D925BA361BA2D9FC27AF181F138B4 + 78: A86C1E88A64515FA281A462D467458231494F16E835DF873 + 79: 76E7F06FE9B8B388DB012F8B4BE2FB343F95913EDDE47A27 + 80: 00278B4E5690E729EC7118B5BF63C9D1EB1268960893CA75 + 81: 8DE70E64A31BA1AF4F5C23CF774CCA32FE952D76C3FDD1B7 + 82: BBEA72C840749BABAF1415FEAC343411B89515B87848A09A + 83: C6C3CCAC1B338DF117A61ECF9A280E9BA709784C72B76771 + 84: AE9813EF4429EAE73EA9FDB5E23D263AF1BB87928CF5F048 + 85: 68647CD7BFFB8E530D28C86685A8D2F657EE4CD64EDD7E66 + 86: AA8C35B0E746AF56435F6C711AD0423966EA459087409713 + 87: AAD5C0D5E980B29BC88985C544717B81F58CDB923A3468E0 + 88: F60929D14781DE44EA607AAFC0D25FA1B6EF3C6AA0F8B3D7 + 89: C48087DC75EC43A54A593F24E1B359BB75C581A65C3170D0 + 90: 11D1372FBDFD9FF514611AB20D31BA62F18856C8D6AE3AD7 + 91: F2A8076B9017EDADEED41F409C9E32EB3BC090EAE89F855D + 92: 702FA47E5BD35E344B5B87C0082106337206CADD3D4D5014 + 93: B9E03FED752A560C3B0365EDF5BFC4DC7EAC5E4BBB93738D + 94: 3C84C52BF51077A5819F56E5A5C1C06209181579393220C7 + 95: F8ECCA28A525594E138B55C06617A063DF74FE3469D98381 + 96: 1081C3BAEEC0ADF4980C2EA6593B0906DCBEDE4805754774 + 97: B5152E39DE0BFE8982D783FC4F0CB7160EB2D69F6F3B3E5B + 98: 6A6B760BFB1965C72AC793F9C02FA21B0F1C34BD2640BB6B + 99: 1E6DCBFA8BA8D96C29101768A6A39433D5AD5A50E0970730 +100: 733222D3A033351FAFD68C5CE8A4D833BA7420D44103CB6B +101: E4CD7DA59B215F1DEAA8FBBA850F2C1A7F4C3D495FE6804A +102: 7BE78C790713545754D4C78A9318ACA4AA058C5C23540131 +103: B71C3809A504BE2F57AE9E25BDCC3921DC665C65289EA55A +104: 2B8CA39977535EB692EFBF0DECDA8971A8604F7FCBAE75DD +105: 3CC48B51E4C5DE4F0C2ABE0BE6EE4B63CC564A87C01943CD +106: 157ACDF7B59FC25966F9783207554364882840E7251ED6C1 +107: DEA1CFAECF18D3611CCD0517131A16DDBC97A12902DD8BAB +108: 2AD2E990BCF6481284DF44B961632687C2E64DFAE2AE16C2 +109: 838F3A3B28A50A12B5707490A66080DCFA0230E583B6EB14 +110: C8B20315121CDFB3A91BC0EDF11886F283CF6C480F498627 +111: 2B0FB04F100BE9AD51B7D64C76651BAB4B7D31D1D9195711 +112: B6495B6256FF464EC409A4098B622E8BDBB1003411854FD7 +113: 1741A789472E20E1CC89869A2477E4F2807C22182EA5B221 +114: 07ADC82CB3F27389A12B6B9C2B268BDDFD1D9478D9EDA0D7 +115: D9BD6760FB819A8A3CEE75303F8208FCA3E138B517DAB934 +116: 9FCF21A9236C2C12861FD20F1FB15A187CD7EE7821F72BE7 +117: 73D165769B34DA6F151464E61115D0E09A66F8D0FA049726 +118: 74580BFA88EEA03C0EAE722F81997E400D9CC25FA0311DFA +119: E3C6A369820E267C938D276A858928040C7C25A826501DC7 +120: C20AD90DB0B8BEE0335D069259991060969EEC9F939E4CA7 +121: F3746F4CD6A19CC137C5FCC8F60A4C0A7F56D97190B7A9C2 +122: 63A3B79EAF3DF35180960465059C0ADEE06D45179A56284F +123: 606AFD833D082628D58672403EE6DB348E6F68D8CD1947F8 +124: 7567EA8E10CBF312F8478B7C51D87B00B6CF3DE82B03DCE7 +125: DBCDC2B9B8589F6C7616B55B059B3B3E38D97A9E6DF1F29A +126: 15D9909F8D69689E7E78A0DB928194A59623E7253AA9D400 +127: DE39589DCC0C654867943801946B9888B347526279CA15BD +128: 34FA7C74EE67C1F92C0BE1CFD4B2F46A14FFB999604925F6 + +Hash: md2 + 0: 8350E5A3E24C153DF2275C9F80692773 + 1: EE8DBAE3BC62BDC94EA63F69C1BC26C9 + 2: 1EAA4F494D81BC570FED4440EF3AC1C3 + 3: 54CDB6D1BF893171E7814DB84DF63A3A + 4: F71A82F8083CD9ABA3D0D651E2577EDA + 5: 2F708334DBD1FE8F71CEE77E54B470F9 + 6: E014DF2DF43498495056E7A437476A34 + 7: 9C410644446400B0F2C1B4697C443E19 + 8: 0944DEC40367AC855117012204018C9F + 9: CE8A6E797AC79D82D2C6D151F740CB33 + 10: 06DB4C310570268754114F747E1F0946 + 11: 9F323D5FC6DA86307BEBC0371A733787 + 12: 3C1C7E741794D3D4022DE17FCE72B283 + 13: 035D71AA96F782A9EB8D431E431672EE + 14: 7ABE4067ED6CA42C79B542829434559C + 15: 5E8D0D6F6F8E07C226AE9DD32609035A + 16: 2B1632FF487D6C98AA3773B9D3FCD2AB + 17: D3D894482F7541BC0948B19842B479D9 + 18: CFE6B872AC98304524CC6A88B6C45881 + 19: 1573DD015C8629DE9664CA0721473888 + 20: ACFE2D3BB3CCAD8AEF6E37D0D8FBD634 + 21: F5F83499AA172BE8344F7F39BA708AAA + 22: 1D1C71FF6321B685D26F7FA620DA6C22 + 23: 4D7E74B6C8321775A34F7EFF38AAE5DF + 24: 351A988C86AC5A10D0AB8E9071795181 + 25: 970F511C12E9CCD526EFF8574CF1467F + 26: 0A68F53A476F7499EF79278A4EE8DAA3 + 27: D458CF9C8CD0ABA23BD9A8C5ABE495CE + 28: C8002E85C3AD9B8B4AFD23378165C54B + 29: 0B4788B157ED150A34D0E6E96BB4789C + 30: B14F4E31DE09281E07248A17939BE5B9 + 31: 803EEB99231526D6A33C8D4FCA537A6F + 32: 51FE5D6637D2F0F09E48CE2A7F5030EA + +Hash: md4 + 0: 31D6CFE0D16AE931B73C59D7E0C089C0 + 1: 47C61A0FA8738BA77308A8A600F88E4B + 2: 9E7A1DDE4D280E7F389018A5CCC3ABF2 + 3: E9A4DB2923FAF634CBB12CC1F8AC5C66 + 4: DF8FA069C6121801FFC539DADD33FCB9 + 5: 4B3511308F7E71BF6462CF18F1184C61 + 6: 075582A51F87682919E733C84C9FD998 + 7: 20DDA7535A464D13E1763BA61BDC12AC + 8: 66AE1E305BED186780BB60328D3CCBC5 + 9: 503E90BF2375627262E58D90177220F8 + 10: AEC6B48C10659E3D6E18A2CDE8F8D3A0 + 11: 45EFB3704B6684B0750E3DEDBB2BCDA9 + 12: 7C9443DBCD858138E32604E0D288F7B8 + 13: 95E5B93F4EA79C082BA1745D3026D70A + 14: C913D5DE0BBD1C2F2838E46363732D97 + 15: ABE357BDC413C82C8BBAA380C39CB5F9 + 16: 22F840370EBB1DDBEA4FA3A40243391E + 17: 0A289FEC69AF967988FA40C47960060B + 18: B63D3ADF13B509C95C088F909A0B356E + 19: 36E8E07E3202E6F4F7E885853C9735C7 + 20: 1D363AFD1208A7B8BD486D51AEBFAEB8 + 21: 75E36A5445AD72CF5BF47301EBED1FDF + 22: DA7979688F48A6606D86C762DF0D8850 + 23: 6ACB325CE624372873CC01A4AA053F8E + 24: 94F9BFD6503DBDC58C163E33504B7EDB + 25: 3702CB296784290FC46B82445BF7EB17 + 26: 903510251E7A00415EA21B6AC268A92D + 27: 6DF08DB9C33C86CFE8DAF5E5BB865ECE + 28: C29C5223D89A6589DE9253AF050D3449 + 29: 16B935ACC3EC6C016CA1BBF727C272B9 + 30: 644C01B157A24584B02A32119A424C01 + 31: 4A3C6C73634759420C419426F7D43E67 + 32: 7BD627A6B82FF3D797FFF130D8956391 + 33: 811A69D6A8AFE3C4FE5B4EFD73804F6E + 34: 721BE5F4BDDED885BFF842868F62F4ED + 35: 76956871B22D5BECAD3E9A459B4A448B + 36: 4F2CF372771A13B4C0C1A589F0EDCF87 + 37: 084AFBAE8D22DF83CC760A61138E560A + 38: E1CA123EBA05CC4899731A593833F372 + 39: 9D9E277FA61993C018C1C61AE09588BC + 40: 85E0D0316F0B76578948810039EDE2BA + 41: 27736345D0F2B0A1A9576D17C47D0202 + 42: DC9F788BE7C97BB5E0D2DD49B9F1D2DC + 43: 27F1A9A0D166C495493877DF06E9C104 + 44: D1ACA7951866F58773CD4AFA3D2F5C2E + 45: 5204BE3729BD7D318EA8127BED82D5CC + 46: 10258B7939D81F5F8E0EA70EE6500B08 + 47: 4E699952169098ED3084DC2EEE7BC488 + 48: DF6ED8D604512088FCEAFB21808BF7D0 + 49: 904D0667C94C9C981D59BE80DEEEE628 + 50: D83483A47B64D74F9DED5278EE462404 + 51: 490EC8799A9DE3BDE8708DAF68E6888E + 52: 443E4D2D5F800C22D818927A29A38490 + 53: 48E82AA772E111FCBE393177F3123963 + 54: B72685D042162D5F30472281278C42F7 + 55: CC8A7F2BD608E3EEECB7F121D13BEA55 + 56: B8E94B6408BBFA6EC9805BF21BC05CBD + 57: 6AEC85410412FF54078A9FC72A55ACE5 + 58: 3E69F792BE88478883E46E867F3C93EB + 59: 3B057FC41BA700F0E46740B8FF391F52 + 60: 3E3C6DF9500BFF8404486A3AEFC6F16D + 61: F5AD65BA970ACBBB8335F9C0B9D7139F + 62: 75D45F8E48406E32ABF94D07FF9B9C84 + 63: 54BA4472FCD03E99CF28F90EED9F2AE0 + 64: 2DE6578F0E7898FA17ACD84B79685D3A + 65: 3A4F2CA37EEBDF6DC99A6155517B74FC + 66: E19DC463C01E1B712B9415202A2B5505 + 67: 61D8AA0838DEAEEADE2F26156AF58761 + 68: BE294AFF81BFEA3159564B8B61844EFE + 69: BB943319320EE7B3A029D7BCD101F92F + 70: 36239791A7BE33AD46F668B51D724481 + 71: 21DCC9A32031428B7B02F68E1450A0F3 + 72: 95C1B0832575E21982B17CCCCAF54556 + 73: 24939E25985A3B5620B19D7889E5E153 + 74: 3029C8B005386705FE7E4CBAA060E987 + 75: E8BD97C5C1A0CC9AD1F1BEB3913B22FF + 76: 808EBCA0B0E6FD1B30E4BA499C05EF9B + 77: 55BD20AB87DE2E536DDE22286D0922D9 + 78: 2B2E45FA5628F29DA06462378D17DD12 + 79: B90F1709241EF59F78666AEBB3D5607C + 80: 37854275343F079BCE1639C84D74AE1C + 81: 444AB5A4F39B765C5D67BB433D4CF0B1 + 82: 7E30CFA6363F9AC96607783710E151B9 + 83: 9D9252DFFB2D5023CFE34873EA6C43AE + 84: 49A70634AFCED27DC2DF2EB079F7A1E6 + 85: 4C976C9EF13716CCB468D82BD8C56FE2 + 86: 4EB382D16DDC18C31E6DBAC6CA83247D + 87: B16112D0FF3C6A8ADB19C13DF742F5D1 + 88: F703DC6100AE23D194E01EAC433CF28B + 89: A6527B1B907218063BF196AA91C73F47 + 90: 61F1A1E947F3F542FCF85AC758BA5D14 + 91: 12ADDEDCE418E9444AE34A40353ED0EB + 92: D1C35142C475D44A52CEB0A8FAEA7AAB + 93: 1F89912C1FC59AAB53C983B035661269 + 94: 2E7E19A4A6635AB5958DDA70B415EB06 + 95: B700B6739C0AF162D246AF07284A1AE8 + 96: E2B95AC9F876A38D33CCBBD7FA92D67E + 97: AEB4849953750A10BB236BAC8D5AB487 + 98: 82D738AF18FD4B26FFF61377EE921E62 + 99: 0E1451640E59CE0461A46934F174E237 +100: AE06EA64074E8C07116563E8E0893BDC +101: 562DCEB678FBFAB24141E591FFD471B1 +102: 7DD6C3C2884E483E8CA572C471B2D812 +103: 2A4C8E4EC2672C1D54A8DA8F32F04783 +104: 2BFED22E8810A4658060B95B0ADB60BC +105: 214D8F2DD099BAB68EC17189BFF8A8EF +106: 98E4EB29797C8E631CD4317AF422FB05 +107: 241A0F826F359A21CA0E6D9154D1E291 +108: A3398C0118A3605E7A7794B8DF7CA152 +109: 5B0A6FC8721F14EB8A03E9A5D87F173B +110: D93ABEC3EBD5672350C3C36F8FB00E53 +111: 659905751D1F614A78ECBB56D4398D06 +112: 594691B38126E028352DA5B28ADFD416 +113: 7533FBD1FD58C85D54A712EF218A9D53 +114: 654796E7D2F9F2C2D166F23B5AB18812 +115: 5D25B604FB75727AE7EBFF980F54D96A +116: 426A7709CD61EB6ECF4034EC83E073EC +117: 62E21CA2F8E39C03BFF56C8265ACB60A +118: B7C9DAAA89A29F2805DEDE790DCB9575 +119: 9C1067170940CE8F8E4745D362675FAB +120: C5BB35660E3D0A286A96EA3AA4922B3C +121: 8F3B6351623A0E482B57525474DC703A +122: CCC34CC280340681CA5117477DD86AE8 +123: 2F5FB6B41301F87A0490035DE4C1BB99 +124: A16E28DB3F331091E928F9AE3F1ACEB6 +125: 7D2259C98085B9BF7F5E36B29DF8384A +126: BDDA1266FF3E8FFBA1DE1B2759B58BCC +127: 2067886DA4BDE10A94B971CD740B0AAB +128: E1275970EB67D2D996E6E658270AA149 + +Hash: md5 + 0: D41D8CD98F00B204E9800998ECF8427E + 1: 93B885ADFE0DA089CDF634904FD59F71 + 2: 441077CC9E57554DD476BDFB8B8B8102 + 3: B95F67F61EBB03619622D798F45FC2D3 + 4: 37B59AFD592725F9305E484A5D7F5168 + 5: D05374DC381D9B52806446A71C8E79B1 + 6: D15AE53931880FD7B724DD7888B4B4ED + 7: 9AA461E1ECA4086F9230AA49C90B0C61 + 8: 3677509751CCF61539174D2B9635A7BF + 9: A6E7D3B46FDFAF0BDE2A1F832A00D2DE + 10: C56BD5480F6E5413CB62A0AD9666613A + 11: 5B86FA8AD8F4357EA417214182177BE8 + 12: 50A73D7013E9803E3B20888F8FCAFB15 + 13: B20D4797E23EEA3EA5778970D2E226F3 + 14: AA541E601B7B9DDD0504D19866350D4E + 15: 58B7CE493AC99C66058538DACB1E3C94 + 16: 1AC1EF01E96CAF1BE0D329331A4FC2A8 + 17: 1BDD36B0A024C90DB383512607293692 + 18: 633AB81AEA5942052B794524E1A28477 + 19: 2D325313EB5DF436C078435FA0F5EFF1 + 20: 1549D1AAE20214E065AB4B76AAAC89A8 + 21: 7E437C81824D3982E70C88B5DA8EA94B + 22: 2F5F7E7216832AE19C353023618A35A8 + 23: 6535E52506C27EAA1033891FF4F3A74E + 24: 8BD9C8EFBBAC58748951CA5A45CFD386 + 25: D983C63BF41853056787FE1BB764DBFF + 26: B4F24C1219FB00D081C4020C56263451 + 27: B0AE6708C5E1BE10668F57D3916CF423 + 28: BA7BB5AD4DBA5BDE028703007969CB25 + 29: EA880E16EAC1B1488AFF8A25D11D6271 + 30: C7172F0903C4919EB232F18AB7A30C42 + 31: E9E77893BA926E732F483282F416FFAC + 32: B4FFCB23737CEC315A4A4D1AA2A620CE + 33: 5506A276A0A9ACC3093F9169C73CF8C5 + 34: E5A849897D9CC0B25B286C1F0BFB50E3 + 35: F54FA30EA7B26D3E11C54D3C8451BCF0 + 36: 07602FE0229E486957081A49E3F06F83 + 37: 7C4BBA98253CA834BF9ED43FD8B2F959 + 38: CF8DF427548BBFDB1E11143FDF008B85 + 39: 1431A6895A8F435755395F9BA83E76BF + 40: 30DD5E4CAE35BA892CC66D7736723980 + 41: 8EE247A1063931BEDAF4C2FA3E4E261A + 42: C32CEEE2D2245DF8589F94FCDA0C9F2C + 43: F25FA0E071D1F1CDC6632C6B673BCCD5 + 44: 370491B643E97577F4F74BD88576D1EC + 45: B292BF16E3AAFAF41F19C921068214F8 + 46: 52921AAE5CCC9B6E8E45853419D0C80F + 47: F1375BE31969155EF76F04741CD861D7 + 48: 04605CA542B2D82B9886A4B4B9ACFB1C + 49: FA887BA0FA491FAAACBB82BC5FEFCD5B + 50: 06470E932AD7C7CEDF548B5CCB9D4806 + 51: AD130B245E2DD894267CB0DDC532D169 + 52: A9EEB95053682248608E97D79E89CA82 + 53: CC26A3DC608268B98ECD1F3946C4B718 + 54: 33DD62A2DF6538DAF1CF821D9CDE61F9 + 55: 6912EE65FFF2D9F9CE2508CDDF8BCDA0 + 56: 51FDD1ACDA72405DFDFA03FCB85896D7 + 57: 5320EF4C17EF34A0CF2DB763338D25EB + 58: 9F4F41B5CDE885F94CFC0E06E78F929D + 59: E39965BC00ECACD90FD875F77EFF499A + 60: 63ED72093AE09E2C8553EE069E63D702 + 61: 0D08FC14AC5BAA37792377355DBAD0AE + 62: F3CDFFE2E160A061754A06DAFCFD688B + 63: 48A6295221902E8E0938F773A7185E72 + 64: B2D3F56BC197FD985D5965079B5E7148 + 65: 8BD7053801C768420FAF816FADBA971C + 66: E58B3261A467F02BA51B215C013DF4C3 + 67: 73062234B55754C3383480D5EF70DCE5 + 68: F752EBD79A813EF27C35BED69E2EE69F + 69: 10907846EB89EF5DC5D4935A09DAD0E7 + 70: 5F1F5F64B84400FB9AD6D8ECD9C142A0 + 71: 3157D7BB98A202B50CF0C437AA216C39 + 72: 70E7ADE70281B0AFCB1D4ED13EFC2E25 + 73: 0BB96A503B1626C9AB16C1291C663E75 + 74: 5BED4126B3C973F685FCF92A738D4DAB + 75: 7523C240F2A44E86DD22504CA49F098D + 76: 6710949ED8AE17C44FB77496BEDCB2AB + 77: 4A4C43373B9E40035E6E40CBA227CE0B + 78: 91977CBCC32CDEAEC7A0FA24BB948D6A + 79: A6A0F1373CF3DBEE116DF2738D6F544D + 80: 761F6D007F6E5C64C8D161A5CED4E0AA + 81: D44EA4D5A7074B88883A82F2B4CFBE67 + 82: 3097EDA5666E2B2723E8949FCFF2F244 + 83: AB247A3D9BC600F594D5A6C50B80583F + 84: B229430E3DB2DFDD13AA1DA1BAC14D5C + 85: BEFEF62987C6DCDF24FEBD0BB7CD3678 + 86: BFC3E5C7C461500FF085A66548378E0E + 87: A5712194537C75F0DD5A5AB3E9EBAF03 + 88: 8DAAC097E9044B85B75999D6C3BCCD24 + 89: B8124DF21129685597C53A3F606FFD28 + 90: 8FBC4D795C22D958248582A8DF7332ED + 91: 36D217135DB136B2BDF1617D7E9C79CE + 92: 1B3E6271A3A4B663C509A1255027CA99 + 93: A25F596574031FF9C34314C1B1F6BF34 + 94: ACA7017E5BB62BFDD5BBFDED78C8987A + 95: 8129E53A694ADD0560B1534B32FE5912 + 96: DA0E48224106C7535A4CD8DB2AC7B8E3 + 97: CBD4ACE3D766D8E44F63E0DE8F110F04 + 98: BDC17A0EF2777512CB402C90E9D13E31 + 99: 47695AD6AF968D6F1CDD2D8C5C87A466 +100: 7ACEDD1A84A4CFCB6E7A16003242945E +101: 225489D3D073AC705F7B3AD358EABAB2 +102: 301DA87A7B2EC27514C3A2789D5DBE49 +103: 16222C503718F1420958133C330FE3F8 +104: D778CE7F642AA23355948477DA4CC11C +105: E873C37F8977E200A594B815E1A87EF3 +106: E8F8F41528D4F855D8FDF4055BBABE2F +107: CACF3D3D1E7D21C97D265F64D9864B75 +108: 6BF48F161EFF9F7005BD6667F30A5C27 +109: 42E7BB8E780B3B26616ECBCACE81FA1A +110: 225AFD8EC21F86F66211ADF54AFC2E86 +111: 4FAD3AB7D8546851EC1BB63EA7E6F5A8 +112: D1FEC2AC3715E791CA5F489F300381B3 +113: F62807C995735B44699BB8179100CE87 +114: 54050B090344E3284F390806FF716371 +115: 50482241280543B88F7AF3FC13D65C65 +116: 4C36F27D4786FE2FB8CAAC690B6D62F7 +117: 5A0EDF0B97977EE5AFB3D185B64FB610 +118: 4541055C6675B614D27C537C3BB15675 +119: 1C772251899A7FF007400B888D6B2042 +120: B7BA1EFC6022E9ED272F00B8831E26E6 +121: B0B2D719A838DB877B6D6571A39A1CDC +122: 800AA956EC16F603ECDBA66C2DC6E4CF +123: 8827D2778287C58A242ACD4C549BEB31 +124: CFBC5AA0B61103C1A982D8927B26F575 +125: A1F5B691F74F566A2BE1765731084F8A +126: 80749BE03F5724FA4CA0AEF8909379B7 +127: 8402B21E7BC7906493BAE0DAC017F1F9 +128: 37EFF01866BA3F538421B30B7CBEFCAC + +Hash: sha1 + 0: DA39A3EE5E6B4B0D3255BFEF95601890AFD80709 + 1: 5BA93C9DB0CFF93F52B521D7420E43F6EDA2784F + 2: 3F29546453678B855931C174A97D6C0894B8F546 + 3: 0C7A623FD2BBC05B06423BE359E4021D36E721AD + 4: A02A05B025B928C039CF1AE7E8EE04E7C190C0DB + 5: 1CF251472D59F8FADEB3AB258E90999D8491BE19 + 6: 868460D98D09D8BBB93D7B6CDD15CC7FBEC676B9 + 7: 6DC86F11B8CDBE879BF8BA3832499C2F93C729BA + 8: 67423EBFA8454F19AC6F4686D6C0DC731A3DDD6B + 9: 63BF60C7105A07A2B125BBF89E61ABDABC6978C2 + 10: 494179714A6CD627239DFEDEDF2DE9EF994CAF03 + 11: 2C7E7C384F7829694282B1E3A6216DEF8082D055 + 12: CFF9611CB9AA422A16D9BEEE3A75319CE5395912 + 13: E51F9799C4A21BBA255CF473BAF95A89E1B86180 + 14: F741644BA6E1BCF5FEE6D3C1B6177B78468ECE99 + 15: FB1D9241F67827CE6DD7AC55F1E3C4E4F50CAA03 + 16: 56178B86A57FAC22899A9964185C2CC96E7DA589 + 17: 0A0315EC7B1E22A79FC862EDF79BDA2FC01669E3 + 18: 32AF8A619C2566222BB0BA0689DABCC480C381D5 + 19: D35B5AFBC48A696897C084E6E71AAE67C7CD9417 + 20: 602C63D2F3D13CA3206CDF204CDE24E7D8F4266C + 21: A3C6FBE5C13E8B41FADC204C0CF26F3F214189F4 + 22: 25E480E9E0CA2B610105CD1424B8A35F63FB3981 + 23: 45412D51D3CA7BCF452D1612720EE88F9D2427C3 + 24: ED6A95036E3E046931597A457DB7A78B7309C4C0 + 25: B4FE0256D346700783420E08A4A6F7992B1E36C9 + 26: 33E1799E98280E5A9ACE5509477A2048607C5537 + 27: CF193837F6DE43F8E38000ACFCF764FA8D8FDE22 + 28: 7C8DE247DDA83599AF2EC2EE2D29E20583DAC34B + 29: F38A076F70613FC251C4D21E6435AD08341A8A99 + 30: DCD68E6174BD74BA180DA047A7345E8D111F85FD + 31: 43BBACB5F62A0482CBDB564171B04365CA6E27C0 + 32: AE5BD8EFEA5322C4D9986D06680A781392F9A642 + 33: EB90BCE364635C4C23B49F493F0043579BC85C17 + 34: 2942C7AFA65444C43D0592D0DC73CA71DB729205 + 35: ABF726F5FDA729FB7F3F0484D7C94B3107AA02AE + 36: 75DB4F6BCC05A781DDA9D17C46717286DD53654B + 37: A82CB42D89DAF5FBC1D4A48476229C495782F98D + 38: FC1A69683744AF823CD69E8A1E3F460591714028 + 39: DC68DB44B48521B0700A864896A00E17777AEA83 + 40: CC9AD99E917042381B0F99588896CBF236AA8ED3 + 41: EC7A68484A749C7065C6B746F9C465DCB414F370 + 42: C627C449DEFF14AE7ED807293D30846F061DA5B8 + 43: 4782F2A19B6DBB0882D656DE86C3D21A7317F768 + 44: 02D4EED99E7307BEA39AF5330BF7FB388D48B496 + 45: B3D99B9D90A69E50FD4365704F5AB2EAB7BC9763 + 46: 9B1C07176BB227F73E8A4E173071D39302061DE2 + 47: D79097DDAC552A6E02A52CE7AAF494D2D73B2557 + 48: DF7F23B160E75B9BAE5EA1E62B43A5A34A260127 + 49: F598F3780D8C374D97957B9B62D56106E9E0B2D2 + 50: 0BD98598F9AB29C1359EF5460A206DD1370515E3 + 51: E6C320834F69D81689E1ECD5ABC808D49D9C4E07 + 52: FD5EE7588CD129E12B886974621FD29FACC78E19 + 53: 2A9C28EF61EB536D3BBDA64AD95A132554BE3D6B + 54: CFAE6D86A767B9C700B5081A54265FB2FE0F6FD9 + 55: 8AE2D46729CFE68FF927AF5EEC9C7D1B66D65AC2 + 56: 636E2EC698DAC903498E648BD2F3AF641D3C88CB + 57: 7CB1330F35244B57437539253304EA78A6B7C443 + 58: 2E780486F64BC91FBFA2785EC1CA5C9E3CC07939 + 59: 4A7713D44E97D9F09AE1D786199C58AE2BFAF3EB + 60: C98714B16F92C8A770E9FC229DF834D1688E282F + 61: AACE3DD6F54A2A255ABA920F5FFC8CF04B85A69A + 62: CF8563896A3B0A0775985D8289444C4BBC478DA7 + 63: 6D942DA0C4392B123528F2905C713A3CE28364BD + 64: C6138D514FFA2135BFCE0ED0B8FAC65669917EC7 + 65: 69BD728AD6E13CD76FF19751FDE427B00E395746 + 66: CE705B7C60D46E7E36FE073DB8822698579CA410 + 67: C717EBBF6A2BF1BB33DA6257352D5085BEE218B3 + 68: 86151D140AAFC9A4B5877D3FBB49014FE5906E57 + 69: 7446B5A6BBCC58BC9662451A0A747D7D031F9A7D + 70: C24887924F92ADAC5AE367995D12691C662B7362 + 71: 5AF83CFD42D61967778889CA911CFB6C14339BA7 + 72: 587D4F6E6B4E21343423E434679009CBD3D24DCF + 73: AC65DD946C5CC432D4D624CAEB53C7363F96B7AF + 74: FA71E70750674C0F6B4AA19D0BE717B2936C83FD + 75: C9EFE6DD0A019315F73F3962DE38B6C848A1705B + 76: D1D05649B952C8F6EB016BE08FE1544AAC5D5925 + 77: CC3081AC1D695BAE51CFD5B44B9FB3A230733CC3 + 78: EB9DE332558953792687D9A7F598B5D84BF0A46B + 79: 39DE5EFDC92E3D3678F24D2CF545BA4D172D003D + 80: 399DBC9F721E44A992A0DEF42D999B32AF449ADC + 81: 996A2817C8ACBC667E1C4C27B8F4E9952736DD7A + 82: 3EF8189CE1BCC0D65AA182B1A81534635EDFDF2B + 83: D676714C6A6FF4E17A60C0511C25AA8B164FA606 + 84: 4DB6E3381E1B9290267C1539E1053793C8B81FA1 + 85: 3A34D35B0296FE4D83EDA39B742A9D8F4B13A958 + 86: 54F3B45304EF1287F54B877FCCE3285E154F9D6C + 87: B1EA96216E025377AB5AA845238FC8BC65DD60E1 + 88: BC6C7488145485DEDE1AE1D43B594F0046BCDA0F + 89: 3D9A0619ECF88C84CE86213E9AA91D9A252CBC32 + 90: 92CCAA0B4CE89E2BD80A61B9BAFD5AC58AB7B588 + 91: 3EB326B5BF4440FB3A88E3DCB05C1DB5EA01AC5C + 92: 989C63E819B13D4CADFB33F8DEAFBC57C1992A12 + 93: AE944552C20CF16F07A5C357713832C9D72D0C6B + 94: 46723E982569A1E2D9EDCED5498FC1F46F7D63FC + 95: 3BC5DAE7907C83A0693F87FD8372EFDD1DF53E09 + 96: 96D281BA44EB21ECFB1663C8AC5752C48686A927 + 97: FA0EF18178880A72B51C26555C10F5210DAB4390 + 98: 0C7ECAC32B8ED6D9835D381BF069568722A276E1 + 99: 649E44ECBA85C0938EC09229CEE4BB69388EC642 +100: 1E6634BFAEBC0348298105923D0F26E47AA33FF5 +101: AF2AF2734BB2BAA288940CB62109F4849DAA347F +102: 22D14BC045CC9A3794C99BEEE7ABE278BF24D6D8 +103: C3164CCBED75B82ED3F59F4A47FE09B256025549 +104: C27B5BC7CD24DE4913614A769A442E9CC9FB0E08 +105: F44D48D98CAC77522FF6B9E1B9CBB8489E58E588 +106: EA19A71FFBEC9572F6CD65523ACAF865EC05AB52 +107: CDA0EB9D310247BD1E8B3EA10D9B9DEFF6FBABA9 +108: 449DFCE971B9D65D69FBC72940E9A885E8DDE9CE +109: 96EEBB6B95A9DA99C58190CBD77CD6FBCF638A79 +110: 670F7A869E90CE86E0A18232A9D4B1F97C1C77D0 +111: BC544E24573D592290FDAFF8ECF3F7F2B00CD483 +112: E4CE142D09A84A8645338DD6535CBFAAF800D320 +113: 1C26461E26EB697CCC36A98714EE70CAAA87A84E +114: 51C5B1C25A71FF00394A84AB48B5733C8955551E +115: 84803504181C0AE33A511C49AF5015A5B1892BFD +116: 7CC8BCA120C2635ABFEA82DD203112B5C7E165DA +117: 44E2519A529D7261F1BEBEDC8ED95E1182CAE0DC +118: 2A81372DA39C1DF4251539A9922717B7CF5F0334 +119: 41C89D06001BAB4AB78736B44EFE7CE18CE6AE08 +120: D3DBD653BD8597B7475321B60A36891278E6A04A +121: 3723F8AB857804F89F80970E9FC88CF8F890ADC2 +122: D031C9FB7AF0A461241E539E10DB62ED28F7033B +123: E0B550438E794B65D89B9EE5C8F836AE737DECF0 +124: FB3998281C31D1A8EEA2EA737AFFD0B4D6AB6AC2 +125: 7A914D8B86A534581AA71EC61912BA3F5B478698 +126: A271F71547442DEA7B2EDF65CD5FBD5C751710AA +127: 89D7312A903F65CD2B3E34A975E55DBEA9033353 +128: E6434BC401F98603D7EDA504790C98C67385D535 + +Hash: sha224 + 0: D14A028C2A3A2BC9476102BB288234C415A2B01F828EA62AC5B3E42F + 1: FFF9292B4201617BDC4D3053FCE02734166A683D7D858A7F5F59B073 + 2: 00AC60F30E9BD1956F914C8E5125B69DCC31A179734E6A85B3F702BA + 3: E615202185AABE2ACA924BEC29E5A12384F8339EAE4E64C9CBA9F1DA + 4: D70DA0705EAE42A5C596D92F331DDA2421B4E14F8B3035FB73B8B700 + 5: 98029CB458A39A16355963922D32DACD9439F90E9FD106D42A0D123C + 6: 7D92E7F1CAD1818ED1D13AB41F04EBABFE1FEF6BB4CBEEBAC34C29BC + 7: DDD5BABB1B05D8BCCD644ADC393A9E2303C850DA31922C4DA07574F9 + 8: 4C07070802E21052FB0295AC0571CAEDF219143ADAE0627E2850EDAA + 9: 5D3CA3BFE738D33F841069ADF6DD79B987351CE580ACA23326B3A7E7 + 10: 6B5373C535A4FA5D56D6C4953575CE64968031BB019B909F8F2DB904 + 11: 767D0CDC11079BA8DCA276DF5C4B85507DE67DCE47EDA4CD9196D312 + 12: 02C513977B6242D2FAAC094CAE3C247C6E2745F8A71494A60535A2EA + 13: 1F39482310E2209C10A88C7FD7FC1FD567F36789808C37D30045A82B + 14: 55BA81EBA644183AB2460C234BB95ABDA898E980BA976584E2977231 + 15: 2522E2B35A835436C80A122E4676DE64690C81440D42DBDA40EF2151 + 16: 529D656A8BC413FEF58DA82E1BF0308DCFE0429DCD80687E69C94633 + 17: A153F81C68D9FFFD4DE0AB9111C2FA86E8EDCA9B294376083077A135 + 18: 1EC706AEB2227B263A105EDBE2562E0521C96420DA4558012327661B + 19: 4904ADADF19D088911EE0EFD20A9AB511F2786C8FD43F1E5E8BE2AC6 + 20: 6CE245C296289A32F661986FF1C80E893BBD35EB0B182EDC14AB3A7D + 21: 33831C459A43CBF8BEB6DD50039750F1EA3688A7EAEF68CB2F095E16 + 22: EB4BC2EA1F7146E8274A96E874585C401256FB921FFC7E935DDC7FFF + 23: 09A266C98019B6B2A4318FBEDBEA5481AF01F0AD2AD16F09991A3C3A + 24: 7AF2814CD6105473EE530F2B3DAE992ABB6C801428F33430501F09A6 + 25: C5BD6127243049C4D5E9E3B391E12BDA86DC7A9856910A757004486F + 26: FCA06DDE2DCD212E6C1C11BB22B18B4F5582202655DFB9B6C9960C57 + 27: 0851998120F8CE47482DA5B2EB21BADF73C9F145921EEFD33459D49F + 28: ED36A2092538C5D4769917953E7355A13072DDAD8A6E5E2AF1DE96F6 + 29: 2C4A89C05BFD09B7068BAFDA37B0314EFCE02AFAE1B2C25DCE337326 + 30: 1D552A4D06BB8A0827BFE8DA2B6EE56ADBD17CE4810908D572076F6E + 31: 997D180912E0655445B07259278AAAD424633F5FF6BD0AFECD4F15DA + 32: 71446EA93381BA091F94AFCDC5B938323290A1A027C22A75E88A04D0 + 33: F77087D6F4AE34E88C62597CEC06220F4C694D2E0EB704820035AE6A + 34: 64EE78B0A6C116380A4C16F24489C1E94A578E558453537A9819A2E6 + 35: F39C1C862FDC9AB4ACFA50FE283CB7595C608F8C521BB7898CF71D34 + 36: DB482A26C9488A963359D145914612E34B821CC6CDC11113B73BDE2F + 37: C7C45F3AA5EEDE664D6CCD510F628D4DC3C67F93973FE05B0163CA13 + 38: 7F230E3E597845DB9F8D61B44740968FF55F2DF28CA538A68927F130 + 39: EA52362A9C66B6A5FF3B642FCFEBBF54F793B088D29E6840D7A5CF56 + 40: 84B064EF9C13F1ED54AD0B8FC0CC28F9BCE5009500E1CD92CA2BAE04 + 41: A2702281BD63CA745553CB18693DD70AC9A70CD73C01783727707C97 + 42: 89231FCFFC7022DF20B1846285FAACE44AFCC677685DA55EE02D94EA + 43: 4C5B01C50907D097DDBF0923B885A26B58DFF5761C1AEDFB8D5353F5 + 44: 84E0CF33A7E1C0EAA46F37E99CE5C8B292E81AD61318796D1A9A90C3 + 45: 27E59A0B6E7B9125D4CAA658810AE5054CE40A9A0A0FFE6E36435EBC + 46: C7F21E2B4C89B2A6E64D92F93FC4146EB5886503C1231EE6924B4E13 + 47: 653CAFF50E077A855992990F0C5F89C75FA18D1CC147F685AF2EA993 + 48: 6A7BDEA7E456D5339B7D9C244E246AD65B18BA95E0518E201AAA7889 + 49: 837ADE7F298F8159E6E2408751B0C480648CB6FD6D26C551983F3176 + 50: BEEF3F6AC40A9DED345BE41242BB2CF924B457A45CACC68379B1DC4A + 51: 6D2908EB3B6C8952346E0B65B9406D949B5A340123DB83B151DF5F81 + 52: 9E75A1D6B4A4D1A9F5AA6F8A48AFD6F3FD360D2D8723B53DBB63208E + 53: 436E3BFE94A39359CDF47D35395D34C0435018C88B4E96E68C22645A + 54: C209DF2E99E03D679FBA9E14AAF958AC1B0A22076BB3B532A0D7F092 + 55: 8991DFBA74284E04DC7581C7C3E4068FF6CB7A63733361429834BB56 + 56: 2B2CD637C16AD7290BB067AD7D8FD04E204FA43A84366AFC7130F4EF + 57: E87F5BC938C3B981C197D4B163C635A5049FAC81C4C6467E1251BE48 + 58: FD9BDAF5CC288A603D1623651D5BA3B8801D1602B0B9221C0B48435D + 59: 87F207D9D870EDD7DA61753473A51FC386E2792A3861F949BEA05CFE + 60: C9EFF79F4412CE49296C082DC777118F92C9AC4136D4EB32621E942C + 61: DDBC76D25D9819693F3597D6F09044F8D6CCBD12F081156F1090AF7D + 62: 6411AD13AA3654302BAC8E2BFD1CE76F37E3B3394014BBE260062CFC + 63: 049E8DD7EAB3378CE9F823BFB569E5B270235D4B7F9623606971998F + 64: C37B88A3522DBF7AC30D1C68EA397AC11D4773571AED01DDAB73531E + 65: 114B5FD665736A96585C5D5837D35250AED73C725252CBF7F8B121F6 + 66: 7D9B844CAAC9EC93AE2159ED3D336C55396216DAC6AC5DC5DECC11C9 + 67: E1C799109DEEA117F68DD1826B38B514E1D265F11A8B60B24630FF8E + 68: 029A0D024B6C0B63E1586F3D34111727E37D49CA12E7F520FA91A926 + 69: 2EA94F04A72C770A98E2A495D886EE674B7D0FB987B7B5C2217A8773 + 70: FAF445688FFCA34ED783F948B8F74578503D4845836CAF69DBD5EB51 + 71: 91EC59AC7C98F9DFB869E11C80027F8A4D311324597E6FC6135224D3 + 72: 190DFC9C7BDD954E415E543F99B00B5110ED6A12182BFFDCAA77D8B9 + 73: 8C3AA805FA75625476F3267C211B1DDA52E1810B058EF804E34BEE58 + 74: BFD0E517E4A340A4E0EF1AC306EE2C6DD1288C77531EF0FD5ACB73FA + 75: C621A18D7E09976296CBC39761B020E7E346042FC735FDF106148F3F + 76: 27EE5F7E3FE49EAEC0AE0A93FD971EDF0304A4C0513BCF43424C95A2 + 77: BD9D42F293DA572219F08D4A38081D203E44F612EEDEF93CE0DAF6D4 + 78: 374CFB6FB12768717EFED2681718C11B22588C429DB9C71AFB5EB562 + 79: 1CFB1037FC3943559E9F913183DB71392CD4BC68CDFD47D7DEC9C9AD + 80: 2537E015D5945E0541BC48320AE4DFF7FEAB911227AE0D579DA1CD05 + 81: 012B34E1A530B6889E87863A59645EE4FFEB292A33815D2CE11918EA + 82: 5242DD4DFEE389E668D8FF78DA9B2D85AAE12D0C220E8D1BADBBA845 + 83: 4813D70E1D6BB6232CD9257B5132FDBA05E1A4A858E237C303CFA052 + 84: 0530BBA43AE6393655F21F7EEA67F8E8E819BA225AED78CA8BDE075F + 85: 4F7EAF4A9D0000B0E957DFE46DB304EBB2664A32AF4142EC74BE18D8 + 86: 68CF23B9DC4DC3430835B484648CBF126940AF6BAE51431A66D7F0E6 + 87: A093D2119C7076259F194F107077061C61C792DC5326C3A4D3A63BA6 + 88: F4E883F7FD12ACD36E3891986E4D7FF03F3E150F09CD4FB58A023A04 + 89: 0816862C59CE35E0D78834A221D3BABE21987FDAA81F20ED61D9DA84 + 90: F415933677BB364C589722E30B958F2BEF8670A10F1F5082F79FDB4F + 91: E40C5632490BB8DAD2283B6DBDCA870F4B5AB4271C61127DE999BDF0 + 92: B2D4E6CD7AFC35A475620EA1446B9024D767890B8593AB50275F370D + 93: 948616FD7828F09E8A57F986589948085D18EC3550E0ADA8E0127665 + 94: 2B115E930333A355A82F074EF261DE6BB2942D9DD64F98BA12D92DDE + 95: 6EEAB864B5AD618CDB1AE79C7B1DE31020966A02350AEF71088E6876 + 96: 676AD81F213E037F3C9BA2310F49DDDA4D6476C28A8EFC0046D3F55C + 97: 03A28C9068BC10A6FD87A1E53F00415F8CE994C968DD9CFF60D6B0A2 + 98: 01D91D084F400C591EDD750B66EC2482C834CE0E140A37E6E142CFEC + 99: BCAD899E7C771764CB91FF60AD79BFD629F4803A05FCBCC24E8F3E79 +100: 6E08215B5470DDEB67E44A494E52E259A9C2C4FBED4AF5DC6DB3E92A +101: E5C45BED6F8BFC487FF7190B108AF5C5B66F6D55D365B5A1BA156914 +102: 0DB55D83B38D42D229CA42D001B09758B5F3F032109F2F999C553655 +103: AD4DF1AF973A2747568A1B8DEF15E34A350A93F45BA84596580D11F0 +104: D4905849C8C4EA32159A431B52BAAC092F90037093E200A0C46611F9 +105: A936D0AA091B827BAD86644C94603068AB34A5B59E29D1E3BAB13039 +106: 46D214E9FA8C877C2791CC8E6716868713CB5B677CC4D838242C9B18 +107: AE8D3EB227AA3558101D5E5A2BF6C862C9F7297A31A3DF24E4502257 +108: 4462C366B10326D4FEF46E71930BCF93713F7D45FAC9963520FF5FE8 +109: 05EFC35781E413ECBCC763AE13D5A37C159CE5CCEE6EAA1CFF7CA516 +110: CDDBA09D7FE081E7A39C4017B3EDF7A9138D1CB857559BA9AD2C939E +111: 1AEEF583C448A9AE00FBC931B50BC0DA5BB8323E616B11076CEE8B44 +112: 01E5ABF50619B5C2078E754EDDEDCF4DE8D31185A2219313CB91A8C9 +113: B7FF114CA77757CAD67801E6761AF20F4CBB8328AEF290F77EB612C3 +114: 08F43DF4547732424AC7D0390AD8AB3D4978826462446D13B2B468D6 +115: AC3799ED09E3BD9E770FD3A0073E371FE9A3D4E3D464C3A7023CC72D +116: 795F160C275FF6B575031D4053BA1D1C32744D09F005B3BF10BDD1F7 +117: D2EFD4AC8ABA33151D0399E2893769A6D8BBFBA7B128388BFA65B841 +118: F85910F64FEE2B8F91DEC8064F75CB97E1FFC895AEE912DD3945F839 +119: 762F18C0DF65C3D0EA64126C8A6E51DB4425E76D4D969ED0F83899BE +120: D022DEB78772A77E8B91D68F90CA1F636E8FE047AE219434CED18EEF +121: A802D8B618A503352CDBCC1FBEF04EA36499EA72D0E32D314CAF83E5 +122: 6DE1088DD95C9535849294A8635A44084BA36E4EEF81C6D67B98CE90 +123: 6AA11591302A30EFACF874F40AA017F8545D3D9EA68D479965AC0B3E +124: 3288A475A4817D2E42830C709C1DC18A4BBD59DBD903B43CA702F275 +125: CCEEE7F6EFA60B2F2CE1090FB929D6068F7EE301E7A84072FD163F7E +126: A45B0FCFAC3F05279B7E8278AED93E37B225E6A997664F92C7555447 +127: 554C9C3F7E92B80F4121E00CC147535D377EAEB4FB1FA8E25C7F81C1 +128: 67D88DA33FD632D8742424791DFACE672FF59D597FE38B3F2A998386 + +Hash: sha256 + 0: E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855 + 1: 6E340B9CFFB37A989CA544E6BB780A2C78901D3FB33738768511A30617AFA01D + 2: B413F47D13EE2FE6C845B2EE141AF81DE858DF4EC549A58B7970BB96645BC8D2 + 3: AE4B3280E56E2FAF83F414A6E3DABE9D5FBE18976544C05FED121ACCB85B53FC + 4: 054EDEC1D0211F624FED0CBCA9D4F9400B0E491C43742AF2C5B0ABEBF0C990D8 + 5: 08BB5E5D6EAAC1049EDE0893D30ED022B1A4D9B5B48DB414871F51C9CB35283D + 6: 17E88DB187AFD62C16E5DEBF3E6527CD006BC012BC90B51A810CD80C2D511F43 + 7: 57355AC3303C148F11AEF7CB179456B9232CDE33A818DFDA2C2FCB9325749A6B + 8: 8A851FF82EE7048AD09EC3847F1DDF44944104D2CBD17EF4E3DB22C6785A0D45 + 9: F8348E0B1DF00833CBBBD08F07ABDECC10C0EFB78829D7828C62A7F36D0CC549 + 10: 1F825AA2F0020EF7CF91DFA30DA4668D791C5D4824FC8E41354B89EC05795AB3 + 11: 78A6273103D17C39A0B6126E226CEC70E33337F4BC6A38067401B54A33E78EAD + 12: FFF3A9BCDD37363D703C1C4F9512533686157868F0D4F16A0F02D0F1DA24F9A2 + 13: 86EBA947D50C2C01570FE1BB5CA552958DABBDBB59B0657F0F26E21FF011E5C7 + 14: AB107F1BD632D3C3F5C724A99D024F7FAA033F33C07696384B604BFE78AC352D + 15: 7071FC3188FDE7E7E500D4768F1784BEDE1A22E991648DCAB9DC3219ACFF1D4C + 16: BE45CB2605BF36BEBDE684841A28F0FD43C69850A3DCE5FEDBA69928EE3A8991 + 17: 3E5718FEA51A8F3F5BACA61C77AFAB473C1810F8B9DB330273B4011CE92C787E + 18: 7A096CC12702BCFA647EE070D4F3BA4C2D1D715B484B55B825D0EDBA6545803B + 19: 5F9A753613D87B8A17302373C4AEE56FAA310D3B24B6AE1862D673AA22E1790F + 20: E7AEBF577F60412F0312D442C70A1FA6148C090BF5BAB404CAEC29482AE779E8 + 21: 75AEE9DCC9FBE7DDC9394F5BC5D38D9F5AD361F0520F7CEAB59616E38F5950B5 + 22: 22CB4DF00CDDD6067AD5CFA2BBA9857F21A06843E1A6E39AD1A68CB9A45AB8B7 + 23: F6A954A68555187D88CD9A026940D15AB2A7E24C7517D21CEEB028E93C96F318 + 24: 1D64ADD2A6388367C9BC2D1F1B384B069A6EF382CDAAA89771DD103E28613A25 + 25: B729CE724D9A48D3884DBFCBEE1D3793D922B29FA9D639E7290AF4978263772B + 26: B858DA80D8A57DC546905FD147612EBDDD3C9188620405D058F9EE5AB1E6BC52 + 27: D78750726155A89C9131D0ECF2704B973B8710865BF9E831845DE4F2DCBC19DA + 28: DC27F8E8EE2D08A2BCCBB2DBD6C8E07FFBA194101FC3458C34DED55F72C0971A + 29: D09BEA65DFF48928A14B79741DE3274B646F55AC898B71A66FA3EAE2D9FACD77 + 30: F2192584B67DA35DFC26F743E5F53BB0376046F899DC6DABD5E7B541AE86C32F + 31: 4F23C2CA8C5C962E50CD31E221BFB6D0ADCA19111DCA8E0C62598FF146DD19C4 + 32: 630DCD2966C4336691125448BBB25B4FF412A49C732DB2C8ABC1B8581BD710DD + 33: 5D8FCFEFA9AEEB711FB8ED1E4B7D5C8A9BAFA46E8E76E68AA18ADCE5A10DF6AB + 34: 14CDBF171499F86BD18B262243D669067EFBDBB5431A48289CF02F2B5448B3D4 + 35: F12DD12340CB84E4D0D9958D62BE7C59BB8F7243A7420FD043177AC542A26AAA + 36: 5D7E2D9B1DCBC85E7C890036A2CF2F9FE7B66554F2DF08CEC6AA9C0A25C99C21 + 37: F4D285F47A1E4959A445EA6528E5DF3EFAB041FA15AAD94DB1E2600B3F395518 + 38: A2FD0E15D72C9D18F383E40016F9DDC706673C54252084285AAA47A812552577 + 39: 4ABA23AEA5E2A91B7807CF3026CDD10A1C38533CE55332683D4CCB88456E0703 + 40: 5FAA4EEC3611556812C2D74B437C8C49ADD3F910F10063D801441F7D75CD5E3B + 41: 753629A6117F5A25D338DFF10F4DD3D07E63EECC2EAF8EABE773F6399706FE67 + 42: 40A1ED73B46030C8D7E88682078C5AB1AE5A2E524E066E8C8743C484DE0E21E5 + 43: C033843682818C475E187D260D5E2EDF0469862DFA3BB0C116F6816A29EDBF60 + 44: 17619EC4250EF65F083E2314EF30AF796B6F1198D0FDDFBB0F272930BF9BB991 + 45: A8E960C769A9508D098451E3D74DD5A2AC6C861EB0341AE94E9FC273597278C9 + 46: 8EBFEB2E3A159E9F39AD7CC040E6678DADE70D4F59A67D529FA76AF301AB2946 + 47: EF8A7781A95C32FA02EBF511EDA3DC6E273BE59CB0F9E20A4F84D54F41427791 + 48: 4DBDC2B2B62CB00749785BC84202236DBC3777D74660611B8E58812F0CFDE6C3 + 49: 7509FE148E2C426ED16C990F22FE8116905C82C561756E723F63223ACE0E147E + 50: A622E13829E488422EE72A5FC92CB11D25C3D0F185A1384B8138DF5074C983BF + 51: 3309847CEE454B4F99DCFE8FDC5511A7BA168CE0B6E5684EF73F9030D009B8B5 + 52: C4C6540A15FC140A784056FE6D9E13566FB614ECB2D9AC0331E264C386442ACD + 53: 90962CC12AE9CDAE32D7C33C4B93194B11FAC835942EE41B98770C6141C66795 + 54: 675F28ACC0B90A72D1C3A570FE83AC565555DB358CF01826DC8EEFB2BF7CA0F3 + 55: 463EB28E72F82E0A96C0A4CC53690C571281131F672AA229E0D45AE59B598B59 + 56: DA2AE4D6B36748F2A318F23E7AB1DFDF45ACDC9D049BD80E59DE82A60895F562 + 57: 2FE741AF801CC238602AC0EC6A7B0C3A8A87C7FC7D7F02A3FE03D1C12EAC4D8F + 58: E03B18640C635B338A92B82CCE4FF072F9F1ABA9AC5261EE1340F592F35C0499 + 59: BD2DE8F5DD15C73F68DFD26A614080C2E323B2B51B1B5ED9D7933E535D223BDA + 60: 0DDDE28E40838EF6F9853E887F597D6ADB5F40EB35D5763C52E1E64D8BA3BFFF + 61: 4B5C2783C91CECCB7C839213BCBB6A902D7FE8C2EC866877A51F433EA17F3E85 + 62: C89DA82CBCD76DDF220E4E9091019B9866FFDA72BEE30DE1EFFE6C99701A2221 + 63: 29AF2686FD53374A36B0846694CC342177E428D1647515F078784D69CDB9E488 + 64: FDEAB9ACF3710362BD2658CDC9A29E8F9C757FCF9811603A8C447CD1D9151108 + 65: 4BFD2C8B6F1EEC7A2AFEB48B934EE4B2694182027E6D0FC075074F2FABB31781 + 66: B6DFD259F6E0D07DEB658A88148F8253F9BBBB74DDD6DB3EDBE159A56BC35073 + 67: 8FA5913B62847D42BB4B464E00A72C612D2AB0DF2AF0B9A96AF8D323FA509077 + 68: 7DED979C0153EBB9EF28A15A314D0B27B41C4F8EED700B54974B48EB3ECAF91C + 69: 1CF3AA651DCF35DBFE296E770AD7EBC4E00BCCCD0224DB296183DC952D0008C9 + 70: 5767D69A906D4860DB9079EB7E90AB4A543E5CB032FCE846554AEF6CEB600E1D + 71: 8189E3D54767D51E8D1942659A9E2905F9EC3AE72860C16A66E75B8CC9BD2087 + 72: 107DE2BC788E11029F7851F8E1B0B5AFB4E34379C709FC840689EBD3D1F51B5B + 73: 169F6F093A9BE82FEBE1A6A4471425697EC25D5040B472C5B1822AEEA2625988 + 74: 2087EBD358AE3EA2A092FC19C2DFEE57C5F0860296BC7B057C14E1227C5CB9D1 + 75: 182AB56F7739E43CEE0B9BA1E92C4B2A81B088705516A5243910159744F21BE9 + 76: 081F6C68899A48A1BE455A55416104921D2FE4BDAE696F4B72F9D9626A47915E + 77: 5CE02376CC256861B78F87E34783814BA1AEC6D09AB500D579ED8EE95C8AFCC8 + 78: B93E407404E3E95F20FD647365E0E7F46AFABE9AF1FF083AF996135E00D54009 + 79: E81FA832B37BE8ED8F79DA29987AA4D61310DCB14B2859DEDF8FB1DAA2541FD3 + 80: C56705FEA5B110B8DC63688533CED21167E628017387C885423B835A55EDD5EF + 81: C2226285D08A245A17058ED2D24AD095B714F608AE364FDDF119E0A7DF890540 + 82: F9C270DA8793221A6809AC685FDD4F5387E0FE1EE6AAF01C74F1E0A719621614 + 83: E69BEFD6EF7F685C36E343AC1702D87AD6A0E4AC8C0D5C521D04AAD4EF0B7458 + 84: 4E3033562AD74A7D43EB5FF5FC2382622C6307CB10E245AD62DA77C4C63CB178 + 85: 2EA17629472564A59E5EB845A2CDD04F442DF2FF26BCC866E400F77158D612A1 + 86: B90223DF74DD49A8A1461F340F2D7A90F96903CCBB5BC3C74EA3658FC8948B20 + 87: E0209F42B927EC9C0F6D6A76007ED540E9BDD6E427B3368A1EA6C5E7565972DD + 88: 10D9BD424114319C0999ADF6288F74060CD8918EF1228827A6269B2BF0F0880C + 89: 7D1978A65AC94DBBCDC62E3D81850299FE157DD9B7BD9E01B170156210D2815A + 90: E052DFF9E1C94AAA49556F86FAD55029A4875839FDA57F5005F4C4403876B256 + 91: 58D29459B2130A2E151252D408B95E6DAC424C564062EB911CC76440CB926CA0 + 92: 4E4530C392316F598E1BD07F32166380A8F712A33A48E9EB4247131EC5DC05D3 + 93: A09C9D3E42342C7DEA44EDB4AEB48CF6727CACD8032A12CF77A25829FC249D32 + 94: EB978D0F1AC03CE5C3510B5F4A16073A7A2BDC15C4AB7777DCF01030CC316667 + 95: 7D1905A3ACE827EA1AC51C4FA08C281ED3BE87E7F4E928D696BFDE35C8F2DC0F + 96: 08359B108FA567F5DCF319FA3434DA6ABBC1D595F426372666447F09CC5A87DC + 97: A7B3830FFAB0F2BBABBEF6DF0B169A7917008BF238880BBF8C20B8E000077312 + 98: B4F5D9B1555994C5EBAEBD82918D560A3BF82962A171A1614E7551939E943366 + 99: 014ECAEA1B378900F1212898C6DDB01565D81AF1D0EF78DF5E28D46E9CAF7CFC +100: BCE0AFF19CF5AA6A7469A30D61D04E4376E4BBF6381052EE9E7F33925C954D52 +101: 4565D7B898CCEA3139AD260F9273115F806B30079D7683218C4E3ECD43AF3B33 +102: DDADEB660FE8902C9FB2DB9B6CF237C9CE5B31753398085C4367EB5910B9CC13 +103: C15A8928131F6687DD10F3C115DDF8D7C8F2DF7E18D12C08C4FD16F666CE60BA +104: AE8E3D799B1353A39815F90ECEEBEFA265CC448FE39FAF2008CB20784CB2DF9F +105: 98545371A3D9981ABE5AB4A32A1D7B2FADD9801D89DA52A94A4F78A42740D21C +106: 6323DCE2F8B3A04DCEA8D205602348C40403CB200C677EB1A1C0FE37EDB6EB2F +107: 8150F7C5DA910D709FF02DDF85DD293C6A2672633DE8CDA30F2E0AA58B14B0C4 +108: 44D21DB70716BD7644CB0D819FA6791805EBC526EA32996A60E41DC753FCFAFC +109: B9B7C375CCA45DB19466EBD0FE7C9E147948CC42C1C90F0579728CFB2651956D +110: A47A551B01E55AAAA015531A4FA26A666F1EBD4BA4573898DE712B8B5E0CA7E9 +111: 60780E9451BDC43CF4530FFC95CBB0C4EB24DAE2C39F55F334D679E076C08065 +112: 09373F127D34E61DBBAA8BC4499C87074F2DDB10E1B465F506D7D70A15011979 +113: 13AAA9B5FB739CDB0E2AF99D9AC0A409390ADC4D1CB9B41F1EF94F8552060E92 +114: 5B0A32F1219524F5D72B00BA1A1B1C09A05FF10C83BB7A86042E42988F2AFC06 +115: 32796A0A246EA67EB785EDA2E045192B9D6E40B9FE2047B21EF0CEE929039651 +116: DA9AB8930992A9F65ECCEC4C310882CAB428A708E6C899181046A8C73AF00855 +117: 9C94557382C966753C8CAB0957EAEDBE1D737B5FCB35C56C220DDD36F8A2D351 +118: D32AB00929CB935B79D44E74C5A745DB460FF794DEA3B79BE40C1CC5CF5388EF +119: DA18797ED7C3A777F0847F429724A2D8CD5138E6ED2895C3FA1A6D39D18F7EC6 +120: F52B23DB1FBB6DED89EF42A23CE0C8922C45F25C50B568A93BF1C075420BBB7C +121: 335A461692B30BBA1D647CC71604E88E676C90E4C22455D0B8C83F4BD7C8AC9B +122: 3D08C4D7BDDA7EC922B0741DF357DE46E7BD102F9AB7A5C67624AB58DA6D9D75 +123: CC63BE92E3A900CD067DA89473B61B40579B54EF54F8305C2FFCC893743792E9 +124: 865447FC4FAE01471F2FC973BFB448DE00217521EF02E3214D5177EA89C3EF31 +125: 3DAA582F9563601E290F3CD6D304BFF7E25A9EE42A34FFBAC5CF2BF40134E0D4 +126: 5DDA7CB7C2282A55676F8AD5C448092F4A9EBD65338B07ED224FCD7B6C73F5EF +127: 92CA0FA6651EE2F97B884B7246A562FA71250FEDEFE5EBF270D31C546BFEA976 +128: 471FB943AA23C511F6F72F8D1652D9C880CFA392AD80503120547703E56A2BE5 + +Hash: sha384 + 0: 38B060A751AC96384CD9327EB1B1E36A21FDB71114BE07434C0CC7BF63F6E1DA274EDEBFE76F65FBD51AD2F14898B95B + 1: BEC021B4F368E3069134E012C2B4307083D3A9BDD206E24E5F0D86E13D6636655933EC2B413465966817A9C208A11717 + 2: 5D13BB39A64C4EE16E0E8D2E1C13EC4731FF1AC69652C072D0CDC355EB9E0EC41B08AEF3DD6FE0541E9FA9E3DCC80F7B + 3: 4F895854C1A4FC5AA2E0456EAF8D0ECAA70C196BD901153861D76B8FA3CD95CEEA29EAB6A279F8B08437703CE0B4B91A + 4: 80AE432E757826025095CA1FA4F89C06C8BA6754B1D883A8E31A1E65FCFB820BD74ACFACA3D939A574EA408A74162D1D + 5: 561C16404A1B592406301780C0C2DF6AA0555F504F35BFBEAC810AE36A343B776858C5E0DE56BB79607A34D2F67108F2 + 6: 79F4738706FCE9650AC60266675C3CD07298B09923850D525604D040E6E448ADC7DC22780D7E1B95BFEAA86A678E4552 + 7: E6CE1896C9783A70AC4C90276CC37B37687D7E30C753975762F961AE37118D9A610242716E8359EFC4975AA98C632DCF + 8: CFB18F81F4BB672B03214F1FEDE456F882A0DE40120212A1FEBA8FDC48F763C86ACBBFB684D34B70F99F4D8D81FE3A28 + 9: D075AE1178210804635AC02C656309311527FC8190835C8AD8196577C3332AF4D87F056023F235DB893C69AA87B0CFB9 + 10: 182E95266ADFF49059E706C61483478FE0688150C8D08B95FAB5CFDE961F12D903AAF44104AF4CE72BA6A4BF20302B2E + 11: 89BFCF569AE4AF718510DA78C67414109F5739BB5C40D51C9C8C50E2B2CEE86F2F80C8B9D68F7C01201A0714572FE602 + 12: B635441A3721CF190B39D23703C5B77018FF1A56C94F8252EE95C217E3477F093E8EC65C6AE767179A7872C8DB9B2141 + 13: 48DEBF56626CC86DFA47AD6FDEC73FD182434621DA8BC6DB23AFF067BC36DC8244D3071B1F57DE4B716F63D9820DFB23 + 14: 58475B7CF93FECCB2C02B588F1552A359E7EE9AC45D9AE50B2D7C22021466677D70EF24EFA5C492515164458E9A24744 + 15: 0AA75534F0F58756A01E3366F78E7611BC7F432364C649C3F50547F7BCA3E5489531B8AB129495FEAC834FF0A0B45DB6 + 16: C81DF98D9E6DE9B858A1E6EBA0F1A3A399D98C441E67E1062601806485BB89125EFD54CC78DF5FBCEABC93CD7C7BA13B + 17: FDD3C4C0F87EEC0CADD73028A06B01E67696C7E04960936B30C73F004CF6B595D644533F8B473C8E63B02D593A64B041 + 18: 445E4CCA1A03480D149F38014C14D28DF8288F2C6CFF047F45D4F2580AE85EFFB3BE009C9D2ACC54B51467F83A09FBE2 + 19: 8305DC56172245B82AEDCE7F9C7DC88C0E62CBF835A2AA133EB579F415FFD15BABBC30BB98E55DFDA0F9E80275C92BC4 + 20: 8A48240E1C85E80651EDDC88599273444839A952CACA2BEF4400576E65B1EB6C19C47A3067B63AF7CDC4238ADB9A8DAD + 21: 8F2F7669C27A7CB1CF7A84A2C4F050D7141852D8B429291956B85E2DB5287741A3104E7E99CA5D23A5EEA59A68A4DDB1 + 22: 32CF04AE2A4A326FDE2FBB887F47FB7A2C486E56088D85B45F0C7587591F44797FE0A67E36F571809695E05F254884B2 + 23: 713A04A3A6BA8D2FD821F1CDF9FACAF42795E4247C9A26F0ADC5E0E6AACBAFFD8F4E02563733C6BDF1A863A787949B35 + 24: 35D8A5AA0DC9AB4C9A4C62B36E0E1013977C198B05CF6B92CEA25C08309DAFD282AA9A4862958593C06BA46919EA8019 + 25: D3FB60C2E981A5C82F1B1BCB3D4D7AF62C9A32A9F0D87E0532C9D3AAC083D70133EFF63A1E2CCB87360BF032C25FE9E1 + 26: B119F9AC74E58BD081E24C0CC1E090012C192996EED67A8ECA33794FE7E1920E26C0EFAEB866EB5AB82FCA3188A3B05A + 27: 5B29543AB0F76F246B7FDE6E8E5D3DF6017A39342BB08351A4EF609AE00A91ACB7C5D0487B3760B34CEF326F63C84572 + 28: F8E1FAA657BF829C9D2E4811805238CCCD11F0C1AB7619058241BA5606E7BD5E4816163E6E8E82E62A43CB4943A41006 + 29: 0855B919786B5E5C87B85A6C17A46C550B2BA81B3724389088E2B54BA89D82B8F9841FF442DA5DB8D54C9B2AC108DC3C + 30: 7DEF8CAB7C80CEF90FB38989ABEF6F1A5EC18379681E484A1B4DB6624818D2E486FB9C245C1F0DDD85A846D4268344B1 + 31: 04AAA180C2CD24F0FB150B1AA360F445344150DCA13E1ABB8117D42E25DF7FE29246D9F00C7473D20CEC32A71E64E1F5 + 32: E7112491FAEEFD57786DA73F367B25A6F5769F5C98FA7B704D8D37747724A647371989E8B0FE8D3CB23F9EEDD528456B + 33: EA27126D0B96E00E428943EA94F4B03FD22D56C4FF4636EED139D027E6D45EF57AB86093A7342B3B3851FD3BFD1DDA23 + 34: B2BD337A4BDD48D25A5E3FCE3E0948EC67829B835A8E3DD0D9F4881D10C766369B079028C6060B7263603288D8FA4BBA + 35: A9E940504AE6B137BB1BC88CE3A9AE53DCB63AFDFE5FA0C652003A921F582C08662425C7FBD5B1E1422E39E645D4A757 + 36: F033150D7464D49A076C7D4BB9E2A5488132786CB4851A4C81DA5B0FCE66D775D3C1766094AD6CA9482DD9539F28ED9A + 37: E64D999E7258ABBB4CFF6F74AF7D6A1E9B044C17E1ACE0FC61B29E7732763755A9C1D3A380B080AD968D2228DB731DE7 + 38: 9030D47B57ABEA93B51162556FF352DA61FDF501132A9FD94E6CB56690E7A805CDB290FB4ADE36BF90A53F20922C9B6E + 39: 4473396BB0461EDB4712880810A3F7252725AD4FD6092021A40559F453A1C63ACFFA8A02C85CC8DB86560323DA0A0FD9 + 40: 095FDD130278B3C8F574D17283611E4D6199EA63A0F1599E01ED070CD0B115296FE353477582BF279D622355C89A23E4 + 41: 7EE600CEE8437531C6A5BEC313D53371F9B56425D5662C104624D83D51111E5C9F4B83000B8A3EF150E04AEDCF67C237 + 42: 676D2BD2500BC527DCB51968FE8742E40D2965047478E69155AAB9201E0C9B0F6BA9BE85C4734B0DD556B5FA7608BE83 + 43: 09F5FE433D1FB8F62A76E5654B54CB6A9EF505D2465A49DCB9669EAC9A30B2532505E4500F842EC9FBE79A382C8C2F4D + 44: 075821CA8C547E66AD94F4C4ADF866A2A7554E08D2B0F0B3576801773EDC85DF76107E6912904E9757EBA753A77CD0FF + 45: 2172C22E7E48BD0B4A73FF02803D6FCE776CECBD95DFC43CA0763A0B375D57030000B12E59F9CDE81DE58E17489B2C41 + 46: B9A15689BA4F41BE46855775B46A5DB9D6826E0CBDBC3B292DA6D57B2A179A3D393A8E1B55DE79438E5221580C604EAD + 47: EBFA57C946831E2E370A6B1BE46E27C95C512297499B8BD15722622178E00599DEEADD48F1B4B08EB649A137805CB786 + 48: 25866C8288F9FA319FA9AA2470B4FC2595DFFA9154E607444EA3247E81D74A2AE0957D6B7E050F8C96AA7577BEDCABB5 + 49: 3D28682B90022C873CEC78C3A47FD45B5124E49ED07E2F0FB41A112A63AACC9E7614ADBB007D129C0673B08C51210839 + 50: F76D9B7ED868085905AE806CFC5C6DE994999E379922AC003D53F00B65467AACEF3929392F1F2F56C621D2F552544A22 + 51: 324951FA2432B63D1765C21F98325BC4AE2FFB25F411047C53ED5A3D550B50E2B8F6E79BBE65F2C686A5132E5B982AC7 + 52: 320CB033AD533AF8EDB3E664E34BB85B2327AFCFC583CE9202C0B11F16425A58FD895D7435E8953F9506A25DE7BE6EF3 + 53: 6065D55530ED8339B09D7A4D9CB1919004F69ED9D6B119E78E1C39C7AD2AAC029A3F266F7E48350966B845C4D7D92A72 + 54: EB6E866BDC0B5089301D89B870B75056ABA6D5FA6C7406A8D6D97CE5175102479647D3F93325A2CB648A3F40CCE38542 + 55: DCEDB6B590EDB4EFA849C801E6B6490657A5C1E64F69269F5F63C9267F6223DE24CEA7AAA6B267D9BCECC15147B6C875 + 56: 7B9132D597B8873AD55BBC30F18ED3F2C9F340E7DE69FB5774056C71A06D9BC2B14137E9E1C68B6B645FED28B188249D + 57: 0901B1E5B13FCE000486BDA64FBE45C79FCE15F38A4DDD9335A521D98829D267ABCCD84284BEF1EA3C2D4E4687C6D3B8 + 58: 4A9375DBAA878E2C1C7BFB977989E6D39CC00F890ADC425F7084AE3761BAEFCB9384C8B9EB3ADD4C3C838A6D560DF788 + 59: 908682C3E0D97A4943063EA9DD0A0F55EFCA203ACA3004010D3D7EF94593592729B523EAAE4160C3EA2241EBA236FD65 + 60: 24586F75A43A08D6CF116B87B86CC43300FC4132523CC4824B7FBB3F54A5B41C7D598B40639B25A99732D575A5CFD355 + 61: 7B4CFB73E247E941570E70C7308ACC5166F123187F003B1CAA9BCD17DDA8ED5535ACAE443C9ADE93C5567090EACE29AA + 62: E97EF4578822DDC79AF60514A188F8C719E4133B58E5EB134261AA7E89C402EA7219129A06B395E5E1D2738AC23FC876 + 63: DD66B519F51A925814407A449C60B34C553D7652D41783EE903A810A4C9F833B8181C91C7F12283EACD6A5F8A2639DDF + 64: 9F2C9EB7116B3D7A4BA84A74A4D4EFF8A5EFCF54B6D7B662693C38577914C73A214766F0A175339BB0895A863824FC0A + 65: 14B0A9FFCE149426BF5045FFC24C057451D2473186DEB4F150117B855911A7641651FB1E15DF406EB373D71151C46F25 + 66: 286505FF7A9EF81224988A8FF1E423A2AD21F6B339E91B89F7F1540F14CC9A603952564539167465CA70FF0B523BECF9 + 67: 8CAB08A79BA16F3D7CBEB942C7D8676F8D0295B5FAA01F3C850DC4B5FE913AF00F2E938BE0B442187B135BEF1A36C34C + 68: 4D12FFBCE2E770ECA1104BD2F29C65FE95534E390A138C30CB0ECB6436A971116D82C6321D2EA2C0A735AF34E5E3E3B2 + 69: F8617A35FE9116A719441F82F21C79B8868E5FFFC2EA737FDC821246DB7610E9868D870575F19B29F2FD259D9242A497 + 70: 932FC435B590B1E1D49C34EB3B627DAD5476216518250B1FBFE772476437872B8DA6CAF6D2F33CE7AF8648D956CF717F + 71: 3F63DF48C2D87CEB2168BEFBF6B857A415D8BFB7062251E8E1AB0487483EEBDE5E8E8B8B0E3AD81ED4AB15E81FD5E448 + 72: 4A71E4E737DE74F78E72ECB9DDB580EA5AC96E5BBD5E52E11D4A41AB3B8303E3AF3458A8AD89B39CD9F4A6D5DB3C9E2A + 73: CAC3A81A98103BBF08C440F6C8F61AC010DF8AC05FDA77E2ED8660AB73A978B9428BA0458A5C64DFCE35D87F0DAA2A6F + 74: 6E5D162C60A451B6257781FA0E36B3BDD9BC42A7BCFEAEB75C18E541A4DE00967E6BF575CB32374C1E9FE7B36D92048B + 75: 04DDFD71893D0F4AD2A0B672A057ED2795D6811AEAFDB7136BC8C20A55DABB3AE4B62B8A2C722C1F53E18FFA5771610F + 76: 555D5B51C2EA17659516A67D31CE2CB302979F80BD7056908C1A152403FD902EAEBABDD066AB3F7834E7213A6CE99EEB + 77: 44797CE4FEC66B26B52A4249C2B267AF891C912E55221EDB6CAFC4E2F022A40E8231931DF0B19321D5CCB2AB8A4F256A + 78: 51D7AC85289FE7E4D9431414B2BF3760BE65FEDD1A0B34BED0E1562A73495EE10971B5141835DB454C865039154BEA15 + 79: 2E31DAE50A484B7E11E2E621D0552803791E07279752E09EDF4C884EF24C79C33D9572AE0DE6E0B6A20271F1F7AB98FF + 80: DDC65ED22CAE4D159D35E129A1602D8FA50D7AA53E209B0D5442BB121DB0D5D102441054B2B321675F3722669FECD06E + 81: 200E0BC495311E2FE524A1579490D843011A592E4E9B927DEB0727E5481898C557CB2941F18AF0F2725A1B19DE045BA5 + 82: 561E1875B31DEAEC4DB2FF5BFA7856A6F0ABE1294CDCCA1DA12CCB1786D9556881A768ABAE50F7243921ACF993AAF18C + 83: F6B88007732D5B9F75209F9FE107B9917010D5960184FD239854AB4611CC788D1455B113A5565A87326B3CE6CA190DB8 + 84: B4E703169169B07AC61E76A75ED4AACEE4115F6A43842BF136B514824A05F5C5ADB68F2E525D8C9E8BDB20D3BCA21155 + 85: F72E2083B296EB7468C97749D3AA1B08F418EBCD9A2E5CB4117C5A034BBEA5E2004EE1E43E26A98E4F25AD4306AF3A57 + 86: B1DE9ED0D5E5F7FDCDF530041D7320CA7376A64590F6679971F84061C42AA03F0B07C7EBCB806EC8380D9FF0E182293F + 87: 30ACC02AECEA9B91F3C6BB0F4CA8EEA1B84A0BA6BBB8F7749FD29C9BE5C5E28AFAE5A33617DFE3FC28CE3A78D1A19CDD + 88: 5B2DABAF662B86DC4B1DF6A2EBDEB5CFF1F63C65ACE5E1237DB507DD3FA2C27FF46517B0FCD6F32F25DCD55ACDC07FA0 + 89: 33BE80B29355AB16AA0F05A45A8DC15A5EF7F9FEE60BCBE05E106BF6FA0F196BFD9CBB8D79298360F760DA7B05135F83 + 90: 048C648A525FAB61CF81E087047044130E407B71DDD27293119689C8516B19DDC4F276E3B4E93E6AB80A79BB2700DE68 + 91: BF18EA9E00E6C2262D802FB66E04FFA21DC5C13640BBF27B2C22592DE4AFE31C18147E6EBD2D45669C36F9432494A000 + 92: 0A1A114981A785C399E2B21871A532B2A747FC67B4DAA287C14F2F449FC6F7C6925DB5E884E6E041D08BF6BC69295124 + 93: AC6705C373300FCC09A291CFF1834401FC30FAD512569848A05171AA02426B7034EA2E4777AAC2DDFF48089226A4884C + 94: B7B08352FF8988C0FFE3FE0E27278F068BDC88AECBA8D7ACD8919850D7400A2C0A0A8519B264F61102290C9AAAD3C2DD + 95: 8F78C56A93B3DC69ECC5827F8D591195FB683A9951175754926A8E19F81FF859DC1904DE12BC8482A760E998552D28E6 + 96: E606004ECDC6878B5EC15F4554017CCF962E92CC6EAEBE4997BA34EC0E53C67D564C8461C013701A401FE347EC0F721E + 97: AB7D7116F436ECB13ED2EC42347DDF902E0FD766EA8978CF93625F56B2164E2E630D6383EB03602A8DF27F28F580E3C7 + 98: D716BE6974E46F19A606486BE576AC6E250AAE6AC2ACE7CA9A924C874790E6B4C94670FD884A6EF770EC5E5F3F264306 + 99: 746EEE51375E6695BC4B66190172DC6E86C18E144267C7B0133D6C2ECE05F75B862E4C4EA5F813DD927D60C46E2C554F +100: 3D20E33BA4D52A8C374878F1A624A907132264D0C831C64FC51ED8E1CDB75D11C3FC78D4C3CFBF99D7F0BEA9829B725C +101: FE6A6EBBE30EEA13CE04B1C8FA4199331B77566D2AF420D4EACEDCF22C23B3D7AD2313175389A0765AD60A79C0AA85C4 +102: 1806469C58C028D7FBE80F219DD45333D440A824032778DEFC0A89CF704D40745F0F449F7DF82D228E1718391C85F318 +103: 20CD15E37F6371020B78579210FFD7756B42BD01EB829C1320C59AC382781AC4224439F1F820E215EE907091EE4F028B +104: 7967636E73E440EF1F8751441ADE0F4D169167AC270949A758FE0FFE0B90C2773435623160E4BEA5F23DBE0678E95ED2 +105: 754F6D73A11693E07A2E5F05FBE13514C52F04F904131E0544202354D30917C333DC649FF7C33557005BB19B64DB777D +106: 358D83F883166A6D2972C63F2A46EF893D2FF0F577A53830B3B8E2CB28D1EFE8405084C145EE4E0BEE5DFA9AEF739263 +107: D74B6FD707BCEC9419F032A9C21A7C79CD38F42D564057CDB956485FC5C2ACAECE9D86BE8E12B9181018EA7871343147 +108: A517359A64226F2D08B65203593F3427DD42852476A7609C7F6423C304FBA6EA83981470B8CF171F71BF02F688BB2448 +109: 62162975F98C8ED1B74ADE5B2325EC3D185F7BF8D9DE6C08BB3AB052E54C28399AABE2BE4295CBE12003A03924D4EE3F +110: 8F1E4237FBB668D2705FA6964FF50014F54AB6346A7DECC8DBAA282B51803DE20F9090E7AF2E6B40FD8A138AFE25E1BC +111: F5F9FE110D809D34029DE262A01B208356CAEC6E054C7F926B2591F6C9780579D4B59F5578C6F531A84F158A33660CEF +112: 33BA080EC0CCB378E4E95FED3B26C23AA1A280476E007519EE47F60CD9C5C8A65D627259A9AA2FD33CA06D3C14EE5548 +113: F14FC73C4192759B70993DC35FBEE193A60A98DBD1F8B2421AFA253DEC63015A0D6B75FB50F9F9A5F7FB8E7241540699 +114: 72B9E34E0E655DCD7D9C288D11839A4FD96292F76F69BFB2E7D4F848E498B842CD4ED6486E77E30C603D218144AEEFB7 +115: D71CBD531B25BA65E319954E5AA670C8055406A595D006F0DCEE11AFAAF735CB1615EBAB4CC98061645FB70F31CDD9AA +116: 1F4398793AE7B2C4975AB102BC054DCEECB238DE4307B5DC54F6D7C20E066F638A782E33441533276DF9DB1AD0EAA75A +117: CCD908195016DC596A78C6C10C92EF6F272C6251F3C40B2E7DAD3A4538BF3FF585D4E44035B49EC397D1476E9DD28D02 +118: A8A26DDB23032BBD4432AC857383A5DE280202B21CE173D864E19C4A52984E159BDD006D95605A4682458137FE6B71BF +119: 0C8D3031D85CEFA23A09E13CE03623F0E648A030E43700C82AA1C8AA7E3EA9CECEF3029A23815AD940CC39ADB7747D2F +120: 0577AD6090B2A39FFA1C4A25436F9E958890C55A5B23CF8CEE8195A5984316D81D6CF0B5916C0AD8B1F512FB39826C6D +121: A5E7C31DCDEC53D8898DCB27D52A5C1774115D8DB163543A330AB502FE31D6017FA4BA4C65ADE0CD911972C5A1B7739D +122: 2785C149B798E41E6ED600DDA5257E2F31484BA4D14D35C8353BA4BB3BFB47F6E2CD9B64C940E3C1F83AA4587DC29CAA +123: 977756EEF1A7C1D4CA31A8E6936E7B8884968A22F2846F20B38F247345B1CCD47405040F727BBE2E0FFCD159206F5E87 +124: 9E4811F182E5D6734EA097FCBC77892EC48F09DBA138AD5A5ABFE67F2E88AB61B0A3ECB29028B5528180191754231765 +125: E964C5CC45E8356DCE9FFFE715D01AEB3935D644DC9C2603ACD175A04E8924DD84A4D88A1384D6BAA8AB3F7F7D52D122 +126: 764EB963850537E57D0969C9914355C5AA67AA9722644569B7F50E20DA8461CC9C6CA5958ABE10F5469E4DC1ED27619F +127: D5FCFE2FCF6B3EF375EDE37C8123D9B78065FECC1D55197E2F7721E6E9A93D0BA4D7FD15F9B96DEA2744DF24141BA2EF +128: CA2385773319124534111A36D0581FC3F00815E907034B90CFF9C3A861E126A741D5DFCFF65A417B6D7296863AC0EC17 +129: EF49AE5B9AD51433D00323528D81EA8D2E4D2B507DBD9F1CB84F952B66249A788B1C89FCDB77A0DB9F1FEB901D47FC73 +130: D9B681BA08EC0D0598DD3A2A37F909D01A231D22DA52216126534402A58A072DB35FDAE555B99159894BC823F9DACFE7 +131: 961E792C94027A091DF880A713ECBCA94E7699FA392CCA3E4B9988CB95DD46C894AB6CFA3DE91236188F7A372B1C60C0 +132: 779C845CED9623B6558577C06C6F22768E4A01CED2A9722CB8788FCCA89E0B5CC6A8925533FD097F635997A9C191D59F +133: F8A6FA1C730483AE488191E5863AB3DAB4BBDA1722710E519A2B2455273E78A382C60DB0D21E3B497EF9EEB2780AB384 +134: 1DAA34486981474A57029F0B1FF5150A144CEC7939A5D0C3D7DDDC4F471225D98E83E8A0DE880036F1A265E24CA1E674 +135: 769694D69D701764BCF81C053E2899B232344506C08A39DEDE3D838F85870818C3A8CD2DBC8695EDAF8FE34B4A5CC35D +136: 97E29E4AE7C7E461196C1D698B5D1186822BB66ACA3B3E062A3AE07DB9DD0FED83A345014D3E5AD89E9046606AD2CEE7 +137: 6B57593EE18186573F92273A9B722F9FD77A4A512164FE3756BC2D9F665768016EB2766C46D473A103D7D7090073271F +138: 35235261C522612958048B7FB8E48F96462D2B8B52AB2455C7C142E442E4CF643B367ED466A30BA97D91C1C8C0070E05 +139: 67004A5E74598981A79984B2662FFF8C8F49F8FD13C8A841F68DBA18DF68015E9C1EF38D6522D44F89DBFEA8AF48D2D0 +140: 8ACD05F9738BBB176E50C7419A05C8200E1BA84B5797032E025ED4B55D7A61CEC4CE3662432A4E0BA938D8C9143D5254 +141: 9963300C0CE5F2D39C2B899E47988BFA914D2EA2DBB972C15B3CBC414E41DF3A2FE793597243D46CFF937F41C0D83136 +142: FBEE0F5E072237D19170999D02BB95F6F8F48FD0596A982A4FA2D1273872226398DF57A63E1ACCCF6343415DF387D89E +143: 32A65099C47EAE3BCD0F68645845C0171417385B15DB5E5F7BB5AD965F66C98CDC39B7534198AF70AD5739C8A2F2B8DA +144: E936DBA2CED7F65DE3450BA7ADBE1030D7AEFAFCCE0CBA94E671422790B45B49918319A90FAA7692780CAB4301D9833A +145: 1E20D13B4D71ACBDBD5D2AA129E98929510C795119EA8A07EC63917114315E2756B45E7AE42E1A44C5E410ECBEFB3661 +146: 02A0571C5C3076CACE7F061BDB108D7CD9C7EA51D0FBF1D00F202A0B5C87F22CE687D1CB15F798ED164CAF1CECF92CF2 +147: EA07C4A1DF1E5CB26DC7A7BC76FE518890FB8C424AF3B1C76B37AB21445D9F7FBAB73C7DB35E85337A8F7A0D55121F34 +148: 7829712876378DF986A63E4616DCA38DBE8833B14760168897AA808B96D8FFA4460CA3C1A9B674A0FC13E0625537C45A +149: A7CBB3CD50AA663BD2C4520CCEEF123F7D314870806291DA26A59C003D041E46E6B563670F27BECC5F838A273D349AFC +150: C14E7F70D28E17D3546EB40EE96D239CA5EF7EBBBD0DE64B964C145A5F2980D408A6AC248D651E4583E25093042EA286 +151: 19F87BFFBFF4B1E195612F41E67E1D4CD0393E73FEDAC1C36550C2B1A7323D3E7D747EAAB9844F45F150F8DF0FB72E80 +152: 6BFA3BC29FFF3A92FEC377AF8508D4823F4E87072D6F2F16370B7DD30789A944EE5721EFDA7ABFD47A512EA2D4984BC0 +153: EE10FDDE70EB0A11462DC00860AC4756B21C83BFF0066C431B17BA57CCBB9ED018E8058CB9EA44CC11952C3C9BD15F09 +154: E6A72B9D2A0FFCA41C3122C767A6FD9CFA04CB5B1D1D94B79A0B2C592A584F731CA0523AEA8F2DBA35FDEF74CAF165EC +155: 59118A53C4479070DC728D94BA36D211F4ED5D35F1B69E4DFC0543F07326F982D2B81DDB020F2CACCAF1E5E9832624E3 +156: 63778B7830A3AB7421912A52B3CE9303A53C2A6655291042F428691A633FB9FF173937A8D8F59B21F72D490F39A9AC06 +157: A702F15D9483BB767FC6BE9C3BFC64732277CE936AEBADE4022B24B4822BD1B0FA1213AACF7B4506BF8F330FB7643955 +158: A3FBEA92041484F7F46B380462C5114B0243A79FEED89ECF8E6D8306D60DBEBDC5FF1578EE7E94B5527EFC5707D2B7D3 +159: 1EAEA2602E0B6B328D008A5325C5D4F9DFF7AB9BB5D36816D3EBFEE733BE664E35170506667BF5A24D00222EBC5DCDCD +160: 92E4D41594E15628BEF06CA61E644D2A686C113BF8E3F9A8CD2CD8261B11D01B081EF2941D5182E565B70C566D461B23 +161: 2F08DAAA98DE6DB4E85B81E32C651D88075DE18B7F9C3F633BE1F29C89F24968525B1B357DE80C6EA8D9570E003C75DE +162: 5DF64E7960C755D40BE78F0BB7C1A185DF8E505F0B421BE23563472843E3B5CFC7DA0F40908BF56C6F3A6244581C1DE6 +163: DABB5DCBC32FE7298C811CE22025E9B1C0B87DA5E7931CC3614E3EE39112206DD8422A5504F11599436B806C9108B01B +164: 31AE27382E330115E009474FB5AC750A278B79EFF63755E323E3478B0761E5E946DA6D2436DC44ADE9F4578A8FBA9896 +165: 6804CF0314E455F499E73BBDF4FAA22CA49020330E74C55B1CF4A2D2F4C57D7149B41916002B2852ECFA0713BA91A094 +166: 7FAD2AB0972D8059D4306F0B63F25D9ACBBD8FD95EC8199CFA89D4E227EEDE6052AF0C53C703C7E319047DC5734C9F4C +167: 4635E654950B173D3EC81A8212C1E65605C85835CFAD8607C829786855636A660D6C3045FF17663DE465BF2B152879E2 +168: B40764D8F066C897C3A8FE54BF21DA294C6B3F1B35255F68C8AB325AB3B94EE8AE2E5173936C17FDC95C9B7C3D3D3A58 +169: EE7E424C550F79BA82043245C3B7D0AC32A41B876988C322B9997D87F0A0A1FB8263726B953B43B4616285A239994936 +170: 627DCEEACB27F39552AB683330A67A316B2F53842BCE8056FCF3988702955E3BA72FDEEAC2CDB53F13627858C1BBC51F +171: DD13F3B3E9C79958B20D1986650A79CEE1343F9957FBEEDE18B2FB5E543E3B8839EDF7A57EFD818129C4F00F505D2112 +172: 0A7061C0FBF1EE8CCB0F4A1D0DCAF2F200291AC06830F0E38D05E1CA2429A2BF57DE5BF8DED5A7CECC3A4748FBCB880E +173: 3635AEA9152337FBFA4C2824C5499B9F3FD32061297C4121FB0A44CDF5D3C8D4C6EFD760A0BF076DBD1801C416949A9C +174: F9C58AF2259C719B0B852FC68299AC9F17A802B49B34CBF5FBEB85DB3C68767CC34DAE2CCB536FF90BAE49FDDEC0CFE4 +175: 3541EB8602A4C84545F4476749EAD54E4542C4358CC78CA5B7C8B6BCD9E9A3E649CCB243FE0B3D02930CF1CB7A507FFD +176: 4AA26C2565531A52811D30A1C59152BDE4C61AE2CEAFEF9642E7076EC44C7EBD50F1D1853761B4097D985DFE6878A701 +177: 32F1DD0B4AF205B4891E2F43D772EB5E4A5EA3658106FDC8B8CEEBD2D502F8048B583610A419E1A60020C8C2A5A02FC8 +178: DA7403FE3C3D3139893522C5DC8E4F615D36A0F7B7B8AAF150D1337C8DFE70311544E54880D1C575D664E9AF979984D9 +179: 39F8450D4A946ABC6FCA804AE11935CDE846D999BCFF3091F1E6944EAEAD504F77139A919F915D34DACC13757CCE0157 +180: 45CC03085CC3278B8337096BEDFE6F1D645994690660F23A358C4EC728EBAFD6966C487B9492DE217C17823B16589852 +181: A2150F3BA3349E3AA0ED97B1A02A58F31EB5731012393EC68846D95465F3B787C272852B6945B1CC0FC2B3BE999E0E46 +182: BF9392B085B3C5FFBDE70A3FB64AAB36E39BDE4816F1C9B2A608269336906303F7DFC15F4701D3FAFA5D7A8BFE316A1B +183: 21BDA179D5B80FA6B9444AB1D1F7E06F89F670DA4A038E7E83E8A63CEDD44AB6C1D069D12C6F538B45022EF3160D396D +184: B4216CDE6BC1C27A5C1EA9AC79E85776740F93440AE438D4D9CF51BE8A83AD44565586FBFB58DD743782724A440218E8 +185: 5C3D5C00381BCCF77FC2103C262F373592FE34C2B2895F54BCFD1F9B3C87026288130822B2B451D716FA9D4D7FCC93F5 +186: B927E3777D4BE05FA85D0CB707FB00F08C576777840634531795CD3D6818F192789977AD6425018025E10F5892FFE708 +187: 9C6976E1EDFAEDC32378C8D2758D1B0C5B287C500442EC5D19560BC87C75FD2A7379A3E64ADC1421B7410D1ADD6456BB +188: 9C20482AB71BBD8E985D7891499DB526BCAAE11D2A42DD72FFED664D7BF7F254C2F8DDA2E340690FB83E1F5C58378B72 +189: 7899D5AF410188A3D0D0B12D52437313D786CE7959FC4D194D6A3ACA85729B60ABBDC58AC40731B9E833505156BEFE24 +190: 4F958FD1841D2B790A199EE3358F4DCEEC64CB34D0886EA91AA5E38F8600FBE13DEE4D6A55AC1273B3730CC62A3611B7 +191: 66572F61FE6C34B440AC00C8D3992B9CDE3FC465FCBB193CB7716B53E8032C743718D4F8245D94A22A9AE125795589E0 +192: E7AD49861960D1460A77F4F363341ADC2207E205302957250612C7E903802AF5C9423414C52F4C1AD55CC1C8B2922EF8 +193: 62BE3AA3A9D08CB41F2CA3ABCCB96E2E91A248E569FF58F58C8BECDDA5B4B25FF46BB30EB37999E6131D944CF3253302 +194: 3E082F7DBDF5BBA5F52CC870F2C6E9C63DFCD5D547B183F3FFBE392BF0A1F8F4970CA21E5B9B4306792C138D6B2056C3 +195: 5CC36277225DA2EDCC6CB603EDE9C629E5DA823E6D233AB7833F70FEA2878B2F8D08F361BD5B4C7609577329784D87DD +196: 9555EEEE1EE60EE981CED3FB6BF74699E5383436ACC283BDA0F9F6FFE20561ECE75ECE2C5A82C0A158C071A3BA59CF58 +197: 0B975D2ABD0551BA987680C4890F80DF93AF2292FDD1E47322560B0AD3BDD38A67D3A78497D78B3C38DA597846C5159D +198: 016CE0B8AD1628C7FBA358EEBB7C3667FA93566086B99F20EA6F87FBACB320E7BCEEBABF0008550A59AC1E6C3B4478DD +199: 3D138114480946A2AA1E2B78948B6BFEA95F53BD8BED81ECCE166062A67FD111933A696E6FFFBFCBDDF71041955C98A0 +200: 7EA4BB2534C67036F49DE7BEB5FE8A2478DF04FF3FEF40A9CD4923999A590E9912DF1297217CE1A021AA2FB1013498B8 +201: 80C399C975ADDAB12FA20B3C3D04F25218DFEB678B5A87F9963A462F5474732C7C5FAFE0EBBBAA94662789CC10C9AACB +202: C27E28A5B6C7BFBC7ED372B5BD2555EF1370FD96043753015B3FB9AF31D41E7189D4FA8860B183703560A298D90B6E75 +203: B792B021B3FA904B5948AFB4E56BD4C40119AC79E57EB24C32A7BF0A1A889313D816997E35F2CA192B34D2FF9B05ED9A +204: 7828C6235E2B8AC46E4BCD7F7C7554EA81B5BFC046133EEFA0C4E64AAAAD7115B04EE09E33CB4EA1FF476960C64D9A36 +205: 06678F9A2F238953A8D6646F859FCC3BB0C29BABA669D7F891142C2C3A0BAC1220200B4EFF8C17F5D79E261128C58248 +206: 0FD4448A47B6620FE90551A9AA06DD991AB13DBD2AF18A4F17AE4A9A24D9A83E7653D5F5A2C54633C42ACCB0E5915A35 +207: AABBB8857DE60BDBB21742DE7ACF7EB8D9180D5D0AED23B7F708F09006C6FC56CE85DB87D9642CB909038E70C15C1574 +208: E1BF933A4F32AF56C929911284F9B05B79F0216EF3A150483D74B2D4DCD78885190EB1601A320150C860168221C6BA49 +209: 9074B187372B0535738D4606AA0478BECB5251EAEC961699C2795FC028D641D60230532C8F6A096FEF419A46B0DB87FC +210: A63532A684A1851050E2861F7AB94296D131F768A94AB0019A941734E13842EBE8AB1F42DB4D0A84E261CB4707C74290 +211: DDFD64103308F0537ABD8D4F2209D8920CB42FA9ECBC93318D438C1493FE11B6134DDFF95DBE3FC6B8AA31F833E305A6 +212: 044ED56EF3129D29243665545A59FDC12412E137E1F55A543AACE511F9F86CD3202E3D24807B0FC878BA76223EDC6F42 +213: 2E470AB58A76690755AE6643D615039E767B84AE9E68480DD937913C44AC2350A27FDB45D6FADC242BD5F84809D59E2A +214: EC0ABAC477B5AD5F6B11DB4B699283FD4668D84C2BA7F8DF90A5BF83C0E1E224623F0D2BB3F2DC6EAAC5E41436035D58 +215: 9FEBB6C1604914837F6D00F9AE23A3459DEDCFD81EF755B96A3CC1F63E4CD2E67F5AC2605E594DCD2610F4962EA6C277 +216: 3873BF1A102F1609A624F1A096E420CC459C02590600808F7DA5E3FD49F5B491269C1116A2AC74185A3105B5E9606126 +217: CD7E8C16B59BCEE5888DC7FFC28E65B72570B26F3A0C85885BBCE81E5A6B63D781F953E497399DCB506E8C4F5E237169 +218: 3D24BC91A4932BF6D631EB7698549B03E7F3930662B8527EC122FC2C7AA41E330862102557F480273864FF9B06628BB2 +219: F0B21BC919A3C6089BE3CB7CE10B55D76E31552E759F0465086A89D1FA435E2671928AC329ED7B3D7C1D7121C158BABE +220: B32F9A1FD8A97E6E8E701371BF1A017078B26C3F4C58E342ED455B2557BDA16EAFAC00AEAC1ED7328C65D7C1E227FB83 +221: 5468F1B9192244C738EC20FA979F746CF6929FC48F69C79F43E46859AA022CC42E65203CE7CF77A039402093A1552EC0 +222: A58151FE3211C27651693B55E67CDE0E886BB0D8F2B6D9066615124CF1DA403DFA014C6F19C1B10DE7D3BBDBD0AB9880 +223: FE73FD3276463D27AE6A9F54877CD9BD3410C4A40381D25F5A915194538CA8C4F4B6154ECB9CE8B1B7E23953DC64F664 +224: 0D4EA680BA7CCBB9D88C09F6DAA6BC655BDB0B2A1C8C3DE0BE895328027794E223A45969AE594C7A21FABD5C92BA6530 +225: E6DC0E64DC804FEF91563B550A83BE7ABD50F51D3BFFA785A428EF9436775DD7E3A589793CB2717DC6BAD8B531CFC922 +226: DE168B8F03C0CE8143FD14BD2D294476FBE8DA85B09BF26C5D846E2D19957F87D6FE150B278EA4B3BCD36AE52D251FE5 +227: F34472A4DF2D3B529CE56E9D2A721A839DB05DB7B66BE8AB7202B024DEFD46ACF493973DD1FE88D8EF6E70673914DAA9 +228: 1F5E8FFB4678B3889E7FEB2288358A5F1377A97F76674A8D3E5EF39D185D02F6A1FB60E43BCC79C31E6974B37E74E50F +229: 190AFF1D363C413BEE16C78C544AFD20678C7B1141D3917B6942E4D1486EDBCEE90EDE8A50E441219ED3B11BEFA09F18 +230: 66BB67FC2BDC1D5E8E4366958804F459AA689E04D5FCAFA8CA222656D568B23E976086E2BBAD979EA0973AAA1FADEB8A +231: 0E14C70C02205AA29303D24D6491CC84B648EEB80AE9CC2A0997B7BB646ED32C69D2AE41C0DC007AFCEC514D7B04BCD6 +232: E38C413F3FC12764415F39A9F3638AA1204D3E818A43CF2EDD9F2CE01936D36C6720CF5BE8ABA362F92AEC81386A4800 +233: C3ED0B3697A84B388AA83DFF8EAA65F5BB12EF00315AD462F1F6D85D410D021BC32E77ADC763A254F7D9F1FB6EEEF1F3 +234: 8DC2C3F8C13C43709AAEBD408A679CEC524DA8C8F4157DA4BE551EFD687A395B33577728EB73EB498ECD0AD2487058E8 +235: 8AE817F2056903661E4EBF37D7293200D8BEE7AE0CADEA671E4987624A43712FD2C392E37C17D8E81EAEEBEE8E96653F +236: 9A622BC18F3A09C8BC1C8603B55260BADF32AE7ABD8DCB6CDD980C5E7A5B8A38C6D287A63FE88567BB9B0481743C06D9 +237: B74C6303DDF9F0AD7CBEE923F7F7F1C7FA52C84EF609F2BBCC07B9911C12F3D1A9BD818A9F36EBB40D4B400AA4D0FDC1 +238: 5B1AD3420ED592FA3D593435CA6EBC700583AC5E3CA2876887E5F190EC2109A1E6DD06AFC6C9D7ED0E8B0272B7F9114E +239: 2556CF077A788C49BB6D600F4A3CEE635C4443832D169F761537AFEE2980742B9F34AFBC87F598DD0AEDC4A826ED6A73 +240: D64769AD58F5A338669B935F3431E5BEF31667D0A2437BFF78F1E5275075F434FFF675F9833EA04AC4E5C2E2C2C99B8C +241: 3264CAD70D24B53CEC95269B980DAB85A30D24CF8BDBD68F0FF8A45C6208F05723A4B3270CD095FB8B2D9A4167FB3D3B +242: 4D564117E87700C69AFE5A4D90FF50DEF8A54A9BF19382E4290290D2BEE101355EBB2DFB2A9D6D044A6D12D6DDF7BDBE +243: 6AAD71FA5D5D7B63FEA64D94E211155B01F8C9E4B3D86C3B9C014CA4BB6C668037C4739A082F37B2EC5FF6D85F0A58FF +244: B36D529E55B5CF0FD3273F204F798E21DF533BE466AD1AF35EF80082132640493FD89A6CF41CA68AED066E93181A9EEA +245: 78814E883A27D6ED3A5B122260059CC00D31B8A0E933F3C377BB99EF33F47B13B6AD825B740784BEBDD9917879C2DAEF +246: A7978D0C79070B208F070241867476AE622EA887D26B0F6703FA8A455F411649D8919E6E12C540C59DF60CA9C05684CC +247: BDC3E02D31DB1EB7F04CD9FB8876AA9C7CB1852BD3BD62F56E062E216BE648A34FD327B84E3B6339F44697470711F661 +248: 9135E6D4B1E2356C3DE16A85E4AF57243CF6861DFB6C53CA13D9481371AEE285B75DCCAFC1A64499F1B2CBE4A3CD82C8 +249: D1F9BAA4007BAD437509DB6F6DCA22086CB786026553244A6F480C3A6488F7E26C416C6AE85874477BB5563BA0AECF2E +250: 49E5B7521794B6C73004BADF3D039F4185BE9BF8499FB08B9C8FDA2186B6C4BCD280AE2D2051C6775C19ECF1C776ACF6 +251: A7534C1716B59AB1C7AF3DF0AE32F22CD02A1823F61B318F36DFB536B8EF4515116A099F8DED19B00EE7B2D243539960 +252: 0F01FB323FADD9380A5E4EE6371E8BDF6FFB1F70C4D4A1B5E8BC9B281582AE0531AB354EA9F58A96568826F6172FC75C +253: 145C9D3926904D8418B75C8D645D43AF651684AE7FAD885AB46141B9EAD2D9727731F44D5AAA0204395E020D1B52DA96 +254: F663682EF7FA3F300DFF0B4D9C0D2D126F2BBC164F3B88C8A2207C3799464ED2086CDD324C1E88DAA6EF2D53CF7C190B +255: 98D7AC796C4CFB5D98A1C323656A4BE8AFAAAD168E5EE72B6B7A3FA3260461A043E27243120D41584B58F1AE4463121A +256: FFDAEBFF65ED05CF400F0221C4CCFB4B2104FB6A51F87E40BE6C4309386BFDEC2892E9179B34632331A59592737DB5C5 + +Hash: sha512 + 0: CF83E1357EEFB8BDF1542850D66D8007D620E4050B5715DC83F4A921D36CE9CE47D0D13C5D85F2B0FF8318D2877EEC2F63B931BD47417A81A538327AF927DA3E + 1: B8244D028981D693AF7B456AF8EFA4CAD63D282E19FF14942C246E50D9351D22704A802A71C3580B6370DE4CEB293C324A8423342557D4E5C38438F0E36910EE + 2: 80536C6170DD8626DC081AF148D39EC2FD5D090CC578A76647E7903FD34BD02E4333ECE57B0E24FF116F43429B6FF541834BD40EF0C8D3563ACEF5ED0FD254B8 + 3: 8081DA5F9C1E3D0E1AA16F604D5E5064543CFF5D7BACE2BB312252461E151B3FE0F034EA8DC1DACFF3361A892D625FBE1B614CDA265F87A473C24B0FA1D91DFD + 4: 4EC54B09E2B209DDB9A678522BB451740C513F488CB27A0883630718571745141920036AEBDB78C0B4CD783A4A6EECC937A40C6104E427512D709A634B412F60 + 5: B7B70A0B14D7FA213C6CCD3CBFFC8BB8F8E11A85F1113B0EB26A00208F2B9B3A1DD4AAF39962861E16AB062274342A1CE1F9DBA3654F36FC338245589F296C28 + 6: 2F3831BCCC94CF061BCFA5F8C23C1429D26E3BC6B76EDAD93D9025CB91C903AF6CF9C935DC37193C04C2C66E7D9DE17C358284418218AFEA2160147AAA912F4C + 7: B7C0B47F42F7202BF7D28D6834BEE365FC01CE3F0C8C8DF24B4D940406C2E9C230BA88854E946EBCD786C18C748969FDF012362B7C96400604B6058950FEAAD4 + 8: 8A414C5860CF1BE7BC8531442F69A65EF2ECF0B7CAD9994BCB407097EB74CCB92E93AABD24BDE60331123B4D900684CA7BE6027099D4946BF537F4D6C6DF3D82 + 9: 8B5E5E7FB6530CCE1BFFFD1B1AA338D3282E8483319BF028BB674BB6AEB8200DA389647E3D8631503DC5C487BBFA7D074584493615B036849E0242610EA4758F + 10: 0F89EE1FCB7B0A4F7809D1267A029719004C5A5E5EC323A7C3523A20974F9A3F202F56FADBA4CD9E8D654AB9F2E96DC5C795EA176FA20EDE8D854C342F903533 + 11: 8FFAEE0CCCC162851FAF051AE38667EEFD423C0164C50055F8ADE00AFC3705E3CDEB9900004B0E426CA66AB63AA3B99B075273F44FD37C22A3555C6FD1F37CCB + 12: BA51B2A9DA2F26FE81FC3EE11524255937EC6BEC48835EB437C598C55674E15AA50F88922DE7584332A5E4D24787090CB14DFC3ABDB39C55AEDF6EE108F95354 + 13: B6E30A4016029486F9205C5D141344F885B3DE2468EDFB0B870545F1775CE82597C2A40462F385C957790C20822D9E920EF1AE230878D6B23F221B0182879CCC + 14: 79D76024A31CDBE54CA951D264C46E78F6F5AC5DCD018BAF89AA586333BE82B2D5CA2BC64B99CA2A99D95A984F2DC0D6C07E7C96059DD346BB3296ADE3AA33C0 + 15: 4236736D08F26244E75B51614091CC2C2907D5DD162F8497B14D58D0D954A777C8397549BEE468F30E480252D9B893175DF7D2BF415A128CCC79407D9D5FA536 + 16: DAA295BEED4E2EE94C24015B56AF626B4F21EF9F44F2B3D40FC41C90900A6BF1B4867C43C57CDA54D1B6FD4869B3F23CED5E0BA3C05D0B1680DF4EC7D0762403 + 17: 7B9AE840AAB8BEE45B038CE398D15A8679DB92D0BA46FA67D1B8177986E41EACDE915C6552FC2AF8678425B8BE81B57E0F7EEADCC93B56C58DFC38B4D33BF25D + 18: 0EF6A8C19E19A466DBA3139E2A401175BEB9EE01FB56A8FC11A3E53B345F2327959F6DAACF0CE6121987D2491251DCF550C95F6026F93A1D96A0F4164CB1C642 + 19: D6221AACC88CE14EB7DE0F15F2260EBF4294D9AC3D75B87465EF7AF9570C959077860EBBC5C8153000507CE1E39AED5D007F2286210EFFD26A118966ED15C143 + 20: C9AC4561A7503FAB9C6B71C843AF6911438550BCDF4881EEC18DDA06E4D8B820CCA9521DFA9EF47298CCF6308FE4C4F2F5E34DFEC2ACB78FBDC04D2EF0A5A09E + 21: 73C5D58B05E1E6FCE4299F8D9294681416BC3785F51E402DCEDC0E30C0671DD48321A0248CCC13389A012B52513F1B5BBF820E91EB4F616928183485B4F1EB22 + 22: AB1725C57427DDF93B34AAC62C26F3FF1E49CAD30DD41AE7B5FCE23894245E7E889E0FCA5EC076F247DC7E929D72FB965B45688E57D8CD54212714A17480BE0E + 23: 456F6757A82F0589040996BF88F28E61317C358135A9AB6E96E22F5CA68E2A6438D13D176B01157ACA1FEEDCE3C1A6D5C3A9B1D5A471691917392FB94D0834F7 + 24: 5330241E6F01A49B21AB0D01A9C76AD662E97A325BF8E24C4EB82C6F3B7D2538ADD98F62307F36F900F3934861B80FC9844B761BE15460A1B102C26CF0410E83 + 25: D8DDA603DC21C20A6DD3C6A4F380C297679F035D27BBA82554D02E1F95ECA2EB20496164F96DC4B84B9BB0942B96A3796AFF6125BB9E8711E2674B440176E91A + 26: 81E5A3AF460DD2881353D006AF37478C58AFFF16022441226FB04439783DA920D09FD03E19F45BC82F82735FBF4F2E5F588F11AFDB87B69DB91123CBF05F7F2F + 27: 25AECF7D241EE54E668DDD345582DB777F9F631B9D2432CE4D32119BEA3968D9FA3E184B135364DF62247AB74BA7B86AC3542F63D9F18653D86B9B47944AB96A + 28: 8A372F722A922E29CF5CB22BDABC6D284364F376DA355CA65BE36DAE2FA6F0335744CEFA9089DE55D331AE64E9B2F1037E73608B03B978758A20A012924AB235 + 29: D57C54ABB87AD2D518790B81230DA336F551A0D89A57D0A3CFE2F4ACC55B4B210261CD1482BC436F62D3FC96D1536B82A2E93E9A3DB5CD0F1822EEACF307460C + 30: 6092F1E76F04A5926F6FCD149B18DC9DBE8581BDE6D2A1468145280463472B636C711FF61F5CCA84FD2F044697BD1DD18340B3ED0A131F4BBA35F839A2DD9E0B + 31: 0674A3CDF5F7C18C1B7524C87C36037F3D0267512D11E052F453DBC097CFD52BC331950880CF904656C70758B2E25E21FE2C7E0462E861112A2DC9D0636BBAFC + 32: 3D94EEA49C580AEF816935762BE049559D6D1440DEDE12E6A125F1841FFF8E6FA9D71862A3E5746B571BE3D187B0041046F52EBD850C7CBD5FDE8EE38473B649 + 33: 301F1CD7B25B097AE4C79A97E92BCE359D1289F6754E76B71E7617A06E7783A3CC30F5290209BDA3E6AF239D0DC0F3D1CD4C5E866F4C5C3209EABBD7AAFB8058 + 34: A8C7114B292CC6F46D73824CB073CAEB23EB1ED5EBB37F064A0A76AD452D936D1DF41433FFA337C3F7CD53F5CC00658ED0633252B69DE192E61D9F002B0F133D + 35: D2F92068E07C9AD0572693CF546FE75070E574807C02F5483A31B8CB2105CA55CC6AADAAFE74977F581CE90F43E2AB48260BD7E273D4A83C442EC4871CD88AAC + 36: 1A4133CDFA6CC518387D392814029744D6FA71122EBDFB70059512B89469CDB9D9B5E45900E99E67DBA54B4708036298A94835751EF583149F06AB272B2BA355 + 37: D30DE790B4905717C956A95F60D9ED5948F9E509BA27607E1C5C8FFE35ACD83F719AE04D63364C0BCB72BA529AC79C321ADDFBF7AECF7CA3CAC840A372E6F6CB + 38: A25F5D4BFFBC5F0E3D5CACC3A91870866D8C2D22573556C9B9FA0D24E1D68C55EB42726B1895DF8E5E870DA33755DDBBAC130AF2D96D84DD0D57761D25FDB64F + 39: F44001A74D0B087AF2A143B778DCDEC1554BCE5992C9672E3D0F6704D022CA1E78F087543569CB99D249B820E683138A2DDC5DC178D585167FDD269D17396A89 + 40: 692F36EB114060FD04CD38555025251DF985DDF681A0636FBD290EFEA6FCAC5226859373F3E10E8CB07AB5343547EB0A543C18420D70527D2BBD90040F8DAA52 + 41: 4B1CEF875A025624398CD06DB876EF9AB34FDB1B6A75A07CCB591D9B20EA66E24BAF323911B5CE8B67904945A36C28630B36129939D23D26218610CB049D7AED + 42: DB3E80F11517AB797265829371F245A7A0A384E36A8D43E72852C8D47F8CE37A178475EEF44CE8BDEE5AB054F47EED502E76D49B9F4A5AA392077ED1E6F43EC1 + 43: BD08551AEA7759911B37E9D45748219B47C4EC17A2D2A306D9B8FDF982A9E3106BDC1ACF3F47D383B6D16E85910BBA08128E35EE578E7C55F2E9B9B59F611298 + 44: 3BD8A709DB9A4E0B874B113564B11EAF8270AD1DA3A9236DBB16F58F43285070344962394C2231B3917401924A3F688150B9A9ED3B410547DE3F56450739592C + 45: D0206C8577202C617592B47AE178DA867AC7DAAE4E65B912C771C5FB09585FBD10C36782064E83ACE749BE27045508D544532B628F67DF00A6B7DBA9775D3E06 + 46: 745083E5994158A0FEE4D849012F43A822D19F068AFB327B372A7A8BFE8347E579DD29424EC95319BF75A24B4DB4280D9C16CEBFF5D930D61D34909061A478AE + 47: 3527A5E1E5E5953EC57F309C6513C34405531603372BA0DFD5725E68B9510E5090CC6B317B2E7359D2ABD5ADD353AE1435B85535EB5B0B8F2E09D4DD1BAF3C8B + 48: 622BE417916F1B0E9CE8C952171B11B6D2E2932D6197CC17431B9FFDF03FD0ADB69B08DEDAEBDD0F94812BC2C670C894D65165B31D2F2879532F2C14453E6A0E + 49: C2EBDADE0368F1DEBE44F8E1B77E66BC1C25E7F0FCED7784D615811E2C01192DBC21253E10709D0BEEE746DE6EF93CF65AA39BA29551E11F602ADDD27B196019 + 50: 5ACE0640F0DCB25871E1925F96BAB48162D692BA134C9C7052A37FDFA4895B90AC56C7FB0E7FAF155D147A467839500D980E9D4ED1CC96661177ACF0BA8D4167 + 51: 5D43600C04E52BF6524CDCB9DAD89B1C7563912E7C7E2CA3D34B27B3C1D07D85D35EBB7A65AF0434155AFA3102A580AD557468CC23EEA1E151BFD4EA817FC5B2 + 52: 38D7538AC3E51DDFB6724F57B29A5E46D15A8C08FB29D15FB0681A4315B03FD6747B85D0EB2B9E5FCEC709F365DE08D61A1EB363094BF292B5154671D15D61DA + 53: 2DCE13E5882A31F7396D970AE72E89FB59270D78BF7B4579D0855C4E8BA231D23E5566B77E79CCDC1146762DAAA74F49D82F9EFC0D4FCA891E78F9FF86C61300 + 54: 6D7644DB575C5C238DA02CC4259996CF163A3A3B5ECCC4FC62442DDF01AA05EF0C4EDBE3E6D220DF189C984AA55726A4922EFE004832F2D8887F0B8A9267DB40 + 55: 6856647F269C2EE3D8128F0B25427659D880641EF343300DD3CD4679168F58D6527FDA70B4EBC854E2065E172B7D58C1536992C0810599259BA84A2B40C65414 + 56: 8B12B2F6FE400A51D29656E2B8C42A1BBFE6FCF3E425DA430DB05D1A2DDA14790DEE20FA8B22D8762AFFFE4988A5C98A4430D22A17E41E23D90FA61AB75671A9 + 57: 92CB9F2E4EEE07C7B32B06CF4917FBE54365F55247CC9B5BC4478D9FADA52B07D1C302B3959D0CA9A75A629653EA7C245A8FBBA2A265CDA4EA70AC5A860A6F3D + 58: 23417F93C499DF9EAAF1BFD6A62AADBC711BFE56682943DE5D94E0DAC32F732B763BE28C32AD5F01CB95E5B322AEFF8494B111D7CD8BAB50E7C602695EA6FE42 + 59: 4ADFA8837BB499605D38716F8305FD50255DEA2EC4BF3EEB07560B3C93B5E3725C5A598277A32502CD5C8AF6C88D55756DEB03B69CFC278FFE2BFB3CA202B0F6 + 60: 981A245B249111B4CDCD565AE60C9DEB69FDB552B10C932E8D0635685904203C37CC65D674292405DF24A589682B8AA69BD0E16F666652290BD79AC10E3A9B37 + 61: 15DDF1E434A88F27DEDB8435ED837FE4F1F3BFC5B6FD387A98E93D1C83493D326467C7C53EFEEF158F6B9CC2081267D9761A32A5094399754C0FD62F4C72371A + 62: E08026874830E0B911F5CC51B81599A4DC21204F5C9381CB5A0DA8F452EE99D9FF7590B798805C2743822572E6D2E47C2C1F2D428EF3C28D05297BEDC5CAC4EF + 63: 9DC9C5598E55DC42955695320839788E353F1D7F6BA74DF74C80A8A52F463C0697F57F68835D1418F4CE9B6530CD79BD0F4C6F7E13C93FEB1218C0B65C2C0561 + 64: EE4320EBAF3FDB4F2C832B137200C08E235E0FA7BBD0EB1740C7063BA8A0D151DA77E003398E1714A955D475B05E3E950B639503B452EC185DE4229BC4873949 + 65: 02856CEF735F9ACEC6B9E33F0FBC8F9804D2AA54187F382B8AE842E5D3696C07459AAD2A5AED25EA5E117EB1C7BA35DA6A7A8ADCE9E6AFE3AD79E9FA42D5BBA8 + 66: 371DDB96ED5BE6521379457AE8ADD707A866732B629EE00074904D73858F3FAE827D84E503F3779073490B274E29D644D76154FAB18945222289BCA798BA6438 + 67: 96A693A22256D39A0596802319CB7AF997DB4BFE311577E38F8423DE81C567A96775D063471438F0982EFAA6B75B4AB173D9D3B3D4762030B522FA70DCF3B27A + 68: 7D8AB6155AB31F29740042D82788A69E880FC642E600BEDFC89098B9D2F4F98BC11141FD420870958810295100DE66F50C96E1E4F6489DE98F9BF2D4A9AA2237 + 69: CE561F8F679B4EEB1DC97DB0F72632B9DA1C5B5C0292CBF0662CAD981374BF8C9A0BE1355657FB18196F980E6685D52FE601DD45C6B0FBDE7AA5C9D52E7E5973 + 70: 10164CFD162CABC44C56D76D369096D759954074B0547FA7310C3388F0FB6BB2AA295FAF1E22C44CF59959A37EFE317698BC29AA718D57EBC831A14144F4E48F + 71: 658B337A8FA873C73AE4D19992BBAAD10E1325AFB4DC8B5733F870761429B4243A7982AB375E529C1FBE6339A48F9FB9E8FD6A568F9CAFE640E102B9F398A330 + 72: 4EBDFA0E60E1A3E7FEFB8DB424A5C3A52365F325EC7F51389A4955EE3453BBFC94692DEAC3FF6A4E94105C27D632DF26250FF37314C882FDEB65D53534F8A961 + 73: DFE9D2A6B0AD5DA802D695B3B91745852C97B0283D9A033F04D79D2CAD4FDE50048AC7D82BCF8C402B109E785D39FC9FA0203F7CFC620EE43577688BCF3E69BF + 74: F21869E1EAC3774F3878570AF0DB9A94F464373C1A92E097D180A331C9028A18A68BF4624D8E620B2216B03709F03FB6CD10004F77433ED605B0F771161145C5 + 75: F1F928D322E6852301AD6FC901E91F2156A3CEEFA204044DDA3B4B76A63692DAAC479FFC6D83EEE3BE028A1F651D3520758DD395A1B251E6C261B7CCE86D0481 + 76: 37954BB11B0AAA67F803973DDD2709A73B947D0A5FF8DC46C2D3C6918C87069AD0DF907589F3026A94B071E0F00230F00CF74AFE8010C24E489CC8AF9B8BD646 + 77: 140DB04BF46A194E44F07F6ACEE8326573AA0591F8370A79DF320093C45764A2ABAE531E5A742F496544657FADFEDB7F04D4BD74C347AAE237B5EE59921BA87D + 78: 6D0D30BE796B6E1039739BF24CE26D8DB954D25813F8D7F7444617816F93FC7488B71C69D96D77C65007EF6A2BA313AE0739302395F3D9EAB0244E372AB96961 + 79: 2B92E0D915BC7D56215651BC9F769544C55E2A27080EE726AB14FAC0A43AC51CD378EEA356DFA70EEC3C9146E08E98358C61FFFA3D477CCAC35FD6724A44C23C + 80: 2CED9E743D84F8EC5664A99C6DE2238464E61129B3C856A7FD2CE08B185F4D447A829F287870AC5428114A7234E41A78801C19EA5C6246FEFF961DC6A9B55835 + 81: 4462303D052C70DE76296234B72BFF1AF173E7B63D1CC0E26C518D103BF3BA78D9AF4BA88013192CBADAD83801B8FC29D0838A144AA3CB721AC859EEABF019C0 + 82: 880FEF79B74C109F030F3FA6FCB82DCA034528CCA68A23ED1EE4133C10B3E443434A37C436F079F3F3A922A8547549A39854120723791519DBC166936C239AA3 + 83: 12DE996C9DCE152C83BE6C0E69C66633FC4244B412066A5FE7CEAE27BD4A109FEC95332C60E87DF08A1C714D9D2ECF28A8A81F1CDF8BB3CD2CEF71011BF5A5DC + 84: 748405D18FC05F0AF7F61E0CCDDEFD8055D86826038C77F2AB230F7D97C89D0EF09CE82C4352A7491729C9FD704B279449D0DD7D86CD2FA52EB3B5A582DC2057 + 85: 746653CDC44B4C86B29DE5B28254BE9198C0271249F0690615B05F23AC0456DD66CDDD13D2F22924DF530C78FDFD3699E38E29A550E2739A803FD1FFBEB29E59 + 86: CED0B3E4011A6DA0415C51E37996EBBC5041861FD1584E3D948E1D4DBD7F8673EF93910A10797490DD5C62245EE7EC03D7CE8B8C38FAE21EFAC1AE6056AED143 + 87: FD4BE7DCAC6984196FABA1D88D0FFA9F33CAA29FBAB3E38CD3DDA7FBD94866C944F91B405B3EC613044E4AF11BE7187B15D5AFB4067C54FA09215C3BAC4FF080 + 88: 46836D5A579D5158B9F49D6EBE9A43C9F4A55C768869C3D542BB615FDBAEC8DD34FFCC40288567F8C5E9363852EFF44FEF0EFC0904BE178D3F78EA1B61B9E98A + 89: C05B8745D68BB9647E411E5AA1F924C2C9B96E7DDE71D190A3B8709ACC2856ABFF3C2DBD7093B25F81C6B9883D377E721968632FA4D566F7F72E1109BDEF2D74 + 90: 647A0E15CC4BB5EB3333919CC828D68C5352F1FCACE6964F23FCEB46D0D2408AE896D3319B202EC687F3F9E55126C05705FDB909CD8CAC88304A61B69ABCF65C + 91: 2DD1C321E3CFB58C2E883F5DC3D87F01936ABAB3F1F27648B6AE563333E3852BCCBBCBF4822230E8F0A0DFE32AB6D8DE92A2B8B2271E17DEBEEBF00D83046B75 + 92: 38122D8324807E25DC8A74012CA9C0292222604303CE8B66D7329FEA394D85B7BFBE0F656895EBFD26BD60A3B553A6E3E4003276157B31B3A47779E1633D89D9 + 93: 27FFBA5DD09485E141B659E218D2924AB0392163CDE296D4109F3AEFCDB02241CF0952F0A38E2680D5CFA35363391A324E12519B58C04E8ADF0E9C7A8B6E1712 + 94: 69DA55F3BDBB1C7397CB382B7E8075F615794F6F8453313C0933D33656A3BAB07C42FF977850625B11CA302494497B0EF3A51F3D2EC2E4AECD24BBBC661C6513 + 95: EE1270F6FE6223C19AD4814F0549B54C11AE7B43A8F3418B0F7BAC42BB5B093024DD4F3AB0C9AF5FD2025D50D5B8DC3505D8F754F98AC3237344A7C14FA50815 + 96: AD8ED48E056378B1AFCDC0B3D5D3936AC825F96ABE0953E9BB85B00EC16084A4F0BF12A2B0B73F0A29ECB9841A1DC7F003456016203E891ABA1BEE13FFD19BF0 + 97: F6EB6972CB5FB156FA20A93D8695AE1D9DA8BBDECCADBA81123E7ECBE917596B51E4A6CF9E1458D882B76B33AEA8F3286CC7CA1085F09EB3DB9B9263095339A5 + 98: 40C54D468FE760A7094726B9EF12A98A1F0FE5E7112137ECFB3A88DB04B0758EC581603EFDE3610B1D76AA879EC31933CB6AAFA2DFC559C59BA31425B091FFB1 + 99: DD0324C4DCFF798F024A32A13063A05AF673CB5F8F03E08A0D931406C868A86B5071BA711F6DA80D7FD2F7D3CEE1B7DC12EA456A1EBE4CBCB25ABFB27492390E +100: AF216A7122D29D6A7DC7B89C8B41C111E7C9A00781D4A867A1D75110B48A5A9C92A15D1DC2AEABB53B83BCFFC50F44CFDCAE29DC9984C8C84FEBD0189322BE25 +101: 1FD96E1905B024D5FA883B3BF76C00A0235EE6386EABAE4D9602B5C5E5EA81FE3A1DD0D81BFB0F904ABD4DA7FC71EF7A2BBD0DC6A766902021CEB03D2578B204 +102: 31B75B047B1214B915EC56983E284D14C214D567F149EB467A1A324080AA0D80264ED771E2F91104B2642E9A8312C0C001652CF4E55308A870A77ACFA088D7C0 +103: 59B8D11078C8B65C5DF4F39D1C532BDB9C6E8F2EF121B97DC5BBC29CAF76774A7DDCDCE0F3BCCFFD4779E57D9B23102EF596B8B940480079355CDCF7EC52D47C +104: 3F1702458BA7F28460E84A032BA160430126221AB5320AE028387B60AC53DEBC42FD169A23714AAC3009D52BF9F9485C0878C06A98BB42D1568E7D038234AD23 +105: C8DA7ABB93D370CE8BA6F2B58F91ABBF1302F96799544CCABF52D5D1EAC3318AD4EC853EDC99CF86DF9341D6D794B57B68CD1FBC5E37C03AA10297F9828D5D0B +106: E1680FAF315911FB7588AA2F02D5F96A3FB02F60DC3C93117B97E4F00E2CE6862DB06117A6627B14B11B9E4C61BBEEF09134E1684599A370C61721A3B086942B +107: BAEE728FD37CBE1DAB3FD5A922E58111BFBA9BB47E107909FBDEECCB1812DE27D2D87003FC6F9F67977ED592EBFC734470CD1E907858F555F21EAFD6E64F060D +108: 891AFA38F3094E487BADAEBA012F11D3109EF19B858394EECA4C7F0C2E8FFBB3B88A7105C7D73E7252E67BBA518ABB6A312A7B8A11742D31BF53267CF3B09E5B +109: 6E6E3BE3956224A97F813DE55B3594EC5E2F4A43BAB873D902025699AE58FB43DB71DE1DC159E83F7A7EFFC19CA5A03C1EFFD27B026EE9AAAD92D1D58104D3DC +110: 51F2BA331C24541EFEC042CC66398D388348C4FEDC3F77A4DDFDA39752AE2880C68E0465C15B07ABFD93E16BA635AE7CA7D7E144018ADE57607DE8643992F50B +111: A1A111449B198D9B1F538BAD7F3FC1022B3A5B1A5E90A0BC860DE8512746CBC31599E6C834DE3A3235327AF0B51FF57BF7ACF1974A73014D9C3953812EDC7C8D +112: C5FBD731D19D2AE1180F001BE72C2C1AABA1D7B094B3748880E24593B8E117A750E11C1BD867CC2F96DACE8C8B74ABD2D5C4F236BE444E77D30D1916174070B9 +113: 61B2E77DB697DFE5571FFF3ED06BD60C41E1E7B7C08A80DE01CB16526D9A9A52D690DFBE792278A60F6E2B4C57A97C729773F26E258D2393890C985D645F6715 +114: C02CCA2EE8BED9B4AC74438D4E8B39619347922DDA5CAD2BC3EB9E4CFD4FAF7CC7EB9F6B21ECCA2C55CB60D11EC450390EBCFBA18312E49598D2BC52020DA9F4 +115: E528ABD6C315EADE09A981E4861F6148C9DD4F2FCE0EA54CD3E9796F17033A3751FE9A223AA23CDE0E051A10C2BC27C0298BE97CB87C7110667A115B6D30657C +116: 1B0BF23602D272A06BEC3E86FC675E16DFB067B2AB662181315C45733D191137454BA22713B51478B096DC51D3FC7E9730504324655AE8B7BDFC184118933D36 +117: 12D5EBC3016C77ADCD01F1DE3F792C4230DE67C0B50102E03FBF3B6B80BF913CB66C3E72530C644719003DB2FCB15196803812D89761E0B781E8AFED7268A35D +118: A3527C4E62349394274FB15B30BD95FAC27472E1E521514775D2E667A5480C5367DA6EE526AAC8D0D1226C33EDA1358091C93EC6B1B8464739D25AC4795EF175 +119: 43E497279C2CE805903A33B54B746EA92D607F7C4807986C849823B81097A9099B5896AC7CC66DF3A93EDC8A91B6F3971D6C7F5688DAF635737760BD080E27B3 +120: 9636708964C5FF6600510319E07BF3FCFCB1F4058FEC278EFB677964BA1E140C1632505452F802E99BCF09DA3D456DC3868D149A0788A730E49D239CE7415145 +121: D5D17F592D401CB111FA7C34CF5035BC08EF6B2E0D3E64DDAB08430DEEFC8B9C09C20EB4E8F98D8EBCAC6F09AA2C1DBB7C1B3B2EFE792377CA6600F703643700 +122: 0EA053BBE2E72264AE4F54512C621C733120F777D3CF8FCD8A7CC1ABCAECFB9BE93EE821A15D19467D249A27961E474ABFC433B8C7132321198789D5C2A50896 +123: C64291C217E37E754F6F57C1316FCD8A7C2AC2426E86786FFB69797C0645848CAC41DE345FF90B72FCDE918B7CFAEA4D661687E6F737A088E9296EEF4C3B4F31 +124: DEF8A3CD4921127815F4D1650FBF8B3EF16EF724A38045133749B7359FA68BDE3EEBC9CB5190FB6720EE3D24473286FC046DE0646C6C0042EA1968B48FB6BFBD +125: 6F3581DF30AF789E44C7459356E1C248749B4A5A389759DFF37826BD278D293BA2264BB808A71C453E22A2962DD33A9C03338AD060B3783713EBA8CC8B43E2C2 +126: 2681BF910DDFA680B7204037294D00D0FCAEE84A3747F6E302A16704B3B08EFBDA0E57DBB8E61E92348C8D5FC5A59EAB74C77949A74C7740C30412A9FC65BF34 +127: EAB89674FEAA34E27AEBEEFF3C0A4D70070BB872D5E9F186CF1DBBDEE517B6E35724D629FF025A5B07185E911ADA7E3C8ACF830AA0E4F71777BD2D44F504F7F0 +128: 1DFFD5E3ADB71D45D2245939665521AE001A317A03720A45732BA1900CA3B8351FC5C9B4CA513EBA6F80BC7B1D1FDAD4ABD13491CB824D61B08D8C0E1561B3F7 +129: 1D9DA57FBBDAB09AFB3506AB2D223D06109D65C1C8AD197F50138F714BC4C3F2FE5787922639C680ACAD1C651F955990425954CE2CBA0C5CC83F2667D878EB0F +130: 90272B89212C81B9700897F611F13AC1D291C33A437000C1423336B4D962DD39CE23413160F023963E12F4CCF90D2762B31BFC6818EF865E8A7CBF918A94C1DB +131: 325638D30C9F63D7CDBAA689B7AF8D23826BFE8593B361C7042D3293926146C65C2D6092F20DB5068262359860B3E3D502B6034B9EC8E7253A1FBE4B2007B77C +132: A3FEEC20C69CDAF1936795AEB9052DC525A26F5559045FE458D4B24697E260BDAA45BE8C940A06AE39FDC1F9365F32BAD7DE824FE7722A444E469C7BC198B7C1 +133: 3F80B7BFBFC9D45073FDC2ED93F7C19F01E4D49CB912BD2568F248561F9C9ED1B6762270033D9F421C977F8BB8B4A73F9A99D580C0245DD4F64AD35D68C9847E +134: C292EF04844CD7C3E477C2C2FDDEF46FCEF97E5DEA7955FD4F418C7B4114BA0CA2CA230D0F73A585EAAAEA9277D72B83DB74AC5E887439A225C105B0BFB5A38D +135: 9F0DDAB7986DA54E65EF6B536BB4F7BFF468E0F310803DE28D3908492343E4CAA855B8CAC7409E3A8928E63B9C5D1CAEA7A408ED061809DBAE1AB1A67BA1B926 +136: C58867D309CA48AF74B4D7E49ECED514C89FD433F9DD842F9B50FFAA6C7810BEF35348D00D26DCBE28122BA1CE33D4CD00D09BA76F982A598B8F65790368AE59 +137: C8B1D6B4778932BC21EDDBBE4E48F7711D7E97ED5354DCF11BE98E3110510FB007948C288FD2F7AA71B2E41C86330DBBCA2ED472D15B444828C6DF4282815879 +138: F1C0C057C974E4C27E497EEF52A02963D5957EA02C7E1CFE06423048799AAF74475732A7352220A914BF32EBA6A0B6FF28C77D25CC3CA1AFBDA89870F4EB55D7 +139: 092E121F2C7A2621AA36AA9B040EFE4435DD649E3F336BA82788D57B9B164184F5B5BA644DB4076B46FF9F3A6B9F58D775CE94FEB648A372D960471A663B74E1 +140: 406A5382E9A563E60FDE5CC47F52C6DB86CEE271BD3974AC6E274A1B8C5A7EB369A9B7CD312C301F891D4E3A601A80B9CA06303C53CABD5D3B7834DBC5108470 +141: B2D3EFC2390CF7A1093B93C52B76D0DD74BC277F3D67A85F41635F89E923AEBC960B2BDF8A13860CF3083AC3FBA13D4FE5E426F144FC988554E89ED7A0324748 +142: F1F7100636AEEEC8AE93A2CAF1F4852F192E1EC1AF13697765CACE58FB40B9D9AFC3BBE7E52EDCE649F53C1BAF653CA20E75D3E4AD549D05EB33A68DD11E1898 +143: DB604416DFD0A7DC509DBD2C83D5FEDE5E31D641EE6C14390CF599CDC7D841660AC700D3DE4BE35E07006B724B7DD1BAA21EFC3CA6D346B3B858384FF691F913 +144: 87AE00E496649511C3BF947A65805ADB5D237AE8486CBFF01EBE52D5D5062A99DB3434EC22A37DFDB4CBA1A59AF1FA5825EE3DB2A8524BDEAE07F3264989B85A +145: F442BB697D498F2026FA2A5FFFF9AC5ACA0052F6D200E10805104D91BDFC71A3764CE0277009229B9E7C945222BD7C9085163987E4CED02ACC7420A96B0F9587 +146: 1061588877909CAABFA37D4915EEBD6E517B8D3EFD5660F872019050B3C1465F11FC9B44E72610219F3F5F21772933F101D9D58B5C5F79FD7457F95749BF11D5 +147: FBB4C9BD6821A04CF154DCC7A7507A2C655739F3636B69E8183418E2C33D951DE6BFDF2C3CA603694C44DE44057665EA4835281A2773CB8A84965BE02DF1F3E2 +148: 08D54B05F901FE95EA5B56BA19DF9120C66AD004F98BF8FCBDA9DA0874E64978EFC34877B8224A024DE12D7B926B5D83068E8A704EEF0F738A5061E5F8462F54 +149: B79F53A5117503B5A0316F801B8D448079F38CB90CC39BAFD4DFE169E3C931D622AF7E26835C9AD4DB25C0D6A684E7DAC4B88B475663E05601A99EE9FC8922EC +150: 2209CF6BA43F61D7E579651EBBA0890686A9CDC1E045255494DB0BC732C9512ACBF72158D5738FF63B500AADCCBA000D25A521D41AB4EE6D92D38E8077B79C07 +151: 8236F7CFFA68B49BE5C38A7A1BB67B745430D1511A08EF347383C32AAE1EF4AB2E7F63A20C9D8E5CF2198B32B7BC79B470D36BDF12E7263D669FA4AB8605B75F +152: 228BEFE5788090066D493CF87F75C666BC3C75E0B7BC63E80D38340CF9176251C6E185992B244D4A5B1CECFA42128DAE6EC3ED535AFF039769E364048C442DCF +153: 59171D498BF80731E2E35D0A32DA356419E69B8BAA5B1195D690CD8A5B11542087A007D8DE3FD000BFB03A0408C08E92A0C7712924373FD67A65218E4A4E0F68 +154: 4F94A8F6A136E49069C88DFDEA9361B34D68FFC25724F836CCB021BDB74E0AEE9DDFE80B938A5C12B01F0F1CC49C500FE7709C2090F809D9E0256FC93D93122F +155: DE5E17A668F75866262BBB2089C9DD86775100C77974161DF46BE02A9578855E7C81C77263105C473FD1A2D55483063970C0F643CB25AA4B4AB45A40888F61FB +156: 3314001C825DFD2CD1CE08C746F0BE5C451027F0FAA401431AC84FAEA51553EFD9E0646FB7E9B94CBC672DC98FE9870467C176AA648EC72BF61334B13E479E4E +157: 3EE80B1422E3572B46F7CE5841998BD2B6DF3B591FB5E46851B4D54BF572A17DB5963A04EC6AB98BA07C943475AC088B4D201AFD684F30F45C8037400A7C9510 +158: 3743FE18BD6AEF36887EAB7BEBCE36D5D3B69DFC306B58B1E8C6241E81A9D38425BA991A29C3B07D4F4B9C5CC762B2563C9E5A05B199CEA5833D9FA0062D161A +159: 7F9F71B086CC6D6B63052767CCD6D0349C076289F63483241CE105076B7549B3187897D45D7B5FB2147E54F056530347A1F9265E6F37953B5941272A29E2FAC6 +160: E09CBBFD3DDBB24755CBE8E51C8BFF1BFF36E571EE72E6C99DDA6D507AFE3C562D437E8612B50859AD5CD608424DBE625E0162E6CB7B838F20E7B2F93F40ED91 +161: 2E2F91BD5FEB5C79E98ED97C513E17D2D97B02A844780A0190264773C3040A2CF07FCB0E6424B7A0E88C221BA3824C1906FC1647AB40DC13E2D0CC507CBB6BCE +162: 8D4E87F66B3418105CD5583A92A2D2EBE8824E1F9150CB872FD3DA9C93D382C08065C818E1AF9B25875B142E70676D9A525D901EA2142E42D813A221D21EAEF5 +163: 0518E420BB5680B74367F8CFCF7DD32F3AAE009A0067FEC22456CEAD0832BDC2A60D8AA7B0A2FDCB9072C0F1171772BB665C0B28CD184609F63AD53F89597F9C +164: 247197FBCBEE77B8EAF6358F71A49D784CB43FB44D99910B0599E69B29E31C4019E830F322D5A7117A996BDB4D91E5CF323DB354E902E4DAEE8057B3F78ED5B7 +165: 35A7D806AF0C8167D1505B25EDB565E931864C453BF60AD7B6695035D7584E7714E21F377B35A5F3A69878835617B951977C209F5F3C5967B7DD9BEAA75A7CAB +166: CA9B60EA8DA2D0BBF46742E31AE882F5355688B071883F690AE775C4D949DED8077170F26E89A18CFC251662EA8D1FF43F5A5F28E3FB41ADD741AD2E28341A79 +167: A861DC64C745B0F5D3EFB2773C51981A836024BC420B1FCC564E03006163B491126AD8633FADB6DFCB25C2EF92FD82823FE2C7F1161A78C7766B5E21F96BACB8 +168: 1EE6CA0866F227B27678326FEDA4CBF59934AB0EA2E874E9EA233AA5C67141A05C1B4C950044BB6C9B9D146520C2E3779AE44187BE0DC1CC41FA7F72500B249E +169: DA1032057A25DA7EF987A2D7CF28B927D3DBD956979679F5A6BF4EA20FE1080BD8AF2DC8B1C7E236E7601BD82CFD64DFCA7D03A03087475ADD57EADFFEC2CA85 +170: 22E41325474C7C7EE980314D7738947E9CE3A970B2D28BCD69D545D5E795ED50A5A1839021645D000CD4779E181A65974171C15B9B08B349205B87C150688839 +171: 5FC5AD1B8B7622C4D17CCE23679FC7E0CCEBA00C1FD7178245206F866A6BB198F26A05A3D429E2C508DAAC6D0F698FAE6C0DE7FF971EACEEE84813110672F3AB +172: 2264F674AFC9743A46180CE4E4AA6A2BB33D6BF2F62AA14648179400806D718DEE8FE57DA48D88DF5D57B42087BB2FA62F833BFF87B6678606C6336CBCF34B3F +173: 65E9D1187801C74FC23C4F19698F6B93405C681B93A80D23D427D9F2CBFE63F7E2959B2AAD6CD7EF6E987A5FFD585E1BE8E314A1D502FAE80215C5331F8FFC2B +174: E0436B17C2BB096B08698F4CB448287D69322C34814776E0B1B21486A2D5B6906889A5B198FDDF699AB285BDF58783DE7913075F86ADA977DD35FD09AF336E21 +175: 857BE6485722B4BE445B72C7A15A1D0BEE6C7FB2AD541C2B4F0035DFA1EEAA10D4F0BA5A124F985DEFA53D0A0554BB258B2832BC2CB5B7787D812E96A55A93DC +176: 7B2298654B95CD00307D8D983A0079CCCFD89E5788180CAF352B6C965B9BB5153C9DE25C4A0CBB5E578859660696C887280EA378A2E02B7C7F9E6CC635509EBD +177: C7ADECC928EF065C263A97A273CE8CB30485BFC035F2FC02C78AE2AC6B7F7ED20E93897C0994CAB8D584EEF9DD475AA1613159A0C862FF179C67120F6B4C72C7 +178: 041A03CCE6696653ED5F367749AE1AF3C2654E8A9C0E70E467261E60023876C7271CAE545D114C32D38DA75389525CF0CF1FC0FA9A481ECF43FA0B1F61B868F7 +179: E652E4A88EC1A9C4678F8CFDBFB1D758774600255165E2B4DC15F61C18B9ADE14C5ACE7E8AE72D3062B7F1787583C55B14B347F642344E71D6E00FD6F4C56808 +180: 903675FD8C70BEBE9FD0DADAB17A638A2DD8089AE63114E36D28F4C75D951D75B0BCAB5247803551862720713AB45A932DBE141E48E9BF3ED9E76201577DDD43 +181: 6E61016D474D2AC2984E4EAD44ED82B7129B0B7FF0B9AAF5F45CA68B0529A736B846626CEBCAB9E7CE374D744E7A09C51BBBC746D989806F1A00703A002542FA +182: 20085D4717A204E896F10C5F7E1FD429C9AF848FFF608A2C46D3738EE4FFB944381880A7A455FEC6A1A21754D9ECCF3F1390EA22EC17FCFECE2B86E361784045 +183: 37216CA069259BA3244DE3933A3AD5F35712F0AB7B9C81D64000F0B91DD4232B53748B704E7ED0DD682A77D84BAC1B943D2FF7A3DBF5FE33DF455DDB10D11632 +184: 1F2467A57006D96FDC75A8BDAF98907AE72AD330C0418B06513C33D86DDB800AB6A51738DBFDF1C44676038C094EB5F309B5B590EAAADA4DB09FE7590FF04888 +185: C45893F92AC3E3AA3BC86A9ED659797A7C7DB949A66552ABD046DA2AA7DA9E52FF8BA2673CB44B2CB0481D599EC70020B6D5079296F2C19DB162DC8CCD64BAFD +186: 9919574ADE9B8640BB0EF45F98D1DB6FB7242C433D86CF6D4BD67AD14FF15D74A13F796429E312BAC581552E6597BAD2792F31B2488ED300C6118891ADEE9FB1 +187: 034A92D00A172A5F0CE717FC38AB8D68019F500493899401B563845EB604ABE0907749AA830F91B53AA7C89DFFF86664F8B123AFF4721D790A58CC22F36A560C +188: 54714E69859C60B07C7FE34859C855A37A82204D723F1A695F78D7765CE906D109FA6144EBA9E7E7A7D8343A99495E72D160DD468BEFB794D97659B8E2D8F1CE +189: D6CA476F7E68095DFCEF4338BD6466FCA90DF78A17DE9E29111D4645B0DAA0C6E98F156C0EBF9134BC28EF9E0EA67E6D839027DD5CB084E9EBA899DD3413E222 +190: 86EB8C026D6BF090636F01F623CD98B960D08E521E44697F364BC1AE1655B9AD6FC3EA38C929AC9A244D18E697342594F3E7DFE605954579AE4042CA69E65AC3 +191: 1F63EE615E9B809E3661C77B5029C78A92DC4BE3CC4DFD8BBE78DC7B7D990BC717238004969A8B854CBA04B4D9B30AA1A1964264C47F23D9BCDF45C74FFFD918 +192: 0351F475C711D068BE7B0395D65343B5E249FEAA3C3F3B6B87100C50306EF0340F60EF36233F0E6287057EF7BE8634BFC4D46B49E4A8F2CC4839F42F486A16FB +193: 16645F9C0ABBDA602B7436DE3B1C55AAFD1E844057D51EF80A96CBC2FAFF6E3B2706B45069C90A52D779E101793EAF4C9AE85CAD0A5A394164F0BF34C189A2A0 +194: 821E46199F4FEBD9C118D49B1CE9FFE953113EB6E4E33DA9E39C676399A0B3F792C2990A9F75D729E58EF750857C07336526631CBAA5EE0643699C8E7B7EEA13 +195: 64CB83ABF2BB0A94451F2B9C3EDD76E4A15F9D1F9EE32C0607F5E0951084377E484A8259B3C64428293396F78E6674CC3C027CED1BE12F5671D328D131740770 +196: CCC1A68114DF54BF467EC49CB15CE381EBA7E6FF06A93EFC88F442F8A35827D5DC6494A4F39E8423167CC1C3269A3EE6AE68825FE3E2E40EAFB75C8D878FF88B +197: 94D38693F1B1A8F1013544419C5B3BA0CD79B72478A91CF3AD325E4C3CDCE092AB667572233A4F8DFF132401968BC74C553AEEE96D530CA4E5F6D427F9D2C422 +198: EB080E256FA9A5D51C3DF577509B877563958704C0F1DB645F75CE24005D3B12503BDC26FD3A66E8F6882D3491428A4932EED6F5F58532FEAF521BA5FE05B70C +199: 9A43D7D0C42D7B5409963339C9D9805BA59ED8A63DB144165A3C759EB9F5D756E6288308DD2FE460CC50DE26E1A1C1747AA165FE6C8A1FD5B0F7CB1373E28CAC +200: 986058E9895E2C2AB8F9E8CBDF801DB12A44842A56A91D5A4E87B1FC98B293722C4664142E42C3C551FF898646268CD92B84ED230B8C94BED7798D4F27CD7465 +201: 9FCCC4EEF7571A2BEEE06981856228CEDAF3BD412E777F4AE8524B81C373FDBC210795C1E788EE7081BA42EC3FAFACCF2F386A9096AC719E6565B4E384E390E2 +202: E4E8BF0BF40249236FB88C442E6668E3067ED6001189053A3A81EB755798911258E25CACF7282811DD5E5147811844C4B5BF52FC24A6862BCAF9407F2E38EF5D +203: 317ECED703044C1BCE944DDA7114DD1E36244DF6A533790FAADBD0B8DDF1AC0D198B593F0479A038198F4B94AA6ED294168FE0EE800C02E769EE78ED45249945 +204: F5FA1EDDE359173067E463107FCDF00EF227CBBA0EC5EA02EBBABE2C79B12E793B98FD3A90A72BC26240D994F53DED65FE22C6FE87EAFD01B8478D1E8569A882 +205: 6323E2A8E380CE86433D5B8FCC5E02FABA4ED7F9CE5BD194F7CBFA36F65844B61A7BDF8F131CB4B28C56ACFDB99CD84830557C571FD369650B4608376BBE4FDC +206: DC6BDB69D1C6111E280F993635BB59CD6E7B189166DE593B71E194C5F218D67B00EBE0D028E944976D6538DE410C4D86A2B6F272BB94FFA590208C644F99240F +207: 2428590D2043634FB10268435EA90ABD082D45317D2C54D065529F15E180438AB18FE4CCC9129584804EB04EA1CFF646FA881878520BC01AFF392B6D7D9C0369 +208: 1A29341BEF679E5351911809DA190BAB8E665A9375BC2D477742176A70A6BE8ACE4A35645BF8DB97AB9BBAF1F0313004AF8B4CF10ADB26AC0198AB1D45D05C46 +209: 0EF4FCF3B2010921C58056B2BA367B4C09F5325E6AE9AD732AB277281D4BA797A847B1C6A74D81523DEA163AB0E556FB5102C14E8CD94AFBAC0AB0A921BF1A25 +210: 73C65AF2A53E8860BEE63AF0BD8A457B0AC8D3C5D243FBB1BC3D67624727CC175F3CA133B26342C3401D75DCDDDAD9A692D9A2B1264E90CFFD4BB9E6E775DE15 +211: 18D3DE049396E2EA541E15C31C0EF0E0BD90CCC6CA35663856B94F6F18160D616667C55F3ADC1B33E749F60BE50514A4F3BE48ABE2E18FCA10F85ED0266972D5 +212: 34DED45ED26FE224E0C5A66A193C11A2CC0786E61D421034B3BB16175019C95453F20BDE865DEEAC5C2BB5C86544641482B51C4E61D9DDACC238D050CFC35776 +213: 025D211B55974BAF086B139D8FA1AEA75B627CE1AB894D52F8769874557BE5944D27FD4BA3606266BC7F50D1734436C53D4555A1D2DE0DD2AC51D7F2FA373867 +214: 08CD521B1F13440D57001F30BDA0029FD8AA17FF26AFECEFA2CB7EE1812FC79A694ACD0BDA98184154B72FB7CE305FF4897F466CBB3972B4863FC88B3DA52C28 +215: BA3BF464071BDF124034CD122451D3374AACFBBC916C858B93E191006235F4D741564BA1DE70372269C122D360121DD3D427853BA76C6B450BB46F4156EA7524 +216: CB0B3250639B4ED947BE0C83EEF67D370DE76AB901F607F68FBF1BF8ADA15984DDA7BECAA4D7FDD55FBFE479EEE3F5ECC9CDA7BAEDC9DB7D35DC227411DCF20E +217: 8AFA4024BD96BD50323AFDCF92A7F3E7BFB4C927108CF81C01FD378F61C55D850020DBEB88C6528B8FC141C37EA4852481C14902878AFDE51A7F1EA1612D0324 +218: 27057269EEB73333A1A8059D6C9D6FD5AC89EC26500F6F9838CACEC20E93F1713CF5569E820BD80969547D77E56AB0CBF57F03182EF45AC8BDDE114470C6DDEA +219: C79C3D4A4608C7CB4A3D0C14B28CBB96364F44DD8651F36D908AE502E547AD7AD5DFC10DA26CA26C6D9E51CD40F6D7F1BEA0A03358967D867A97333DA8ADF3AF +220: 9DC3B1EF11D85FF8A57330FDF91D5B5AB142FB89A72D880DAE476E020755C2F3B4CA58C9ED36239E8807C059BD66F826EC517B7A44187E7216E48B683B567076 +221: D11A97FB7B967E90C2D39EF42EBE49327CD58EA6977C84275B01698E322DD97024A40FC3EEDD96207310708F737E81B79659A6C7202E96BE7AA34D18D4026F63 +222: C9BD62C0FCE47736ADCD9275B46845E4ECA23B73678693FEB8E21909EB8405D4B057AF2AFFD7E667E047A07E6ACCADC2A58D7360C17689769DB009F0A7795560 +223: 7FAFE6ABE7CB8C109B18A14BC4FC2E4FFEADD55A43AE7DFC58D89B9CCEBB4467FE4CC163FF6EB16C8C71B8EFF12E7891D11D3DA2C6DFA8152DEC52B232267B6B +224: AEC37B2A1157708142BDACFE77E5204174F539D86A12730BBEF6386FCA098AFF2A5C31EA1AB21D3B4537531DDEB27CA9DAEA22F5CC8C9956B2F2595F53BB931C +225: 6B005CC923D9AFF56334CFC7A5E3ECD70E97C4247EB372A3180E7DC5BEBE676E72E2FDFACB74277B70E15D871819626F46661285DB04B3F825C49EEF42391B5E +226: 509B5C993CDF61F8F507A84BBD7D6D7AB090970927400043D39E5F47DC23AC289F5BBF9D3246EDB174D9C5D72BA7A066DC13171EC15FF9508911464F8730D395 +227: 00A05302C3A60E58C4C52847F47379212A918060931A72BC660D88E7BF5599DF6C38DE92452B4823B4725BA3EEE866235CCF4D5903E91714CAA230C6D6EEBE45 +228: C4FA5EFAA31CA205A732FCD5DEBED53C09A4F30C5BD9ADF27F8C1DCD4B2730925BB6AF176E2E680B2BE325F7DDEFBC9EE6C1CBC4F0426ADCB5CBF18D1437EE6C +229: D125006B8107FA63C375A79AAA0EBE82017372B7CC65C3157CE078DDBDAEE8C569BB84FD8490F2D66D15FE73C6881245761AB2B1D4F056637ECA70641745CDA4 +230: 01C7D098DCE4E40A69DE14682587FF2A40BAF9833BDCC6413AB54DB0E64262F290D584CD5B21C6558682C50E1E27BF53A18A16D72ABDE878C3522156C9F04DE3 +231: E863DA51CAE09500F589BE05CAAD5788587E2017907444D76F547D6F30632AC658EEB8585733BBB815D2E19EA046369ED3B81AA773FBFFAC316162389E015A71 +232: FD8232F7B79BDF9CC52FF0D5DE1C565E9D659BF19769096895D182A88028C1CDB7387DD240128A7ECFD2708EBA7E9E3C676D6E2A036E1B993940F5CCDF1A736A +233: 3BF8572CDC7B825CE7F3222A3DB87F1C52FBD1A8229B957ACFEF2047C560567483C479603A3C0B0F1B2DD265BEC257D1A32C651508D7A4DF501BC015657DCAC0 +234: 23FC530B031136A17B8B2FCB55046DE7271312EE3E77851FBDB05F78A294815CB2169079168E07647A2BD5D05C1BC2B1EF1B64B929DAA1F9CE723D448C936FEC +235: 83D10057C7FB494FAAD289B4FE5F093DB2A0C7D79A298173DA735CD5063232BF9E5327A7B4AA795C99F323045790B554476F37EB9D04FE3DF40C047E4113A720 +236: 0AA201EDF4124F421D4515554A1A642E3B9D18C70E09E83A886D6F0CAB0750D9BA1FFEB9C587F3ACAB0D8B9C1D83D789102F0E2A6CFF885C50F485929DF4602D +237: B85CC52981751513B917F58305AFFDDC7D901CB3BB1D1BF5DAB058DEC9B8CDCD2DAE543D73EC6AE0889C9D785F9178D207059D994E1C80706EB28AE65AAA100C +238: 068FED72E55444AE108EEFBDD59A96DA4AEA3D81A6642742C38BBD4EAAEDA6EE21FB8702C2F95152F1F997A5F40F06C54619481F2EC343AD33400913D6FDB4FB +239: CB4C7FD522756D5781AD3A4F590A1D862906B960E7720136CB3FB36B563CAA1EA5689134291FA79C80CCC2B4092B41DF32EBDCB36DBE79DB483440228C1622A8 +240: 6C48466C9F6C07E4AB762C696B7EEB35CFE236FCA73683E5FAB873AC3489B4D2EB3D7AFCCE7E8165DBBF37ADED3B5B0C889C0B7E0F1790A8330D8677429D91A5 +241: 4F663484EFCA758D670147758A5D4D9E5933FE22C0A1DC01F954738FF8310A6515B3EC42094449075ED678C55EE001A4FB91B1081DFAE6AB83860B7B4CC7B4AB +242: 81A70404857420638D72672A2DF5A49D52B9F9F38B385D8C5129D6A2B82A682CFEAFE6509266E4B00F6B6A07341C2F64E4D4F2152583ED143E3DCFB14C1C216F +243: 31F655A1334E1A45584F12A22E03B09E3C69ED0E1D0FD573AD0D56F9C86862299E333ABE78590E97EEAA5C2FB14DC9F34FEF6DDAF6E7A9BFBF68CA6631195CE5 +244: B62C5102F97E5C4D7554790A4CF53A58D3EF44C83142D6E009BD1F6FC8F3A19AA1B89DA8DD9BD1310827A5BF662BE7CAC750C48E6ED91313E940D7D9E5EB9C22 +245: 380023C0BAC4C9524FF6778BE80CDF195E36FCF460E8CF1BF04E5C2FE08E38C35F183FBCDC3726FF26423F351C507279F6258F2319EA1403B6C8A3DCB384AC7F +246: 473FC167C7C4BC40B17DA039EE09FF3DE884879557E40C52C1981AC419CE021A090BBAE014822D05714077008988D74FF151C927AA43E88CD63FF2CCD2012AF4 +247: 006086E61959B1D66C72E754427EAD5E1D6C02D8409F5C32B2F5AE448F54682B504A1ABC0346CCF39BF66A8C7B69081E886B47A7D0B02291462391C95351EE40 +248: 3828B2ED548CFD0B74BB34A1FEAE030E267222198D7E387E7FE3ED503905A25D4C3301A9A47E78372F685B05847062476C507708CDD75580ADB579E4CDC79AA0 +249: C26A7D5BB103EDFEAE2F1201BE58AAC127F69AE378DB04156074E991745D4AA5AAB3BA064407DFDA8D34E573B7EC1F9F37CEF01ADC17FAF393C262A09F2C4736 +250: DCF82307195035A668097514FF1A10E0BF0E802B4945A702D2E17AF6DE1D3D9BA49616DFD16D802054B5219CA37884385E87A713B4EF5C7FCB69661C7F56D5E3 +251: 46049EA0DFA5C49429E15626AF4AF2CE0A9DD2F308B99BA6E6E3F3088250A146870FD0B53228D5A1F1BF9859480E1B7A3D3DA180AEF4D5D41BD2951C4E19426C +252: C0A1FB6C0A65A0D1AF46A5FE86C8A88E8A86F83E36317F435542927C98E74833C887CA3AB5E792CE5E3E21CC6C6AF437349F5A66FAFC4DA79742491C643901F9 +253: DCDD20CD47B7C7D011E9DF7855B08336BD5007C4435208BD3B914D7E503B8399164A155697E68A1B88A0600BDCF847A114D98FB773C81FEC817B92057A6998A9 +254: E2DA07644DAA73B66C1B6FBCDAE7FF28E3B9024F0BC5408FE02C18E3744CF9BD6DD54EA7BFA1F6F3A81C8560FB938FDFF9A38A29853A3A819B58D10213A290EC +255: 15025C9D135861FF5A549DF0BFD6C398FD126613496D4E97627651E68B7B1F80407F187D7978464F0F78BFEEA787600FAAEBBE991EDDB60671CD0CE874F0A744 +256: 1E7B80BC8EDC552C8FEEB2780E111477E5BC70465FAC1A77B29B35980C3F0CE4A036A6C9462036824BD56801E62AF7E9FEBA5C22ED8A5AF877BF7DE117DCAC6D + +Hash: rmd128 + 0: CDF26213A150DC3ECB610F18F6B38B46 + 1: F069A435C14A8D4B02A7BBAEE02D0BC3 + 2: 48456EA1CD4C51DD8E1130F625DA4F8D + 3: 6E41F2AE95605779C74CB5ACDFB361CC + 4: 0C7A6C73E99A5C65B12D3EF47ECA9D2B + 5: 3B80361C079D1B67933455D00AB1428E + 6: 0F74C4BFBFC740A027B1D5BB9CAAAFA8 + 7: AA54ED5DA34CE9205B64D138538C0C1F + 8: 08445C3C3E71434DE375CC2071430EBE + 9: 1FE0AE641DEC6F8C172F0E27E9E73B9E + 10: 4E8152B7EA8F7A31D8649A51389260F9 + 11: 0F851C98C2B997C2459B34CCB209E481 + 12: 52D27461FD7E095EE3C6ED43BC24EF23 + 13: E9F3489135F3D90EBBADF9F916C34920 + 14: 36D527B693D6531A5E4E15BDE9E4A670 + 15: 57433A07CC200953B7FD440253D5E476 + 16: 4A91FFF90756026A90A83927066EC911 + 17: 5A247C26BB1BABDF1009B6B4951FD76E + 18: 002DA29AC9F51F065A1E371660BB67BE + 19: CFFED09ACF01DEC9D3891033C0973953 + 20: B78F28AD3460C99D428AF24E2787EFE7 + 21: 5E203157AB6BAC57660F3D25FF615C95 + 22: F128F5DEC3A24AF34AD3E7F3883C8051 + 23: 2E05AF10A6CE9AD1E0C0FBCBF69B1C9E + 24: 67FAFD9A5CEA5D41863D03AF2932C5CF + 25: 5ED7E86651AC4BD0EEA718C773812977 + 26: 6BC74F78256A98761981882C3CF7AAEB + 27: 44CC573B964002D877E79B75E4433E41 + 28: FC02FF53665B52B58DE38784E2C28E92 + 29: BC4D69312DFD24EEA219F29FF2AB2072 + 30: 0355E82F130341EFDD997EBDF4469221 + 31: 453D500D997FC85F6AE16365D83ACC05 + 32: 42DF4C5A3844F00F77ED84E125237113 + 33: E782D7162BB54E735F7B9FDD75A3F14E + 34: 78993013EEEA7B14999DDD3979191D74 + 35: 27BFCEF540F0782E9A28328E8DBEE59B + 36: DCF00356DCD264B7E359F02D7D2CDBB3 + 37: 9EE0BD7F55EBD844A8D114F83B3E8FC3 + 38: 01EF8F3154BA9B9B817AE717FEA00A68 + 39: 4DCBC2AA56D785CE7249761791442BBB + 40: 10282C07B870BCCE0C8DF9E68B4C5DAD + 41: 0757B359AB2D1D121BA01BB345A12A87 + 42: 450AEDEE570A2E9B1A19D5B4747B2AC9 + 43: 2C45713898BD259B10E2352BECFD6DE8 + 44: 3E92731175E510FCD07D28AD47DDA0CE + 45: 6A8E5690AD4AA2180966AC1503A81A18 + 46: 820BE195E2AE85C115BFE3C341567030 + 47: 9C97E1F0E7DA29A0527AC4F59D520100 + 48: E1257842EA15216543BFE84521B9FDC3 + 49: 42BA484CB70A58EB3EB5DA43F1D5D5D1 + 50: 2C674397A81CA35EDF1FE77B442BADD3 + 51: A3E07C012A7C67D2B6557F4A8B4DD031 + 52: F01789A2E0379CE16D87EEDE671171CB + 53: FFF1657EC846507BDECD2DD829DECDA2 + 54: 1673DCE23D430948AB818D47E83BB5CD + 55: 37CEC696967031AB2122155998A07F51 + 56: 320B7D4DE17A731B9BA5CBB48956D605 + 57: 1EB07088E5F563DBC5DD988ACB84B048 + 58: E4DFE704E4C25D06224D2560B4650467 + 59: 6C072AD491BEC80667A6D71D9C8F2FF8 + 60: 53DA8AE3F36FA8F85072A89962F39B76 + 61: 40210D1C7A728A27E1B5F92057DA4765 + 62: A4C4E5F271F3BDD74C560787718E8816 + 63: 4466033447F1E1C9BB107D152BF06051 + 64: 406C6EC2643CCEF38F964864D12C9191 + 65: 19F725CB43B171DFE18EDCB90A9DD900 + 66: EFAC3C9FBF1AB0C0F3601C18FE3F0212 + 67: 9B9BCD32F735EE353D33A657C2292475 + 68: 68F4A4294C640BBE4B1E90FF107E05AC + 69: 3630FD1C9542A56C851140A7D76C0D00 + 70: 21AFDFAACDD8FAB91027A61F8DAB6C91 + 71: 2C7AAC93B6CD1F8E23AAFD49F04C69DF + 72: AE4C5124059CFFB3B823E68FAC8CFB33 + 73: 79E95CB7E752863AA87A7693D0677D89 + 74: 1B491E33A96D9838398A4F624E773DAF + 75: 1F3986FC593D8A8E927C82DFE1F538F8 + 76: CE64F09024A907E76726E29E1364E606 + 77: AC98817981B59789E7C7E9CB9F70FDC3 + 78: 3827B4B077493B289C25EC3E91B36D26 + 79: 75295EED68F750E506C60A780B7F0285 + 80: 4FA47F32992EE6C96C3B96B6A69A6656 + 81: C52E142B7838D731FC036517003FA73E + 82: 3451812871ECD1C09E4A95CDC80369B2 + 83: CB5261A793A55DB33016ED27A35A20F5 + 84: 2D06368ED98E266E81A3C6491BC24890 + 85: 677F6509BDB3D44BCFB088A81BFD96D8 + 86: 6990256193FB0697862AB5A45FFF082E + 87: C88D698EAF83E446C025EA915998EA01 + 88: DB8F672EE8129BF4BCE25704DD57BFA6 + 89: 807F491456D7E28A36AD6E934B053EA8 + 90: BBFD55A483CBD0F9DFE18FEC5070A166 + 91: DF7735106411CC29535664D85ED81603 + 92: 24FE3535DFCC295C2F34F3F88CACDC88 + 93: B80CDE220C4199DE303BC97FEE125048 + 94: 8C252310E9A71C7BC40C3D2011E24EA6 + 95: BBDB705F5660C50C5B0C87CD812B76FD + 96: BD517928591240C7E63C8D9F957F6A4A + 97: 78A534AA0F4250EE83D752F3E6940148 + 98: 3346EDA882F00D6073D133CE609D3B83 + 99: 51EB1D3235CD35A2386E314F815588C1 +100: B4860192E79C1233A08FE595C084315F +101: 79EDBE3E80887B4F741199295347117E +102: A2793EA5F25492D32D315B3923E945D3 +103: E398223EBEFC56D3437AA5FBC5345CA5 +104: D3E6593D69B24069AF0374671E466930 +105: 12D63F5AC48F99BD59EC863B61952C1C +106: CC99A81A22B62A0FCAB4AE889112A8DC +107: CCC82CA5D35A421FFF313F90B9D1A675 +108: 5B4A2912071CC36CEA626F9AAD34F257 +109: D21FC82D78AC98C5DA436388AC9AC6BE +110: C2F22C7C16DD2E1BBFDD2BE7915B869D +111: 2B5AE5D14DC053558A1702959367760B +112: 7A6A3A6553B2C3387BEBE119E80CFB2B +113: 7E2206BCF666B89341CD7615D0291E3E +114: 93D87A658259C7E9FDD0BCDF93A24356 +115: BDBC0B062FA3D743C1B070F2AB43D180 +116: EE0A575AFFC966F58B91BB66CC1E6B6A +117: CC24CF8DF0798ED2CCED077B06AF1BAF +118: CBAE264BB4AE635A15D8FDCF7F9A6852 +119: B879B9BBF61B6F291A8E4645B70EE06D +120: A6F88AD4A16F789A58F178799279B40E +121: 3DCB6B1674608B11F496F45C9828F90C +122: FF34A1C7748C5B5F2F014ADF57241C43 +123: 1A77E2B20ADE5F286705251495AF04BC +124: FD47EE73738626733CC63327D4F5EB7E +125: B9438B50CC80CCE0303244713853A0DA +126: 040BC7876B31E22590F5898068B19859 +127: 16ED82C338495D067BBE1D4AE73345FB +128: FBE1AC0EECF0AA2671A6F25733E9711B + +Hash: rmd160 + 0: 9C1185A5C5E9FC54612808977EE8F548B2258D31 + 1: C81B94933420221A7AC004A90242D8B1D3E5070D + 2: C0C355CA556CFE356ABC0A5595BAB1364BD86444 + 3: 6D8D360567AC2CC8C4EC11DEEDE0ADCACDDA388A + 4: 04DE53FED2BBFA80FA79698B4C5627536FB620A7 + 5: 9538F24F7432E952F030BBA82C9F744365035197 + 6: 817ABE77EBB7EA159AF7BA7DE1EBBF034FE6CAFE + 7: 340835AD791316DE50DDB59838F3EB13F5521228 + 8: 64B7269FA971B162612265C73B9911F53EF43B63 + 9: AFDD1E7F8E39C63DEE7104014AD9EB32B855E0F0 + 10: CD2E472470BE8FD70A306DAEC5C59F485EA43929 + 11: 550844206034AA74E37D813FF29973D3000C1DBF + 12: DC24FD5F309A7BEB9A7CFA7A354F2DB2CBC15AFF + 13: A814B4CBFAD24B7B92AF0E16794A793DC16D10A2 + 14: 6C316617808A930BD29972B1142C0AEC89EF00AC + 15: 3286BABC7C4635FEC52F67CEFF1471E122D50258 + 16: 696C7528A3545E25BEC296E0D39B5F898BEC97F7 + 17: C87DA6F87A65CBCBC4B02BFD6D01E26F8047B5C4 + 18: F1AC2E0951EA5875B71723BA1A2158DB49EE073D + 19: 091A39765126ED406254E7F810F02E0A6124C6A3 + 20: 4002C0305550C5A726705DCF8D3880C54FED0453 + 21: 2B59904E1585334B1298AAE6EAB06526CAE5A232 + 22: 0EF94DF816593728611664F4ED6A0C4DA28C5AA9 + 23: FE7AB8A5B0CA3C86B6524E3333490D0430E9A4A0 + 24: E748023DDA7E4B77DE8A4424744331EBC62A6590 + 25: 96147FE511BC64D9493C795ADE8FC71A78FA8C23 + 26: D81D7D3B46D5BA875EC2604814616230D7A075A1 + 27: E8245E6537FEF146A2CF6AF9BC54472BEE6213F5 + 28: 231CAE27B96A78767A0915A529ADB6B72A8006B6 + 29: 4D6BE5BB6D29A15A259C8B7BD4827EA82F514425 + 30: 3B00599329120E535A5D1A46F35AD03CCA27F9D8 + 31: 2AF4160DADBB84707F7355177A4644E4CF577DFA + 32: E6BABB9619D7A81272711FC546A16B211DD93957 + 33: 1E374AB924A652FA36B395D654D226BF901B6A04 + 34: 67281E2EFADF2EA6211B549426D3A598B5E1F291 + 35: 993464E56DC035716064577245BCE99ED175356B + 36: 298D2CEC0A3887C93501307B51F75BFD5CF0AFEE + 37: 2A0A02BF4D63CC09978EAF3B3B85A4DE8470B025 + 38: 6236F6FE25D5157BA95BF49EEBA8987A6A301D2C + 39: B4DD7121567E8A428F16BBD5A8832FB2EE68BC0A + 40: 5FBE6037F8D8EFAA9A315C070CE3373080244496 + 41: 04D5E112C47EA03BB60CBCEB9FC8ED7D92A68C0A + 42: 658797C7756256C98E04E6718D9F8952F90DA672 + 43: 6A27ECD40BDA4CC81C599DE94D0D2904716FD457 + 44: EF5AC5B8E7A00560E79DB54AAD4B97E996D2745E + 45: E67EE5275910B48F7D248A8B844DBC041257D695 + 46: FFD256BCBBF0F3BB4DF615B4236C147FD09F4F1B + 47: E83A4B18C347F188301DD3AA78265AD3AB3C0311 + 48: 13968583BC017CF0C5043364A42EC0D97E923711 + 49: 39C33EA7C4F393C4DD4B882F73FDDAC2D7FE1EDA + 50: 50B0068D46AA025615053132BB53F88DC062DB2D + 51: 434198200766DB6CF48C993906FEAC2B47224A3F + 52: 004FBC3820002357434D6B8ADCF79BFA6F9E3DD7 + 53: 13F7A8CDDDE021BCA6227EFF1A71DE19AF399B66 + 54: ECAB85CA0C2AABF18F5359F94AAD7578A08AB5EF + 55: 3C86963B3FF646A65AE42996E9664C747CC7E5E6 + 56: EBDD79CFD4FD9949EF8089673D2620427F487CFB + 57: 635B0D05BE254D82503A9E1DB7647DD1B5D5D6BF + 58: BE314B818A657DDEF92DF123FCC17C1DAA851C04 + 59: DCFBF0575A2B3F64B24DC203BDCB46290B21791E + 60: ADA425E87A8DACF9C28B67E8BE4B204A31960004 + 61: 35691DD184E08A80230467ADC6E68599B7295A51 + 62: AD1CAEFC7ABDC90E7877D376957532B7D91D7434 + 63: 6D31D3D634B4A7AA15914C239576EB1956F2D9A4 + 64: 2581F5E9F957B44B0FA24D31996DE47409DD1E0F + 65: 109949B95341EEEA7365E8AC4D0D3883D98F709A + 66: AC745186C82DF8697458326051A6CE7E4E9C1C1A + 67: 5DE50BBB11C62ABE22E7EDC288B7D1B6A1CFCC60 + 68: 7DD54CC4E8C70A4AC55F4C0485A4DFE139253757 + 69: A5E0EFB95E6162F9637D58D3E4836F9661D6A34A + 70: 6C77DE7607A361D22852385E663171148C0499BD + 71: 3467662275B136AF096D84258B17CA5F23BD6397 + 72: 1C56A69A826F95B8971635AA709978A441E75836 + 73: 9094727596F086BA28956A6BB69CCBF3B2B29FA6 + 74: 8C0B6183C33E902C22F17D81D18144ACB7B66FB2 + 75: 24ECF7598894FFBBC7D30FB1EA47092F03C398CA + 76: 6A02FE0041D98AB7AA6916A5245BFBBCF6635C2D + 77: F3021EDB24459533488660512660DDFF7F451C3C + 78: FBB7561C0065C90D7B8182018EAE73A18288E968 + 79: 32784F0E354A20688359B6EE7FD3874714C48677 + 80: 8BFBA0972D36739EA808C37C07F2E320ACB4114D + 81: 74EADA88C8ED0B649FCCC36DE338CB538242FE10 + 82: ED812B77C12856DB371E6F7DDF15A59FEBDD6962 + 83: 27021F491E923CF0B191E13ABCADDAA72586B769 + 84: 47664874218C135C09ED40DFAC26E06733AD02CE + 85: B39E492616FDAF2480F13D6E46CEBECC1FF5CBA5 + 86: DE967F65BF6DF26150AF866FADCA58C45DDC337B + 87: 8F2E2D23CC6A2B52B904032119CE68649406033A + 88: 247FB8B2BD1BDC35D0C07EA10FD9686A19E4723B + 89: 9D1E80D5695569D0DE28587D37103BBB0701E462 + 90: FA5C338E7506AC5418C4FC2C04AA933588892D4A + 91: D6BC93880FEC0163E3F223C8A64BA0879BBB0AED + 92: 8F27EE9C8A923C9698584786B5227CF17F0F557E + 93: 4C10ACF2F404236E2DABED0BB48DDC6D00AC4B16 + 94: D5166CC6B779EB2D45AB3222181064D05FFB5E23 + 95: 13042EB8245A8C5DED69CFCC1F1DB264889CF5CF + 96: 07136FE8CC1A03673891BC614E29BE79EA02D627 + 97: 73C50B2751C502572492C801C28B02C7E9F61B76 + 98: 8BE4B71D50C2D2895B9CA359ECB69F90CDCB1DD5 + 99: 36A669D7C1DA8E23D07B29BD6769DC324EB6D6B3 +100: 8AE5D2E6B1F3A514257F2469B637454931844AEB +101: F16396E005FE5ACC34EB53E6086F477415794BF2 +102: 907CD2922CA5F62F79E17B28AF389A38066E2C9C +103: 62C9351A21A50F2150367F25D4C166C63E771C32 +104: 8809CB529232A0CB22D384B70462B64D93B0EC1A +105: A85E4B4260A836BF0DA50B83BE1080D98CEF8A17 +106: 21D2A0D78435B2590B2C6366439939B9B15246E7 +107: 204FFDFDFCA5D46CCEC5FA96A778BFCBEA70BCE9 +108: 01DC05D6006E12D2F63A8F061B00D18CCA135D41 +109: 30E67D3FC0A0A6D2F257AE24EA8C168A4B0E0F5B +110: 9B9454E2B42908E57403871A64EA5E930F35B70A +111: 9F72DB053BC5370C786E34013FB8DA5958000D5A +112: C1BFA4009BFEAA30ADA4D940FC40F97FFEA3FC39 +113: 26FC30BF64087DC3FA4CA394637D15F73B7687FD +114: 36106E0DF24B7DEF46E9AEAB7CE0D784FE619D9D +115: 0D82262E443C3C56565EE35776F95978E16F1757 +116: B19E6C73E94401020B14ABBF19A15A6F0C9061AF +117: 68ECB5552C7B7B26940A82B6A67B0F4C62EEB871 +118: A834797B79DBB564AE587003EC4B74914A1580C5 +119: AD430B4283203A7B7F338B9D252DFDBF807402BF +120: B89CDC109009F1982C8B34FCA446953584D3F6C4 +121: 8030CC5A4F55566958A5BFCA97CB6F40B9C19279 +122: D0CBD1EA711E2D405DA5ECC2905DD8A3A3E83C37 +123: ACCDC924549D314019C4FD1AAC6AE3CDFB81BC84 +124: 312933643FCAAEBA4DB9BDE6EF7D6EFA70E37399 +125: 47F11AE47E2E693EDC0B06351E935C9B5DA42A35 +126: E4C6AA211767C15E90935DF552E4EEB89F23AD50 +127: 2BE8E565E24A87171F0700ECAFA3C2942C97023E +128: 7C4D36070C1E1176B2960A1B0DD2319D547CF8EB + diff --git a/notes/hmac_tv.txt b/notes/hmac_tv.txt new file mode 100644 index 0000000..a68148d --- /dev/null +++ b/notes/hmac_tv.txt @@ -0,0 +1,1605 @@ +HMAC Tests. In these tests messages of N bytes long (00,01,02,...,NN-1) are HMACed. The initial key is +of the same format (the same length as the HASH output size). The HMAC key in step N+1 is the HMAC output of +step N. + +HMAC-tiger + 0: 2EF793765716EE48A671BDB5F002103C43734304C8717C85 + 1: AE61B56C82BE9FF96DCFBC20DD02B4BEA4FC6B6D5F4EC412 + 2: B54ADBFB404457E6C5AFCCEC27199D1F259EE1994FFFE99F + 3: 08AEEC38E88403BB854935EB6F1464CE95B044F4B4202524 + 4: 4C9DAEDC1929E22128F2A7ED5F3556D8A6D3A8315A7B556A + 5: 764794ED9EE1F94891835CC3A361FE75C600C7951A07F450 + 6: 1A4C447A0FB8826A0881ED2E7BD89499EACA4B6C49F96060 + 7: 1396A21D8B465C6B898511DF94846588EE8E35C0095AD90A + 8: 7552EB03CE26A8F079AC96B42F556FEAEB756014B8FDE622 + 9: 835B7CCA9D9F13BA2A36CBD746E5C92D5B2D123CA2EC848E + 10: 7CF4EA88FF8B9A5A57E5ABB6B35278EE9D8653F624D662FE + 11: D588D953C6F438D077A1E302F84E25EF31AD99B9C5FC9DB4 + 12: 86EC62CF1A08CEA9171AC742E8E615B3F0C7B6FBC95DC3C8 + 13: 6EE7C51E26187F86370A26811C75136E28B0C39A113D80F8 + 14: E1326D54123BC26CF41B30F9F2BA2E732203836AF8A74273 + 15: F211E4C46862E3AC8B8E69976A705582CF6D1B34A6D342B7 + 16: 0C6160FEFE70C81C71B7465F42F070F30808CDAE448D1974 + 17: 492FC6BC091489F926F0F54CBF3E3F6C8CEC6ED14DF2DF8C + 18: FD166027ABD1BD9DBA13E3908D16C403E1691FF173328CA4 + 19: 28D99C64CDFFAC1E6F7B33C8E675E49749CE835A177A1C63 + 20: FD7BD55BC2A684F4875C811143A2997356AA87A300345843 + 21: DB8968E787BF65C00992ED9DDE974EA71BA947395111FFB3 + 22: 4C31B2FA4E6F7F40DECA589F85BB69BFAD1815A73CF9EB23 + 23: B4D8D7FCB314942F171F85EA0953F7816DA9F07D72AF48B5 + 24: 9A6A70BAD76203A7A1F64D1EE34375EC8BCB21810ECE0B68 + 25: D21D7E5EF6F1579C84428AB5D574468933BA037C9B0C34B6 + 26: 3C5292C87B24626241693F0EBE20A96800905691C5945E65 + 27: 350BEEC075258BA7FE0314E6803152B021570F067AE0D4D4 + 28: 6881F892886F9D66E68B937BB3A71FF5CB064611C722996E + 29: 07831F1B2D00108386339F192729687B2F57B9DAB2B1210B + 30: 38DE8DE8398EEC32939A239BC0198B0CFB18D12E4F2A3023 + 31: 5B683578F81867054089AE2E1B20E02B3BD92334CBB01FA9 + 32: E30A80BE07651BA17E2DF0D43A583A9DB268DFF3AB7393ED + 33: 42341B1EC4F61E90571188F5599FBA9ACF884B1E15694921 + 34: 7D98297D65F5FEA85CB967F22AE0707E03F305BF1D2249DD + 35: BC8EE5CE0FA8F9E6694406009EC9358BC420B7E5DE07B6F8 + 36: B8095DE6770CB4CC2127FA672F93F39CA4AF0CCBB9805DDB + 37: 20C0E981DF1B763B6BB47D43F66765AD434127C1FC55F829 + 38: 59795328D40D2CE6CFDED8DD5089F2D5B796C9438E7646CA + 39: 0789CAB229AD54416C82CA5A2E667EC7CE66019FCACF766D + 40: F7C81B1AE705019FF9A9905972AFD72484A70E11FB81B278 + 41: E72F52644BF5EE59BE87DF692EF0070D095115B7664BB53A + 42: B9A5DD984358D0B0F3C2781BA60E9BD3473C1C89C7982F23 + 43: F7BA22269249759F1A87AEA0A125D4DF9B58E93714449008 + 44: 5D2257317F8978576CD7D2CCD346E861A59FE949F74A3D82 + 45: 199D8D5B0B5C5B61E046F50E0E389DA6F19CB3A7A37C8588 + 46: F489CC6CB2D3E9F741D6C9008265CCA97E7E54D62F5EB85F + 47: A5E7CB0787EB7E62A9CFD8486390A6628C9876654B9E85E4 + 48: 22FA78EA17F0D29E16276C70A564D234BC4ECA7302301528 + 49: 4422534FB9EEC601CE7662345D6B6FF932E54BB0483C2F62 + 50: 5D2E2B90B460D393F36BF32B2F491E224EF388FA72A48501 + 51: EA5287BCBB856BF04FC785541079087CE24783E9310F3090 + 52: DEDA3920899FA69F913AE50A4F0D7119C9D3CE8F4E6D5BB2 + 53: B2F55D8EA64C9842BFEA4FADFE616664CD44C57D53998C58 + 54: 3D2C72F26188E1EF5C0F0FC8B541224066C4DF455FEE78FF + 55: 50BB36BD8A8D97E4D6CA78DDCDAD0690FBBC93DC9A66BF18 + 56: 48140E192FF8AB74FC22676AAAA186C1A7E2FA0166E986AC + 57: 40AFD540C40EE7E598D26AE3FE5A47939299B5DD46B0B4FE + 58: CEBBBD763B077342BA16D4B20412C9EDE0F0508ABCE3501B + 59: 0FE4DFE539160F5924C324B8B43DACB4F220195D286C6FA1 + 60: A06D135075F943CEE74AAB1B8DE08B772055551B1E73ED48 + 61: D4E1B5EBBDA5CDA5040DD697BB96DD702C6730CFCC012992 + 62: BD5E77B67B42C507C4912130C8880A9DBD66431DCA0C0038 + 63: D81F583A9B4DD1F48028CA602CC0F131D60561FA34F7B3B4 + 64: A41F0481EE52842CDF676177F8E43BC1F1B00A5682C63E15 + 65: CDB29E274ABEB20EECC8378D5BD806997502E4271AB56708 + 66: B8366ABD45565BB3D26CE46B6F419F74B34851863FF4C336 + 67: 5AD2C193D6D51C9C7E56C5BFF55C1D61E045366B51E7F619 + 68: 9948E3AB7D121B15A6CA8DFDF4EE5377C957F0DE891C3575 + 69: 095676D61096853635128A80570BD1CE803AC7249C0A0F57 + 70: 354F4CCC1E5112770B2AB035AE07200A6CDC0280AD088AFB + 71: A8723395E80BED25DFE8F9ACEDA942A77D225D00440302D2 + 72: 0D2BCE0F8CF396FD8277C8BD9B19D54965308D3ED04D2F27 + 73: 54B1939E9944F499798B3DCE3479AC315F2C42A1EF231984 + 74: 5CFF726EE4B2596240E6CBBC66D7C737A4D12A702B40E81E + 75: 82996D7F3F27B473BDA647BBBA7230DF217288F2D1A38B99 + 76: CB95F63E0E7A2EC4F26E94B81A3C8C757E04EEEAB35A8C2A + 77: 057DEDF45207EA885A0BAC5B64240DD21CB9D99CD8F38FEA + 78: 27DCDD1ABA459506EF98E5C8D567692264C4153F91FDB269 + 79: 911C83660F7EE8CFB5F54890AE98CCA36C4C12B8CC771DF8 + 80: 67CD07209988C517FAEE01E64AC4B5CF261B6035069508FA + 81: D9A40C407E2BA852684770A5EB08D8502DFD264F2DE5A5FC + 82: 9AAC50A2BCFD74BE3DF85237478AAA833484FA3DF912A3AC + 83: 38078488F6183B5A94B655F24212FC9769450D93986C9208 + 84: 2EFFCBFA4CCCAFCA66BF8B368FB1FEFAC280C20416BB90EC + 85: D626FD6D285C49F20E99B88B9F82640D93D9E765CA55B5B0 + 86: B1DD178943B26AA241D34031D3128344C6955F6A942CC5D3 + 87: DA0C850E2067F9FDAE433C1230E0F629700FC8896ADDBDE9 + 88: 58E393E353BD7DF75A591904AA99526E94FA45C98D095E21 + 89: 323D0E04D239BD70192B2ACCB9ACF06E2F8C3B07565893AE + 90: F9C4147C6921640C097534BB08020540B420AD569D03665B + 91: 5171DB964AC815B3A6D058419FD47833DDAED71039966E6D + 92: E7DC7C574AFC2C9A59E46CB8ADBD03330A5321B237DF7899 + 93: 97074CDA9FF8D40B0501E9F632ED7335D6A7926101A34C0C + 94: BDDCD4D007DE39680B80F9AF9803A9F21C836EA971250CD4 + 95: 0DBFF45E3155098D4B4C13815FB461D3C4BE41E9E1A68757 + 96: FC16CB95478E4D23A7AD15CCAE3C24BBB3D0FBDC8A00A144 + 97: 93A7CB506481D6A72EAB14A2BA544F8631542B55903CCAAE + 98: 9CC1FFA19736AB6EB36EB4A2C1624FCB6913B255D2346795 + 99: CE3526A088FFEDEA4345AB221707848823B16DADD19AB487 +100: 1E1D790323586DB8A306EDCCAC8C64A6F29A36F772B8D61D +101: 8C403515F2B9014E9519EC04769ACCF23E522D3E22DE7F41 +102: 6B6A634607634804988301240CA5AB029A9E86E51281D64E +103: C7C3483CC8E6B58520B554259EB08866AA7980B53FFB6B86 +104: 96E429611C9E411321947469E2095CD9B0EF29578030E40F +105: 5C5A7F2B7F1F9BCE730BE2779304A443188FD3B31DD2BF19 +106: 70933F999325353277E0AA1F543B5CBED3F28DAF4FC70A57 +107: 5CD6D136FDDF4AE9CE42F008301FB6647096D5007E79973F +108: 1162BA742AD199AC17FC707285301A82BA9CB12C09BA229D +109: C36615F6D5E29E6CABB7EBC44A6D3F7B024DAFBD338FEFFA +110: C29FEF051D1606CEFCE3417BD571CB9188BBF0FA8AB98679 +111: F925144EDDD27244E19E4B6E433F312C6CDE43EF4F9B84B5 +112: C4230A59E54A34D0709F3F1DB02C18EC8AA270078DE424D5 +113: EB1699CAEC36681CCF8A9144DFB5050566042977D15FD1F9 +114: 9FBF0D9B2DD9A6E87240E538590E9799B76E22604D22AB75 +115: 2657EA06D69A78A5895A9169F849B3DE111B31E5673A8E17 +116: D1F9E1BA4F4E52CDAAFC388FA4C366EF4BD5F440608D86B0 +117: 049196BFFD9F77175FA936066C3119293EAB79D1E0028C8F +118: 9CC1BD2CADDEC1D82FFAFA7031F2E5C9B6765CF1727A0ACB +119: ED00438670D68A70CE2E0729997CC9648947EEA35809B8C7 +120: A520A0089BC16C84CB8E05425B330C6D261108EE3049FACF +121: A55B470483E547D2752EDC3C4FDCF3B4C48A1990AD857941 +122: 46A78E772C533EC8EDA60EB4A127FCEBD35E7D0E7F183241 +123: 5EB9A774124D571FCCC83D1F36C603D9C387390DFB3928B2 +124: E904066FC77F73CA41166297A8FC631FF59634B659F0AED0 +125: B85B66AEF7D9904356F1CAA5583757D1D69EEBB8AB1D1420 +126: 6639F85214BC798D71B757FCD480CB78D325881781A3A073 +127: C5B72BBE80917B55036A9AD6908D59293C49373F0BDD104B +128: C0BD695F6B9B42DAB543C31BA73C9497A6AA6419A007A9F6 + +HMAC-md2 + 0: D39AD9DDE006587A8BE949B11B9288F8 + 1: FCB21B5348C95E8A8DCBEE50A80302CA + 2: 2F26B6ACCD0E03FE9B21A1B0E75FF665 + 3: 17CF85D985D0D85F545897CD42C6EFE5 + 4: 1537A6943B4F5AC1272E4161225D987B + 5: 83E17165D62CA6E4B9ED67DF1E599954 + 6: 7A3195C863DFF86A98968F254E128E61 + 7: BD05057AEBFCB92FA4B07456085EC6C2 + 8: 23AC0D307BFC2E87760F8BDB21851DF8 + 9: 2CD26A2F2994106A375BEB0433575BDE + 10: 1F63BFC44FDBE9A966CD90DF82265EFD + 11: 72735FAADC3819CC24CFCE1D589BA311 + 12: 28B589C3C8078B8FFEF1C8297E33C1E6 + 13: 70A6DC014CAD2752931A47C0879D2371 + 14: 81694317A37FFBA816504974F38B4829 + 15: 72F26208B3051F1B938EA7E03DD8C107 + 16: F945F57FE0696A4C81EC59AE69384FAB + 17: 54D8DFCEE33969486956698495B4BFD0 + 18: 508B82F88A234E753A9E305E15A14D82 + 19: 527D77D2AB25131693B02F653ACBD90E + 20: 4868AC540FCC3A896D5A89F7A0444D36 + 21: 6189807C5FDDDD68D20356ADF3B90DC2 + 22: 0356362F2BC4206F2B930C4282213758 + 23: 2F59956F19B3CAD687C66C4EC3CC916D + 24: E30CEFBDA3FA1A8EDDE3B72614ADDEDF + 25: 33E0E6BFCBC9581BBCDF13F4D3F26724 + 26: B11C6476F9775219A9F18B5E88857790 + 27: 49C7A9D7F56344BD405E53BE927E3A58 + 28: 99A06874B0F0CA45C9F29E05D213195F + 29: D21A60A18F061FC453AD5AC2A519071A + 30: 2F735E82090144C036E3D12DEF2E0030 + 31: F9539EAC81BBCD0069A31E2A3C43769D + 32: EDCAA9C85A614AB6A620B25AF955D66A + +HMAC-md4 + 0: 752E874F35085E497D5032112CC65131 + 1: 6B2CAAEE210F970AB481D6D8EE753114 + 2: 2162A41522C2DB0B8AF1F0C712C19A22 + 3: 7C2106C3CB687F35FE2658BEEFB497A5 + 4: 3715333CA3EB74A15B4B1802A1A78921 + 5: 403D9A691A130AFFFB81A655AAE1D956 + 6: E697C3CB42716CA1973DE0D15486068E + 7: 99676F34E42C61E396F0E76BCB77BEAB + 8: A2B2CE8CF8AC151C5556A36D58894C61 + 9: B8614BFF1DAAEA90BF319F333024976C + 10: B8759E8B97DFCBB2DB94D8CBE2C96B20 + 11: CFFE6119EB0C649831459339C1B0C82A + 12: B2FC0DBA9C4830CA66423728599D3660 + 13: 454749F1DE579F1918FF046FC1CAE7F6 + 14: CC625178FEFD46481B7D02618AF6194E + 15: C26D523EFCC42C4AF7EEC2EA4B45B719 + 16: C352DA2D077FA3F493A5CE0E9A79CB87 + 17: 570DDE9FD220F59867F17484605D2061 + 18: FF5954A163CBA61CD3C8424CC71682C8 + 19: 1240D12E3D6C07F6FE1CD595C847C038 + 20: E87A4D7958C43CA71791B13E16301036 + 21: B2CEDE4A15F8D64C53D243F8C5763C05 + 22: 54A9E9EAE155E7AFA6FC8A7E05D7FA9B + 23: DF0E79F27CE25E56ABCFF5E74D1212CA + 24: D9BE454A95E5D9127990577F7EB7183E + 25: 26F9221A8B854767861BF0281303B89E + 26: 92BD4CC81A673B254A4AB493864BB014 + 27: EBC3851E0AD28BE9876BEFD6B0A88B44 + 28: 1134BC8A40E1D2FB038B67548AC2040B + 29: 954700135C4E7F232337C84130B43360 + 30: 8C3EF2D8F896C8D252851A1543F72493 + 31: 52817E79D2B0B3A37DC08D18D3519F92 + 32: DA661A428B9659DD59545E3B09162F8F + 33: 3FF5BB67B48F87B4B642DACCD2E4001E + 34: C674F95BB622D7B8281FFF34E9EF3E7B + 35: 3A4D25E3BCABAD8CD4918CE650EF00E9 + 36: 2D91248C51837A8B80898E2CE42CBCB4 + 37: C0B3BD2B36493F0EAF9AAFEFDC37064F + 38: 9B4723B091102B480B2B59069317F292 + 39: 0F8EABB489254491FE19AD0E328A483C + 40: 25469BD482E1405E51AA021752394C4C + 41: DF1DF50EF9D95892D08DFEFB79D6552B + 42: 707A546964CB22710482C478E58C2E0F + 43: D1E243DB14E2F946D650C811030ADE9A + 44: 11A1AEA678E98A65420747DD6CF9293F + 45: 66E735F658BD689A9F1BA0B526827CF9 + 46: 98170734E67F576CCC3D01D83965A6C9 + 47: 399D99CB7979E80F6D3B5D5BBA5871CA + 48: C26651C32EABC76289CD0843D3BCDD92 + 49: AE0F50954C90E8897BCF504592D0626C + 50: EA3AB701136862428EC326D2551F8AC8 + 51: 4AE98E5A1E6B1BA8CEAE844E34934039 + 52: 7C9826187053186DDC2760AE6FB56DC7 + 53: FE0F555B851CAD830BAC9FBB40705671 + 54: 221BB509584BCC7E10F3B4FAB2AEB1F3 + 55: DD93EAFE25EE27C6FDC2CCDE7D273267 + 56: 535472E1ECD49FAA75CC6621BE7E6210 + 57: DA4554FF7D5B289A03D195F94154AF47 + 58: F15A3F547B5A3844BFF713CBCEF701A1 + 59: 279DE06FD5644C520BADD3B97D96274D + 60: B933E929073492EC1E2AEB78071C7B83 + 61: D1DA2335654AB4CEBAE5C2E78CF27553 + 62: 06FC50285F4BA5C8B5A478E9C02D6434 + 63: DB66A5D55224DDB50337B7FEF9A808A7 + 64: ECFCD0385FB49553EC89DD94AB084D23 + 65: 4187B0B79E6CB916F747B857AB2F75D3 + 66: E03E14F5E00B2DFC0614308608B929B9 + 67: 5F61FC3005167EB3256DB549DA8BA562 + 68: 21A4D14DF8E934A858569D8BA7F151E8 + 69: 5955DDA4CEF16ABADE2B551841C69B8B + 70: 8E77066A973B60DF64C27DBB93EF204A + 71: 2101EE9DC8221FF17D9D887FC39F41BA + 72: 6574A9DE32B7A673B5BA20FF18EF8C93 + 73: F571B14C9F5C5C1858D48AA944A13050 + 74: 0BA4BE0A5E853D07F79B2D29BCF046B5 + 75: F240C8C38D71131F510369D79FA32208 + 76: 920C294DE37C28803FF3C49A4135CD65 + 77: 38796D25822AD8F2AB4D64E4A65626A0 + 78: 65A203170FDF794397FD1090E318C5DA + 79: 965A767FE4A75BEECE26BAA79D816AD7 + 80: 0F4B30947B790C47924657648FA1D88C + 81: 74B05F7B7D006F7DDAB31DAE251C3BB3 + 82: 61B0366B57A8F46C2F6C16F935DA768F + 83: D4CB13CA922B542980F854C9780A1951 + 84: 039B2F23A1CE410FF4696D9C35C40C08 + 85: 2D734E28F995C2AA2A7AE2412EB99A10 + 86: 1A55FE47703ECDBE446033F492412812 + 87: 6AF4CED86D0181D6E99EE6AE57F295EC + 88: 69C239A875E0352D20BCFBCF8D5CA19F + 89: 62723FBBF0AC6F397438589AF06625A1 + 90: 424EC9353901795251AEF7D7BCFEB8BE + 91: 9BBE4ED6C8BD14F85BA86E553B1B8152 + 92: D7840AA82F788B7D58712E29003D1239 + 93: 4AA55512DCAF770FE4D9428FB318B0B0 + 94: D040BA08BEDFFB20D2C499FEB35EE12A + 95: 0F295EDEFC85546547860B7F7CDFB1AE + 96: 720FCD871B7D8824EE6A7DE9FF1A62BE + 97: 2FE3AD14E24C441C36186673A0D60767 + 98: 943FD502136B66D0313951198680F746 + 99: 4EE6829F3EFFD0A87115512ED28C85BA +100: 6EE1AC28A320246CA5C37F981E22D294 +101: 36BC623D6573C3ADB164F8A6F02315AB +102: 08B3AAED34FB0A0F99C4B22714B9CEAD +103: BDCD10B66096AB992DEC5539773EAF23 +104: 6DA36A53A79FA2C68E5060C0D2D43E13 +105: A3E886199532C025074D4646113F9C23 +106: 00D67A1D2ADCA77A20441CBF593FDEE5 +107: 2E4399F5FB44FF5573B73D01C5B248E2 +108: ED22A18A8824A30B68EE0EF9907B2B91 +109: 36166824634304417BECCC9519899CDD +110: 0757DB01193BEEE90617AA8CAD0360A8 +111: F7691CBEF4ED2E9FE4EB992CB3939970 +112: 09DC2FA975CBE8CE828919957D110EC2 +113: 7DDB74DEC57AE8C318AA5CCFB53872F6 +114: A26B7DD0AA30EAAF1F4F8314AB7DF16A +115: 088855527BEBCDB67A40FEA4FDDCC061 +116: D0F8ECC0C32B7060CB6128279F57FD80 +117: DF5B79D3671CA5E5B44CD395F6FFA551 +118: DA8999EA059C463D5F05D04020EE867D +119: C0EE404DD8447AA70D3725D5634E2B53 +120: D19D1A725F5E9F0DF21871B31900CA73 +121: EC202984BE149C93CC1D440CF6D29E1F +122: 422DB7C21B1348983B75498E270FE6C1 +123: EF136334BC30C92DB9082A9654B391E4 +124: 0B3526430AE734054873B14DD696CB3E +125: 3BEB77C0F85F8C6F21790ADF30EBB812 +126: 4376F8C8EAF5A94871822DBDFBB5F88D +127: F7DEAF52378FF735B2D171B17EF573D8 +128: B4FA8DFD3AD4C88EABC8505D4901B057 + +HMAC-md5 + 0: C91E40247251F39BDFE6A7B72A5857F9 + 1: 00FF2644D0E3699F677F58ECDF57082F + 2: 1B6C2DB6819A4F023FFE21B91E284E93 + 3: 04B0ED3E73FBB9A94444FDFFAA530695 + 4: 1557A22261110DFB31ACE25936BDE45D + 5: 54C5A67A9CB4544CA66BBDA1A2B8479E + 6: F803D9E43C934545AF078FFBB34BC30B + 7: 32F56EA655DF36D845E430D637C85D17 + 8: 14BD2095F4A478C10EEBFF379DE76DD3 + 9: AAF6867B3FA01DD26312B0DFD6371A2A + 10: 0FA2A6FEFEBE7CE3C31A38400F8AB260 + 11: 54C37BE13B7333287D0E74AA9D9227F6 + 12: 385D75A58B0C95E5CDC059DB168BD1D2 + 13: E73003103ED65C08E62D46AE1E1B771A + 14: 278ED4A4EBEA1FFA5EEC874F198C0CC0 + 15: F65CE9EEA7FDB90B9CC603329D3FB9A9 + 16: 8640836944EE0009B2CC6FDC3F5C39E1 + 17: 7819A99F82BABDF060AA51AE109629DB + 18: EF26336668486C76921D1DAB67ED5673 + 19: 13ED7BC140F1496E09AD29C644586957 + 20: 5FDD337CE9C4AC8D910833FCC2BD837E + 21: E9470246ABF7CF4D37FD378738D8F763 + 22: 384A75C33EFFA12EB69187BB80DF843B + 23: 63866A5406B9EA0341032FCFD0244A4B + 24: 8042F8572C8A9B88E135ACB83EF1FD39 + 25: BD1BE6AF2D022F966F612569E191F0E9 + 26: 9F70C839533EE4C7B3CF20C6FB65C94C + 27: 800A5CE92CA4FEE6F1D353F496113873 + 28: C35E93E1E54C84C4389D2DE71E1B9846 + 29: A130EF5F91465F5A56999F450E63F4F9 + 30: 5F16564E05285A099F628245DF9A3C2A + 31: A34F7E3DF06DD84CC67E8A922240D60B + 32: 945E50753B6E6C920183822D5F280F10 + 33: 2DDD269DBCDF5C21A1C3FD540FF4ABA9 + 34: 212FE3E2CEF7DF74FC01CC2CC83119B8 + 35: D98B2930011649F16C08BC8C0178D838 + 36: E39E21026111C1EFB0C491C0FDFA841D + 37: AE46DE06C3B0D2CEC35352C95A1003F0 + 38: 5550EE50BF88C9DE5ADA34567FE044C7 + 39: 6BC486627760373EACFF508F7032BF31 + 40: AE6E0B8DBCFDCCA4B3449B57647D5AE5 + 41: 6BE5A0F140DFC4B75439630E6F9A36EE + 42: E3E4E735BFE79397D4653A6243DF1925 + 43: 68C1D9E8973A3F6B92B588469D68A2A5 + 44: 956132D512118D5F446C8CB912B924D9 + 45: DF5C2AD650B3CA7A89EBF92EE618C845 + 46: 14D375CF7E4294ED99135E4237414F01 + 47: DB966D40B447692E2D13CC0C09C1B495 + 48: 53DADCF1C6B99BD403052A1CE1ED0D14 + 49: DEC4A3C1DB8F6AA4515C512C9299C4DC + 50: 3B3A51DD83AB1DC56A7F0CBE1C71923F + 51: 03C73353B3203EF9CDB95F9DB8750AF1 + 52: ED9E15FD86D66DA2D546D2BFC55041AD + 53: 81B649338F9DB1C6E592427D38221C7C + 54: 92E170E13BF40FF65E3B4C665F222DD5 + 55: 00D5E23F5F829B21D454C4445851AB53 + 56: 39057029AF0B3F4391A7BDC6DDCE4D07 + 57: 2DEACEFA698F9CCAD5198C4E17E69A93 + 58: AD35FD52EA199E26948009DF3546D3A2 + 59: 4C42CF2CFD4D8FD9A06E3F73D02FE818 + 60: 4D7C893E4313FFF72103854463414277 + 61: 3F04E8B32AB56EAF216503E46BD7AEBE + 62: F015DDC3EEF41ECC93E944FA3577DB52 + 63: 31F77A50A2ED96ED8E4A3CE04B9DAA23 + 64: FBF481373481756E0C88978F7E0809A2 + 65: 7D8D793B287C04E7D2896D76EAA5CA15 + 66: DAC74AEBECC2385DD9D0C3147CCA1F78 + 67: F6DDE50D37B460FF5E8B4C03A0854BD5 + 68: 5710D6A54A2124E06A6DADBE9BF76119 + 69: 19DB5D13A53E57184759F33976537AA5 + 70: 848DD8D32130626FBD11B0133C2A29E3 + 71: 4F75BE04BF2F6DD85D048DB82F19C38C + 72: 4AE9436540ED24BCB5EC62977AC90789 + 73: 859D1A9FC2B795AD60F24A37EB9EF890 + 74: CD45865317FD17B652DE9F9EBBBA16B6 + 75: 52313319D395F453BA2C0A0159CF180B + 76: A7B190C0EECACCA4DFC5B45DFB324718 + 77: 23E85CAE85B50F45F7F48EE0F22FDE85 + 78: 6A80DBFF139A5345235EF76586CFCBC7 + 79: 850E638FCE5A2F3B1D1FE9C28F05EF49 + 80: 797CDC3F7E271FC9A3D0566A905D1CFE + 81: 030CE97A9A0B1D5403E253D883FCAF12 + 82: 648FFFF44E416D9DE606BA0DDB751194 + 83: FE15098E0DAC65FA8EE45CAC67121CC9 + 84: 17C90ECD390A8B41046B4C7FA0354E4F + 85: 7D149DFF5F6379B7DBF5C401DB6D2976 + 86: 8D055A4701DD51CB9D1AF8E2AE59BD21 + 87: F3481CB07B034EB4A023D00D4FDA9A86 + 88: FEB22562FFAAA9CCE5CDDA34C29E55C3 + 89: A620AA447216709D8CE5C5F23474ECF8 + 90: F25FCBB2BF7440C5E3C5B53092B8C828 + 91: DBBAE1CF60BBCA0B05EDEA0B362F0A33 + 92: E18E85BCB4633A797FAF7975CEF44B84 + 93: 1BE27EEC72C2EDE151978705C7C7DED2 + 94: A15D36C5C5BED77699838832FC225DD8 + 95: 08F31E68BFBBB420742F80B20B69BE8C + 96: 5E9B4B5B3228F533BA8EFC3C0B9AAD3D + 97: 1239BA6D941D1D8AD2ED561BF517D4B4 + 98: 5233F50218E0D097EFCC68F1536F30AE + 99: 340B47C78B003272EAA4B9D22C3B0542 +100: E7F11759FE8A897364C21767570885BB +101: 054BD6ACBFD5421C0290B0839C0A0ACC +102: CC0748F7B2CC921CF5FA019F955066C9 +103: A4DF167697949B1AEDBBA3226A334BAA +104: 29893B9776BA5E750A9FCEA37B0116AE +105: 2DC25C935F006F7965FAB3256D77004D +106: 24089811FFF2189FB9AF38651F43977D +107: 0E048569D634BF652CD8EBF859C9B69A +108: 00386B569DAB73844A708BA5B48BBAA8 +109: 8033E1AFFBE1218F81C8331343FBE5B5 +110: 9B82008A34F3847C1204ACA89F3D57D1 +111: BE1A529F88AA05A42AFC40F663E97849 +112: 5237637AA645E83B0E56A1361AB80643 +113: 15BC4405E891ADAF48FA56D4356705D5 +114: 0820087438832B63AADC479CFC88BDBF +115: B1E3BA7E96605D5FF614B1BEC1F57AC1 +116: 838A096D64E6C0DDB069DC89E4C3F839 +117: 934BCE159F3959A933C87AB497CA8D42 +118: CA501F1DE619A570DC38FDCB8B3F7722 +119: 033B27D5994A6F5D5F6800539B69E876 +120: B447FC68FEF4E3CF9290B06EB6AECAA3 +121: DD3D3F72F0F1FBCD030D839DCFEE457A +122: EE73C4C996E0150D93B3144F20FB2C1B +123: 5AF9679D2441542391C6A903FD8C1626 +124: 2BD84B87230511DAE7256B62A46AA45E +125: EB159E5694C191F7708951EBC0AAF135 +126: 60F02EFE1DAFAACF65F6664A2321B153 +127: 14E5A0E90D4420E765C4324B68174F46 +128: 09F1503BCD00E3A1B965B66B9609E998 + +HMAC-sha1 + 0: 06E8AD50FC1035823661D979E2968968CECD03D9 + 1: 0CE34DEAAD5CF1131D9528FAB8E46E12F8FE3052 + 2: 23924849643D03BBEAC71755A878A83BD83F5280 + 3: 6119DD9A7024A23F293A3B67EFA2BF1D82EC0220 + 4: 379DC76AC2D322FD8E5117CCA765391BC0E10942 + 5: 7897CC86CFF17A3F95C7AF02CCA03546F5CC2368 + 6: 1FA1EF3980E86B8DF2C8E744309381727ED10E8E + 7: 03B2B726D71DAC6A2BEE63EAA09631DA78F5958B + 8: B8CAC4C104997A547374803B5898057B3F8110A9 + 9: E165E07F8D542FB288C7D367198D0618DE3C9917 + 10: 18125F046C675F434B3C53A28C301FB2D91B5D34 + 11: FAAB993F2FEAE442D28FDBB613D2C768ED13342D + 12: B657E7EE3A65C6484D007E21484813D9AED1264C + 13: EEEC2BB7BAC158742711ED13090FA20462A5E5C0 + 14: 12367F3A4E1501D32D1731B39CD2DB2C5DF5D011 + 15: 57DD9DA36E7A4E567A2C5AE9F6230CF661855D90 + 16: E37110DDD295D93990C4531D95564E74C0EBE264 + 17: B2115C4E923EC640E5B4B507F7BC97FE700E12DD + 18: ED20C67345867AB07E9171B06C9B3B2928F43188 + 19: 6CA7DFC9F8F432DED42E4EFE9F2D70D82507802D + 20: B39EB4D2C190E0CE8FA2C994E92D18CFBCD8F736 + 21: 91BE5ABF1B35F6227772E36337F258420CF51314 + 22: EB957199EF666C6D0EACC64FC4261D11C715BB23 + 23: 2A18D8D4AB1F8C528C9D368BF5A7CFFC2168D067 + 24: D4DC370D482D82932701DF8CEAC9337682C2551B + 25: DB9665A6A26DBDE20238F04E9F1A368D26564E4F + 26: D5AE212C9E543F2656699B59DEED54CAACA9A071 + 27: BE8890F9DEC6A02AE2848D8505B6408E884E6D1A + 28: E8D9DD9FAA3080560B0EDE798B745FEE2A1E5479 + 29: E219219D2CB8C363C2687F578446ADE1C0404287 + 30: E8E7767B35ED8D0965F68272ACE61924CB044262 + 31: 1B26689C1EF55448A61DFAEF98B6E7206A9675EA + 32: FE850390864E98A17FC43C3C871383169741B46D + 33: 3F63068D536A282C53E5C003BCEEC96646CF7455 + 34: 2962C292CE247F11ACB7E1F981447C51E9BBE63C + 35: B28909A2B7B2E0E13FDCB1124B0BDC31D7D2FEDE + 36: 8DA0FC30C8322DABD67D61E82FC92351894789AC + 37: 543DAC6D449FE2DDC3201927D08695F68F832905 + 38: 371540F3092F77867F0CA9DA69318C7673F68388 + 39: 7EAF32204EA5993C87E9A12C67ADA4C85D253281 + 40: FC4994BAA05F592901085ED7DA188EC3A9BF36E3 + 41: EBFE77592EF34E81BDA05305876411484DC0744F + 42: 25F64E8F076305D6F5741EA58232F68B725B8F6E + 43: 5DBA03F7E4B4226666F0D8D5BF49FEE77951D121 + 44: 98E1D56D723DCACF227D2AC67BF2D6E7FD013497 + 45: 53550BC55A367D87416FFA25261362E7D4618DA2 + 46: B18434BCCCC5F08B35397C1A6684D60F4F3A452F + 47: FF2BF38DFC6909B46A01E055D173F67A7E456341 + 48: DAFA445432ED37FEC99059DB8A0BC528E788E95D + 49: 7FF823C570F8B4C0E483165C076AEA7B5E727632 + 50: BC4FC948AB621FE1419CF6006DC04E7D7B32FA23 + 51: 1678AFCC3FBD1063E7C82CACAD5B6A933A93091A + 52: 97DC2F9F56738FDAFFD555BF09274153FC2FD009 + 53: 74F5CB4F0900441B7AFFC278C01A3038DF3D60C8 + 54: 021F66143270C9D58F26AB193DBA81A811917CBC + 55: F486D1C8127813FEEEA8A693C4B8ECB5BB53C3A2 + 56: 8397CAB8EED5B2164FEC6BE688971DFA2138934E + 57: E4477CE9BF8CC5A4CCDE039B4E3000F1A0F4153A + 58: D6D2D1E3EE4D643AC4B38836AE54E846F99B376D + 59: 9545B2C6279371D4D928AEE24328121D43DE1E5E + 60: 947ED38EC087C4E53F417E8216408863A8EBFCB2 + 61: 32518A2326ACDE1E962B3D0D2BF950F318894E83 + 62: 5D21D368FB9D879ADC27B341D608BCF860AB14F4 + 63: E2BEDD94D565A51915B1EC6FA9DE18C62D12533A + 64: 15ABF657DB6473C9E2F017C7A2F4DBA3CE7F33DD + 65: 0C9DAF8D959DAE3B66FF8A21A94BAFC523ABC462 + 66: A36BE72B501D435CB627C4555A426C4ADAF3D666 + 67: 1C171979D67A014A0422D6C3561C817A354CF67D + 68: B75485B08ED052A1F4C3BACCE3C563DF4BA82418 + 69: 17297624219C5955B3AF81E5ED61C6A5D05BD54D + 70: 38A9AC8544F0EF24A623433C05E7F068430DA13E + 71: 1E9EEEAD73E736D7B4F5ABB87BA0FABA623FB2E5 + 72: 4B9D59879EAC80E4DAB3537E9CA9A877F7FAE669 + 73: 7F76F2F875B2674B826C18B118942FBF1E75BE55 + 74: 1716A7804A9A5ABC9E737BDF5189F2784CE4F54B + 75: 168027EDF2A2641F364AF5DF1CB277A6E944EA32 + 76: FBC67DED8C1A1BEBBBC974E4787D2BA3205F2B1B + 77: 33DD26C53F3914FECF26D287E70E85D6971C3C41 + 78: 97906268286CD38E9C7A2FAF68A973143D389B2F + 79: 45C55948D3E062F8612EC98FEE91143AB17BCFC8 + 80: AE1337C129DF65513480E57E2A82B595096BF50F + 81: CEC4B5351F038EBCFDA4787B5DE44ED8DA30CD36 + 82: 6156A6742D90A212A02E3A7D4D7496B11ABCFC3C + 83: 3040F072DF33EBF813DA5760C6EB433270F33E8E + 84: EE1B015C16F91442BAD83E1F5138BD5AF1EB68E7 + 85: A929C6B8FD5599D1E20D6A0865C12793FD4E19E0 + 86: C0BFB5D2D75FB9FE0231EA1FCE7BD1FDAF337EE0 + 87: AB5F421A2210B263154D4DABB8DB51F61F8047DB + 88: 1B8F5346E3F0573E9C0C9294DD55E37B999D9630 + 89: 09DAA959E5A00EDC10121F2453892117DD3963AF + 90: ACB6DA427617B5CD69C5B74599D0503B46FC9E44 + 91: 9E1BB68B50BD441FB4340DA570055BBF056F77A2 + 92: D3E0C8E0C30BCB9017E76F96EEC709BF5F269760 + 93: BE61BB1BC00A6BE1CF7EFE59C1B9467D414CF643 + 94: 19D693B52266A2833ECA2BB929FBF4FCE691A5C9 + 95: B99816886D9FE43313358D6815231E50C3B62B05 + 96: 7A73EE3F1CF18B5E2006A20BB9E098E98B6513CA + 97: DEC620F008EF65A790A7D1139ACE6E8B8EFCCA5E + 98: B6BA0EBD215CF1B35742A41EB81A269ACB67C9A4 + 99: 3A0FAAD14D3B64BE4EDB9D5109DC05DFFA7680E2 +100: 12E62CE53283B5422D3EA5D8D00BC7F0AE8A127C +101: AA36F0CC6B50AB30286BA52BCB9BB5C1BD672D62 +102: 55120C68B419FE5E12DB526D4ABFC84871E5DEC9 +103: 372BF92A9A2507509C3D3932B32444B7BE1C9BAC +104: 7AB4B04EEC091F4ADA0807DDD743609BCD898404 +105: 20CB412425E88482E7D184EFEF79577BE97BAFDA +106: DEB91399A7BFB8323BC8E6A5F4045125277C1335 +107: 6769F41624E553B3092F5E6390E4D983B851C98C +108: 716760E4F99B59E90A4F914E1FB72A6D2C4B607A +109: DA0AA5548B5C0AF0CC494F34CAB662A30372DD11 +110: 17A0E2CA5EF666EB34E2ED9C10EBC5DDCD0D9BBB +111: 1B3614AF749EE359F64F3BE3650210CC3C3498ED +112: 346E604622CF8D6B7D03B9FE74E7A684AECCA999 +113: 629E46882D214F9BD78418C2A97900B2049F1C83 +114: 765F86114E942214E099E684E76E94F95E279568 +115: 002ED578F79094B3D7E28CC3B06CD230163F1586 +116: 52CC9748778AF5C8E8B41F9B948ABCECF446BE91 +117: 9326190BF3A15A060B106B1602C7A159E287FD4C +118: 18A5DFBAE6E7C9418973D18905A8915DCEF7B95B +119: 6D25BF1E8F1244ACB6998AA7B1CB09F36662F733 +120: 5F9806C0C1A82CEA6646503F634A698100A6685D +121: C3362CE612139290492225D96AB33B2ADFF7AF1E +122: 3D42A5C1EAFC725FF0907B600443EEF70E9B827E +123: 7FF97FFC5D4F40650D7A7E857E03C5D76EDD6767 +124: 3A92F2A18E8F593E6A8287921E15E2914DF651EF +125: CDE6F2F58166285390B71640A19BD83CA605C942 +126: 21A227A8DA7A9F5D15C41354196D79FE524DE6F0 +127: EBE93AB44146621BAAB492823A74210D3E9FD35C +128: 6560BD2CDE7403083527E597C60988BB1EB21FF1 + +HMAC-sha224 + 0: 6E99E862E532E8936D78B5F02909B130AB09806B2AF02F7CB9D39D12 + 1: 1D1D08669FC34CDC5FE5621A524E7181CD5B5BAFCA3DA56D2E15FCD9 + 2: 014A21F82D0CAAD15EB74DD892187D7AD93F2BEB549A596DFF2C9AA9 + 3: 5F600F19EDED821AEED09781792F9435458A32A60FFC1B678FE2C905 + 4: 8D933E18052E7FD1F98E5E7D02384DA60F3E743801032256282AE2CA + 5: 21362A65B49C33568251CD1366EB13A4E683359855C00F3AD6710896 + 6: 1E1814B72BFB185265AF94FA622E4A1A70826C06F2BE2EFD96E4E168 + 7: 118F2E1C2F1AB8AF2BD17842FCBFAC966F5B21A81996E3CBADF76442 + 8: 2C6C72703E33A20EA0333629503EBCC41B64DB829064A5C7897C465B + 9: 794046ABC3BD8165D12C2453FFA3FC518D1A6498A48C91053BEA2966 + 10: E6C3B6E2DC215702960633C976B86B8378D7780FF884910454032C7E + 11: DE7CFF6E85D9411FBD58B28FACF72DFDAFA115614BEF3119F6527104 + 12: 11CF7495ADC07EC29EAA7B3464F772D49999A5E1832F71FCE18CF7F1 + 13: A7541E63945FCAD62D2570B015079DF0422E96075986B45772860F38 + 14: AFD3EB7EBFBA79CC68E4F6F6A2D758969B5C5C014FFB53CFF21C2841 + 15: 28D942E37CB92EDE2E6F994E9EEE2BA01077D099F3562FEF97A8CAC6 + 16: 34C7562962548AC9661759B4FC347D6A82CD47991EA06E855571CDE1 + 17: DA76FA12D69D1FDBA5E544495BBE45F620BE147B73D6AA64D3B3C298 + 18: FBF1911FA019CB7ACA20E3F93ECC0D5E8D60DCA0A1A7420C63BA1864 + 19: 565FEDE0EE20842B82D59644929C2A1A426E397B38FAA772781FE018 + 20: 7B9C2BA77B2989904F194021D308089E23F00954275AE9AD87306A31 + 21: 66CBF93ED8071FFA36B61F3AABFDBFE714C3C055B2FBDCD3CF369025 + 22: D96F10ECBFAD7FDDDF60BF1511E94869ED1D992051539E50D5F32831 + 23: 5473F93F0D979D77C3C6B9CEEB2F3DC1058D81401669EF4AEAFA17E7 + 24: 5B5A75A7D99C1B40961533C345B95FBF0AFA916D6E133967FCAA15F2 + 25: 2A1E50E18C37AB7BD928AE14C206FAC9B3E869173CA337FB9374565D + 26: BF2B241659C96007ADC25D9567947BAA740555D066636731EEAE3C97 + 27: 6E1E7B64A70B190BEEBDB9DA82C8E4B160CC73B8FFA224A6B92180B3 + 28: BE36A5F8DAE9294B3995D278CBE9273E66F04D46890B44EC55028C3B + 29: 9983C289CE2F806F41182752A753E0A890217DAF3778B3AD2ED6685E + 30: 8B0F08EDF2CBE25E8F9EE4D2948BA6BF81672BF4F509530328A8BAA2 + 31: B65FB77E6CB86E5F409EAC2F1B5A05E1910213563F816121AFA8CF14 + 32: 5D15E17C8C159EA5DF5F126B12ACE777EAB36A0082C57DF71E4D9609 + 33: DCCB3D17C8756F2546B3E5B24B1678438959D83A56524415666DAE05 + 34: D28DAB7CA715AC86BF4469D743A0005AEE0101F339350661D46A1684 + 35: E7A1CCC4B2B300457DCC64534152119390B69610C7FF9DD3A683439A + 36: 29380148DA403AD5911C7BD52C783EA97EC306F2B32BC426C4D7FD35 + 37: 56DF59CD635F025925A968591E60DF2CBAB22F98B67C78122F3CE868 + 38: C20EF10AE9CD99CBB54C94C971780E0487899D7A810FA51A6553DCF5 + 39: 5B78837F366097CAB6D31624C06B099BDC71286E3AD8873509ABF4CE + 40: 8DA09589C44E710B9F84014FE553074E72E0A86C9418EFBBE420D2C8 + 41: EEE18FA2BB5A5CD16017B4621ACC4211EF7CD60613A8C879B0AFC0D0 + 42: AD9670FCD043E6F91CE986E6F55905337248B72E7B8551AE72ED32BF + 43: 97FA4FBA4815DA49F6127C96C969574AA9543B338F93BF9171D2547E + 44: 838D5AC81EA6BACB827327E8EFE96CC2B14D92C55B40CE58F4DA181E + 45: CA99480DC8480FA07784EF02074453664DBC92257366514060F07C93 + 46: 93B0E493D272470F9F274DFE4B9DDF183B26011090E15861FA21CAF2 + 47: 770CAE487AE5890DC0B931EC17623293EFA5B22EE1ED496A37EB9FCE + 48: 6F1D5CA0446E7B82DA02847ED1761CF02D646E56FB0CAB9B120E5282 + 49: 2A8A1254F6CCC3D656397A5F2D64C266412FC5207866B073B77DBDEF + 50: E8CB788AAA965ED87FF2C7B5F3107684326DCBB0E667217E0EA62C51 + 51: 85BDB6D1486F27827D5870812BEEE2C3976E0DED4BD2F994BBEC12AA + 52: A14E0343FAD6BD78E0A8E3BCD6D0B6C83B1220FE6C89F57F44BC805C + 53: 2C60D71F2D4BEC90CF10804DCEDB9311637B34D62E9CB68B8503162A + 54: 36397D66B434BA744174DA541F080CF6582F10322C7FB1869A100141 + 55: F612E4EA307F56447112CAB5D2EBEA7D12C7C4427D9155D4085687FD + 56: 9798B420980748993BC78E3601B8AEEE2D2CF6E59799C7B07B88435E + 57: 50BED37F1EE78FAE16D178FECEC2EBE4776C8E5FC738F9506E8AF676 + 58: 2755438A9AC457B81999D9E1E479C36DD9AE1F920F5BE6D109ED7431 + 59: F3DC2238B13BA706A048253F86B79045B72EF767CF25DC62F96DAEA0 + 60: 11900A3154C4DFC49B941258A134C9201DFD280728BDB3F8BC7903F8 + 61: FC584202454DD7C9258F72A6258E42F3C2669FD138FD7AEE6200C4CB + 62: 185355C13E146EA89387C332225DF31CF114AEC0BA3A5A5B53667709 + 63: 8194DABD2F7A02DDDD7B752AB5669821519640EE3B0059FD333F3401 + 64: 2CD6946C6DB676ED1EC272AE34735A0546AFB8D996323272C39A814C + 65: B7A344BC5EFFEA97AC49894A85B96F9B570E680DFBB28C76F7F9A180 + 66: 9011B80655A9CC7964CBC4BEE1CC03074003CCCFF5DA553B289ECF6A + 67: 6BDE25371B7EA9ABE31A524E49CAAE40DB220E405463D93FC7F66904 + 68: 35694194E10D0EBCA6758099D09C99C3CAB37AFA52FC4F4361C510F3 + 69: 4E7A79F362D7AE5B1680F30E6770CA46FE6264C9FCA566718C01EF67 + 70: 9DD18D21E413AE12112AFBE16684BFD4FAED7467A2FD5904EF0B493C + 71: 7532D374B66B1E5B17EB49810DC3C04264553E4C36F4550D1E860B70 + 72: 35EB09C82A624B1E3ECD965ED8522E9572EBF26791EFA667B4DB952C + 73: B9C17DF6F2A6506FB1DFCF1A9089974C45760A438330AE7547DFE685 + 74: A7DD0267C15B36D8BD1879F879E894FB9F33F254556B87BFFEDD71A0 + 75: 68A354D120CD63A5D34EEE84B7E5E5BC1E5DF6E021F712BD4270B781 + 76: 441DC4884130D48BA134E2FBA86AF643C8EB79CD1AA4688F82E0D3DC + 77: 17A3F16DEAFDBC1DA00BD14D9C24497BE765F41E2EC79578421ED8B9 + 78: 8756A267D0CAD54BFC848FCC4D6B6C94D39CAF07831EE35324DCD35F + 79: 004EBADA70F19BAB48E6072E2090941DEDB5CC0A7B624E4BBB671382 + 80: B7F8D35CB865977423710FA1E0F939808E68ABB54BD7EB0427DA03DE + 81: F3D0AAA2F912FF95251D3CF51EBF79B940DB56839DEA8BA5872D1FDE + 82: 0835B2DC376BEAE873F1FA337D75C72FD1BF0F72A81669AA891F2722 + 83: 7CF9A7D57CADEC3F013D4BD87C00B420CBFF73670A9CBB072D18EBEB + 84: 68AC0A34930329F5AA40137987208481E34D8B9C08EF7A85AE3AB38B + 85: 00492F706D84B903D5355FDC0B68C2C33B484A95A173FDC4AC945028 + 86: 6F6C509CDCC84CE1C36AB76C9BF30E4422C90C869C164C64696AB5B7 + 87: 4C0A35D512BD0DB15915DE08FEA8E6027063A1780C104F6273CAD5C7 + 88: 27087F6425878D64A56BD5ACCC0E303F803B7208F20AEFEF75501F03 + 89: 4EF78140430EF60F3CA12AAF8132674B0DDB154F495029B4051C2A36 + 90: BCCA3153EF93AAF21CA02D235A23D3013976295E704223CB37E860BA + 91: 20CC8D4C64E09B00ABF23864BD7EDE542F5BE480AFC4B9551B301EBA + 92: ECA3F86DA00098D91F866C58558BB7B00C9E4239CF83C5A3E76291B3 + 93: 7AD9AB198858820D20373C45173D76AF8D68F829D9A250ECADEE0DA1 + 94: 3E1C202F2D589BDAB015306AD063784E5BEA48AE8D1DAF45D571D2FD + 95: 990C44330D56EBC9EDD951F8CB92D5847F4BD3C6442906F57A828FA9 + 96: C92F9FCC6220EDEF52B6F842635A83914B236862F6CCBED16F4899DE + 97: 0E41C85D5C6D625E1884EF7438DD9EBAC818AB50CC265A73165928D0 + 98: AE087D57F9CDBCDF4DD68A3E8D5BDFEC709A532A4A646CB31785506C + 99: 4CB03AEFD24C833B5350996EB261E803F6DB698FB81F37F8A5C3D891 +100: E680BD218AE972999BECDC905F4D39251ECF49B29CF0A13AF5FB09A1 +101: 64326D6B692B0A17045434BFF13282ACB91E7B690339F7FCEBCC9AE6 +102: 20CD91504AB04E2D3CD849808F2362943BECB310F4A0BF6E3BD47751 +103: 80F607E2D79E1EFB0458E47C8E5726CDB8387BC05F42D6EAE3239A20 +104: F83C023D6F539967AB24309DD28321599782ACFCFC76B77186307300 +105: 70164A250799DBE6C5BD3EDCDEDB16D2516A9FC1BBA294C49F753824 +106: 1883397C9C4C9D33FB9E1E03325EDCEA1606D7ABF86C4387DABC449E +107: 1355DFA06822CC1F216C131F2BAA92A10BBF109BA3E648419A35C0F3 +108: 9E35B9B307990B7D664B9EB7F06EFDD23037F859ACB6B96A5287A846 +109: CCCA26C8F8405FF62421558255F2DA06F73F17D1AE1763A0BF8430DB +110: B4FAE909368405206333491674559B9094DA4C48913D9EACA28AD75D +111: 3A5E7D9273F91E10545FE6861D4FC223A5EB0F7B4FBFBC9931634C25 +112: 96553CF0C5C6F6A17FEED04024FCE1D292C392E60B3595FF53007AD9 +113: CA9B79F403412F71FBC10E094B35088576EB3F7F8B5D08757D89F45B +114: CF60CC5B1822E4A12EEB3E1E5F4AA79E345D8C8FCC546D57DCC7C784 +115: 807D65C33E74DA0E2D5E3788084C61AE3E8771FDFE643D1269A7901A +116: A5418DBCA94A1F9692FFDB3F7AEED75806CD9FD47171A6B67921C0A8 +117: C2B880C9E9D78B0C397D72C8B6684276E8C22A7F4D6821DB7C998775 +118: EA447EA731673E5DEAB57012CC9E0D3A7B2443165B665822963FD6B5 +119: 0F6D50C04357DF9240802977779D7F2214FBDBAE95B6D8F59B414964 +120: A3B24B29B29BBF32A01F21FFF13F44FCAA5FED50718803AC3BAAC548 +121: E31E36C38A7F2525ECADECA047533830A9C46D609E297142AB3DACAA +122: 592FF0C399A6CC1606FA3F404DA4BF8618A4DF159CBB7E05DCD30BEB +123: EEDD6A5902091ADB8EF491F820613740DA73A160D825121912613DDB +124: 3A2FCBFCB007F45CB0EEDBDD5A765EA0CB7A142CE3C024114D6D61DC +125: 5D29E1732898854AF468BBFA5B87065BB811AF8F55C91E82E888E842 +126: FD1F646D021EF31F634EF5FB0506620686B9F7D9B5C672734CA10FDF +127: 5E43945BA9DE62C364E34CC1361FFFEE9BE8974D7CF5D2E06428916B +128: 0FF4DA564729A0E9984E15BC69B00FA2E54711573BEE3AD608F511B5 + +HMAC-sha256 + 0: D38B42096D80F45F826B44A9D5607DE72496A415D3F4A1A8C88E3BB9DA8DC1CB + 1: 12B06C3218C858558CAD1DA6FE409898C31014D66CBE4ECD47C910EC975E104D + 2: EDBEF6AA747C951F25AB6AAA0D874648CF18FFECC4C9159F8FC71E971FAC6D21 + 3: 03436338A166E9051599AB268CD74867C6159378069A9FF46FC07CAE375EDA68 + 4: 634758DF0774A587F3AC6AD7988D0965524DE24EBE4DFF07EF622BCB8DA71ACD + 5: 0C08E52C7CFF8B5F70781197069DC8F209552D241687BA0D24661CCCC28D3937 + 6: 749F473E0D934694AB9917569A61591CA50BEF18CABDED51666DF243DE879D53 + 7: B1E12CFE0273F5D27192D1A4B70EEC4DDC714B66C8BB1921C63381F78CEC5219 + 8: 1C60F13A1C539788E989BAC2EBD4F8E126EE6ED82C2E25817C63B2B633FABD33 + 9: 5643F445B2C0656A49BB3DB5088C9E2E4B2082C2B611BBA0DAE5791F2FAA5D43 + 10: C467F47251DAD4694C9C7A6758E54CEBD68FC933C7C57458020774A2A2B4288B + 11: 85C90CF2719BEBF40EF8D501FDA20C342BC406E728551BC0275ADA1747BD981F + 12: 06B72DAC895B008DA249B7B1D8A5133F09D86BF82DE2C4251BFA6C3D8C4CF03F + 13: 49EDB6714A556DF324E41A3CE5B57006E38FD7CA8B90FEEA2ACAB429204747BE + 14: 7411921D759DA0B491D6D4CC372DB79CC163F146C345B4A73D93EEB4C262A1DF + 15: 5C37FFBD1F0512AF443265B2F3E8B6D01AD9B45FF6F373D2CD0A7C6E48D03E26 + 16: 773165FD16D51E51CD8A958E548902B47BBD0A6E156C31B6FEA036F6D8C4A90C + 17: 5B4BE909754EBC8ECBBB8B5DA6298B8341B35D92E17CE7281909EBA1EF568347 + 18: C6EEF2D12F54815561EEED3426D7AA7E671E26D42384B9478D91FC6B14CC76F8 + 19: 4C9FA0575CD96BB1DEF6EA79F5EC7A1F0478E86352812F690C2C2BDB70028BCC + 20: 7F87BA45FC41EC30E76F61E4EADEC013CE2B4C49CA6FE6D2FA525F6BBD45E103 + 21: 9B8CA1D70339A0894E16CE4E76F6655ADDD3EEB598F3DD80FECC5EEEF3F638C3 + 22: E4608AEA430A638799991B748BB858C91AF58F56B226E1901D28336B30498279 + 23: AF4F9C52079B28546FBB44EEBA20C7AF0BF493D34EF6967B07CA32FC4DE25ADB + 24: FE51F3A9313EEDAAA991350AB4D1D7045D42AACF3AC7155DA3AD9A2F1DE3A73E + 25: C1F5AED9D77F85404A4B308A139D33F351B20C91A738E698BD8182F124D96C82 + 26: 3CAC12A252B93B7D724AF9119FD3C18E85E88401F93BFF42AA05711B9833B1F6 + 27: E61D4E94C212324A64B1A0C04B2237A9A1C5CC003D83EA80BCEB45452DCB42F2 + 28: D01BA47DABCE4704B6820EC0ECDBEF137B9C4ACB80DC99B7C9220CFD9F9CE363 + 29: AED502C53A8B2C76F671376CDDBD0596376B3664B917CD9C9ADBC489543D4721 + 30: 3405AFD96584C5E5963362948D112A70155877BE3B5EFD479F226B73351ABAF0 + 31: 5FA0290DC68B72B1FA27DBAF157923C706B3F52CDE9C4EE38CDA31D376B0BC0D + 32: C1391C694C985CCBA707A8C78AD05E2180AF6B4DA5BB877AAC5E2AB33B4890E2 + 33: B018E7B15F92DBEC58F767633BCA3BD0D84B6D5B9443784DC1757166D7AA1C16 + 34: 8D9E2C84967004E3957DF59D502BC11CF8C8959368117EC5DB56AC958A3E791B + 35: B0EAF9C0E869D7A304DDB30061A73C580B0A6F9D49E15442ECFBB3B5A851855B + 36: 0B48B0D8C3ACF7B4F9ECF8E46563C921B1B6720B6C650D72DD1126B6763CD595 + 37: 8879D239EDB09F6606957D96A1F4BF37EAC0F3419881EEA79E8BF1364FB3FF6D + 38: CC663E436DE42E32EA110F9D90EB990D9151C9F06D51243D2076B0CC45361736 + 39: 732DC3B1F809E55C498C53FC75A23966CAEA16BE984F795CB1BC94D026FAB30E + 40: F1F0EEC77D97A0234D0F19B2FB12A96B6E2FF8626F79A74D4AF26CDE1344D838 + 41: 75C9D8C7344668C478D8AE6D9E2C41E336E7A2504CDD43B73CCBF78B4C05EEB1 + 42: 4B149BCA6429408B242E76C52C4D3A0A5F5437EC0AB6D24D71EB1AC5496D75BA + 43: EDB65EBEBC0411B4FDAF186033E306AD500711CCB80E770E99523BB2672A237A + 44: D1BBFF5A48346A0DFD5CFFAA7A2AF08C27F3FC2908D7A5D2F575E07CA9E72474 + 45: E8EFB6373DD3457610E57750738358A50026D2C6704A98148CDD69BFF7B70551 + 46: 8E3733B729CEB97444BCCA405044B98F45FC59BBA86444A3FC0F4DF4854B5C4D + 47: 868F3EE8F4D4DFEDC3FFAEEE1FA069F5FBB2CB818E63C28151C1566634189234 + 48: 3F5396115DC7F17AAB19A3A9779CFFCCA57DE7A7C1A42F748FEC49B7D8C2B82D + 49: DC2A5E3E176A693AD8CAE551A505729B78FBDE778B526E28953BC1A56B54840E + 50: DC91FD745E9A7A9D0B41C79B3B3939B84BDF78BEB007F9AAF8FF82084759223A + 51: E73DCF5413F17D4ECCEC813DC060EF907C2E952AF92DD247A0AE2BE798E6A40B + 52: 696B5EE4C1E1D8B60B0015EEA2389C9A35088022FFF10034D0D09FA722A2A3E6 + 53: F86C07265389512B2CE240A89EA29D61C6C79C2738FACA157B0DE43294485682 + 54: DB31CBBFD28D6F8564219911EFB748A5663E482DBA26E38634E8E27E3CF65707 + 55: 2F9675313AAB7A940AE77CA906D0342A448FDBA3F7589D14B1344D586EA157DE + 56: 7D829FD994258EF2AFDEF22C8CD5CC1D29A9A55B62847B3B6F5DB630421CF999 + 57: A6CDB9BC9AF75EA4680E895E8EDDCE76F536F7CCA571D62781A06DDB3424FA50 + 58: 1B4186A34EB07F5B3127F2BE0F3943610679DB0F6BABC7DA03B416FA577D36E2 + 59: 7B5DFF3459DC10B9B7AA2B2829094F97706DB5B2F133B8BF9F48D90253D68359 + 60: 2ABB68160300028BBF3B5A414970D11DF4FD6F4B4A35029DEF8492ADFB19A480 + 61: B1B13ABF9D20C42E755D63EC63C016126259C8A6C3F9AB3F0F6AC5D0BD44ECA2 + 62: 9ADDD17E5CF407CDBB12E5E52A50CE134F1B48A2A2AF90D7308344FB5A70485F + 63: 6A4C06DF40BA515C56476471D4A94F87A2B91EAFF6C66510892F2F20A342B736 + 64: 555D424206C003BAD0B08BEEA76DFC81B307C79BBB6E4F15325B2ECD37E04423 + 65: 8A58733E0B990D0D82F93F77DF36E30DCFD03B3181B73C544BB097A3A73B6AC9 + 66: 6FCCCCA4172E30A281A702E36E7BCA07370D4B57272385077A44D5F7933DD2FC + 67: 3B1A91E49AF88B1832F8E91109C7CC5DBEE2847D9ACD2A57404DBB565480AC75 + 68: 69584075C278763CB0B09D4C9E15E9300A191BF99907049F14EC8DE24D86C121 + 69: 2EE24340D13E68B10B95C3F77D55027F98BDE6BA5328D0C02CF89965687C062B + 70: C04B37F5932F427D40E21EEAB7C9594B16BFCF4F5FE2BF175CD63C62F2CEEAA2 + 71: 058E1AC8971ADD2617A4BF7D02B46A8B74A4D52B25643DF9729A1E7DF6CCC86F + 72: 18001F246ABC760197482E25F3AC64B14A795E55B41B505D6027261BFDE7C52C + 73: 4AEAAED524B173E08E54A83E2D9A8B8824E6E2F1B89203D698E9BCE7C3242F8F + 74: 7D82CFB1D7427302889CADBA23A99154CBAC0C9ADEC94EAF29EB07DC86B0B7E2 + 75: 18D42E92BA532A409CEDA8E3A07E751B430800827F5A9F14D93E3ED231BA08AF + 76: 8CFBA378D8595372DCE5D9A6E726C23512F84C0C1EC3C66ADF6B6C55DF63936A + 77: DE1A6E280A9054C91B826785928F37A16E1D2A9A3CEC831185B26D2B8EDE158C + 78: 920C40B4204C7F3D4775176BD245BA0276604C568B3C29943C9AEF1A1C93428A + 79: 935BB39E5FBCE5C4A15AC2A854475578CF80308E531CA86818DABE69BED8824A + 80: D608E561471CC09EC0865C826242CA26AA1C90BDF1625E1A38B96E3EE0CC5F04 + 81: EFE2A8D806A1A71596A05A2F5F48D18CFD4A742247B04E8089FAB27291A8DD50 + 82: 80235BE35DDEA5D49F124D8BE3D143F87CCBA7D0608C7E2CABBAAB01BB95E477 + 83: E9410E0DC14F3BE36A49A5CA673C12E18CBE4F0817E0C1CBD2069349F8A09BBB + 84: B2042A81A36F27B4CB96DBB52A61F701A815869FF5AA0CDCAD0327E1ED1C2F22 + 85: E9E5A9501B24952DCFBB9D59CF95A9A9E6A27FB7315EB472D1E2B7F523D06D42 + 86: 99193B4FAFEFFC932B261EF169250B96901ABF877424FF667CC0DA0154C50498 + 87: 1D9C7F7E681D20E1E0324EFE71C8B6913FE8CA87EE52E443335115AB2C458E7F + 88: 7308DB7E2591D2342109C5084B1174F07D289FBE91472FB2D8C06DF39F826B84 + 89: 90F06ADC29070DC50A23D3F093007E273E783491A70A2F0AD6BA40E34F02518D + 90: E676DEEDC972019F10FEC24B4AEAC0A97870E924F7B1D6D3ECF91EF38A2AC544 + 91: B5DA3B40FBF373795E67A6338F9AC3AD742741F34048930D9336D429D02EE78F + 92: 6FDE20988863CE157042EE52065EEDA233BB2E6EC0464B9DCF2AAC1F3A18971F + 93: 428D4CFF477F0F0379F634D1E7C15E4CE6DA067ADC45221A860C9C3AC4235753 + 94: 9EC80B57E921DA3F81D13B65AA851F5971E4074C96E0D8B64E50A7F5089C1FC8 + 95: 9088151BEF766D0896A48EB6DCC8A09D151C3396FBF3A9FE193C5E7BF9030B01 + 96: 86D853024A762536666316F363BB867EFE25FBD03BDD28EA7522973A1A1BD95C + 97: 007104BD935B532BA4702A78C505D67B41358A61DB8069585B91B1445DC346B5 + 98: 5C5709F6202948E805FAC25C454ECFADFAC693955864494E511F0CD1FC9CFDCF + 99: 0B010F71C5323CC96D3B8DF71170968096E44969EA55B4C3DAC632D30D81D529 +100: 54621EC4F31CC7F6273601D81674612B44726B5CC4A76EAD2BBC3D32DBF62A9D +101: 28EFE1AB745BE64E5DD7286C97360FF2D287F862ADBE44380F85E1388008079F +102: 831BFA684C25542676AD52819249A10D9EF9C2505D69CC1397D0D39D08B39E5D +103: EF7922C40CD96A47C5E7AE4D958B495F1D6954EDC20596E303CFBA43190A9EFA +104: 3A0262EBC746A7C044C1DB043951F7EAC645C40F554898D3D7B2B7AAC4EBD396 +105: 1F2CFBA7275639A12DA7CD1986F920C47850DE3FE13C931618C0FAC765820ED5 +106: 7AC8913C0975101E187FDADDAC5B5EC467A25869C4E630EADBB42DD2DFE4958A +107: D386591F326C91D274FE625A667B6F9F6F7D99CF56ACB365A218F1CF8E167A70 +108: 66286CB1B61156B005CBFC94C2CAB1A6694D7F123411B8A123F2ACD821C291F2 +109: 844D1038E710690050DA737D56FD6B17C261C7BE512713E62033384B53C40902 +110: 7EF970C40080F554851277F4E950C6F378B0A3DA3CD1BE250D976162F8A4EE79 +111: 9BC20A2B67566688BCAC77FCF30259F11D9B2FD2277D033E6AAE19E36058A353 +112: 796C72D95BBA1A4341C6B0397E165DD21CFBEF55555B35C717CE33B6C6ADE490 +113: 1E6A9C1F78AFF266EF8FB25C32C1FDFB4A0F64AFFD046D257470BF6DAEF61D6D +114: 0E1AD927AD658C5E0321333AF8AE4ED69903B4F22C5DFF90AC93268507A7C86B +115: 07B7A778E2931704E7FECA284FF3B14071E255A2B824AD0A2272D21448579CEE +116: A8D810DF06368A0E825D6DB4394916E43E217BEE9303AD4096A8E1CAD37B8703 +117: 6A9C7D302CCA1EE170366F355D8F40AE3A20D28BFCB2BA163DCB68E08DACB748 +118: 40C3A8B08FF9F767491E4243D1808572FDAF1D8CD21AB47115849531513D0750 +119: F26EA6760AA80360398371855783815BCD34431E0CCEC58A34A67997ACE43CEF +120: EEA78D68A509988ED6D7E3F27FC22F3EBCD570EF0FE242A0251457EAC4C3C1F4 +121: AF977819B87F2E63C0E131DFA2A31C555AD831ADCA6DE0FC1BE48D21A1E7E666 +122: 846A75DF3691B2BF224FB0E66E360A2E8BB1DA32422190F2B319B73E6900AD42 +123: FFA997FCFABC9FCAD4B58B0EF848890FB23B974CD57FA07223037450C371B116 +124: 0028C776965A0AE5E9E70D9B833BF328BDBCD06C5A12A2F1C510911E60AA304A +125: 7FA234C59957C214A7BE8D1B909C540B48E54414EE5FD1081B4C339FD2204515 +126: A840BEEBF2C2E80AF2E4830BB26F71AEE48A9C65DE4A9425DA9F98FA3A37DD84 +127: A95332415EA29A8CA6FDB0F771E3F2262C6907DC45B0AC8BC229F6009323C3A9 +128: 8B185702392BC1E061414539546904553A62510BC2E9E045892D64DAA6B32A76 + +HMAC-sha384 + 0: 44BE81C415D283AB7A62A45188E5DAFBCB97DA606BD5B16C92C1FC36F198C0B3A714921848D5E03DF1C4849BB8310C66 + 1: C1E1E68D864F758941B87E30C262348B373F167CE4629E4117FBA208773CCC2E6C7797AE5D6BBE2ABE6BAD4DE2E1052E + 2: BB27A0F06A1BAED5AC4FC2267C36EAB663E11EC5F0FCC0BDC09B9B0E803B0ACAA2F39D2AC73DE489FC7C9AD6DE3FC9C5 + 3: 70A273A2E9E5092EF8D4C58E99734A911B7CADD48954FD518305313B0B682CFCE192018D4847375D7E311470D05D97D9 + 4: B4FAF12B325B486B67E38A855D18B45D1BF6CC60E4D00AAA6E58268F524CC1121AD3EDB64D6E0FA524F11C0F139D0BBD + 5: B509A325F561CDDC539A3A4680380759747709D428B77E69C4CFE926F65B147D92D2C83692F526EBB5CF606AD162559E + 6: 9A1E678A743BA285CE154ADBB555CFD097F5839EEB2DE4147986464C1BF032BA0D80473293467ED0A0AC59BEAE736598 + 7: 1DF214529464666002C1AF094BB36F0FB14A4923031B108C21825E8C55BF6A0BB34C9AD7D5030B2FC7C83A2CD4C79C1A + 8: 86D8BEE44CAC35CD3946321796599F20F3A41BE28F161FDA062E4440CCC16E88BC7FFC714D525A6420CDBEBDF6AE9E12 + 9: 92417595F9974B44BB11EB9200B7560FEA3382CDCB8BA4C2CC5CFDD019C2B5956D3E78D5B186633ACB765E822B3D4E90 + 10: 2E87CF886036B7A66AE6581BA0DBB9AC2A39E1C7C7594319184FF3B612A165DC02B3A7133E3AB3D29634B1CD5305A46C + 11: A5CEDD2B54657832F946BFBA14ED5106E8EB5937EAC6C5405BE5CBE7C58053514E784E3F6668C20466A242D25A44462D + 12: 74475D913659C2C304BA49DD2B39B0C7AD7D537BB2240D8611876CF5955B347694525396C43CA73951E711DA38C6976A + 13: B0AEE82D70411F1A79DD7012421BAC1202D7C3BAFFA15B4D8B868A3E6F92B513F6B026E2E8FEE45DB2AE70C15E11D19F + 14: 7D06EA64FF5B9139662FCF9318589E8FF1F783754A9116E090B0B7A981A9EF1D4C1BF582C8EF5E71A49DEA2834447287 + 15: 8F52BB9B0A2B1066AB67603C552C17E983D15114C3B9776C548D747F7E24AC782253812802EC456914444DD67C0CDD46 + 16: 9DE6587211FE4A232F01D6D20554102D24D98EC140A05303C1893F232BAA2C07C81A10C25A95A50B38E87898900BBE1F + 17: E0175EB9DB2649801EC2EEA9DE2C1E950C129CA249C14326614E0BB8C32AEE67DF1DFC6320439DAE4FCDB4B037A53868 + 18: 0606A848086DDA50D031A585103478EED0259A9167959657050F8D7DD21B4D6B62B93AEB0009B1E878EDADEFAE9B2ADB + 19: D4A45DD1A6B613E3D2D72B35E6030E1531D75AF7C3F100934CF27EE9D0E0F0C236581EC8EE74FF759D7A19C5AA6DA9E9 + 20: 3E0FD11AE4933665EF30E10035B0E686DCA837F6D6FE2D5A10B4EC30F183EDDF3558309905F028DB93323D09A3A2F3E9 + 21: DA2A204C7908FD27A29415CAE3BD16A0488FA1D42CCFA2E2F5A1EFD6F99583EC6B3B36762060F547C629B9A332585355 + 22: FFE8FFED47933CC941A8E9233C037080B9465B4F9C25DBAC790825C013545D2344930E953187C77466437BE226962F80 + 23: 69FE734D5C69F34366E5CA6B095DE91CD4DEA29AD70BEF06AFE9BB232162E6BBB1349263087212AE3AE5D74A3B060F50 + 24: EFCF1B825AF87FA5199FB3C76783CCD1769E7DC77BCF145DB76FDC622BFA2425CFFAA40E6376086B2DBF6F5D9D97A534 + 25: 98C3DC50FC08D2A87ABE3FC16871ECB820D530B453C41F83FD304D51660FD29BEC6A7D1C63E3E12B6E80E8C58CB129CC + 26: 945047CD723EF4F25AAAC4A19FDEED463EB04CCB78EA318989143298DFA70D793391BB7FCEA6BE0D79187543426AADFC + 27: 2718D89F835037C94CD6378A3806614B85365A888B48FFD08C09F0B93360C04E43B7E7A19C79BCDC5DB9F5944579AB79 + 28: F714F16238075796DD43960E17AE0EDF9990132D690F44957C3DE9EEC2773683172FDCC44ED2104320726BAA7DBDA1A7 + 29: A87A96ED8FF0E7FD1F235F070CB5F14B41B2C4438A6D7A0A39D038C74008FE9C52497CC506498414835AEA1192439379 + 30: 31B029DFA85DF545B752506E80675E617549A6725A658CA8123D8C837FB71D8C9961BBC2460D7CCE0CABBDEDACB56C37 + 31: 0B1A9DD308E5E6E65E4C60861D42B628FBDB2C2280370EFFAB736A77A8004C5ACD5269D090B652B1D8F146C1D518D288 + 32: 2A160E0B2EC7BC927FFF813A2B56AE61301AA14933C659B3398C7A0B3CA506DD00FA6F1DE9C6D47AB0FB2BF2E7B4B83F + 33: 6893C0205F3F4ACE906F2FACC97E2B1624D40997370419E5981E6041D5CF34C77EF5ABDB1AA0D3C8C3740100C2711555 + 34: 95BC8C72DC8C70ADB7CD38311292ADEB9D7BDEC6A9580EF4E11A18317CB65667D344D8D6603C044454E67F97F4DDFF40 + 35: 3DD892A4E724376814DD5A4CBE96E4317AA8AF72478D53379247E77C35461BB92CF493851FF1FCF57A6704923099DFEE + 36: 3A5DEAF967BFA3EECA3F259307991F7DBFCEC1F354DF385CF0EE8D93291721553EA954E9D6593506E9F3E330E0A02574 + 37: E00A883DCB5460AAD611603614C7214EC4A566E0580FCAB1CA4ECF1386A42DCDA746D3AE1B0D54E0B9AC1FA336FE787B + 38: F437CDEA425E7A70CB4D197C0CA01562532A7C51FFB8462B4796A4FD0A7EC880CB0E5EDDD5F703ADC179374416592256 + 39: CE69E40F5B5F2F25E0B53281BE76ECB0E5B4558292A1C1A5EC56F2CF11B01BEEB1F0BA01E6A9B3D03BEB69AE0511F320 + 40: 41AA84D15342CD0675C8C0312C024352E99914C3E01C98F969AD04CB5705E9184F3821CFC6A22D43A77C928F6DB79D8D + 41: 74001D972353BB45FF3F7F405FC727CB5D0B00431BC76A57EAF17862BD52949AF884403ED6B2A002D618EA33523DE200 + 42: 968BC28223799F1EB92F1432B6AAF5CF6953491C3F959977B065BDB800AA438CC8AA7EE1304C18999CB5ED709431CFFE + 43: D067EC03F14D2D639C4423A311EC86B3DDC3693A2CF43C259BD0358F8D0D68F41950CB705249A59072A2CE7DF155F5C0 + 44: F41EB77179934884DDB56DCF83DC90C606D0226DDF94135FF8E1E0AA56C9A90881C4C380CC0AD3BD0DA45A6352BACC05 + 45: 27BF9A98F9E2732972FE2F35ABC80AE2E5A2BC1D238B9B1D9CE605A89144EE9766987384EBDCD63533E64BEE094E4503 + 46: 166892E106BBD9D16819D9BDD3601D24C0C11860DB13799F0797F204D07DBE914A7BD286B380EFAC34DFE3C940CDD3BE + 47: 2D85DBCFC431A94F8F50132DC8C10B25001EA10AA9DF7C53AEE9E8383EAADFCECC21202EFBCA556BB4E33CC68156B190 + 48: 086007E2874E779A5EDF0E176AC1A11D241F4AD8D02AA99DF2BC1AE3E5CC4775AAA92ADFE772CEEE89D4FDF1B601D05A + 49: 2ECA3144F4F9EA0F37C2CA5943F458590A1D4D19C0ECEA6A55CDCA648C99CD457DC57EAA995042D7FBFAB598B8AFEEDF + 50: 9C1F31F5D3A589631D8B7EF89A507011736BFC328071513D64E5432D24B1BCF47EB10139B6410A3103145AF67B5B6C46 + 51: E0645EDA004D9005399A2C072ED9959E4F8905D15C57992553202A3B53BCFEA0098E6B28BE047A4B29EED7B57602C0E3 + 52: 6CE5CA92F0B1E84D7578DDB86C96A10924601A3680BAFEE5A0B27D8390B59752205EA483832ED3E9343DE7175601C03A + 53: 47F50844C897FD910C5C228DEA1EAF456882C1115AB71DB15E6832D96607CB79C8B7AD1CDDE01966FCDDAA0B0BA9F264 + 54: C0A7EFA24590833E4788BB117D3AB3CE00C84CB4820AD9FD7F03CF1CE1A8983F9906BDD138E1943D75ECD9B98D5AD8D3 + 55: D056E9F831B6DBE97FC751453B1C52C8C6C4D18A00050F5AF2427C1123706375A918656D6755A4C950F4E5B5C318CEBC + 56: 462650CE3981EDD13D0FD2E5FDEA93A9A18CF8FA74CD6142DF4707E604D1F72745D7EE08AB13AFF3A9F8D166EA90CE3E + 57: 2BA5249841412584B161063087AF9F5BAEEFD97989BF8A0455E65C94B0663410F0E1BB22EA6402E59CBC5A23F24ABBFD + 58: C3B1E4B05A7593CC315AE15F63CE8D91C4B30E0D846A97B7D8F01FAA1B6BD7C9234EB153372F6CC7799A035E22A77EF6 + 59: 1E652653B9A3CE862DBBAF2C919E86891C5C03F54ED5970E8028F8D5EFB533B9C111DFD88ACBBDE516F0D4D636F5E821 + 60: DA773D5AAC336B6266D27A03AFDF3A151FAB302E894CC1D09B6E4ECD07C4AF4BE06A2D28D01669C7557FAE8E513D01D5 + 61: 8C8FE648A29D4BA78B3E0B944597E392A31E28F98B15280E1EC0A721C9ED5E3639A6A457744CC5AABFB3600501F5054D + 62: B443DECF40A5693F67B5BF5580A665DF6EB98FA9F14A661CD50D6635E0F78FB2943731AF363839FE6DFC0B4C49F9E849 + 63: B22EC4AFEE3EA69364701E5621E453A0C3988C1E2FDA54FDB99353F285327A534F7162BC54D701652744413B9A5D4CBB + 64: 40A22B7881AE8139941540540FB37C9AF27BCB164B6D1A3BEC709730BBBB413D1F2FD6BA4A7B7EA747FF45F3ED3336C3 + 65: 246E426C57E414575DF312223272819B0F49FF94953DCB94665FFF74FEAB049AF15160706AC5F702AF66478CF2BBA5BD + 66: 184E6E6D5FB55454EEB6DBE323BF28DB8CE60C271DD0ECC8BD4D3F1C2339B7828C1515F030058FF37BD53568FEA81378 + 67: 10B23FE1616AD5609F6F6C1D9266F702C1B5E6F7FA0B3A81406B5A766E2179D082854687701318A7B46E21FA67D2404F + 68: DFCC1280C5206F99A555E291AA1DE6F0A3AE4B49916FEED4337582B91D7EF094159556B01AC87BF7A8E84F9F53595938 + 69: 91BA9A641616449084A57221647369E2E69525A30B274EE5403FE95A43D0A7C2B301B61929D89222A3A03303550521B4 + 70: 94F59A7F5E68B942A5D66D3C642A78685F3BB400F4FF971BA576DECE94A353455277632B70D06EAE38329CC2298ED792 + 71: 21A9F5C4B1290D95A1F3F051A0158F7DD8A879E7861B61CC757FB5C729FE9A8BD46BC6DCE595D20649092B31AD27433D + 72: E4246F7DE67C3A08F18852F6159F5DC9FA4C0129A9F894EB610C10F1FB8B61B1C9947D742A418F03A00A7E11ADF436F3 + 73: 8D2CE8209B8362311D99D68DC2AAE6BE4CC8E52C03A97D99D0C5C15D8E24F1D3B51738BD27BEB6E773472CD22A1225C6 + 74: 7EAAB124A3C900F33DE06B84E7831FE327FD638C4E68DC8648EB619E3C7E5736A26BCDCFD3AA6AF34EB137C6A210746A + 75: 8B60F61A1AC2C6528C8DB07B6874F19B8D474859F98AF03503B115EEB8082E19D53F63D397647BC2D4278B8C2B741D19 + 76: A48D92BA646DAFF7D0F8CBCB1D574E9C19D396A30573A7404F6196FBD7E226731C8AB05138F7B1936986DE6C1F1F7B52 + 77: 2C3ECCA6E7AF0F9587E5A03D462C98F18B8C13C039D02D2D29E06B5309EDC82052EF72C94E0A5EB7FD35827665CA2F92 + 78: C9B659AFAAEAA8778E9E4E3B725F758768963C55151A54BD9DC191E1302ABA1F1F085D5443C46441793682A8047211E1 + 79: 9A76E83A301C14AC6AB8CFB29D2CE39E0E86B335F2B20C3C889651B4E0B94C5218E910B1DAD28474251D06D12D47072A + 80: A526CFAA2EE981A9A4D0EF12A6FA363F562057BB75A218F4645BC5E9BE7CFE7EADFD87386AAE1C607D812772498ABBF6 + 81: B747819B54CDFEAA751FB9F5C22FB269151028BFBC6650BC518692944C5F4195D26AEC45C9B4C987ECF4076B3871C5CF + 82: D45968D452B5349CA43A0FDEFE4A5379381625825A27259AD9BF5A80C46CB07BF1C919FB3ACC250D73238B11C3A07D90 + 83: C0B8AB0F8C497ED9562C65091DF1D80C32C57A018B00957BF53C41DF81A2F6371FCFE82624B2E84859114152B36B6AAD + 84: 30D2BF3DA80C0F37807F042FE7B878851E0BC4093D987438FC2B993F4CC4AF6F704669938B9E30E59BF8999883639F64 + 85: BB782ACEE42930922A98F65F319089E9B4F5D2DD2374DD76035E3178DB4468A3C04F5EF878ECF9ED757DF14DD89BDD49 + 86: 157424F30A10748940BBFAFB6D99B1B06A897E7DAA4F03387E5ED03F02D39AF59F96A20E4E9F3A4C5C07C20A8FADC8D0 + 87: B9ADED711B1E1537A35AF882F1F868D964B5898E85B07F5677DBF183232F36C14AF4D9959C2108D9313F8BFB14830B02 + 88: 7C4563BAC3C05444C3682039EAF9F9EC79B96F0CD36245F584647BC444B81734D7ED4380CC1F0A2BA876020E55660BE0 + 89: 9811A4A45CB28A780C063047EC6CF94328102DEED9971DB99E11C6FBCFC046EE38C1A00F290FF64356B9A304DC0F340F + 90: 09A69D3255EB08E9B3CF7CFA73D86944CCC91DEEEFC04214F8982836726CAF006A3FD83F8FB75600CBD060ECD639C388 + 91: 52D6D0943728CD2EED671736B6B3BE801B811410992E4A3BB50AB4269EB21AB945F6A9F7036DA654A7F2785869335395 + 92: 8C0E1052EF2B06C0C20F67D92E51DFBADF3655FC6475935426AE1C88F3096628EAB9858E5470FB98A546EB11C7B752DD + 93: B21351AF8400B9756F104599BA4BB78C2904959E2B24AC3E15FD0398627E6C8D57A7F9FEED63D8638A206BC1683794A3 + 94: B9F7CFE97C79568D62B07F1EF887C4391B48CAA669AA8495B71A326B120FA49652F02EC0D53441DABA1E104AF091E0E4 + 95: 69D2D1773208CE3BF02B38A7F14910187F3476817ADCC7A1D9830C9F25F112E604AEBB95D0237AC8795DCB23ECF52927 + 96: 57A9FA7CA61FA2FDBF0BC3E3E6463901B3B26E5D9AD79DFC0CC77F79EF3AA1AE3949E7D71CF794E067D2E38E7038EDEC + 97: FEE9196A0A1199DA8697D00AC8084D6CA1F867D105EE928FFEE14E5E36BEBEDE5C79509CA5BA05E36C3F0BAFDC9A755B + 98: 0E8DAF8BA4ED614B38808B4E468CDF88EC9B148017C6BE3FE593410D37D9B50ADF0913B7844FFDCC2F1917A27A58B352 + 99: C7FD40463E26D6A21373EAE14BCB7403B127A1E23E4583B2AC727106B07B849F74C0907804AA799C05D9FF324D04B182 +100: 16E899F4850512FF3DB0FCC58FEA960831364E5FB077CD8DA3F5B3F0F50AC626601917E8355E4847A00E0A5166E786D8 +101: AF2DADB17605DB3CC471C00D63C42F75F815594C1B49D9396BCFE7ED4D4FBB1CF15B542675DE8C9FF50EF81B72FF72CE +102: 1699A1EA2CAC707205A6BFAD8DFDAF09C8D6FCDDF2BC14A9678453463AC80054627F2C39B713861734B0974F442D707D +103: 186DA71D7E913DA49D8D97101882B1282841D41CA12F514C1B2DD61543E330B751E9F97490E18A4A37FF1853EFDD757E +104: D82050038E6DF6EAE9D2D4019827025A25BC8CB15812E0ACF4B676C799A3D80ACAE5706C0FB1FF72B2C4851DC9232B7C +105: 1657C99506EC8B28AFC1684C4A9EE4970F8F426E4BB0C3FC2795CFBA82913B453C87D84AE9B32897A4CE26FF4320CF23 +106: 9834E936482592BAC2373AA64806FE0D5C8FA92143070C61E594004F0D3B8516C2A5B0244F273124E83B20FE9A2CF5D3 +107: 5C4856A82C8E6E49BB81E89C26E355AFB75EF921E579EC4B97868BE2CFB4B1D93195ABA0500D774C5365C2269FF333A7 +108: 67B88FAD5085C8BAB8E194DF73153A5B1D334431227DFC619D5CA5D5605EDC7BC95DE33512B2F5B714F46F54E1E61B0A +109: 90C6A8F36D42C5F21A89417AA04D822A53110DF1D062E0C1A6FD9AE59C6588CC1C78469B94578B6D7C05EFFAF7FEC26A +110: 817C0E7ACD548BD3733792F4F8D845D7E4B3CAA0F0EA943B51235EB82DA7C8B77A733D756E86D57EA303F34BD97BA1CE +111: 7FF397FB43DD909AB80BC381EAA4BD50B7278DBF10F39FE718B421D6C07324F398BA5B1DBAAC64137267DE2C62F19F7F +112: FAC12B732122E18DFBCF8DC7382AB1B55353134F07E07723608825C907DB05B4FDE40FE550878D971F8B0B0953C88C54 +113: 4DB0FA3C105D64A9CAE84C0B5D7AF0955F6F58717F68366935FF9F478E94D3969B1264B1F37F8F5538BF116DE29438AE +114: BA6E693A6C3C5B048FB7F232CC5E12CA71662332EBF689AD75F6F2C54715A689CB1F75525313FB8B2713909EC13EE0D3 +115: 00BA656BEA25DBA36861B92B356C3DEE0DB1C86D4503C7FEB0A88A3541A7018EA456C95224EFC46AA31CB625421BC811 +116: 812622078CA3B4F59141569A0E125B36F7CC471F76B7B65FEAA1F1F656BAB6A3CD61A4D2456E2F5109274B2090C1F4CB +117: DBDAD8926A811DD0295C31D55AE0D41672C7F22B5CAEABFDA2C1505B084AD01440E9B8FFDA4DFCFBE281222AFD547E29 +118: A32EBC13D689B31617D24E6AC03CE6FD7B1AAA2BA78CAE2E24C36A8CA7BC74ED9BD4CF6C74E3C96DEFF048FE3964F0A0 +119: 095D2C8DCF88F69DA4CC49C64B03B2A1D2C6922CE0C6EDA12642480AE0DF35152B4E4A9AB08D6642DDC313C0FA01444C +120: 578A4BFC0CA83F1B38A0D2EABE2C7D3D67436B559624B92E4FBD9241B2CA8C1AB679B503A754D5029314AAC3AF225F38 +121: 25E321E63E4AC8994FA464B3E2B687150007D83ED8D6E1B217E86B0CA0D163B0B9686E4FA2F26C1839F2D778EDCED86D +122: C761BA17FAC3CCCAF2CACE92283DC5E5B8A6571958FC59D0070FB21CABC88A80A40DCD56318988F3AEDF38AEFBB84EB2 +123: 5EDF5D71D2CF85E7ADF9C7E964FD628ACF304C4DE3483F672666A583E3D9B1D86E9E096541ADA237D69A140571F5B3B9 +124: 401702CD847ECA2BC9208F52F27D84D07B37A86CCA5C3A877F24366CDB9719DE63670E850F02CD02C6227B7214D5DDA7 +125: 362C899156DF70FA189A66DAB6DBB3CBF80B629D1E90D9ABEB007C3C5010277EA589C4D73009C81F94AFF3FFACBFCB1F +126: CA43387C71B8245B822D3085CF029004E18CEBDFC9F78C276F3559D962635601957B6D2287089AD43F3179D077F37686 +127: 4CE8504297E21812C901E77C6680529103A017553F095913CFF06AF20E3D6DE7EFE911B636DCB5791B292C60147F6473 +128: 2AC71958C77E39D4DE4DACE92FBB6A093EABD191320A5ADA7114BD201DD026567D2B799EAC78C1F084BA9FAEC2FC8BD4 +129: 87487060C273FE18A2CF1DFF222658E1B50C3BC5A3F1F4575B3A4A6EA2F42238DEB68B3A2EC6A325E3FCA504B2E20E26 +130: 4A79A1C3C798D9F26D54715108279948EAB246086EBFDF0EAC9152216C0BA3A77AADF82A230AA84A7C884063960419AA +131: DB0BA43960FA6B763202B8BDF3FE4ADA0BAD78EBB3E6E8E57C2D5640D1ED4CFB4AC18ADB1B9770DB49A4252CDD25A369 +132: EECE296E258EA3583FBCAD1CDF2B91F4D2AD1FCC1AA339D8F591F89C7ECB5EA2FA644954006F0A58F2F3BEEA1AEAF7F8 +133: 7AFD95C86517BB6050D04BF3BB1448A0608411B612A7C2A939BB44B984E361C40569E5E57AD7DACB018689C2B8E2B3A7 +134: 7FCE7894C8E8D1FB187CC35CF5758269E286427A63A522F4BC45F814B316C1DAEF981917642C50EC693F3EF4DB8E66E3 +135: F67F56C98221892F64E2AE4325CCB80C2846A43E1629D40BB50845184E9C3B66480B3E9F792389983F2FC48FD2508F09 +136: 1CD915561856936AFCC75530DFF151F49A34D0DD0030766FBC1BE47D611F10502BE86C97B91D0E8767D4F38913EEDC1A +137: 80D9CC8B1B2B883C4735B3C0C19AEDAB78A0771753EBB4688A7E584BE7366B3C181C8532FB3A8BFC484C9CB0BBC1B4F1 +138: 8ADE2B8527C994EAB0807A89CABD5B075CACFEF42381DA3CC3D702316842E25151C65A22E80885E5CD5FB5870FCE501C +139: 2B403F2188D086327C92169871FD5A7B432D2EB999FFB0F2369B2B766E799AFDC1463CF4D9941F828FE42591D6B966EE +140: 4A0C18CECC0641C28C4136D42FABD0BC27FEC27C2587FE8A57CE0D279ADAD70F80C1E812E01B26F2BF3ECDC7673C349B +141: 8906762B63651DD5948C98DBB1B39BD6095C1438B2E4CA4B5A581D451AD3EF76C8A0FADEC9C0B0036A833D8F5C13F1C3 +142: A363BF2A479F67F949AFC151C36B052062CC2CE840974BE2F5E79C0BFD7BA29008A6BFDB55B46527D17F61531C953081 +143: 4E2AC5D6EE56567902CC1E02F119E33974762C03885EB7DFF7C58ADE22E56BC384FE74BD491EFDB2E6CF4021E3016E81 +144: BDF0AFDF17F7B014A61ECE257F8C7E0B52384EB7DEF60ADE785F273851D645E5D3B4D9534C0E6097A12C3CFF5C11D42A +145: 0CDC61FF0B3D8510C319020B82C1C5AA12C7B6F257D7D4F118A5EC3CCE03C63FFD38710F8A3C621DD8D66D8BF3790B63 +146: 19E35E1E785C7A41C523F88CDCD919EDC45F63783330D9033768546CF59D10AEBC77F013057C0E41D6FD0FE77DBF914D +147: 8AFA5DF52F6581794FF014A2E1ABCB05781C7F44AE6F37112B363AB13FF01FE1E8074F14466A365374C29FEB048C5B9E +148: BC9ECD12706BE5ADBA04DCE84AD53AE1B324F99C1F5937774DFE19C5EB4D6A20982E97B8F8E4E02EED13B25B8B13E64B +149: 8D02A1E318DA1EBFD1CDDBB7280F3603AF3AFA21B3D4E0727C7CFC576F55640B7A978B179EECDB8FBE896AD38E82F12B +150: 196929CF0849022CCE9CBE4EB2DAF6E5D8014C5A25E119EFF799A82053035BFDB8B05F6C125B1DBDD4E7B393C684FB5D +151: 58808D04067FAD72BBEEE4F6A355E80A2FF76EDBB5366CA43FF358A842FBFA2F9E1AF5FF266BD2E2DAB1D286AF5BBF92 +152: 4A548031093ABA730D8D99A2C1C6EC2A986A94167CF8C1EBE83D52B34BC2068A4C95665988FA93F5246D0FBACDF85FE2 +153: ED949965036F16A0B5856EA4CF69CEDA35C653BB56FD0F0B397E73FF4884B3E679ECCB19B07D6A93504E82A1613CB87C +154: DBA644B20B01E4AC5CD0A325CB063EEF53AD77E5A9E7095C1BE0EB0E6B7CFE60BF25F38CD57F2AC055D327EB6AECC7D6 +155: CEFD6165F70D9019866374AD7AF9C73F3041B932D61A41734E39AE8AA9C7A4FBF1DCBAE9B2A4E979C64352E3CD4E1B95 +156: 732C3B457F78DED89390BC461380760FBEF3CFCB9BF42A6C86ECF120C821CAC79D4D51C71A955309E33724742FE2FA0D +157: 54803568BAE2DB4F143C78FF53B85E6A9D42EC3894FCFB39BED8EE611B36BBCBED834D366A1F797B626DFF3D83CE963C +158: 35A1858E567FC8A11B92737E369069B12502ED3F44DB50434506F2E540FE643655CBF806C06F15CF2428FB408A65C04B +159: D1F9E930418D10043D0E83096CF717B79C1C9234C741C59436F42737AC73BD39B3F4B6D6439375E0D44260131B25FDE9 +160: D5B56A1A70C47A3F88C519668097B54C989E119EE9DD5B8B34F0DBC092FE7108C9D396CFC62C9322563EE72A0E324010 +161: 1578BB76F87DB309A5D3A2229A2B346DE39ADB623836EF0561348ACA7E315C16C6E31328BC70DD0B0D7D9B7ECE076CE6 +162: F8DF4C71F3623ED00EDF8EFC4E0EC154644E21E78B06C9C5ACB980480732E17E92ACFA059BDF299BB6C8351C6CC6AFF2 +163: 090DCE25595D7770753B78C410F10E830140B23D779E0F52FC451582CDE7511A390450F8B65D7BDA77A18CD95EE3DD38 +164: 5D3A56D23BEF1324B1EAE33B8255F904F7DDF131517200A505031D41A2EC3F2AB03912DEFF6BCECBFEDCB8B948CDACA2 +165: EF712AC1E6859F70D0D2CACE7AEE120A666DF9F210512F5C94AA7FB388F1DDD913A12FF92CCD2537675EAEC870203411 +166: A0E6443505B193D89595A51BCBD47A46E1B5AEB239D68B8B18A119E5C9EA1EB8863B373F91B9F22FA944C29365406A79 +167: D97DACBF80BCC76335C187DA29FF33F6D35EA8A8925709322EF3C0F6FE35D128D9D423F911EE31F1C38E1DF36046E507 +168: 67FFCF0A9F88F84B3EE85000B2DE0B7DC12A06160FCBBB57BA291DC04E14B6DBB3CDB81A40C2EE1859956DAD097C1EE1 +169: 7AE82196B46DE3E6948D7FBC7383A6F080903D6BE6E357700A87F82A964581D375006DE35169446B447537B4F11C5702 +170: 502E0A4CF125EC0640DC7E7264D9E47300814B00D4322F2F62BC1D5F1D0D77173B0E7C2874CD59FD8E056B8F38F78D99 +171: 74FDBC4532534DBF24230ED5677A920B12E328E3D073364498D80F0CEAFBEC774EB53F28F0934F787C56AB794B60BE31 +172: 3C9BF5EEC652F40AA0ECB82A834C836E495E841D337E1299AAFC067A2049C540AABE92CAEAE02F099BC4D3A383D541B5 +173: 105AC61F2D4E586E376524C488C33521C4D49D1F95B752D27F49ACD7181E8FBBCA2E0F0B543EFC0CBD32A5EED2CC08A2 +174: 5CA49D8B554D70B3FC467604661DF8FA51D9987F2A77B13DE44D7809FE2956D21485B36F1D17B59F2261B1B40553FBE3 +175: 1DD075C696DB9B07510A0D276F8BAD12225E00515D19E3B85583BF97CF82B5FE3F685502F64D91F4FEEE1848BCD0502B +176: 11A018C4B213BC67C09370C8A3D0B720428BE71C01C6EE9EF6C9C9DA8B2E1FBAEEE42FA44EE54D0F526DCDCD3C2BB2FD +177: E188EC519C6E0B8A89DE68A7648DAC6D9F84FDAA678B431794EB4BFE077901C95FAE25CA3D39D48EA0292F3F6C35FF73 +178: FABEE0B0A02BA622931A5EB82CD63656B47A20D3C0E703D5A69AFDB92C0A7EC5CF6944D9D7A141C1255D60FF9532B089 +179: 3C8E0BB55E099CA9F6E436BB3CA39D511AB9CE5674469DF8BEA4A20193084AF8561D5130FDFFBE62193A712D7C2D4B48 +180: 914BE8F0A58082B877AF0DC077ED146CCD8245339A170B4099B146476B0A580749D01F83FB52834A033A3822D12041B9 +181: A1B31ECBF451571437DE10330A6E9AB4484576AADC4DEE0B31D9C3AFE59FC6DE028275126D7882A2C225EDFE491305E4 +182: E4DD2E805A5BDE3DCD329ED9D35CAEC2D5A97082966186118DC46BCA7AEB1EF52E0C6007CA28131790838DD8C00E96FB +183: 785B81A972DFC6A4982E0BB76F90F26DBB7BCD2D06E872304CCF6AB2D639CAD85FB29124ACE411EA4742468A6663EB2A +184: EEC3CBB5AA129C7206A32A176482C9BA24FE60E71B46F7C3C11FEF8EB57682A3732680E6541D5878CD6A715A48D75F12 +185: 254E279B7C4F17B911712BF7138E2C6933815BAB18661CB47388FEEBDCCDFFFB6AE8B4B88072B90074704EB7EC567843 +186: 9A8CC3FF0D9637220CF2B4AFC9A8A6CBA4D0ABEA6A0BAEBF151380848E92DFED8C0F0E57B6D05095EEAB0A58DFBAED13 +187: 349966E1D59BC9B32E1BEDB050354177868FC07257A3A1800F0E711AD00AE388746DB1E4591E3ABBAD8F418E1AE627DD +188: 84ED950BE54768557475E6B1A256C30F444E12340C29485832439BBB9CBD219050D184624D6282728D4AFBB98CE4BCD6 +189: 2A7CA4EF1A9356E853329D336B6E7E033F2CA13677BEA67CA669EB7C78DBDDE67F9E7D9099C68F34E07B96DE4155AFF2 +190: 7C7020B0528F1B3F76BA258836A89BD27429110F0AB730FD741FE9EA2714AF827E71B731AFD53A293328788292ACFE23 +191: 91400ABC089F8888DCB22880B87A380FEFDAF81F237D424F057E5C4C8E3C8EE4E423930C1D3D9E16199ED82996BE4232 +192: 412979E13B3D143270BB41FEBC12196B981E99BFD6687B780812F409C78A5E2DB7AE828994B60D26CA4A1F7A3A44C64B +193: 02BDD417852D9B03A37338549DFB6D765EC4CFE4C2385002848BA4D46F88053FAD2A39DFF615ECFAE0D41F02E5877251 +194: 77845BA2210971E362DC117B1BB13D7DFBA62F81EEEC7068D3CB9CD093DF535448CC357ADBF0C2394351EFB07C3E7DE7 +195: 0F43AA1739359C14BC5702322F193AF89335887F9175289933B2BB3F00A777D1D1DA74F5D45FC43AA90C9FFBB0CD580E +196: D1D9A7B995B9BFF09252566D2079121AB12B0A5ED06014994464FA1AA18CB1BD8E7D5E07E1C71E2EED9CF081A537F28B +197: 67DFFE8A168B7408B7DDBD10BDF14F4F2244FC904DEC5850F5D8302FE35AD1752BAD2DE50449F9C12182A2AAB8FBC9F6 +198: 030B5E833F6D8703BD0C5E36354387AF833F466AC812D4E1FAB6CDCD3146FFE3B0E56722D671FB85EAB22CA5CB0309BB +199: CB992B3785E51EF3A32DE88073586DB045F356F18A09329E82943E29A12B2D1490B386D8CEBF7D90FB492966989A73BE +200: A1D337D363A0BD8A0F2342351519C62318A120FAF88F9B90330845DA682261C64627B67D2F533FC48D2BE394DF8F4F61 +201: 319DF6326160C7277A3D3C65995BFB729A69B71B40C149DB1241C0B2376B4205837B5770805C86104677917EE5E5912C +202: EBABE3BCAD828A9A3D5EE05C5EBA9605A67E1ACE73AE69F20BF435C3A14AC63E43B61021CDF3FC2245A14FC14A7AB32B +203: 1723D844C0558D58EB3EEE3286C48C133C5F6C1D8CA512F2BAF1FAD7884D4FD5C3000A6756DD1E34E83DD066AD2BEBE2 +204: B048BED188BFFB8FF1B14CAA0BACE82605AEB1C666283FB7A6FDF216742F9F64A89C50B9852B8119B5FAEFE64615C241 +205: 7FC6E8633CB9B16F553ECA3C75C0C0F7B610010853EFC94AC330D36977EA8722B970DC264D5FC4D69F39105E7AA0EE3C +206: BBC6F0E0158B6DD549C5BADE0FDFE415747F1FA2D2A85CC9DB758F34998FBC8C8D99D573CD948EC768540B363D67C4F0 +207: 5073FA9E162BE773AF5BA1CE5E6FC21F2F0F902C80F09BBC3AECAA6CB1867DAE4DC011D1DB987642949E8095909CB984 +208: A641BB0E1D20D5DB0C5CB33D35B73ED83216F2F5DDD5234A0BAA3B209A39E015B7245C40F9F372E618EC73450487B54C +209: 948806B7335EDCC7C4BBE751844DF5717457B223C7A3B81B57AB3A949D0A726BAACFBA228BF6C2CF94E942F9B2F1A7AA +210: 0451CD5EEA206D50A7897F495D648425CA333158C126C4DBA44ADC06447A51D3C7BF2D4D81779535CAE29792C7FE5650 +211: B4227FEE0A32009D60C9C30033C12B7143D4C7A1C25F39F3E4A076BC4943992AD299DEB2C15E27DF867BF948DA27C009 +212: DAAEA18FA433CF3E117F2D43303139D3F1D8C3BB8AE8EFB30B44B9D5D4BD4E553B9B6EB9019CC4E1AE5D0DBB6C23A102 +213: 4434C818BCCFD92189A3A466D2757AE2655BF0D6CD954706C85220A33B95B184EB560FF3CDDCC4DF557E427E60F9FBFC +214: 6AA3B44FA507B6D704A66B4D7F26CBAAB2B400C6BE0A8B61B50EE617A16C2C09CB36E72FC309C6E4DB24961B1785CE3B +215: 63AE9C02B96B4BC456FE5CB9BA35366DD69E78DC9CEEC376C6780703883D609333D45CA577A982A177515674B975B658 +216: 3B5DD4CCBE8CDF32009CE29FEE4F6EC7CCB1471A3F8E9BC9A35E8CC37F6C56957B757DA4C3204F9014977B93F9E30DCB +217: 04A6528CDE6BB9F425132CCD4AEA1EC6CEA482249E5F3782B000FB071A4EB2434597A7FCE2A364A9BC9E0643A8403DDD +218: 69275CA1F9F102925165A568C1F152D25DF8820A6F34595C4359159070052FED260C55FFFAEA2116AEE7A63DDBAA0160 +219: 584697C23C63904709BEA89F055AC592DF48034F908C9F06C706A51C3F6BE5F0F2A5B953AC2119FBC0855B785326C06D +220: 04221F0A6C4799F9CEA3C1D9E65B9F77F77C613FD114135DB019D8C497B8899513AA4B499E720CC11AECADD1AC071DBC +221: C7B878613C2F2ED10C8EA413970B124838F11F0414AEC89A3825DDC588629A8049E82B461A23F25C4F93E5BD11C184AC +222: 1891E7A51768E05BB1D03A1EC1B844C7C8EF77C433F700175998B2D8E2EEEEC4618F00003793C5873655E093048B674E +223: ADD2B81466BC727AC85DBE258B566C4DB56F6F7D81D7A4E43F86C125F2AB2E08C648E628B9CFE440F8BC06FD5D861D3C +224: B3684BEBA86D275745CEAF0922473CA581CEB7371C5747EB87B407468006BA50D69F9BD8BB7F214185CD0D0C548C5432 +225: 0C783882FC826917619C07FD03FFC46DE6CD87BDFA87F1FB872989489C32FE74E8C5660748E1E8E9AE19C68B075B0EBA +226: DF52553B4F7BD148574BB47F61BF8F7B2FDBE5B6963E29CD559F236BAAFC3DFD6A7EB5EC9968E0C2B3A453F982F16AAC +227: 45102671440B04027B1F9966C1013AA351CAA3F3CF42C4D98F5B2D030FF37836E9F5865421D7DC8B037644FE53C6B280 +228: 247396BF60C0FBA27B245CFCA061D1F6EC50CB87CEE54E8C4A7186A07745D255E4EF9457C0A329AC9E3FC913DF86A4CA +229: ACC5998C464A26C1719E9B17E1B8F5E3657FF0364C46FE87154DCD1C95A84734214D2B81CEA8DDBA501975281EF4EA9D +230: 163F5AE385500C1A6EA212D6925E48CE2189DB1DD47F7F2D2D889272D17449A1C33EB3970A5982EF2FE5F1255367C33E +231: E8BBFF2C5CDA88CB60BEADB8D04B88795B0CCD89057CEFF1FF588A169363AD453564FE7528D1FB7148845363C3E17824 +232: 5F8671B7C62A5EE9717FF80EC2AA0A03E557A2840C0FD0B59027AFC834C051CC9B7BEFFDEE3478165DB9CA303E2D874C +233: E0E4DE22993E4A6B4884163C678A23AD6349DCD4C16B9041D01F8B3FAB1E8D8B07DA78BFEB57F8C235C173B2D238C4B7 +234: AD6F58BFA15FD0DF1191171F86F2B4C8729FE407128ADB4FAC3404E15C04752F2A4B5F4BDD488378C56FF8D85A38E583 +235: 90C5A75642A1811D8FC1ECB84AF4904C6D9E613353C1B9ED0FCA37D20974CC2425052E2300738824BECFDB981AFF06FD +236: EF73A9E6D23CE43508400163CE6F3E8F7076CEFB94E549EB6116C2557F740D66A1727AD51CA645A7F9022912058FD262 +237: 99FA424E413A57DB2B1B851098FAB1B6D3337AC7FA85709121F0BBDAFB3EE291F44092EA7EB28E9BF0EA0691AA531BFC +238: A1E0A088A279E750CEC429D0AE320B638ECBF9EE387C65C66D2231C884D844DCD438D4D4E052B8D76998A444E0666629 +239: 0657FBA0E7A73F7525505235120C44AAC6D37CE974FF23F52872D6ADA50DA022D417D8DAE40E80336846E8CE211D5AC5 +240: A72ED7917F0F9D0DD888DAB10AF9091A380F518D5DAFC005D1EBF0013F57A7452AEBA98913F509509A02665F332EE255 +241: 74CC959DC6CFB31CFBBE9CE8ABF32D1629E0F578F9199B9A2E90889A2F032919923142AB32E1DEE0A53ADAFAEFE0EBF2 +242: 9E4D463D2E3DC2B98CBA40EF84B022A76D01926D8DE6AC05F995C07C5F07D01742C5410B240240459280D7D278E8BFEC +243: 0D74C427EE654E4790C7118272998C131337D0D0555B68F488AC7CB8DE3CFB461B0248E78340D74B828C80CA28ADF478 +244: 952F274ECBC66B68EA74CC8534A5D7EDB219B755C91266E5A779EC22F52DD2EFA9C447DD311E71C90E1419B4B2F3DAE0 +245: B845B0A56AFEC2FB399559FA77C4835D2BC4C3F8D62BEB1C45462BAC661D2E553B43D0A86073F0BA5AB85B129ED20B1C +246: E65B931E25101224A6933FAAE7DFCF22FE84759937F5F3BDAA90D9C8E8ECD0BFA1777B99A77E3232E38917F9432CCBFC +247: 4F69FE2CB97E9233BC873D153ED9D61B88C20FA333BD4137A532F4F703A323FAC6F8675D8B44EF5FAD2314894F7D60B6 +248: B36F43A6DD2917A1AA0C6B566599C274701BDF03A5B7DC65E5E9F0ACF882786F07989B106A50D0D89629136EA0E26EB1 +249: 8DB7B80635C53DAEF891B777850487E72B67F57576EB05F708786F7665F1FDC2A78F441636569D1E84058A43F0243A1A +250: 14A43F1882AE0214F56819F4AE9276499D39DB4A4A939275DDDCDDD80CB6B70999E6178C4EF295E69A807EE5FDBF9AFD +251: E5AA44CEA67F0821D4ECBC981F258837A243FD901653D484BE5C24EB7F08E0BF33525EE3DDF9A89E1263A853485B5A02 +252: 0191F0505CE5512FA08500BDC090570F0C430161595894528FE7AE5DAD8726E110B0676181A228A7A90E21B7B055361A +253: 76FA1230972E771661485546D6CE556FCDA23B6DC0FFE94DD3BF7FF13FE9B46DCBC8D8FFC617F35687903B972FA7EA43 +254: FE280E1191D21CAE12EA3B53D77E03EA4D96108D35555CBFA9B156253A011ED91B857B82D644BB94BAC8E4FC4E0142B5 +255: BEDDC3C0E168A4B14B023DFC1AE07BE9A418678494C2399695EA9B17843D373077A708F8C82F37657BDC101950FED664 +256: AA5D7EA1126BF16DA2897AE036E94D1F96875AD306B19910EFE3F17B7A98F9A4163E4032EFD17DDBF78FE3321047509C + +HMAC-sha512 + 0: D29B9E3F87809686F34109FBC718D6ABBB09C278CF05A206ADF21463E1170362122E58272A31679720B254CBD63A7C6D696BF9283F9C6897E7D792483BB0388C + 1: 5EC18FCA20788348244720D58E9532B4B699E78D48CF7D7BDD1A4E5C61CD09C075EA7F112DE379FBE953332C6A7D6273B3F6360BC07203A5175FAE618E4A2F55 + 2: 293D275FDD5021716117D2B85E6D38F8D60D4984BC73E2D8D7EF5942CF1287B65C0675E566794786FEA18AED1192A024FC4B3E0505D91E1F91833B210590BFDF + 3: 8D9E222D6B16C58B3862D6BFA556BDFC2A4A152BB2574C2294D5381F6E38FB681500A6A19D55525B337A467A2FC30DD1684832FFF92AD071EEF05BC4F4399FE9 + 4: 71E7028F8C4CE9C1EAEFE459771528D26993E180E616D68355B9C618153AFF2C0E9620B151C8F733E71180EB87BD773A512B945AA353029A8F807FB2A8FF2264 + 5: 589F462D37095693ED0C1F3E0DCB892BD19086FE033718911931509EF6195AD17C79939A87665889EFA6DC19A69BEC6E7058531552832CCBBC06F1BEC70D1736 + 6: D94FC6BDAB3613271522BA05C998A6D1C57CAF0E6EE929651762F257E7EEBC07F5CC7CD3D4064A2755E408B347939B3927434556B4ED49CA406C21D1024E6D80 + 7: 4D8A886A89E9C60EDA3BF0BC512A295196C3F62018936DDB24BE9F6AEC7AA9511B33CBEC8A22309B6389417F4E7FB0489981CACF03DFECF7D9FE5B91D62BB719 + 8: D0E00955F0FFF98ABE885970EE44F1B5D4C23C205C64B681381FA13C543106B2AB4E762FD71F47008B4C429C39ED3D66B3EAEA946674F08684AC99F957F50416 + 9: 4F623E52B5FA2D556D25754FD00BB8429356FD75FE2EC57EB4BA4E25CE03C5332D3A632179C9FCFFF140E6B443A4285F4A7CE881E6D3EEC4FB0DB26C0E2DCDC1 + 10: 5196EE8D442E5308F9D8911C87050DD3C4842D0CDCF55AC554412CF096EDA94BE1A251743AD5BC5F8AC902A38B66D7D57C90C29200984572D57C04F64166B803 + 11: EF77019B0F93B1598E38D3B1B703B52660192547353E7FCD5A7C8525DBB516970D3A6F2A94729D90A5A34CEA255F310C1F46546C2A08975AF477DA2F3689F17E + 12: 0A77531D7081095AC0D0ADF2B379D3F820DD20CD89610917E287FF57BCA5DEABA750E1E075DAACA9CC4DDC74732E6F7BCCCD3671B6DD27503CA855EACC63FFB1 + 13: F1E04B1F7B09DA270A44B62DBAD2FC0160BA1D144D7721010D77ED250A00986932CB6652D95B4A977494F11AF7E7FC82A70DFDACFA11232D653B1A052820185A + 14: 7BE1855550A49FF66D6D395DA7DEBDEAF674F1AB192DF82D74F6BAE8088F83EF1471F413CE00A404486213E41B42CF6C4F7FF1BFA17A1E28928B7179F0A966EE + 15: DFF2CDE8856D811494F559E9F4159065A50B1E82961628E95F04D595F670249A2B71C2625CC1CC2B1F85829255DA007F0374363EB749E935BB72BDA24B8A3F70 + 16: D2F7FE57D9583EC1AA733403527DFBB118DFE07B2A60C43039FB238A7205A053E0496AD0F3C1896090AEAB3088283C8FAF272D1D53B5F9F88281E0A53FE7F8DB + 17: 963F629ED8F0E7D6D4CA4DC8A8B57C825F726380D0BA9A9857459491BA82F64A929EC4ABFCF79374CA68BA812E3A83A643D05454E146E9F4103D17E20B8350F5 + 18: 1FDAE69CA4A9FAACDDF30A56B23F14768EB7D5616F6666B6F01FE5E216825CD4201A69CE3D2D1D2C3D03246BA7D32ADCAAA4A7D03B9AE6AF4CFBB474E1717BCA + 19: 2532E98B6D91D8D658BC1A1FE41AC719D648D47BACB423C031A8E2E9C25CC6650D3E5DF8046BC3532875F0C8DADB38AA911F216E6741E9FAD700D31269EE5D46 + 20: C81E6E9F4B75A4EB2B903C4DE28CC437CD87BF789F6BE60EF521491CC7E44AF26E9EFAC55961135F79B3591F5F7B92ECDC9917641BDC34943C6759AAD9437498 + 21: C0C2B9478F956800B64FA408BB0E077FEF48DE4B146926B3C577C00688829FFA6540AD7C211A807286C546F7D146F95989E77B62F5E14D62FE0C77C85FCB6CC3 + 22: 980D06C1B27EB2EB15069566BD1BD838FD3DA453751BEC564C05941C9BFB9EE8443EECF84CBF8AA7DECAA294C7D1A3FA4A39C20A4659DF332CAFFCB2863A769B + 23: 70FB10E482AD19447CFAF10EB9FCFEE67F9DF7164B2647F19CB220E7D83BF892AB7B5C5ABB73B779522012BFD464D9D1B18C37C3F6CB70EC4106FA94F8CEFECC + 24: 7AB19BF67380012D3A53B93AC15E353D477FDD1E2E8851CD5AB5F36EA0C8B128D3193934F837D23D232F44009AC60DDD358AFC8D3A201BED3EAEEF74C03617A0 + 25: AAFC1227AC42CC27BBF78FE26B3FACBB7B15360891C8EAA8C737AD42C00971D02B3A07CA751774D02F402F7E76BE08E2C1241EB66242DB5E11B342C22AAB9FEB + 26: D8CC3BE5B48C7BEE8522BD8872419932907B78392B7F2546788477C858D0C7BD772985C0B0D202AB7E69AB5F4E1A0BC848A512FDD79EC29F19BC4BA6D28DEB07 + 27: 6133D836D68C82658F6263F794073CAD9029F20CC11D0A6CF589335B023CFD66D708F09136546C6C08769139363AE5CB4CC2CC86EC6911237ACBFD8B0423E377 + 28: 833DAC9CFFBD62FF0749391A42324E2848670913890754E24ECC29D4738AF00A78134660A20078FE59C66113787F4A3E6C0E783740B2F2B2BC8D36FE4EDE39ED + 29: A2F3BC0DF058506805DCF5CC3006CC4FC4085FD846C7A7A7DD3A06CD6DF635359F4FBE90A676DABD7F9AAF42577C8E3B07B63B9CEC8A9AD05B38D16F56214E8F + 30: A49C3BB487C561E5AADA4FBA2D9F5B42681486AE2DF56087DD65B3D5E03C625F709299C84C64A68D87C92A4CC90246D608E692D1FFCE2C099348CD0A19407C2B + 31: C8D7B7A7FFAEDE88963B09A09ECCCB4CAE77DF9D8D242BA19F6485BC7775308E5D11C78FE9C46E609F3AF070F3DA8ED929C103DA1F25BE7867FD4D3E4F2757C9 + 32: AD4627AFB02DECFF956E612537F011E82CB0C202A5A11AB7AFF55A201016C02CD21EFB4EB197BC2D13D272C6A830FD77F534E800B0AF1E79FCFB626ED6A0D6B8 + 33: 8D4E232D9614EA1194E60748496CFD32A4AC249BB8F08E55A7C9DFDA708DE90D067FC433EB9DA2A6833D43BBA8E8DBF31137A3C9B26903060EF9217471E9F945 + 34: 4CE5E4055F10F1D2182A7892F98206D9A120FBDA3251036B7EFEC835C95B4D1FE0BE3892E2363087D01948AA426AA403ABE1CD79F0AA851E2D1195511C7A85AC + 35: ABD65F8E9A2B39BFEF6EFC9A9EDEF6572489AE82034EF3BF2AE5F380026FF4CC40AF093F0408445735C0E6EBEF5D7E7ECC13C98B59807AE01FFE1BAB040FD14D + 36: E8C687D7AF785B1E547307875682ACD82FB58A8259551D81F309C923C2B1FBAF5935EE059B89070B8420F71EEE3BE7B1E3B55B196872F06DD1FB890F6FED11CA + 37: A344BE73E6585E0CC31525BD6D4EC3345D7780CF180D0D5C2D5FBDEDCBEA050A958FEB13C21924E311F57FD6A498756146AAC58412B98E4D2A3B29D9B77A9F53 + 38: F0A088CC818F76A1FD6B5D707B114BDE24245CD55E48611ACC6AA497A0CEF93768501B5F280AC518CEE48C15373118BE7B72F8ABB2E9FD3526DD1C18D9CB2545 + 39: 4D56D5C9222BB78E04DC9346FA9C4ADC27AE08DA3E34F490A13F674264896E58F9E9839715F633C7195B40DF722441275C84AEF162B513E673809F7874E7A124 + 40: C4B3C9E8140F0D5589E326916462354827E491F3444E0C361512E6E761F5E24AE1873B238B73F32F6BF8F1D1D8FF9437A01DACCB749282E776FF66151A4F7E19 + 41: 7B4E07BAF338DF6479E169EB6CC64CFF88167958D44C5CB6606964B7F9ECF5F3F1B1F695C63F2BD66354722F81EE4BC90B9FCF5345642E264C66F6950CC8C481 + 42: 8571A8F76A1D5DAA0900A03E236FE965D085BE6035B7C0601EAD338106BE7DAFAEC82F7C3D8AD346FF749B6DAFC69901A6072CA089B7A5724C75CB0818640F7D + 43: DF516D84392E571C3FE39F4A0BA5D16D866553644B4C4627D3513F0A1C60D22FC5AA4276A71CB37BD6D6AD05A12BF812A2D5388A606583B78372B84DC567431E + 44: 535AF3C73B479B61B8B70E590E335DC4C1E22DCA656454213E1FDD46D026B6D36133BDD372FBFBB27B6DCA8E487F4A54BDA8C5F67B37C871653C656DDE9524EA + 45: DBFA27964DC6A80FF76112FC6CC02C87811DF1ECA3A8620A5030C600561032FC374A6B060FEBE0ED67421D9217D2719F5A55621736FFFC6F4F26DD4C6049FC09 + 46: 6F69BFD2C60AB1554023A6A2094D30CA78D364501F7813A2CB73DEA94AD4B94A0EDF3A3698D6A30C8A5E764B81F51CD0CAEF0F996B8C685A345AA630CD10570A + 47: 2769DDB3AF3DD650BC381D7B10CBC4353699A2A352E57FA5D5CC4FB610E498767F49104ED0F4E06E2BD563F7F8045212F5B9C49CBE050A1662F2262BAC4053CE + 48: E50169B15772017CD9FF93D1B46AF273B375A39D174E3B8621EAC8EF968BD967E1448DC3B2C72A667EFAEBF2B90D4E6640698CB866075E95817719E0EE61DF30 + 49: 4212648E8F9ACBDC16D48CD7B355884E0817A95DB03BD9B8AC5B28BE6371D8AF83546DC82550B8B23DC77F6D06211E3AF3B25528BE686CCA1672C91117DF9762 + 50: 33C71EECDBE503A6AF72EBA8D2B9AA7AB8FA8DE536C87643ABF1BC3EDA535BBA64A8A7F4BAC90ADB7D8C926DCAB1D7DCE15D356C5074BB3EBC7B17516671EC8F + 51: C8EE9E57EFA859DC5553D03402AE80B84B1E0032CE3F2CAC43F8422A80E3EF59126AE7AB4893735F9C948CD9FA8793571E4582908DA19FC723A93C7C36F79F9C + 52: 7CABE0F83E90CF9A497DCE45F14F9926DC714DEEF05A1A0603F6436E134FC7C8346A19CB92DCDE69D794B38FB22233577BA3905C94A7020841224DA888B9BE1F + 53: FDC20554A15B71BA62F896DDC4F8B354E5D2434B0AF719CCA7DC56FBC9BD280B0F80136C4336D605C7C26208649F38C1DD0004C6E0E787A91FAA6075051FFDCF + 54: 87387F89646B4068038E011D7E02C353BD5649F6DA1C4C46CD9F7D69EB3A2F6EE84DD42D25B67BB81666CE8F92A5B1A0F3EA58D4F0B5B6E59EDEC86B43BA0CA6 + 55: 6D0210417671B66D59B8F28CA0EAFDB493C30A7D7329DF29194C53887F05EDC2C3F35853898ED77394CCC650E8D350F69598E3AEF3DDF540DACCED5BBCBAF6AA + 56: F14085036C69398BC7E0CD8A9D4451A10B080E7CEDA5582ED396E5D54441125EB3EF6EDE4534E788DFE6DD3DAAA204814097987981EC8BD8E39E8E8B35AD8FAA + 57: BA67FB4D7D137531D3F4CD3D91975255FCF8EABBEB97EF0FC7C21C4E25FD034658C63881B0AEBEECD2B7D15357C14542D26EBA3ACCA944EB4C4D7E44E9899D42 + 58: 4546585669E343AD40792308AB456DF623A6A23CCBE64B26B953D6C461460BBA7A3FB444481BDB3F7FC8D5E825F2527D2DFF193356CB3171CFBB56C679AD1BB9 + 59: 210F8AD68FCD10BDB8773194FE57EFF566C7E65BCD82BE6196DECB40BF39774691AC6BA718E4B5FF0DDCF2C0510182B9A114C6F0117A0BB0E1AD585C69D38D0B + 60: 29003A048ECAC0613CFAE8EC8757F5E5CF80E9B0BBF538D7460765FE2D6B56D6251ABCFD42B56D64B56D8F219868DEB42B968E88D3F3BE3A161DCB43EA98349A + 61: A308F9E2B60D0093A7278B0645A471408F58B45B3683531179F34931D06A15F4A502F2F7E1DF8B47830F65387BB9F102646058AB456045267F2DC403A1D9A6DD + 62: AD484DDC270FE74E68620AEC882E86320D0D0753E713D9D5C9C7FEEB894DD3FD5FDF4995DDEF87B1126B36E92618331126F5852AA8C0D44404BF9F77B780595D + 63: B4BA7B2F08BC0FC901188B50493FD165F659D3226227E2E9892BD70B02312C12D195A73AED3A4009618E6E74799DB158D9AC27FCCA9BC682B09ECF53BD368C46 + 64: 0AF65ED93646AE826C79BB6E8CD193D5246BD00B0BABF8425ACE03C845B9AEE428045D5F8267F3EA86C433F1A9DBF4AD1883AF164EAFE02C07CE43079668A248 + 65: 65F899BE2C5E9879F6A3BF7B60E62591B5DC5398283229E4FADB1EE78FFBF962295C427BA0D50BBCB9E2F1DD9694BD36CA598BAE7C2EF1F4D0700DC95BB66C37 + 66: FA9ACC46F0841962D6DDCBF5D47BBEC43A0E1E9B2A8F8B7970E2E73C06612FD95044B8BEB58C71B19AF4169B7E6500500445490F80EA4E305B6BB00C7181810D + 67: E9AEA6E12F881A7AEC3AAF428BBF0DA3138EBF69C6B8E52621609AD340D6537E4A03E2B099B735FA82A3D300F782606EF58598683D4ACB0870D5130B4B3142FB + 68: 3558ADBFD411DB8436A1A8B40420EE9C274FA153AEF891290F79DE5714130A50C70EB87E8A901D540ADCFC37E40EF44592822F6ADBBE8E5CB4EC89909633DD7C + 69: AF3852A0B4E846B59A4EAEB7A7A451311B1E8F554042CEB2D253F10FCB3067F9CA927C7DA3E57BC9C99E4E7997856B35DAB0645C194AE9F1FA0A92BC218CC9BC + 70: 6BD90F0F8FFA39C2A483E8349D2A29A96AA7F3CB4B4C1325FE5162988C9DEE849B8E56BF1423B6905ED3FC6A82A067F850372414E2A4A7E5CA379AB80F1C4F23 + 71: 6433885A8A39F2E4CBB36191A038EC3E3227BDDDAEAE24FD396481332A9AD7BECCC4E9BDEA0C8A7F33180ECB1EC1DB49218D17C4325B661967ADCBA25B341649 + 72: C3235054A1FDFF2C0D218C3B54EE6A58FA5AE99040A64A90B9C8DE601B80A7C130168FE7484CE1FD9FBE22E6E794161826730B63DE794EC4ED1D653E40B27F7A + 73: 89F4DF5AC626665D9791A1E1C30D1F206D89C4B0C59916DA295931539B0A607A1261B4EF022CCDA6ECE02E99449E252EAFC8929F5074866C3FF59CC58268E2B8 + 74: 3F1AC15A90C38AA964518F176016FDC73A85B096EFD1FCDCCF38F3EC692635BD4E610F1B3314E068164D02168F73A307AD549E1E7EF07DD374F9697DB6A17447 + 75: 4FE16A3BF0534DD2E4DACC43E221179C9B61D7D50DAEDA4DA9C45CCFDC76D6FA96EB3CC1C184DD5DDF7DAAA413D05B2FE518117E2C9A880726148C7AE6052160 + 76: 1EA870E13B7E59B97045F662682F29DAEC4413566DA341468CC9F5CAB733D1897BBAD8E9520B85C43DE33B9B70880AB774EA636248CD0A1626C9CDFEC3F1835F + 77: 37AE3A9828B08A055B2E47A613D25A8D43D5A456BF741E7964C0DF4AEC6D8E5F3EF874F2B20606A38AFCBD307C104DFA5BF40BFBB3078771436276E777F645DF + 78: 48CB9B779D37299162D2674CE2C2595B2422071917C28AB48781DED5060E76EDABA56E7C538C3182F9D960DC21928E6B3069D510046608C976D7A113DE54DCEB + 79: A565459CED6C996C04A21FF0DA10A7F24B1DE22EEAD7FA7FD2CEEAF522A42E29395F771140573D684C94F61F19C771DF68FF8EA0FF727C55294C70E701C8E426 + 80: 3A0ADB5479E65BE1F00462E60C8F7F74FF5C996680A2A4CF787B5DF65BB2E82264004E396AD7EAFCF8A201E03AA950D42B9A26EF2D24FD2AD7CF57CBD08AFFAC + 81: 6FFC799781B2E9F3F573651EB2DCB0771073DA1875CCC3D2B4C6C06F43161195610617007CA9A943B1F2B001E62518EBABD4542E73CA131E20A167FA6E8CAE44 + 82: 79C9E349F1216FCB295FFFE5771EF54A024306CED9CA111DA3DC629722DF7FA5F0927152E4401E0358BDC16D9ABFA02C709B1C21F6D86905B0CF0D6EC9FD1952 + 83: 6876CC513300CC83BAFCAAE5DFE4C4A0CB962079523ED475B19568243A63B208301335BDDE10CEC90CA816960013E08271F02111BD18FD03C1B941543FF4A579 + 84: FB5392BCB60C1329D3FBEDB4DE1131E7B89326A34F34BB099A7EBEE42B985682F52412D3F0628AA72A8C2C46BA3FEA08D5765264E48DDDBB96CB598C9C0BA93C + 85: FAE655D7CC2FDB54349870B199FA54CF47BEF2AD98021FA27B968AD4C3AE477C6B2DFA9A10C75FE275D5A32C5E9FA06B03D4C908184F49FCF15ABC409106E951 + 86: 9B15DD192392017E2F4DDFCD30B7AE58546AB71EC44DB94EE66CA3419D580AA05B5F10E5D36D9E60465FB8F56665366824B5B6E9A63A13F6E83A026F5A8E0911 + 87: 1A0EC6F024130D24D9740E8037C78A176D9C5933C4073DE3C6B0536E9F7CD20E0E89705953DAC9CD44C85EA059ADC496A7A0EFC40F187DF676D2BC83F80BE983 + 88: 5E9683BD68FA16BE904FF617510AE99249ED3477276A0B410B269EB2E03A3505EDF653C725811AD9DCD7FCCF6F2411980784F4BE7407D68C02CF6ACD21FA1B52 + 89: 47CE3079037E396A5B5A1A3FFFC3C60A138AA2C6BF4FFF26D846C7E1E84E31A26270AAC5C688DA7A29DED589018BC349E3247B073B765FDBA4C8BB271CC6E233 + 90: 280FE2B5B0B72FEFA48A9B6A1B0A3529CAC9D6338E2083816930B14FEA5B21088B1009DE147D81FC7F29B00BADAB32B57E15322A6180D713411F559658FAC715 + 91: 527C2E33018CE9895C3F84BA5C072055730AAF767DC82AE236F1F7C5511FBF2CFCBE32AAEEFEADE38EED4C0895290D0EAAB38E3A5CF7B2462675D1E6B26CE814 + 92: 8C0E22F5BE099CEE31C816A0F5DCF9A548B0EAB55AE7CC127D172AA5243A5C73B5BD3AFD77C89370D51460CB7E84F1DD15774D1B8442C07AD21A3B128688E1E0 + 93: 6CF00F05A9DD7EBA5F1A755987F5678F80AAAF9B5FC44D6199100C062DB50D2DA89096389DB94A6D68BD8337640BAB60AFC8793E1A909624A4E149AECBE415C5 + 94: 8452FD4AAEB1AF4ACA8192DD59926E7B0D7B295B8FE18DF4DD21E7C7ABE8F4ADE7391753E533EDA2EFA13CBCD96948ACF26B658F1E72390BBCD7C1BDCE8FD650 + 95: C4DBE8DC875D00FFAE2AAEB3E0BF1F01529A364454D56D329FD493D327287F3E34DBDF2AD54C5BAC5E6059F5897D18157C7DC846F15F2CDA1B2F0A6EEAAE58D5 + 96: 6C88BBBAD961E9DD1418E9F8EC69FEB443176108F56FA2B0B686E93B0E5F505E56302994FB190787EBA7CED5EAB69DD24CEC39BD566D18ABE337A31414991735 + 97: 439ACC720E8CD0C4A119B9C318FBC543CB7B35FF12DA190D82A951970248BB47D0DA2171A7BF850A881E8767FBCD542039E483974F18532FDB57DF23CD18B1D3 + 98: D71EF6284984442D05E8B6B1AB636E0BA013A8D70029F9F1B9BA7927A582D5AC6899B9C8EB990CA93B49E460AE140564D40467A1368FB4A9EFFED4A467E174CD + 99: 8B5AD2DDB4F8C044AFE2B0216B7E7D830EBDD285E4D992CA022CA2F59644806D8B7599CEC51DC73786D98B7B6F7C10C3BB7D4CEE3740FA42DB21BB51A1269611 +100: 28CA7AF155E9E7E1F5EB64F211F254D624C6C42935E27A91745F2AF2EECFDCF1DBD5896F60520A527499432DD3D0F3981F0E5BA72EF113231A0319467BF5271A +101: 45B69480A77AEE3D83D39A38717EC1CAE1634D2D50D05FD78F70309DDA566DFC160FDA967EA6ADEA8BF45B74557DBCAE4D6187DE1BB82A053CF84B4217F9CCA6 +102: BF46E03CEAE3211FEAED2147B3F2909D406A767005F9C8A5CE6139133D41C2812D3225123B3BF0792288E4BB5C8B5ECE9BDFE0F8FF097DD64FB2CCB964FC9862 +103: 3CA25AE24E0D847D9552FD74E1D6FAAF91736603DEE98E51922A2923630D7CF35917916A1DB23A758E7F067F26A5DE9135871B3DE508CE4ECFEBCBBA1A958C78 +104: 2C4380BB9F29041388A0F8292D97482E1E96429B79162A19F01918DBC2DF0B36244ED9E7D015A20290877ACC4D2FFB14D236CE7FC92ED16C7C57012B0CF6DF70 +105: A0020193ADA7F57DA648C1474731F145E6A8E9E7F9550ECE1A841E2D735B18769738AEA78E7AABB8ABB51EF08A34C187478B4C5AB5BFF4932E97F4E246C60C6A +106: 60E81090C365DA5E69E2FC12256131F134F561C7A411F51F72B7649727C9D7E99795D18D1AA54D09F6B2DD7FC556512F49D582BA6006D951D474039095F3ED07 +107: B213DA3FB3ABD16B1CF5CA81574D78649382A6CFEBA5A88C0B8DD40B1C6E18520F145968C342DB13A2B4B2659F4F865E8CF50BCF2138A7B09A1FC190676E1895 +108: 6862BF8F73054DEF42EF38C4A362ECC8F13BE7E705573D8E9AC6B347EFE6A218950A5AB5ACAC3607C0C94301E0A085BFAE7DAD5E1863D469C113B790C234A947 +109: 2D7D3040A495F8C089C67FEE236A07C7D3361D35271B4DFEA5F17C7E80B888EA339B936C4475194BBE35DD9AF3BE112201AC21C9F5858E4F4C39A0FCFF0EB31C +110: 1F995515755C98C5EB95818DAF0C55B51192BD8D752FA35EBBF51176F05ADFDC32E2FA845C1821B6110F7EC1F1D1EA963433194BB978285CA4344A5F989113EF +111: 3F5855B07A4288497533924165E7EAD3D91A16F5E832FB341F5373C118D5ED7E0EF8D837FEF594C2039F08A7870EC1C2770B7C4E7185246908976B62A416DE5B +112: 1541B5A9C84B684BBDB543F77CF384473D007992F37498F07709EE68033E41829E29109E7C77E252C241C78AF41C790E40696206D58B2FDEE768E5B321362F4E +113: 6DA9AC8390F4264064947684F53A1ADB49314E0619509298CFFEA1729A944990BE2D4C0988BD6E8BD1062D574879218ED8FC4801877D637ED3B5383C069A29D9 +114: BA0A194D5078019B21910C37AFB81A890C4FECE7B1F4E722CF855A6F2F8B82E4EAD37B7B58C07ACEF1EA2B76B146811732EBE1BC0F76A146207B8213802DFB28 +115: 20631BF1D6555C7BA761B0581BBCDCA5A7B1BAACA1B3D3E5B4D70D0C9B0A279BAF00DE093AB1334ED5994FC17386D0B2BE9E0FB67AC1038704891769AE530BB6 +116: F31F66E176DF632694A6F7E16ED8F15CE88908EF1D1F0067CC8A5C805370B9CACE0BDC78B1CEF06630012B3A35D129C4E2AA4F7302E1A122C7E53C51DA7F795D +117: 18B5417DC4CEE4387338C63156C34BBAFF19A2BB962E4248B1A1AFF1FF145BA47D84C6C8570D072BBC57D912C8048E0ED50060CA33408A00722A65C194178387 +118: 2AE09DC52D7BB9E692822A6FB3D582B805E5ECD2C1C4813F94F555BA2210429B615A2301B3EB7C491153D68AE33AD9D28F2FC11B6C61700D79BC7DDB251BD15F +119: 534390ED2DA55D45402F828D6035819C4528768DBFFAE1039CF0D18F89BEAA867589F78871FBC746E43B59E7886FDF734364DEC4193AABF56E8BEDD801E60D89 +120: 231597B2B71E6BE567C86DFE31ADD7B31332BEDA930C4921C4817B7DEBB0282A12D23B076F4783EA840D890F6C571760E70E143F8565561062877D95BD0FF941 +121: D60A1481686AB8F889EACF2E9F66BC32271E70E3E04B91ACA6CFB90375860E0BFC5AD9A627BA0C763CD7576811CDE2921E9A63C0F0A7A26E763F7EC7902308E7 +122: BA65BE7D1EF697281736B3AFA97FF675CD776C125CB01028EC2894EC2EFB9908835A3882E5E57BD44ACA09DC3B0580145EB2265E1724DA6F01AF5F93022D5774 +123: 0DEE2EBEBAA770891C14346A26834CF40212531EDDD64A21EF9FBD62F4728A16E18C673DC8CE3883156F51854A0ACC341DDEE6A0B71C4CBF797CD5327056AAD9 +124: 0717C9EDCC2FAEE525A684EAAB79653DD83BF46ECB285E6B154DFCB8A0C9F8D4B28FA200A6C224B4620CB0AB5B33B9C8BE77B2B5A04DB1A3EF8A5951EC46607C +125: BADCAAE4F76006290B9090AC81B807E7251EAC041E6CB10A2C5B58C4F4B2386E065E6D55C46CD888396C86606FACC82DE2F3F88904E15D549101AC7FFBA057D3 +126: 751F6366EFC97218AC2E0675E7F375444C8D82AE7A139E78305E14148E07100F5B7EF93B576DCE546A7BAFCE24FE148B248BE072031F89B6AE7BA9CC559E9C9B +127: EC0FCB3E124C482CC8D86BA2CDDE931E521F0B6F3E7F333C4388E7448A7F196D95766CEB8A49A90E46B592958BB85BD7495747E71508877975EB1454A4EBD57E +128: CDEEE6EC4D67DD8698B72C13735657EE9F78BB0E1DD37D0CF06063717DA9DCD617C5F4FF7656AA48CB3F697E36B3904F496136A2B04E19726DEF9D3406F8A84A +129: 81BB692EAF7F5176B6A0E5F2DFC01A045A917649D0B23B22C180BD78672F37F8E562FD006A00AF2D7AF0AFE15C8D191339AE28FF2797E64A3809400E2E73A785 +130: 04A8456D131499586CF7B9FC45C2EC96859F3F4BB8240ECD93E439EFD5DDE1DE7B67B688B583598D7FD50CB179D318D4C05EDE04F6FA318AA1E9DD7D4E279307 +131: E5C9D55B686DD9D7B1819A6144F6272B1FB5BB3B3034AB9D1BF34391283BA614D57894925C3D589A7FAC0CA1B1E98A12E9DFDDC2BCD85D1E7F2980709EF25719 +132: 2C6EF2E1C179BFA8295197371C474081790A63AFAA194E459CDC27AD4453B3A8C0110F9229BBDD4BBA5D6E80F2CEA71059334A97EA34F96810A2EBFCC3B177B8 +133: AAD54FE02E67080851DC84E20F7661E42ADB610D0B105B3EA6EB6654DAF64458B7E0F756392196AE2B40626CC2B0D82E47D74D3C50A607F4402C6C6A62999324 +134: CF210EE9A800943EAAF4EFE15DB7DEB696233A4DD62206D46BD9C84A7EB13B5EA43FF3CE15ADD8FC4BCFF022196197D1D097B7A893A79C6640135929FCEF10F6 +135: C81761EBF3235F4D56697B19F62B4F7445C8FDCE3D7999F3249493D50C19CA57C5FC84CD35CF794F58DDB6AC86E8BD53350BA9676AB63B88214162C8E11C16AF +136: 8E56EB131EFA286A92078F5A3667BC6669D6A7FD9746CA5F208EE38D5265CF27076C1624ED0F98D486C55C28A4FB89C7B667AAC505CA1CFE1E841184615B7602 +137: B6CAF44F87688E9E3651C2C98E840264464DE9DFE1F3E4CE5C1BEAD46C7D9D747DFFE282D775E101591A7254112C2DFD543E44B41E72EFEE30B032E5E015150A +138: 8E7851F56585595ABD2B3EBA5AE713672093A3120798506ADD1ACAA3ADD92D737F9AE155B8A5166C0F047801A93731D4B807DFE15F08D67DEF31A7B808601D6E +139: B36B6689A5F391688DA3A0756A15AF15E6E66701E2132CF6F06326AE9C91A0BBAA35664B28BC5B936D2BF1E6653848C5DB57654685124A08C79FD03ACC0681D1 +140: 24A23CE3A90C8EC3D10330EBDA47763B1B03035F9E4AAE0AD336169A2F464E067B026D94ED4B9723E969C8AAE7F404F7B4481C48EF7545EAAE4E648525A68751 +141: C7ADE61F21133886EE0E0B14438F070DA398B3A5387CABF98B0802662F3BD3AAA8738D36CCC0D3EA25BBE9DD3B59062BDF4BE2740482BF6D4C21D0E0FD7B0679 +142: 17EEAD5930DB3A1F8E123AD2E72C38209824F977674A52F380843442F0A5C82B55F8A362527BF5324124401648BEF5E9E26E08050B1FE80886E3856F98AC1EF8 +143: 9DE4F43CA8F7E528FFF9F4EF5897652323AEB95DF80049AFBA189C3D142CFF55AE340358A71B01797A8B72F478276E6353421E1C0C22EBDEA0C044EA60865784 +144: E259BE34C467B471C94B612EA6BD99A3F7EDE58E237DABA6A6656F7F7EB5466DAF908B7759027C277BD9234ECBB23C5C62DD2C9D248C1AE52865D66B5C256756 +145: E49099FC970994F8293E71467BFB1D241FE99322075795FCACFDBFAB396392E37BA09E66BF492684642FF2A03F8CF92E0ACF4677C21AC1C236DDCA103F0B5A69 +146: 4338E438D419D8694FC40383EB1045FD9DFEBC6F18A9A03B4914687A8639322E3B050F48E872BB7E2AD9013D374D68BDBBDD0B177024C1185320D04598515ADF +147: A36238A5C795B23F42D0833A5152770A4B0094BC19DFA72C935D32D02FAF5D136BF55D92B022D01949FF04B78507FB203302833AA7103729771A112E4FD1584F +148: 47180F9E838B129A7732A8DAD763B8CC5437BAEF77EFD34D3B33C63C09F6314B87B3A1436C6866614C3B3A693BC7926E9AE876C7BDE9D712FB5198D6417FCEF6 +149: A87064FF5DA177F3651488A139E568F6C75722ECF97507316BDAC36393724525291682776843B8563A6B014646F6B19F040B17B62BEE4A0711A7B06A67DF75C3 +150: F358321DC6A376ED500A2DABA60096B817D13B59AA02B56C1F51E2C6804F5D2DE2028409964D5755BFC6424287504994C7605749A5E5D9D802BB42922F444D76 +151: AC4A9999133546B8452047EE31B398F623E01DCACED7BAE4CB0B4DF0DD53B8E4921109308DE53C0924E0006361BC8A480AACF798D6B403F338357E8DB676AFBA +152: 0E73ABBEB68982F163257C1145FA2E465FD6E720EEAF5E532DDD1ACCC690B37A8FAEFF8D7D41564A9C86C2F185E0FBD0FCE75259D34A5E96B8C514EC83CA1382 +153: 094503A1B90D71960F83C91D76754BA6B05D670EC6A8EEE1D3CDC652DA6E52B196E155F3BCB62A9E4EF8C507F377AC1321C4C0D7A03F7D8A5286C0019C358E92 +154: 12803349F15FCBD53F2FE11B67DABCF3F470B8E3AFE8A855D7A918E611A2D5F4DAE8FE847ED1FAF834BB3678C6253111636100A991A80C1EAD0D35E28DB3AC85 +155: F489665F4D8A4AAA679D5E5A1B7C501DECE2E0B228630AEEAA1F5643FC4BCCB9E2F018FC2D7C44ABC4AC0861EBA8B7700A49B42486DD13263D978F8A7C9CA306 +156: D9DFBC3DBF0E3D247C95E16D376E7098A92EC59A54FAB482C330139EC6E06ED514D5C74F9604D1171A127502811A16D1D3039BD03C4DBED20BB765EFD34C5F0F +157: BA56A64D01FCF392A6E2F73D791D6C5A57AB40A376E73388CECBFDB910402043B4DB2F2D2B86E3510986CF1DEC3880E3C739175D5C0AA1DCEA18959135E2CF48 +158: F4B07B0A063AB240E5A64F1C494FCD9839276FD9689AA6720A94B83E579EF1044997F6506C1AD82C2CABB9384CEEA0B77D3970C1B7E13F8DE98AFA869F1F4D2A +159: CB4F232024B2D0C48E415D73193CD83C1A6BB9806CA336AC4F3B8FF7BF992B200504ED5E539CAAE68B1E47D4D8ACFD2E6B4BBC1B518689BBB5BB4311C96FE06A +160: 1E67E36D2EC5D0591C0171E7426A88919EA5A17470DA305CBA7BAEE90002E23043FAE1F4BE003EDDC2520A404E639B03880E3CCC68243C60E243A0E7A02E2CA0 +161: 40E46A8F257265A1E57A09B43890FEEFA57F56BB47551BAB38BE2BA8D143C176749484ADEB2D833EC9D6B70FBE872FA53618E64CF0AED24D51BA982D29E730C8 +162: F399712E5EFBA3FDF6B7D04600C16F69260179AB79545F44EF5849308E6FA589721CF7E6FE384461D05EF02BE51E50FA93C5FEEE9279A953C57EC07CFBE53E1D +163: 58DEEE13BF73ADD8B49EBBA90A8EDCE7030C17D6E6C449726D094F90A35A07759A3BEA031EEAF963C4753522EBBED1482789833D15D6EED7F5214E1AB93C174B +164: 13B2F766E6B796C44429A747CB46D99A9866115C78D2E94DAB52BBC9269B6584D26676CFECC2A9F026AE8E0162B6BB8DCB2242659EDA67CF793BF66963C69021 +165: 992B995865F57633665483C7C3ACD34BD108B5DDF151CED97C0D7AD134A8D9250CA8DC17C5C2A76C1C07989228F8B474814FB116C98D25D8F291D10CE259570E +166: 1C5D5E9C29DD91877E279DB679ACF0EFD8464B0A58EC9A3036EDB2621E8106FCF2A81719FDD1B89F13FCBD20960387754DD0F12876DAA911E793DF8F1991C043 +167: FE7F98A1D7839BB417CFF65A45E2DE806C74ADF2636385FEB16A34C890B524A75452EC096849EF0F905FFB38A0319D31A886DD840FE2FA66E16AC7C68B0D7FCC +168: EC67530458F01366BE95049FCFBF65465CEC9AD7D12332CF898DD72ED4D275F9C9EE96AD02603E8032F9B3B12615329CF0FEA564D278B1DC3B47EF304BF901B7 +169: 77BB3F5E58AF174DED0B31627648A1C7B5B8092C829020A6FE4CFD42CB51143E9DE20E3D827FB070DEDDA94D39BD0D330604DCB190E7252B12B03F48072B7E27 +170: CF33E5358E518807B70D6DCFBFB1CBAFBA7B2BDD20931B2A3B08BF8C6755367AB3BBB2FDCAE305F04812460FAD37E9AF70F1905D2F0D3E7628DD1FA453E5AE63 +171: 0739D32112107994BF3E6EC3A107AE3BDB9E2BBDA1D7C10D9AD6AE32952649007F68D28BA0DDD1F1C45F7128C1D3C42EBFDB1975A143A42949C7D97D9F9D3BA1 +172: A4F0B775988038E50429428C8526793AD8B6EC1F0F3AB7F6B33F716C61B7DFC49E254EAA01FFA422A31D30A8268E1BE99D385907479C7E2E0492681B6851DE1B +173: D2472E93989E1F29BE0DCF991A65BFE0E772CE77850A2F96FC6114EBCD78252DFC17712AF193FC5ECBA371B8FD27B0DAC44AFF6140923885F403904F1664AAD4 +174: 6696E09A153B0077D3586705E4A19FA6B3B2DD8621F5D13D7003017A0C569B7483C8CD9218ED1A252EB160C3620FE96A00E267DA0FA8996B417F64DD4A22153B +175: 2337E38B460CDDB026CB81B59B99572D45BCA4A43949440AA5C9F2502DBD8906453FEE23AC0AE47AB77214E52E7CF06ACE73DD8565BDD315F49A460996E08DE9 +176: 068CAEDFA329C1FB00BA02C80877E0E2B1CB6127FA2224BD14FAE5AD0AAE6FBAE052A145F5A8340B446F54AC9BB2108CF6582AFA0FADE91CD3568B604F68F470 +177: EBD69C96F4F2DB05350B74A475CA8C1FDC671B018A47072A11A8DC082C418EB20466720AF12E113C2D507F02596CB022D2BECC4EF8486CB54260020EB6C36481 +178: DB0770922005DE66FBC2B05B1F863ADA569B76DA9B8CA433C99C2F2B4AD60BD28B19A5B3820C0D8B6B2E443CF54A942B961E5EF1D53BAC4CA379964D701070D3 +179: D435D7240B8C6A6AABCB026EA53BB8DE58C5DB471EDD8173AE30C81BEFA9CCDE8E30758CBD7DED822410576115C2415D9DA7FD8A83CBEAE337E5908A012AE1E7 +180: 838AFEF97BBCFF7692C731D55442140D58CABFBE81BE76D41652106E215AF4E934691DC20F181C2123CF091B6D7552115F59937E165F1645CE0E14DEDB864B11 +181: 771815708A3D7BBE5E00FD677E4EB76B2B9A03A09412284A236401E7FCB19B340782C81D1A49371609DDCD7E38F9448FA657533D53280B3D6B492984E9C9CBC3 +182: 649EAB3244AEDAA18CF0A1FFF6619D63BBB66955C5D58E3A592E53F537FA74C60616B9E4483BCBB08AD7D1F5B6B91ED3176E89C03C224F94E5D3893FB6D01CFB +183: B4B6C653D90EDFEC3BEA0FE1FD766D5736DAFA184C360C8B036B7CC842E8C76BECFBAA7046AF087831E322FFC181073C19360A269851FF4DFFB4712E68560C3A +184: B0C0061EC50BBC67DA4765FEBD4033B8A204260177F9CFD451E97B93F19736D4B0B7478E29FBE76BE17AA6B0DFE9C4CB9C6E4734DCC8AA5EA825F101E5C9B02C +185: 54EB4D2C9B26B8B17818AD702E065407A19A711E22C8E66163E7311D8ECFA54448453890194C3EE892A599125AAFE1CB230C6EA268ED68ACD86DBBD17432352C +186: C049743F49D57D9226AFD26B94BFE9165BE5A8CEA9DCCD101F837F29C63A4201B1D4478EB5C4CE9D8F5D6E91BF89D09E6A0D918EE7A6D58CCD0A46D36963BCAB +187: F11AED8EC2B1C003B8E35F8F2A05861D9DD6B7DED02E28EFA4EDBB0BDA0DAA76EAD810CF1C78F50668D50DBE2AE65009C2E12504DFCE9F9BFA9A14969E1D0622 +188: 1CEB4106BC700F76F4825E6790959CC6EC85AD93D6FBB9783098E367E5C9676AA0D6B8CF9A7DCC67565284E71205551650557D556870B421273772524463245B +189: 9711275100A787D9678CEB38981A2246112C2FB1F0EEC1F844DF1703DE5B0FAD995FAC983526E7E3336B8CDC9DCE56FD66B73811201A2DA6783309AB6B9C0546 +190: 81E9DC0CBF71797104A44E72841FAF7F9CCF35C18EFEEF873450A25AE56564B0E9DA98598C527D5629EEF7F0571D9AD929BAB87A27539CE9898ABF4C57C9EBB5 +191: 28F4214D1C8C5B9291F2E1F7FCE732C3290A691432A65A01F7EAB1A313B83936DC98A3B39B5F7712DDEEB8968001C93A102C7FCFB8AD7D49B29661C9A9867109 +192: 78C7A025ADB85145CA8C6E417C4E68A9DB83FA78A23D0CC3DF20AD1409B936686FF756EB51BD8901157B1D031DE6848D97DC2E0F137BCA1D49EE3FB2D5A5E83F +193: E2C25FC61AFC794F65AA57DCCC4111D4B15331842493F93E9500AF01E2017CB226444E208BA9C841DF6D7ED28955B318511335F842AF3C2C0573227AFD790739 +194: 50D768C744CDD318B950986E305BF74B77396FDABCAF63AB786893B5F4104C2525F2F69905955A35234BD6BD85DB17B94AE7008F2E2C368E9639ABE8BAFEE4CA +195: C4F1BF6C56C494351A880172B9CBB59BB0D1A5955352E10A868D3C33BFEA0484EDF6ADDD009A20C8D7B59B7ABD5115D595B026CCA6442921038D9BE860C44CBE +196: C782CE6A141EF9E6CAA61853588B8C75B3A39CE191C161F43D7C5F88FB77BD5055B21F37D4A49D65CCDBD0E6BFD98193FC0092A34C21D5ED0CAA5F129D462073 +197: 1B2F68D7DC7563C286612B3D708AA725923FC9A2FEDCD4B1F1E2557CC70F3BF65944A2BAD9705303207B00F6DBCCE245C6E653C38EA0896DEF4150DA118A699E +198: C1248D0A6B75BEFFFD70EF17F2D0F3CE3628BCFB6A634C93E8F0ED97BBFDB48F6E5608511AD7091D7B062B795EBEDEC67696679EA092F7B84A64C99BB224D387 +199: 20A3D3F3676947173C7FB824B40069A202ED3A5637DB41C97ABFE9E7036D6C009BDDD5BFFF97FE80EBC40355A535D7D3A4B2FDC09B809D3BAE2DC31803413B27 +200: B85500CB777B14592A4562A26B13AF3F08CE74E03372D9622E29C1FB7988A86B8C00DDB2049C1395B43B17CD5C415A5AEDD71E05CC0980EB9520D4CAABBD6FDC +201: DB553A36A3EAABF7BE6FAF85DB96D3D0F207EA1E5B55DE589A116DB80C21AE5B1826A5FF3BB9D84C26A403A1E5C00BC7D2F6DE3F6A9661899D6D75373ED76B71 +202: 5580422E6393475B7C1F5010FA7F4395B969E190AEA056ECC88783A8B5FAB8ACF130DFF39DC0175E9BA8B63B4FABA7E4A36FC55FA1504468727086B2D26B5818 +203: 1CA3DD194E7BCA2591AD1B95D0CD4CF7938334C95A1EBE2C8C1A9B75E6A85F534C094E652248048923CBAB97CB1581E9A2D1AB8375C506159B724F74447A3201 +204: DC525D0EC1E62EA68C013470D77B61377398EDCA82A91C1C3E4D7E5D910A9D556B3AC810FB1457BDD70A18B063523C39BD806A2227C7E057CC6B018DDABFF73E +205: 2F0B9523725B27245D2A1B635DB5A3A3800099546ABFDD95C8E86C67C378D91E4711AD1927E90CC9B50A1A7BE3D60414E487E72445936FD0FA2BBF541F1394EC +206: AB6EB21BC802EB0854F61346F7BFCFFF738EA39829AB2785976D869830DBAC367D59D50C3873B960AC5185F3DBCEABD4E4E594C5C2916A8DC304207E887473C5 +207: 8E1C160A334D41F08918EC084BE12872DE79D00473D1B6ACADABD67E2A6827FB1DDDACAD9BFCF27430AA84F3F7A0D6CF2FFC91E7758F471F2739D51B60125D46 +208: C135532CFE84849FE9F40799E1F2CA05568868C0D44E6832A05C29ED17C5F6D0FB844485CBAE5E50A67F2319C30526DB444F4B45CDAE01A9D0542427731DC175 +209: B1FBEE68843D42FB558D1D9E0B759C168D6F84D07B2E90B646F45F1708B0D6AFF7BA8959EBB6AE4D5DF9A9951D139C81BBE602671CFDC618AA1EB63288DAD72D +210: DC11C3D993F59473F64F16F87D5F085E834306FC1C40D12CE7D6E44C59C31318C694282B0FE53B4B60E1E5DB546D930AB741A8DAAB8ED67C3D87E8E76B8C025C +211: 85BFAE07EEA80F939D52CB18C970C8ED9D4035B57391739C44D7973223C51344B9BE28C16EA29B35AF74A2F8F7581C766D61525DE5922A83A1BB600D97F7A3F2 +212: 26E52AFEE0F11DD79061EA3E4F97205729E6B61E50B69CC2894CABB08CFD3A10C41662CA6F6FEC9B5B80ACACBF968C5B75BB8CFA31D06C82D9CFE97F6E1F43FD +213: 74F18E92D85D9AE79BD62C4B8FFB2116DA8157E17A6927BE2B2D0D79CA101F7CAD6A25CD623C8756D49B9CBB903477B9CAC67734F84F0915ACA9025A9D5C6DD2 +214: A51B45BC09382F85334EA58CF7E7747457B517118042D53D773C66668CD6D5059B9997DB183B1C0F2900AC9949028D8F76DD8B7259149388FBF340834A3BF4FA +215: 59DC88A518FE44A7FD0F316BC8B5C865D370A8BC82533037C9872B24390F7969ECA530911463520218D00B415409AFA90A63F88EE729A252F1B747C414414091 +216: 146FBF362ACCEB8DF79A761285A0653484C38585817E26A7B8906FBBEAD70031160C7B924D3BD3A9ACE28A5712ED0E6E89CE4E71493B27F87BF73BF592D80600 +217: 74B6738B2F0904FD59F3A680CFBFE4E466FB5094037AA1942DB3A0017260D75AC5916E044CAC6BD0E25D176FDA267542B2C7EA201F7237E18B9D00723E98A239 +218: E821A4033FAF0FEFE525115109D0B836A22C287E3B157EC302768BEF7989AACE853218E5AF7DEE9F6E234AD50ABCC8A9658A0EE4D9FE050235341C94308D7A4D +219: C3EDD652D2F831B1C783CE1B8BB8CEF9453FC71F519A4800EC2362ECDBE9EC142F768185D55E322A32AF421DC84EF84615F7F3DBE6BC6E702B4BC8625CEB5BF3 +220: 6A3CA0B5A43EF42A1D6526C2F1507785248374C7D2602079A923C841F775A652724C29E788695B52387778CF2E2BBE2213B2FE212D729E3718D946238FF0E57E +221: C425148335AF813E36D072DC64C7EF6782D7DB981C5142B5D32D6D4338E06AC64363E86E88DF018968FD659DBF50A4B77BE2A02E71B243D65024B36CD71C1796 +222: B796D1F5AB11389EC7EC8DD4D1D5AAF17262C8522A4AACF454B44A7ED71E20F7028169F3164AABEE4C716B38271D72D7ACA3E54B30B9E05616AC51594995F61D +223: 113A56E96ED6F8613705B5CCA6CC4F2138204D7BC0C8965162597C1FD2F6E8143F57FF1160F4B482F7430536A349D20918064AAD2BB38A9D4403C16977B9616D +224: 9590A3BD7A0613381159E1E26342C150DD9B0A937855BF78FBF625648448B540158196A2855E7FCB967F22F5AE927D60E97D0C1C17A01E8D07284FF985F54B8A +225: 74B11968CC7CD925E21037DF011F1C93B2EC34C34A3224AA281ACE7D6F1B10F2A755DD6DDF33F1A4630123BC1CF875894FBD8D8B70AC05F8C3C1076E346A45B6 +226: 85A08D6993B7E5C014C3CA957D6B53EC1B8A5CEADD5060BBCC350915D3278F28E238425DA3A95AEF725A23B1BBD43E5D8832382BF76603F7E2E4FF711D540980 +227: BEFB08F621281473943AF153124256386570261916E5238FAFE44A72801D7C204A974B38696C102748CD1DF65BE3EA8C45A40021C28C7E4BB143800A3F38A93F +228: AFB97494318F31A4C6813246D125217242247D4EB6CF884B244E59655DF866B2820A8E1A7123DCCDE98ECBDF1F6125EC5B95A0D9F85F05CB09537B3FCFC2CF3D +229: E8C2E1D342E6503D77328A2C1336F95939B0E8855F75CFC61D4B03F4AF2305AB57C7DB383055A51E61AFB75494C222B01967BC74B4574B8208FC337E09E57075 +230: 0B396D0F15F49E60994DF4FB1E7E526A272A5B41FAB67EB8A41547CA6CE5B7F3FCE404B6A46BE79AAE37B4DF2C2EF68EAB71F39D5908760FB2124C7C83B0AAFA +231: FE86580438E8EE3459A62E73AF0E14F00F4F0FAD0447921FAEB2B77A0D8786784659B1F6D3044538300C759EBEF7066F9218F9386FF6C8099E6C71B5EC6B721B +232: C7E45B1737EBCA62C87A8F0C46F661BF7D3FC020C3B4B91988FC36C38BBC8DE05A22D4BF148F96D31115605D7B04D4CC8AB3F8738B652E933D76CD6966604CAE +233: 2C43F84381FB618512EDA0278FD382AABBA41FCF5546312DA565F4503CACB86B8A704B3B49C0C86B2207E4641F71FB5E72654B0AEE705C52ECB2E8FAF109FDF0 +234: ABC4EED8635DDFFD9900F5DF8C6246CAF12D8CD9333F38647255DCC52A20B6DE8D4109957CBCC2F48F52346579E008091628FD7CAFA092F2568828F424EABF26 +235: 14672F19BEEF8896F751B0BCF40FEED78A8093AA4DCB590D7AA588DDEB3170460381FDEF3CFB608D55F9E8A295A36DD64DE058C9EFF30B1D1F1A3671388B0AB8 +236: DB87424F975B03F925D8B99A1DD0967D2283E408B6B0155851DCFD53C0C00B05A42CFE14B10408E0F5985809813D35D7AA7C70C1A7BC852C7F254F0303103628 +237: 095D34066A6E202C896EF29F3481EFACBBFA622676F58E90FCD5A0591124E489BE3804AFA9BD3E4C92A9653EBE878A88B275BF9B5C8EF8EA0F01C89CF40E5FE0 +238: BB5BC80C718B85BB3C3DCE95D186711D5B90827B2097DE63C647E5B6C14B4766BF8EE8ED395103030F72ADF0C8992AE836086571908DB4A6258616EDB4BDA878 +239: 9A18D6DD0F97B7407DB0F17896DB2A2751B76C69B6F91E821A0DD717DFDEF630EEC1427C2D190C095DDB07601DC0EC8687B7411D735A9A6EF0EEB84A60948BAC +240: 60A614BC40A7DE580B6ADD05279A68DDCAE79EC3DDDD2C6FFF7B77BE9DD0260DA5241660982B77BA9C4B904075F39612F514BC86DF6F68E189FAE2C84A32CCE7 +241: 5CFCD44DECBE3D74708C620C70DA807C5AD58072F7558D950F519691FC96F98B760B02897C3A85F68EE37B2735931660106670C4DC7FA98EE2E18B6DED532A9F +242: AFBE6D9871AFFE6D201E2E61435703856424301ADD5152DC745D96D1BAA3ADD4C78F2D7C5057F1AE8B21FB91879562050C84144A2042AB2CD273025FA03839F5 +243: CE9C1B19D0E0FFD3085D28C5B2176A741A3034C1B76C54740AAC3470C1C8C6E77BA765AC4D6D90D4DAB0A89AFB17A8863A2917674F5A189A5CBF721C14F5D637 +244: F2F065927839C22DF56960845E27868BA8F272A464619EFFD9AEBAF1E40A72DDA81CFC67DEE13C351736C407F59DAE8EE6F2BDA17521CF66F10C73566B7DA891 +245: 24CD3AFA2218863437C5518021D1B96E0A80EBD14EBF2FA161A5E7032FD985BF71EA59DC5E35DEDE5EEE3098EAF6A16698F5BD5903C4ED218868D1E96E4B8096 +246: 1C6AC311730640FE427C1F23B60E817C25E1318109643A8AB51DA74995FFC3F156F098AEF97F37CD9746002DAD22FBED1A1F222511B92AB5F39DA9B53BD62AF2 +247: 37609371EB63AEF0CA6EACED8388D187203A88C379F24970434D87950C9B7DF9A68B618E9E83E3EB10376504F8FEE2505830EFE3FFBD23EFBE081325AA171482 +248: F0C06F6A2C7AC3F0EE428D7D1BA893E73D4D2F417999043BEFBB3CED51F95F7EA3CA882B9E8C1C973DD8A7F450CD60BB5A0B30D44A574E43E71D2533EFAEC6B5 +249: 3A9D1BD43CB3B7D3E9364F05987DF4CD99D573C036BF1337988751658EAF2896244DF5E4DD8984DD494709E587A75EA8AFF93681787AD738A95C5E98616115F6 +250: D42E2D57B36095F0CFE8F771A9B198C7B7E0433763341D35033F32D21C638CD948D8DBE75F533391347C440F208D17F20614309DBF1091DCA10801E16F5D03B5 +251: FBB964B7865A889433E99C4B61D3CD069DEB99E44673068771030EB1B8F1FD3B3ECAED1DCE8ADFA44F9A625472CD4D987EC7ED7FDA0DA912C8AFF5B20BED7F04 +252: 13F67CAD96C3304FF3C2E45D71A2D69301695516EA384F6001850A46A7F93CB74C5A4CBC1C56544166ABB6C9BBF90B9559320F5F75ABBBDE34C7B8B45C783BC1 +253: 78A609196BB40EEEBEBC04A8794C840A6F831680864D65FAAB093A499A3CF152EAC96865747ACA28392E9F102962C49247E0EDA424A345C4AC6F4B60CC3D2597 +254: F199515CF806EA25237EB93D658BEDC994E61EF70F5665CC2F230E7A40EADA14BFA00D56C1249F2E5C8920977A6C85017F8663BE9422762CF88487B76EE7EF9B +255: E8702ADD4B9034BCA0590FF897C10022C56D08FC4EEE0A43BA85E9E9C2086616B1BE7B6F928A3C53755506ED2D9D62DF5BA4A1862FBCDBA20683931A2244AFBE +256: 6E6A3CDE12F2CB3A42EC8A5D21B435C4DA4DF6CA7E41537D361D8169158287BF1D2241581DE07F88FE92F5AE4E96EB9C489FC3B258EA3842EA2D511CE883883E + +HMAC-rmd128 + 0: E9BF401EB338AE9ECE9F2DE9CC104A5C + 1: 9536B19B029E60F979B3A6B3052685BE + 2: B52F90B48846959EF56051CB6ED21588 + 3: 0811D2108413D9B64ADFA78B05EDF1C8 + 4: E06414189CCE13B61A2FC3CE9BC11938 + 5: 8BA02647A4914BF4248F6C799055ABA8 + 6: A3D5D44CBE30E23D20643E865F28B7CF + 7: 459DC8A812BBB840CA10A49E10F240E8 + 8: 26131CE4DEA7D66E5B3E6ECB1DDA4329 + 9: 5EB41B6A8F140E49BB4EBCB76EFAA0A4 + 10: C5E076890071C872B071E2D068EAD1E3 + 11: 476474365DEBAFE39DE7830A0BC3ADCE + 12: 3E9E0D4B41D740310572562E5F7F0CFF + 13: 9BA99B782F7B79C9C19D40EB27033941 + 14: 8E9931A75435B113C7E17E94E22D0B7C + 15: 1977BEFFFBF378633AD22D9E489FFB90 + 16: 9CA06536713225F3A5F67CB6510FB165 + 17: F46F54B012982621E33BA13A871F82F8 + 18: 73F925BD50E603A66B17D8D926CAD1FF + 19: AC74EC692DDBEF86570044E1B5F31EF2 + 20: 4F4F95BC7487A8F07B23C11F700F9C4A + 21: 02CE78131B27AB77474CFAE5EEA37055 + 22: 1D66BAD41487BA6C238BDAFC04E9963F + 23: 79058EE7D70C9D19058BE2E1D5383F39 + 24: 773EB9C677055286C84B39D2344C43FE + 25: 414A4816C124BB62DBA3BF65B6276208 + 26: 350DE5DF46801BAF8B12D4516E82EF43 + 27: F31C58CD73A3D8AC050BFFA5FDB6200C + 28: 5D7489AAD6537DB3DC27D43F698F6E79 + 29: EEF7FC37DCF2AB96328E62B8097203B6 + 30: 8FD428368B9B52F25C47E74C0327DA52 + 31: 923B6ECABD0337E39E6D068CC98F71A8 + 32: ECF2239FC767105FC69F46FDA5BA37CB + 33: EAEEFEDEC3B1E74A029683FC21F03B40 + 34: 9620C4913123F3A718D61C956673FB23 + 35: 59283EDEA3804ECD6471EA41EAF89A8E + 36: FB5B60685DC1DAF0C6557325DBBB32C4 + 37: DB71D12AA3B97C421FCBE45F8232F3E7 + 38: B0849EE5F1F9484514F5512BD928148C + 39: C73A777E20CC49AD33DBCBB16DC59A84 + 40: 600BF6FB779EA2F7108D1F7B8FE89F45 + 41: 0BD76F07D4C433E5BB9FC98B7FE49A2C + 42: 209E2124DAAAB3B5C6D2DD9A79A36E4F + 43: 907E4E2540A6794D6526A44FA08CAAC3 + 44: BA1BCEBA60F32ABD0EED0A1A56748248 + 45: 31F8527CCDD022CB9439F8B39ED70D11 + 46: 05F429D6AA9FBB1723D81AB268F95963 + 47: 7B91D5409357FF13F9B92ED2C6D63B66 + 48: 30AA88DDC6D49AEF0D4058616EEFD9D9 + 49: 16C0B4F46936AD501EEB5BEC8C699EB3 + 50: 782DDC3AA9B3E498767AA310D7C32CDB + 51: FABED92C454544588965E4CBBBDCDAC5 + 52: 7B04EC847F160BE26FB4A7C6B111EF91 + 53: C20AC6220BD352F8D53F0DEDBCA97862 + 54: 2EB8A89C854AD2412E5E2DB8638550C1 + 55: 390DC3D1C6EA4CD7A381BDD9F0B505A5 + 56: 1D86B9AAE5246182EF76456E9A8F2CC3 + 57: 1759BE8033CD082D771127CC81435696 + 58: 4F230D4174BBB11231ABD4AB58D6FB80 + 59: 9FA21699DE8CDE39FE4C9DF25271A87C + 60: 7658883C002D62D33EA21AC43E26C355 + 61: ED1CD4C63C40453677804FD66BE3E068 + 62: D715E8E09CF4C5A34793FCFF0A7EF0F9 + 63: 86C450794C4F920138A8CF2DD9221826 + 64: 2AE1A808F63CF7AFF39FE9595BE540EC + 65: C8E550F520B0662100FF767FC0FC38E4 + 66: 1A4CA5249BA8BF8E4AF50BD01B89C13C + 67: 25A3566CEE5E0921857048F4A54BF745 + 68: 4D76448CE2C08EBCF6C21FD304973DB1 + 69: 83BBC6D82633974D76A1B0994DD8891E + 70: 9F322885EB927B8C4F93AAC081C7F378 + 71: 7E0DFB22C9433A0A66A673ABB3E81B4A + 72: FD3DE62829CCF2AC389581D9932E1B94 + 73: CADF66BDE69903E9E3117DFE75EB1C6C + 74: 71DD9BF191A5A1A0311BA19BF0568727 + 75: EEC05781AEED255A8DA730399ABE8929 + 76: 07E7E6E57A239F659A6B17B695161878 + 77: 6E7DC67642EB72C295EC12C009902577 + 78: F6AD3BF571AEC27B2C99AAD4A22B9654 + 79: 0F38A5596BC9BFA1ABB7318A35E5841A + 80: 987BA29276694A84DF6F3448D2FA36B1 + 81: 3661D8F157DCBA761D1292FC2FB332C5 + 82: 81834820599DE6624EC116A651FFA2A4 + 83: 59E556C023829D31F76ECB5D2D5050FC + 84: 9389597634228E243808C1CCCC71627D + 85: FFD30A17850DB17BBDE7C3EBC8482A95 + 86: 0297895965B8C96F95A77E6A1BEB5FA5 + 87: 46185FBA371A282AD8251A8DA93E7A10 + 88: 34940377228A73C2CDA178635B8A4827 + 89: 0737C31BEFDE68780EB3A5504F295809 + 90: 3DEE2B38EAF96BC620785551C926E9AF + 91: 719B32410E625DC65AB4E422E24C8663 + 92: 5B9AEA802EFFE00D19E746E0684993CC + 93: EE96F9B8F8FFC084C0EF8C28ED0EEC4C + 94: C6575E5F4CDEE50C0C2F41ECC33BC9E0 + 95: 000DCE0FA82C1422ABF37EF1971B4B1F + 96: 83D1C6EBEF52D1B9DFA3F439BF8DCE25 + 97: 657AFE5CA6D54F9083F02C257CE7E3DB + 98: 9E65239503BEAB92716D5B504358352A + 99: D8375320E32FAE3BBABD4620B1231315 +100: CC8914472A9B5862287D695AD0A88BE6 +101: B0E0D8EDA1BDBEBCD0A78678AD7D6A64 +102: C8EBE9364129E651BD4FB491FE035433 +103: 2A6DF032E0D615DB3BE890B0B6D3349D +104: 975F0E184517902F1C239684EBC06314 +105: 5A86E403AD3D0B9EE5CF87C32482C6FA +106: D3E986B5231A204C88D7C2FD1ECA40C5 +107: 891ABD274D024F8B04143DE588A02AC7 +108: EA619405003DD17F13ED5BFB29587568 +109: EF5CD5EF1164A2E5BBC2D96360E55B87 +110: 07C74397955571A7E4025BB9EC555846 +111: B5F20FB0AC1C1DAA0DEF8EF78A9BDDB5 +112: 88D91C18A4AD272B4C1E2C76BE217BFA +113: AC548888F0E5E559777568ECE71E2007 +114: 816071E2B807CE6EF526E423BBA252D5 +115: 0585A675BADFDD749ECADE66BFFD0546 +116: 964CA97939664EE55B8B973D044D7695 +117: BB8FAACCE9D3238714C3934E6FEE2386 +118: 2BB26CD61B24CB5CB9E2C5FF40C51A00 +119: F5332DEBA64EB35CE3B5C7134C4C8495 +120: ADE7A5C99757D216D10E1F13E3A91F1F +121: AE98C3C4FD874CE0B8501FE4C428282A +122: 04D7625B67AC3F9D117AA45FEF6C6AC1 +123: A05D3C933DC8C8A1CF48290A5D52644E +124: 078F882264317B0C00383FBA7E079301 +125: 44023F3B109763A53FDEFF1822488855 +126: CA535702BAAB858D5FB5B79895E0E1E0 +127: FE1C2C02B7665895DBD2F4D2C22A7232 +128: 75A182DB4FD99599022F5A03F1427289 + +HMAC-rmd160 + 0: 33528FDB4FD0640B4C4363CEF1DE795719EBC7EE + 1: 514DF566C6204373EEE6020054AE7DDE2B0934DB + 2: CC8A5C8D2EBA02BF4474A4CC05CC2D863F1AA392 + 3: 27D731E218C369A32BE4B2BB29D2F1A0988BA583 + 4: 091245BFADF5C6635298702F233ECB3265E85460 + 5: BD2C07FA2197201DCA309063881F2EAC9D925A21 + 6: 480886856354E6FF34B3AFAF9E63FB794BAC4521 + 7: 258D58532BEB5EAD28E9BCA52AA4C0444CC2467A + 8: DB7513F824B42A9E1FFC1369F22F61054A3EB7F0 + 9: 3A4A258F23675EE02E1AC1F72197D1A11F32DE21 + 10: 9315ACAAAA8DC91A9AAF8DDD4CD000AE04F70E1D + 11: 57D60D77E1D78D23D3F184740D9DE392FC6C3C40 + 12: 950395C815A3D1A4A8BB25322333FECA15445BFB + 13: F8201A01C30F3B569B7497B5191AE16D1705085D + 14: 08DEA1A0CD4BD6C9031C84FD2005F15810FF088B + 15: CF41D88EB3921FA137F0203C2CB8BC5200FDE7BE + 16: A07100AAACF5253501A6643452D07C7DE2EA824E + 17: 19DE22082D1F4535A733F16262A135358D651737 + 18: D50BD92902AE0127AC8DD85E9A81ADB7EF3F1E64 + 19: 3FA34A3C02E06DE451794AB87C4FCE6877458CDA + 20: 5928329E4D830E8B2F7608A4ED46DCCFD5798425 + 21: 2825DBD7989A8978904A654E6AF125608B0BEBC1 + 22: 9C812424417D47ED7C78C7A049D4E6CB906DCF3C + 23: 9518A473A902DB6BB56F7A767ABA13C8DF306D37 + 24: 439C444C7AB4395C4DBA32E4F8CF4F76207E5BB4 + 25: 9021FCB087269457ABAA8105D4DAD8DF8904A2F6 + 26: 8B7B686199BC73A175940686BD57F45B2329D895 + 27: 0F50FB7AA9425975BFBB6AD65CF96284F768BB75 + 28: BAA1B7749A9CCAD7105E9ADEE499058A7BE4BA70 + 29: FBD3413CE89DFFE2F0A869036F5C4265D5B14743 + 30: 7CDB257E051ED0EFB761A5A044ECE5B0C1F12033 + 31: BB1E5D495074594534AD523987D8438CF1632425 + 32: CE6D7BEAD1496190F0F0E99B0B0C9BECFB7D9173 + 33: F8BE617A3256EB1C4BFC04CD386EB7FA46603926 + 34: D1A1F489434C458344239A75DA4241A3A94BEBA2 + 35: BEDD951DC98BD5C4138C1F8531D8288BA3C51B87 + 36: 9C2357E832CE87A227F6919B50A0A9D3A29B7CAF + 37: C9FCBB9A1AC48B71B2AA20AC992821531F1141EF + 38: 0B58D56923F9620BCD072703FBA71EC2172EEAD2 + 39: D97480E09FA6473AF9AAFA14FA9589AF65E62328 + 40: 4D5C56D0EB0BAD64FD0B0FB7F87D05EB551951CE + 41: B7EC2D13EDD3603D1BBC8CD29F32B43AEAF6EB4E + 42: 9BD5300B02C9432F686842E7900F3D2A085C5008 + 43: 7E8787C8780C64009216324802958E1D845332FB + 44: 1A3BC1AE95380D609571B01D8C3458B2566B74A5 + 45: 9672BD12EBBB12F398CEFA089BD3282A2D2892FB + 46: D5D3CAD705E2B0B6E0CBFBB0E8C22CD8EB1DC4C5 + 47: 408D84FE0B28A3B3CF16F60D6207A94B36219F81 + 48: 0B7E3D35C292D295797E3ED1F3D8BD5FD92A71BF + 49: 18AC1EA3406D69CD9E9C801F471AEA3A31C69D51 + 50: 98E40CE293ABE4ACFADE7D81371FA92AFA69248C + 51: D95E38F2D0C5ADB478A9BFF9F8E7B10064455C31 + 52: 6246C69FF502D453950BFEB5DBEF68CE76D70F12 + 53: 9D788F02EEE675F47AB4498B1337C6D83A37F64A + 54: 139387D749674D0E84F3C2BFBAFB3F0CDC4CA273 + 55: 09406CEDC1C37D275EBFE02CC707229244086CA2 + 56: BACA138E6EB6E5BEF150083CE0EFC64FB163EBF4 + 57: 87CF4CC4500A691934C2C6607F3296A0BEC980F6 + 58: F8E4DB4FE6879870E9F47BA29F0DA843342953CE + 59: 52DDF305014F1C68A34ED514B10FAE3B1B91F383 + 60: 0D568164C300BB14A4571A73493C02E4165383E4 + 61: E1DD806961D718F8C085CEA11A140900FE8064A4 + 62: 6470CBC7FE079B684D108550698B7C5D265736D4 + 63: DAF83273B2F16DCC69FD55DC84835931E75FF5D8 + 64: 47F4D7724BF49DE885D23D84D582EA3A00E1C2DE + 65: DBD6BD40F804E38963EBD2E81CE5196F6E69AC48 + 66: BD96E9391148957BE64FE6DA89CBDFF45233FBCE + 67: 20975680C2E31D61D7F303215A25CFAB4479F646 + 68: FFC321ED45ECC1A9FCDBC28ABAE0DA1FD27A628A + 69: 99F90008F139FA442C152706E522CEB349EABB00 + 70: 288C57DAD9D1174F4EBA92F7815B93C0916E8157 + 71: 8380FD083E742776CC32971B9E088B894A6A0071 + 72: B0F44C66552ECE94502597B6B100CC64561E6F1F + 73: AA0465458FA1F285F5A4530035F84F844D545A75 + 74: C90EE3BAC92FA4986C850DED11D728A78BE85543 + 75: 3E525BBEB158B246A3F4918B6D634CE8EBE4503A + 76: 7B42675AAE1D0DA5A84623E47C618744249384E5 + 77: F50AC31B43BC93D1BE2A4D9C40FC4D3593F2551C + 78: A31AE398E0D6668A52DAFE37D019F7571E0F681B + 79: BF10B29B4DC7C848C5192631E59E0EED32B8D81C + 80: 77B214EB3617C372C191D1D284FCED04F5AE17BF + 81: 1B17DC33F5966621F4BFA93961B1A8FFEE1AC820 + 82: 5A07D9861EDA6D8698E12FE5250CCAD882628B44 + 83: 176F46FF2202307828D7F62D39330444D688FDAD + 84: 59E94CFA3AC2BE8DC6098840E888306764308DE2 + 85: 679F243847C647FCC3F4589CF87972558350DC98 + 86: DB97F5EF492C7380472E16E3B055567DAB630153 + 87: 359CF9515F6B2192BF0E85EDBBC81D51232210B7 + 88: 30B59B3CBFFC08DA7D9514AE7627460BBBDED722 + 89: F31D5E2866D9726051B6E5AC9B846DB36EB705FD + 90: 860A58DDB6119261646907E251D60760099CAA07 + 91: 22EA0278EA053175C2F12BA4ED172FB0B518F3BA + 92: EC68297334F421AB3F2EF3518684E8E1B548BF56 + 93: 5C1405CC33D9025DA265FF4F25942853721489E2 + 94: 8AEA8E9EAFBF3BA597B65BBCCEE59013C8E6AC8B + 95: ABF7CCD01374D5DDAD6EFFB19412EE772E663DE2 + 96: F7F28E05FAB93A3D089BBFF56D4E462F0BEDA41A + 97: B6C4199D504E72793EEB49611E28A82DF5CD7905 + 98: 0B0916C89F1D9F1134E9106FEBAF4169DC49F752 + 99: 4F18AA0E88A01ED162D08F35300B1C3FCE1FE8B8 +100: 5D4F3C473D5859C16F70C1566F9800B3DBBBC643 +101: 02C1A5F34232B8900E6C7DF2BED957BCAE529784 +102: CDD46E434331D7869A27EA096CAEBF586D93CC2E +103: 492C04E69F0204F150B63022C7DBD28116458F97 +104: CDDAB90168E934E69E942B1F1EC0D0AD7BFB5B43 +105: F433642FA8091FB2517F3357DD30308B4A2AEF53 +106: 537B2118792B6A419C438E58CBB6C5BA887AE257 +107: 753728CB39813C27498033A07DEC03D1FA720FE9 +108: 119A6C5BF3EA8F7A78DA9ED2DE7ED9AE3942964A +109: A501EB611542A2A2CCC68AE754D2EAC17942BD8D +110: 158FB54E37C7DF54B29928B5DFA53A560DC09A5A +111: 15F5380252E23B5C37EE7E8D1F5963FBF8788577 +112: 735F2C3CF7680C63F33AE2D4F3569FA8EB45EB93 +113: 67AFC501C6582DF2A9DBD713F206041E5F3E1DEB +114: 7CAEFEC1C6E8232BCB90E3FE3523EE06496F36A3 +115: CC90ADFCF3F9AE777B30EAA6206A34EF54F74C02 +116: 974E0E85B47CCB870A511810DDEFE81CB85B28D3 +117: 516D6BA01E0186CB7D796FCD9DD169C45B63A93E +118: A1CE534BDD6591AF4EBF61ED75636C7BFF670658 +119: 1E4B241D6EADD77E046BDCCD25F70AAC969262D3 +120: 7F2F1B4B77C3170A9E015DF4E8C6EDFE736DFFC3 +121: 89A3BF181EF195464DBEF9576873CA2DF7D16268 +122: E1F96A7C9115E3DBF28E10D62F2D6EC89415B6D7 +123: D75C1081B3C2720D030EC5DE13093357A0EE6E51 +124: C11603CDAD8DF271093CACDFB5AA4E113A270EA5 +125: 39A9E659DFFDC2ABC88ADA2B6A7445090C7EFBF7 +126: 4132330C5E3344818AF5C054AD55309FF7B767A2 +127: B107A8B0C7B68581969A0F6DB95DB2F790098F1D +128: AD090CC9A6B381C0B3D87035274FBC056012A4E6 + diff --git a/notes/omac_tv.txt b/notes/omac_tv.txt new file mode 100644 index 0000000..9d299c9 --- /dev/null +++ b/notes/omac_tv.txt @@ -0,0 +1,407 @@ +OMAC Tests. In these tests messages of N bytes long (00,01,02,...,NN-1) are OMAC'ed. The initial key is +of the same format (length specified per cipher). The OMAC key in step N+1 is the OMAC output of +step N (repeated as required to fill the array). + +OMAC-aes (16 byte key) + 0: 97DD6E5A882CBD564C39AE7D1C5A31AA + 1: F69346EEB9A76553172FC20E9DB18C63 + 2: 996B17202E2EDEBD63F414DD5E84F3AF + 3: D00D7DA967A2873589A7496503B3DBAB + 4: B43C24C0A82DAA12D328395C2ABD7CAE + 5: 9B902B6663B5FEDC6F9DCE74B35B91F2 + 6: 06A9678C65D7CE225E082ECA31788335 + 7: 7D67866CDB313DF65DED113DB02D6362 + 8: 259E28CF3E578AC47A21A77BA9EA8261 + 9: 32F23C8F93EA301C6D3FE0840CA8DB4B + 10: C2B06388AD6F8C43D19FE4F6A8ED21AE + 11: FA8622485DB2F62F84FF46E532A1A141 + 12: F312D9B2E6272578F406B66C79F30A0E + 13: 7A5DE06B2BFB75ADA665E96F680AC098 + 14: C3B00380F0BD8E2F5C9DD9945E0F36EE + 15: DDD87974A5FB2E7A4514241E94526B5B + 16: AD24FC47A0FEA84C54696DE997A94F4B + 17: 7538713D8AA2AE3726307EFF087BBF5E + 18: 7619A52B4C34A98440812F5F28F8DC4F + 19: 7E797B8846554888622CC5E400B2FA44 + 20: 61E8DD3E09145F5657DB4B8F7BD2D7D8 + 21: FDAE2A3FE60DDF1871C2613A293AB6F1 + 22: A186D6EFD10DFFD2C088480B0A784185 + 23: 3119D337865618CDA55C06FB992427CF + 24: 413E3EAD7E3F169A37C49F9CA92E235E + 25: 37A55AF22373B9A1E2F8368B2FB992CA + 26: 4941F604C40EEEE1A16CFE073C12D1FE + 27: 3E8F4A0876BF12A2DCA87157F15DC884 + 28: 5DFAE292D8EEB13D8FE5725E5D169742 + 29: 59160455E0C0B35D950BA67C77F9FB05 + 30: 5AC0D736A06A7DD146B137ADEE78EE06 + 31: 0CA1178F28B953045EE76E2E760036CA + 32: 025616215F870D1EF838AD1D2AE0C649 + +OMAC-blowfish (8 byte key) + 0: 2CFB5DE451FFE8CC + 1: A5AC339DB44D020C + 2: A3CE0CF62249444D + 3: 3076B7129CE3F6A1 + 4: 9E091A637DDF70E3 + 5: 275199AB20A5F09C + 6: CDEDA8D16A401E62 + 7: FC980516CF5C9E30 + 8: 659D0B31D21B622B + 9: 8306847B5E72E018 + 10: 7AD029BBF1D2919F + 11: 133181425C6808C9 + 12: FC5AC60E367F413A + 13: E0DF8BCCF0AD01D9 + 14: AC5015398FA64A85 + 15: 1F068F22AFFECEE1 + 16: 8E6831D5370678EF + +OMAC-xtea (16 byte key) + 0: 4A0B6160602E6C69 + 1: 1B797D5E14237F21 + 2: 938300C83B99D0AC + 3: F989B99B3DE563C6 + 4: F65DEA2A6AD45D1E + 5: 1DB329F0239E162E + 6: C0C148C4EE8B4E1F + 7: D82B387D5DFFE1FB + 8: 1D027A4493898DF2 + 9: 196369F6B0AF971A + 10: 2A37A2655191D10A + 11: BD514BE32718EB4A + 12: B4DBC978F8EE74ED + 13: 8ACCAD35C3D436AE + 14: 73ABDC1956630C9B + 15: 73410D3D169373CE + 16: 23D797B3C7919374 + +OMAC-rc5 (8 byte key) + 0: E374E40562C3CB23 + 1: B46D83F69233E236 + 2: 7CB72B1D335F04B0 + 3: 94457CBC97B31328 + 4: 543D0EDFCDCD7C76 + 5: 5164EFA8412EAA5D + 6: 13CA0717EF95F9A7 + 7: 2AA49A7AA7719700 + 8: C9E7C56125C3D90F + 9: 2BE3E15FE58648AA + 10: 77D0B90372D6D0FD + 11: 17408F62ECD62F57 + 12: 7864EFFA59DC059B + 13: 3212E76E25E5DEA8 + 14: E2424C083CDE5A6A + 15: DE86FFDBDA65D138 + 16: 85482C24D61B8950 + +OMAC-rc6 (16 byte key) + 0: E103BD8BA47B7C1C010E1561712E6722 + 1: E51AEECFED3AF40443B3A1C011407736 + 2: FA6506C5ABE03381B045D28D1D828966 + 3: FAC4237FFE7772E2299D3D983BB130DD + 4: 3A7E24D41121A5D4F96FCECF0C2A4A10 + 5: AA44291E5500C1C8E1A14CB56E4F979A + 6: 4B8FDA6DA6B3266E39111F403C31754E + 7: 4DF5F1A1C8EBC7F56D0D12EEB63FF585 + 8: 46A6DDE419355EDE14D31045FCA1BA35 + 9: 71756D4D3DF59578B7F93FD4B5C08187 + 10: ADA292A19F8636A03A8BC58C26D65B0D + 11: 703190DAF17F8D08A67A11FDF0C2A622 + 12: D2B94CAD1AFC5CD012575964D1425BE6 + 13: 45FD0069FCA6F72E23E4DB41AA543091 + 14: 36F652600F5C9F226721400A7199E2BA + 15: E8CC6389ECF8EF1DBB90A0FD051B7570 + 16: 8125446B975DBDA742A903340D6B96C7 + 17: 00B55E4399EB930E592F507F896BF3DC + 18: 33E58F42A47C9543A851D6CA9324FEE0 + 19: 9F28FDEA3EC7F515128F5D0C0EB684C5 + 20: AC1DAF6C01AA28BCC0A819189FA949D7 + 21: D0532B5F54A179444D052A4D2AD6E4F9 + 22: 58B80A66549404C7B9F64D5AE3F798AB + 23: D0D6D586477F92311DDF667E0749D338 + 24: 0DFC0FAA67FF114398CE94D0688AE146 + 25: E163B8C00CF5CC9FA23ACACD62B53D64 + 26: ACE9270456AF9BD388BA72E98825CFE8 + 27: 4302EED9BAA19C7A296585E23A066A44 + 28: B3EEABEFAB25C7478419265564715387 + 29: 9F0630ADE9C74AB2981D63F3B69E85BF + 30: 1215A9446A275CCE2714F94F3C213BB7 + 31: AF43D7F748DE0E3458DB970BAC37E98D + 32: BF871AC9E892CE0DCD7C8C7ADDD854C6 + +OMAC-safer+ (16 byte key) + 0: A2C8C7FEA5529D01C3FF4E9359EF74F4 + 1: EAB87021118FF24FE79B69ABCCB14A8F + 2: 789566F467BAA68F4CC3C4B61901D6D4 + 3: 369F41EEAF7D628F9E0D77BE43BFC1D2 + 4: DC46A20E1F36F45006ED5B43BEC20DA6 + 5: 8F150CE34F57BBA2E6CE3431B78E4ACD + 6: 61CD154478BE20F33B26CD8FC58091A5 + 7: 4E6DAA575CF28F1F48B256262B7D558C + 8: D21FA4F1859571DB91E92767C5487AA2 + 9: E3D009DC7E71FBBB030B8FF0B544A2C9 + 10: 094C236EA48ABF7DBAE5A88AA3DE07D7 + 11: 00C401996F8224359566660AC1CEDAA1 + 12: D580EC60F712558D875F01643D96653F + 13: 8482298027C7B4D5969787A1DB1B1F2F + 14: AB726AE3DA95CB242E63EF876A4BC446 + 15: D668ED4919003F5E45590663FAED41DA + 16: E4CFFD7E0E7B176867C386001849FD6F + 17: 37B3C6DEFC5573879006D15F982A397C + 18: 0AB8847EE6A41A0E960080EF0D1BF1C5 + 19: 2C94FCA2A685F276A65ED286AE12FD9F + 20: 23383032032D7B5165A31ECA156DBD23 + 21: E1EECFB3D671DF694FFB05AE4305AD4C + 22: A0F6CA99B96CD1EDD04C52828C8A4D74 + 23: 12D6B7053417AF3E407EFD6EE1CC38FE + 24: A566D1C39AE7A1A0A77D5A1F56C5FAAB + 25: 81C9FAECEAEA326140AFCD569668F669 + 26: 6A00BF1D0DC893868378E4347CB4A1B9 + 27: 98842956DBE7AFB1BF49C46497BD54C7 + 28: 88EFCD5A1644B75BB0B3F5DD338849CE + 29: 77EC62C278C61163B1BEC595A11F047A + 30: 147424E817DC69413CC657E0CB292F7F + 31: A2946CBB910743EF62D8A3C7391B9B9B + 32: 00EEDA55520B8A5B88B76487E80EB6E1 + +OMAC-twofish (16 byte key) + 0: 0158EB365FCCFDD94EBA6BE42B6659C4 + 1: 17DA580917D147D10CB73DB6800B0E59 + 2: 3F185CC15EF3328D3E075665308C07C8 + 3: 5712A97ACC9D08FE9D2087D0CA16B0AD + 4: 90425A8CC1C026DDD896FC2131AF654B + 5: 30A43D4FEAE71F5396308C16DA081B4A + 6: 6839FEF605704D49F1A379A9E9595E6F + 7: 56A8F06DFEE543971B351B07430E2026 + 8: 36DD0E4B55C5314F9F2753D7EB6F0849 + 9: 8E319249A3CD456460F410F518F8CEDB + 10: 463978BE2A063C22E71DC71520723517 + 11: 1B735E45FD3DF636E0A6104D4A2E9CB8 + 12: 628A82213148AD9791153D5AAFBDDFDC + 13: 21AFDF08A36ADB6659B656C8EA0800E5 + 14: E5C3E58803DDBE174E0D4C2B8171AEF0 + 15: FC6981F2B4359BA05988D61822C0FA88 + 16: 7B03498FAFB04A6542248852225F9DAE + 17: 9B173E91E59A940186E57BB867B8307B + 18: 470BF2EE614C8423AA3FDF323F1C103E + 19: 6E664AFDFD8306547BBEDA036D267B79 + 20: F61AEC1144C3DD646169E16073700AC6 + 21: AE503B139707AFA494F7F2DE933EE81A + 22: A0A8BDD4ED0DCAE4A8E1DCEE56368FF0 + 23: 460B8207930DA434AE6AFECC305D9A26 + 24: 7F03F8C7BA5365CC65F7864A42693BC8 + 25: 31448849D6190484192F29A221700011 + 26: BDA941019C75551D858F70FB1362EB23 + 27: 2880CB3E62447AE8EACA76C17971BB18 + 28: FC8D710FA3990B56357E61C2A302EB84 + 29: 793CD15348D7DFF301C47BC6E6235E22 + 30: 6FB0CE69A15A3B6A933324A480077D35 + 31: C24FCA5DD4AE0DF2BFF17364D17D6743 + 32: DC6738080478AF9AF7CA833295031E06 + +OMAC-safer-k64 (8 byte key) + 0: 726FE2DD40A43924 + 1: 2A138B65EB352621 + 2: 9588A1B53E29616C + 3: C025DEFDE1A59850 + 4: 73D062F1B6D8E003 + 5: 944598A2FC8A2D76 + 6: B176C25D8CAFFC98 + 7: 14F05014DE6A090A + 8: A7B9847B2CE22D0F + 9: FCD71310CBAA3A62 + 10: BFF00CE5D4A20331 + 11: BEE12A2171333ED5 + 12: 333FD849BEB4A64A + 13: D048EC7E93B90435 + 14: F04960356689CFEF + 15: 9E63D9744BF1B61A + 16: 7C744982F32F8889 + +OMAC-safer-sk64 (8 byte key) + 0: E96711BA37D53743 + 1: 7DCFF26A03509FE1 + 2: 0A20EF19C8EE9BF2 + 3: FE2883748A6963CF + 4: 557060195B820A18 + 5: 771A7931FBBE5C0F + 6: 6BDBCE5F96CF91D8 + 7: F3B924CCE8724595 + 8: EC7191286D83C2C3 + 9: 94F55B19BB7A8AC1 + 10: 2189F4F2B06A8CA4 + 11: 99853DAEBCA33A46 + 12: 66EAC37A033802D7 + 13: 845D7AA866F8A8AD + 14: 33A874DFECAC22AC + 15: 63DD9F7A7F3683DF + 16: EAC277D951676C44 + +OMAC-safer-k128 (16 byte key) + 0: 8037B89AF193F129 + 1: FF2314E87BA6AFE1 + 2: C3243DF896B61D85 + 3: 0F61C715CE821AB8 + 4: EBFDC6A9CFD2F5A4 + 5: AB6497D7AF2C7FFF + 6: C920CEEB7C1819C2 + 7: 3E186951B545A7E5 + 8: 5EA36A93C94AF4AC + 9: 6A2C59FAE33709BE + 10: BF1BAFAF9FC39C19 + 11: 69EB6EF046677B7C + 12: CDDCEE6B20453094 + 13: A3833BD3FED6895C + 14: B6C05E51F01E049B + 15: 90A2D0EAB739D39B + 16: 07BF607A161D0A66 + +OMAC-safer-sk128 (16 byte key) + 0: 5E8B137A3946A557 + 1: 0228FA66B13F3C7E + 2: A6F9BBAFF050DCDD + 3: F75880F684A796CE + 4: E0AEFB8E32040EBD + 5: 9F65D658B86D310F + 6: 3FA52804FB46CCAA + 7: 2F6D12D199FCD2FB + 8: CB56AF60AFB4D2BB + 9: 8E6F0FF6FDD262FD + 10: 490245BE3CCCEDE2 + 11: EFD319AE46C73005 + 12: 43E00E545C848995 + 13: 10444B41ECA15EBE + 14: 521775C389D5BE71 + 15: 9B683EF8B097FEBA + 16: 3C5D746EED09530A + +OMAC-rc2 (8 byte key) + 0: F001FE9BBC3A97B0 + 1: 8F8DC9C952897FBD + 2: EC82EAD195AAC38C + 3: 53DD52269B19E9A4 + 4: 9B86F64BF72A0647 + 5: 664A88A29F2898C6 + 6: AFEC3F71C1415666 + 7: 9BA1F2C1A2E765F9 + 8: 402A12120908B436 + 9: 03ECCD4C6AF44144 + 10: E8CA3529B5D9D6FC + 11: 951EE10779CC585D + 12: B9083CA88E7E819B + 13: AFFB9E884DACC5B7 + 14: E942E8BC241343D6 + 15: 9B190489091344FB + 16: 9330A9E05554A15A + +OMAC-des (8 byte key) + 0: C9085E99D74DF01D + 1: FAC84F0EFBEF8630 + 2: C37C5FECE671CF16 + 3: 45B2CBEE8701A5B1 + 4: 53665E1F024EB001 + 5: 357123CEDFC9FF61 + 6: BD2CFD33FB1F832B + 7: 1AAA9D8C9120BDBF + 8: EB9F589AE9D4E78F + 9: C8F9D2ACE691922D + 10: 81ED6F3611DDC0FD + 11: 2965ABEAC46839EE + 12: 2208B1E095F7AE2E + 13: C0414FE41800113E + 14: 653A24119CF43D97 + 15: 7FB7CE0862958B37 + 16: 55097816B10C549B + +OMAC-3des (24 byte key) + 0: 7F07A9EA8ECEDF9E + 1: 4E2A652EB5FBF5F8 + 2: 4F84E3779ACCB9F5 + 3: 7134AB3463115DC6 + 4: 82327BE8EA2D7E0B + 5: 24950B9C14D87CD9 + 6: B25A097BB7E0E18A + 7: ED51BAE55ED925E7 + 8: 56B79E7644556975 + 9: A65BD98E4D4E31E2 + 10: 11145BB51514482D + 11: 397486787E676BA6 + 12: BD1F6DEBAF6D9AEF + 13: 5CC3921F7DB815CF + 14: B0C0E60DA5F727F3 + 15: F8637AEEFF10F470 + 16: 0EA19531D42706EA + +OMAC-cast5 (8 byte key) + 0: 7413DCDB9F0C3100 + 1: 423799EDF1472B79 + 2: 03856F0CB4F11606 + 3: F152AE6360813DE0 + 4: 853998BD980AD146 + 5: AE6C3D667DB8B414 + 6: B5A4986A34BDE20F + 7: E5ABE5B979798942 + 8: BEE8DFED4555F405 + 9: 6B5339E952AF61BE + 10: 5E867CF34D9C1149 + 11: F9C55CB3BC655E08 + 12: EA09A2929AC7D915 + 13: CE8EB0E4370E1933 + 14: 749A424B2AA91B98 + 15: 8DDA93C2B814D5D1 + 16: E8B0B219D4CB699B + +OMAC-noekeon (16 byte key) + 0: 897F93D42DF43E4FDACB0E19A27D0CF5 + 1: 3FAB4FD1A374C36E80D0535ADA81583A + 2: 209F1B04BD823B068BC19CEF40B875DB + 3: E8FC96A2D8EB9BDA9E8A4EA8F6FE611A + 4: 35DE59C345C4AF97924187A6EA73F556 + 5: 59793AB3D84D614D8AEE6E233B3DE755 + 6: 64DCB7E74485DF98F4DC70B14DD26107 + 7: 42E87ABB43E4504DB362B59A9BBC28DC + 8: 98EC0C30C1AFBF4BC9A2DF421AC446E4 + 9: 8B3B59B481B7AFDB6BC593E2BB2A80B2 + 10: 0F60392A9518682015F43B8109E3A773 + 11: A99BEC6BB467B5949EC4819B8FB47874 + 12: 8E15ED270998CD1D7226B2BB9B5A8BC8 + 13: B4D637277DE68E507DD95E6EC495B364 + 14: DCCF001FA3A9AB5C58213CEB90B341E7 + 15: 508C01FDA50B06DDC1AF9CD78F0FD2C7 + 16: 3DB78001DE8115BE9E0B884AE4243926 + 17: 165951DF3F7D28AD6A2FE56DC32A0F60 + 18: 155944AEA14A6E08283421E8F19FE6F3 + 19: 151BEE5BC94004DFD407A0EFE51F8D9A + 20: 081C3192C00D7BACB147FDDA5C460A4A + 21: BEEB181DB90F5B3B1DD5BCFFC87C66DE + 22: D83B9F8AFD912D8424C85AB0FBDD4751 + 23: A3BAF0E00DEBFB9C3A7B65A5AFCEE670 + 24: D03695C35C7D36C05FD26ADBF070E559 + 25: 5BFAA49199ABCE1CFBA626D30FA6AB0F + 26: 9C3601196AD328AADBE62C730ECCC888 + 27: 75D79E48C5797963EBAF466BC0E1639E + 28: 968DF7D963E6D023EC8421C7B2787E7B + 29: 5E315EB6B6E583E7D8CF78A3A81D28C9 + 30: 322E00FC522FA7B41A6564E37F3D9DDC + 31: AAB04CB0B25A7A7951C75592BA7CB360 + 32: CD5B1ED284EDCD493EFE133ECEA0F822 + +OMAC-skipjack (10 byte key) + 0: 84EDFA769040603C + 1: 7DA58A4CBD642627 + 2: 118F60115CFC8229 + 3: A7F7346D34DB2F0E + 4: 35615CCD526CD57F + 5: DE471601A3660844 + 6: 15FCCE6D6D883D1F + 7: C6F694861233151B + 8: 3B762B397F16E807 + 9: 976C6AB59FB3AB12 + 10: 6810791F2C595961 + 11: 7FA3478286917F17 + 12: 73DEE44A51C6B610 + 13: 89EE8B253B1ACE81 + 14: CDF2586A56C8A0B5 + 15: ED91F98DA98F42C4 + 16: D8D0FA5CE96B08BF + diff --git a/notes/tech0003.txt b/notes/tech0003.txt index 5df3b15..b43f8aa 100644 --- a/notes/tech0003.txt +++ b/notes/tech0003.txt @@ -12,28 +12,29 @@ and no heap. To save space all of the symmetric key scheduled keys are stored in a union called "symmetric_key". This means the size of a symmetric_key is the size of the largest scheduled key. By removing the ciphers you don't use from the build you can minimize the size of this structure. For instance, by removing both Twofish and Blowfish the -size reduces to 528 bytes from the 4,256 bytes it would have been (on a 32-bit platform). Or if you remove -Blowfish and use Twofish with TWOFISH_SMALL defined its still 528 bytes. Even at its largest the structure is only +size reduces to 768 bytes from the 4,256 bytes it would have been (on a 32-bit platform). Or if you remove +Blowfish and use Twofish with TWOFISH_SMALL defined its still 768 bytes. Even at its largest the structure is only 4KB which is normally not a problem for any platform. Cipher Name | Size of scheduled key (bytes) | ------------+-------------------------------| +Twofish | 4,256 | Blowfish | 4,168 | -RC5 | 204 | -RC6 | 176 | +3DES | 768 | SAFER+ | 532 | Serpent | 528 | Rijndael | 516 | +RC5 | 204 | XTEA | 256 | -Twofish | 4,256 | -Twofish [*] | 193 | -SAFER [#] | 217 | RC2 | 256 | DES | 256 | -3DES | 768 | +SAFER [#] | 217 | +Twofish [*] | 193 | +RC6 | 176 | CAST5 | 132 | Noekeon | 32 | +Skipjack | 10 | ------------+-------------------------------/ Memory used per cipher on a 32-bit platform. @@ -43,4 +44,9 @@ Memory used per cipher on a 32-bit platform. Noekeon is a fairly fast cipher and uses very little memory. Ideally in low-ram platforms all other ciphers should be left undefined and Noekeon should remain. While Noekeon is generally considered a secure block cipher (it is insecure as a hash) CAST5 is perhaps a "runner-up" choice. CAST5 has been around longer (it is also known as CAST-128) and is -fairly fast as well. \ No newline at end of file +fairly fast as well. + +You can easily accomplish this via the "config.pl" script. Simply answer "n" to all of the ciphers except the one you want +and then rebuild the library. [or you can hand edit mycrypt_custom.h] + + diff --git a/omac.c b/omac.c new file mode 100644 index 0000000..0b5392c --- /dev/null +++ b/omac.c @@ -0,0 +1,244 @@ +/* OMAC1 Support by Tom St Denis (for 64 and 128 bit block ciphers only) */ +#include "mycrypt.h" + +#ifdef OMAC + +int omac_init(omac_state *omac, int cipher, const unsigned char *key, unsigned long keylen) +{ + int err, x, y, mask, msb, len; + + _ARGCHK(omac != NULL); + _ARGCHK(key != NULL); + + /* schedule the key */ + if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { + return err; + } + + if ((err = cipher_descriptor[cipher].setup(key, keylen, 0, &omac->key)) != CRYPT_OK) { + return err; + } + + /* ok now we need Lu and Lu^2 [calc one from the other] */ + + /* first calc L which is Ek(0) */ + zeromem(omac->Lu[0], cipher_descriptor[cipher].block_length); + cipher_descriptor[cipher].ecb_encrypt(omac->Lu[0], omac->Lu[0], &omac->key); + + /* now setup the system */ + switch (cipher_descriptor[cipher].block_length) { + case 8: mask = 0x1B; + len = 8; + break; + case 16: mask = 0x87; + len = 16; + break; + default: return CRYPT_INVALID_ARG; + } + + /* now do the mults, whoopy! */ + for (x = 0; x < 2; x++) { + /* if msb(L * u^(x+1)) = 0 then just shift, otherwise shift and xor constant mask */ + msb = omac->Lu[x][0] >> 7; + + /* shift left */ + for (y = 0; y < (len - 1); y++) { + omac->Lu[x][y] = ((omac->Lu[x][y] << 1) | (omac->Lu[x][y+1] >> 7)) & 255; + } + omac->Lu[x][len - 1] = ((omac->Lu[x][len - 1] << 1) ^ (msb ? mask : 0)) & 255; + + /* copy up as require */ + if (x == 0) { + memcpy(omac->Lu[1], omac->Lu[0], sizeof(omac->Lu[0])); + } + } + + /* setup state */ + omac->cipher_idx = cipher; + omac->buflen = 0; + omac->blklen = len; + zeromem(omac->prev, sizeof(omac->prev)); + zeromem(omac->block, sizeof(omac->block)); + + return CRYPT_OK; +} + +int omac_process(omac_state *state, const unsigned char *buf, unsigned long len) +{ + int err, n, x; + + _ARGCHK(state != NULL); + _ARGCHK(buf != NULL); + if ((err = cipher_is_valid(state->cipher_idx)) != CRYPT_OK) { + return err; + } + + if ((state->buflen > (int)sizeof(state->block)) || (state->buflen < 0) || + (state->blklen > (int)sizeof(state->block)) || (state->buflen > state->blklen)) { + return CRYPT_INVALID_ARG; + } + + while (len != 0) { + /* ok if the block is full we xor in prev, encrypt and replace prev */ + if (state->buflen == state->blklen) { + for (x = 0; x < state->blklen; x++) { + state->block[x] ^= state->prev[x]; + } + cipher_descriptor[state->cipher_idx].ecb_encrypt(state->block, state->prev, &state->key); + state->buflen = 0; + } + + /* add bytes */ + n = MIN(len, (unsigned long)(state->blklen - state->buflen)); + memcpy(state->block + state->buflen, buf, n); + state->buflen += n; + len -= n; + buf += n; + } + + return CRYPT_OK; +} + +int omac_done(omac_state *state, unsigned char *out, unsigned long *outlen) +{ + int err, mode, x; + + _ARGCHK(state != NULL); + _ARGCHK(out != NULL); + if ((err = cipher_is_valid(state->cipher_idx)) != CRYPT_OK) { + return err; + } + + if ((state->buflen > (int)sizeof(state->block)) || (state->buflen < 0) || + (state->blklen > (int)sizeof(state->block)) || (state->buflen > state->blklen)) { + return CRYPT_INVALID_ARG; + } + + /* figure out mode */ + if (state->buflen != state->blklen) { + /* add the 0x80 byte */ + state->block[state->buflen++] = 0x80; + + /* pad with 0x00 */ + while (state->buflen < state->blklen) { + state->block[state->buflen++] = 0x00; + } + mode = 1; + } else { + mode = 0; + } + + /* now xor prev + Lu[mode] */ + for (x = 0; x < state->blklen; x++) { + state->block[x] ^= state->prev[x] ^ state->Lu[mode][x]; + } + + /* encrypt it */ + cipher_descriptor[state->cipher_idx].ecb_encrypt(state->block, state->block, &state->key); + + /* output it */ + for (x = 0; x < state->blklen && (unsigned long)x < *outlen; x++) { + out[x] = state->block[x]; + } + *outlen = x; + +#ifdef CLEAN_STACK + zeromem(state, sizeof(*state)); +#endif + return CRYPT_OK; +} + +int omac_memory(int cipher, const unsigned char *key, unsigned long keylen, + const unsigned char *msg, unsigned long msglen, + unsigned char *out, unsigned long *outlen) +{ + int err; + omac_state omac; + + if ((err = omac_init(&omac, cipher, key, keylen)) != CRYPT_OK) { + return err; + } + if ((err = omac_process(&omac, msg, msglen)) != CRYPT_OK) { + return err; + } + if ((err = omac_done(&omac, out, outlen)) != CRYPT_OK) { + return err; + } + return CRYPT_OK; +} + +int omac_file(int cipher, const unsigned char *key, unsigned long keylen, + const char *filename, unsigned char *out, unsigned long *outlen) +{ +#ifdef NO_FILE + return CRYPT_NOP; +#else + int err, x; + omac_state omac; + FILE *in; + unsigned char buf[512]; + + in = fopen(filename, "rb"); + if (in == NULL) { + return CRYPT_FILE_NOTFOUND; + } + + if ((err = omac_init(&omac, cipher, key, keylen)) != CRYPT_OK) { + fclose(in); + return err; + } + + do { + x = fread(buf, 1, sizeof(buf), in); + if ((err = omac_process(&omac, buf, x)) != CRYPT_OK) { + fclose(in); + return err; + } + } while (x == sizeof(buf)); + fclose(in); + + if ((err = omac_done(&omac, out, outlen)) != CRYPT_OK) { + return err; + } + return CRYPT_OK; +#endif +} + +int omac_test(void) +{ +#if !defined(LTC_TEST) + return CRYPT_NOP; +#else + static const unsigned char key[] = { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, + 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }; + static const unsigned char pt[] = { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, + 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a, + 0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c, + 0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51, + 0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11 }; + static const unsigned char tag[] = { 0xdf, 0xa6, 0x67, 0x47, 0xde, 0x9a, 0xe6, 0x30, + 0x30, 0xca, 0x32, 0x61, 0x14, 0x97, 0xc8, 0x27 }; + unsigned char out[16]; + int err, idx; + unsigned long len; + + + /* AES can be under rijndael or aes... try to find it */ + if ((idx = find_cipher("aes")) == -1) { + if ((idx = find_cipher("rijndael")) == -1) { + return CRYPT_NOP; + } + } + len = sizeof(out); + if ((err = omac_memory(idx, key, 16, pt, 40, out, &len)) != CRYPT_OK) { + return err; + } + + if (memcmp(out, tag, 16) != 0) { + return CRYPT_FAIL_TESTVECTOR; + } + return CRYPT_OK; +#endif +} + +#endif diff --git a/prime.c b/prime.c index f7bf0de..4837a0a 100644 --- a/prime.c +++ b/prime.c @@ -2,75 +2,67 @@ #ifdef MPI +struct rng_data { + prng_state *prng; + int wprng; +}; + + #define UPPER_LIMIT PRIME_SIZE /* figures out if a number is prime (MR test) */ int is_prime(mp_int *N, int *result) { int err; - if ((err = mp_prime_is_prime(N, 8, result)) != MP_OKAY) { - return CRYPT_MEM; + _ARGCHK(N != NULL); + _ARGCHK(result != NULL); + if ((err = mp_prime_is_prime(N, mp_prime_rabin_miller_trials(mp_count_bits(N)), result)) != MP_OKAY) { + return mpi_to_ltc_error(err); } return CRYPT_OK; } +static int rand_prime_helper(unsigned char *dst, int len, void *dat) +{ + return (int)prng_descriptor[((struct rng_data *)dat)->wprng].read(dst, len, ((struct rng_data *)dat)->prng); +} + int rand_prime(mp_int *N, long len, prng_state *prng, int wprng) { - unsigned char buf[260]; - int err, step, ormask; + struct rng_data rng; + int type, err; _ARGCHK(N != NULL); - /* pass a negative size if you want a prime congruent to 3 mod 4 */ - if (len < 0) { - step = 1; - ormask = 3; - len = -len; - } else { - step = 0; - ormask = 1; - } - /* allow sizes between 2 and 256 bytes for a prime size */ if (len < 2 || len > 256) { return CRYPT_INVALID_PRIME_SIZE; } - /* valid PRNG? */ + /* valid PRNG? Better be! */ if ((err = prng_is_valid(wprng)) != CRYPT_OK) { return err; } - /* read the prng */ - if (prng_descriptor[wprng].read(buf+2, (unsigned long)len, prng) != (unsigned long)len) { - return CRYPT_ERROR_READPRNG; + /* setup our callback data, then world domination! */ + rng.prng = prng; + rng.wprng = wprng; + + /* get type */ + if (len < 0) { + type = 1; + len = -len; + } else { + type = 0; } - /* set sign byte to zero */ - buf[0] = (unsigned char)0; - - /* Set the top byte to 0x01 which makes the number a len*8 bit number */ - buf[1] = (unsigned char)0x01; - - /* set the LSB to the desired settings - * (1 for any prime, 3 for primes congruent to 3 mod 4) + /* New prime generation makes the code even more cryptoish-insane. Do you know what this means!!! + -- Gir: Yeah, oh wait, er, no. */ - buf[len+1] |= (unsigned char)ormask; - - /* read the number in */ - if (mp_read_raw(N, buf, 2+len) != MP_OKAY) { - return CRYPT_MEM; + if ((err = mp_prime_random(N, mp_prime_rabin_miller_trials(len*8), len, type, rand_prime_helper, &rng)) != MP_OKAY) { + return mpi_to_ltc_error(err); } - /* Find the next prime after N */ - if (mp_prime_next_prime(N, 8, step) != MP_OKAY) { - return CRYPT_MEM; - } - -#ifdef CLEAN_STACK - zeromem(buf, sizeof(buf)); -#endif - return CRYPT_OK; } diff --git a/rc2.c b/rc2.c index faaf8ee..a352f7c 100644 --- a/rc2.c +++ b/rc2.c @@ -71,7 +71,7 @@ int rc2_setup(const unsigned char *key, int keylen, int rounds, symmetric_key *s } for (i = 0; i < keylen; i++) { - tmp[i] = key[i]; + tmp[i] = key[i] & 255; } /* Phase 1: Expand input key to 128 bytes */ @@ -261,22 +261,28 @@ int rc2_test(void) { 0x22, 0x69, 0x55, 0x2a, 0xb0, 0xf8, 0x5c, 0xa6 } } }; - int x, err; + int x, y, err; symmetric_key skey; - unsigned char buf[2][8]; + unsigned char tmp[2][8]; for (x = 0; x < (int)(sizeof(tests) / sizeof(tests[0])); x++) { - zeromem(buf, sizeof(buf)); + zeromem(tmp, sizeof(tmp)); if ((err = rc2_setup(tests[x].key, tests[x].keylen, 0, &skey)) != CRYPT_OK) { return err; } - rc2_ecb_encrypt(tests[x].pt, buf[0], &skey); - rc2_ecb_decrypt(buf[0], buf[1], &skey); + rc2_ecb_encrypt(tests[x].pt, tmp[0], &skey); + rc2_ecb_decrypt(tmp[0], tmp[1], &skey); - if (memcmp(buf[0], tests[x].ct, 8) != 0 || memcmp(buf[1], tests[x].pt, 8) != 0) { + if (memcmp(tmp[0], tests[x].ct, 8) != 0 || memcmp(tmp[1], tests[x].pt, 8) != 0) { return CRYPT_FAIL_TESTVECTOR; } + + /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ + for (y = 0; y < 8; y++) tmp[0][y] = 0; + for (y = 0; y < 1000; y++) rc2_ecb_encrypt(tmp[0], tmp[0], &skey); + for (y = 0; y < 1000; y++) rc2_ecb_decrypt(tmp[0], tmp[0], &skey); + for (y = 0; y < 8; y++) if (tmp[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; } return CRYPT_OK; #endif diff --git a/rc5.c b/rc5.c index 0572f18..135db08 100644 --- a/rc5.c +++ b/rc5.c @@ -69,7 +69,7 @@ int rc5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_ke /* setup the S array */ t = (ulong32)(2 * (num_rounds + 1)); - memcpy(S, stab, t * sizeof(stab[0])); + memcpy(S, stab, t * sizeof(*S)); /* mix buffer */ s = 3 * MAX(t, j); @@ -211,8 +211,8 @@ int rc5_test(void) { 0x65, 0xc1, 0x78, 0xb2, 0x84, 0xd1, 0x97, 0xcc } } }; - unsigned char buf[2][8]; - int x, err; + unsigned char tmp[2][8]; + int x, y, err; symmetric_key key; for (x = 0; x < (int)(sizeof(tests) / sizeof(tests[0])); x++) { @@ -222,13 +222,19 @@ int rc5_test(void) } /* encrypt and decrypt */ - rc5_ecb_encrypt(tests[x].pt, buf[0], &key); - rc5_ecb_decrypt(buf[0], buf[1], &key); + rc5_ecb_encrypt(tests[x].pt, tmp[0], &key); + rc5_ecb_decrypt(tmp[0], tmp[1], &key); /* compare */ - if (memcmp(buf[0], tests[x].ct, 8) != 0 || memcmp(buf[1], tests[x].pt, 8) != 0) { + if (memcmp(tmp[0], tests[x].ct, 8) != 0 || memcmp(tmp[1], tests[x].pt, 8) != 0) { return CRYPT_FAIL_TESTVECTOR; } + + /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ + for (y = 0; y < 8; y++) tmp[0][y] = 0; + for (y = 0; y < 1000; y++) rc5_ecb_encrypt(tmp[0], tmp[0], &key); + for (y = 0; y < 1000; y++) rc5_ecb_decrypt(tmp[0], tmp[0], &key); + for (y = 0; y < 8; y++) if (tmp[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; } return CRYPT_OK; #endif diff --git a/rc6.c b/rc6.c index c39a439..3a0d974 100644 --- a/rc6.c +++ b/rc6.c @@ -224,8 +224,8 @@ int rc6_test(void) 0x20, 0xad, 0x16, 0xa1, 0x67, 0x4e, 0x5d, 0x48 } } }; - unsigned char buf[2][16]; - int x, err; + unsigned char tmp[2][16]; + int x, y, err; symmetric_key key; for (x = 0; x < (int)(sizeof(tests) / sizeof(tests[0])); x++) { @@ -235,13 +235,19 @@ int rc6_test(void) } /* encrypt and decrypt */ - rc6_ecb_encrypt(tests[x].pt, buf[0], &key); - rc6_ecb_decrypt(buf[0], buf[1], &key); + rc6_ecb_encrypt(tests[x].pt, tmp[0], &key); + rc6_ecb_decrypt(tmp[0], tmp[1], &key); /* compare */ - if (memcmp(buf[0], tests[x].ct, 16) || memcmp(buf[1], tests[x].pt, 16)) { + if (memcmp(tmp[0], tests[x].ct, 16) || memcmp(tmp[1], tests[x].pt, 16)) { return CRYPT_FAIL_TESTVECTOR; } + + /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ + for (y = 0; y < 16; y++) tmp[0][y] = 0; + for (y = 0; y < 1000; y++) rc6_ecb_encrypt(tmp[0], tmp[0], &key); + for (y = 0; y < 1000; y++) rc6_ecb_decrypt(tmp[0], tmp[0], &key); + for (y = 0; y < 16; y++) if (tmp[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; } return CRYPT_OK; #endif diff --git a/rmd128.c b/rmd128.c index e37c87d..89fa5b6 100644 --- a/rmd128.c +++ b/rmd128.c @@ -59,17 +59,17 @@ const struct _hash_descriptor rmd128_desc = (a) = ROL((a), (s)); #ifdef CLEAN_STACK -static void _rmd128_compress(hash_state *md) +static void _rmd128_compress(hash_state *md, unsigned char *buf) #else -static void rmd128_compress(hash_state *md) +static void rmd128_compress(hash_state *md, unsigned char *buf) #endif { - unsigned long aa,bb,cc,dd,aaa,bbb,ccc,ddd,X[16]; + ulong32 aa,bb,cc,dd,aaa,bbb,ccc,ddd,X[16]; int i; /* load words X */ for (i = 0; i < 16; i++){ - LOAD32L(X[i], md->rmd128.buf + (4 * i)); + LOAD32L(X[i], buf + (4 * i)); } /* load state */ @@ -231,10 +231,10 @@ static void rmd128_compress(hash_state *md) } #ifdef CLEAN_STACK -static void rmd128_compress(hash_state *md) +static void rmd128_compress(hash_state *md, unsigned char *buf) { - _rmd128_compress(md); - burn_stack(sizeof(unsigned long) * 24 + sizeof(int)); + _rmd128_compress(md, buf); + burn_stack(sizeof(ulong32) * 24 + sizeof(int)); } #endif @@ -249,34 +249,20 @@ void rmd128_init(hash_state * md) md->rmd128.length = 0; } -void rmd128_process(hash_state * md, const unsigned char *buf, unsigned long len) -{ - unsigned long n; - _ARGCHK(md != NULL); - _ARGCHK(buf != NULL); - while (len > 0) { - n = MIN(len, (64 - md->rmd128.curlen)); - memcpy(md->rmd128.buf + md->rmd128.curlen, buf, (size_t)n); - md->rmd128.curlen += n; - buf += n; - len -= n; +HASH_PROCESS(rmd128_process, rmd128_compress, rmd128, 64) - /* is 64 bytes full? */ - if (md->rmd128.curlen == 64) { - rmd128_compress(md); - md->rmd128.length += 512; - md->rmd128.curlen = 0; - } - } -} - -void rmd128_done(hash_state * md, unsigned char *hash) +int rmd128_done(hash_state * md, unsigned char *hash) { int i; _ARGCHK(md != NULL); _ARGCHK(hash != NULL); + if (md->rmd128.curlen >= sizeof(md->rmd128.buf)) { + return CRYPT_INVALID_ARG; + } + + /* increase the length of the message */ md->rmd128.length += md->rmd128.curlen * 8; @@ -291,7 +277,7 @@ void rmd128_done(hash_state * md, unsigned char *hash) while (md->rmd128.curlen < 64) { md->rmd128.buf[md->rmd128.curlen++] = (unsigned char)0; } - rmd128_compress(md); + rmd128_compress(md, md->rmd128.buf); md->rmd128.curlen = 0; } @@ -302,7 +288,7 @@ void rmd128_done(hash_state * md, unsigned char *hash) /* store length */ STORE64L(md->rmd128.length, md->rmd128.buf+56); - rmd128_compress(md); + rmd128_compress(md, md->rmd128.buf); /* copy output */ for (i = 0; i < 4; i++) { @@ -311,6 +297,7 @@ void rmd128_done(hash_state * md, unsigned char *hash) #ifdef CLEAN_STACK zeromem(md, sizeof(hash_state)); #endif + return CRYPT_OK; } int rmd128_test(void) diff --git a/rmd160.c b/rmd160.c index 934a239..c429215 100644 --- a/rmd160.c +++ b/rmd160.c @@ -79,17 +79,17 @@ const struct _hash_descriptor rmd160_desc = #ifdef CLEAN_STACK -static void _rmd160_compress(hash_state *md) +static void _rmd160_compress(hash_state *md, unsigned char *buf) #else -static void rmd160_compress(hash_state *md) +static void rmd160_compress(hash_state *md, unsigned char *buf) #endif { - unsigned long aa,bb,cc,dd,ee,aaa,bbb,ccc,ddd,eee,X[16]; + ulong32 aa,bb,cc,dd,ee,aaa,bbb,ccc,ddd,eee,X[16]; int i; /* load words X */ for (i = 0; i < 16; i++){ - LOAD32L(X[i], md->rmd160.buf + (4 * i)); + LOAD32L(X[i], buf + (4 * i)); } /* load state */ @@ -289,10 +289,10 @@ static void rmd160_compress(hash_state *md) } #ifdef CLEAN_STACK -static void rmd160_compress(hash_state *md) +static void rmd160_compress(hash_state *md, unsigned char *buf) { - _rmd160_compress(md); - burn_stack(sizeof(unsigned long) * 26 + sizeof(int)); + _rmd160_compress(md, buf); + burn_stack(sizeof(ulong32) * 26 + sizeof(int)); } #endif @@ -308,34 +308,20 @@ void rmd160_init(hash_state * md) md->rmd160.length = 0; } -void rmd160_process(hash_state * md, const unsigned char *buf, unsigned long len) -{ - unsigned long n; - _ARGCHK(md != NULL); - _ARGCHK(buf != NULL); - while (len > 0) { - n = MIN(len, (64 - md->rmd160.curlen)); - memcpy(md->rmd160.buf + md->rmd160.curlen, buf, (size_t)n); - md->rmd160.curlen += n; - buf += n; - len -= n; +HASH_PROCESS(rmd160_process, rmd160_compress, rmd160, 64) - /* is 64 bytes full? */ - if (md->rmd160.curlen == 64) { - rmd160_compress(md); - md->rmd160.length += 512; - md->rmd160.curlen = 0; - } - } -} - -void rmd160_done(hash_state * md, unsigned char *hash) +int rmd160_done(hash_state * md, unsigned char *hash) { int i; _ARGCHK(md != NULL); _ARGCHK(hash != NULL); + if (md->rmd160.curlen >= sizeof(md->rmd160.buf)) { + return CRYPT_INVALID_ARG; + } + + /* increase the length of the message */ md->rmd160.length += md->rmd160.curlen * 8; @@ -350,7 +336,7 @@ void rmd160_done(hash_state * md, unsigned char *hash) while (md->rmd160.curlen < 64) { md->rmd160.buf[md->rmd160.curlen++] = (unsigned char)0; } - rmd160_compress(md); + rmd160_compress(md, md->rmd160.buf); md->rmd160.curlen = 0; } @@ -361,7 +347,7 @@ void rmd160_done(hash_state * md, unsigned char *hash) /* store length */ STORE64L(md->rmd160.length, md->rmd160.buf+56); - rmd160_compress(md); + rmd160_compress(md, md->rmd160.buf); /* copy output */ for (i = 0; i < 5; i++) { @@ -370,6 +356,7 @@ void rmd160_done(hash_state * md, unsigned char *hash) #ifdef CLEAN_STACK zeromem(md, sizeof(hash_state)); #endif + return CRYPT_OK; } int rmd160_test(void) diff --git a/rsa.c b/rsa.c index c60d22f..0673e1c 100644 --- a/rsa.c +++ b/rsa.c @@ -122,9 +122,14 @@ int rsa_exptmod(const unsigned char *in, unsigned long inlen, return CRYPT_PK_NOT_PRIVATE; } + /* must be a private or public operation */ + if (which != PK_PRIVATE && which != PK_PUBLIC) { + return CRYPT_PK_INVALID_TYPE; + } + /* init and copy into tmp */ - if (mp_init_multi(&tmp, &tmpa, &tmpb, NULL) != MP_OKAY) { goto error; } - if (mp_read_unsigned_bin(&tmp, (unsigned char *)in, (int)inlen) != MP_OKAY) { goto error; } + if (mp_init_multi(&tmp, &tmpa, &tmpb, NULL) != MP_OKAY) { goto error; } + if (mp_read_unsigned_bin(&tmp, (unsigned char *)in, (int)inlen) != MP_OKAY) { goto error; } /* sanity check on the input */ if (mp_cmp(&key->N, &tmp) == MP_LT) { @@ -277,8 +282,9 @@ int rsa_signdepad(const unsigned char *in, unsigned long inlen, return CRYPT_INVALID_PACKET; } } - for (x = 0; x < inlen/3; x++) + for (x = 0; x < inlen/3; x++) { out[x] = in[x+(inlen/3)]; + } *outlen = inlen/3; return CRYPT_OK; } @@ -295,8 +301,9 @@ int rsa_depad(const unsigned char *in, unsigned long inlen, if (*outlen < inlen/3) { return CRYPT_BUFFER_OVERFLOW; } - for (x = 0; x < inlen/3; x++) + for (x = 0; x < inlen/3; x++) { out[x] = in[x+(inlen/3)]; + } *outlen = inlen/3; return CRYPT_OK; } @@ -306,7 +313,7 @@ int rsa_depad(const unsigned char *in, unsigned long inlen, z = (unsigned long)mp_unsigned_bin_size(num); \ STORE32L(z, buf2+y); \ y += 4; \ - (void)mp_to_unsigned_bin(num, buf2+y); \ + if (mp_to_unsigned_bin(num, buf2+y) != MP_OKAY) { return CRYPT_MEM; } \ y += z; \ } diff --git a/safer+.c b/safer+.c index c70a3a2..89d50e8 100644 --- a/safer+.c +++ b/safer+.c @@ -1,3 +1,4 @@ +/* SAFER+ Implementation by Tom St Denis */ #include "mycrypt.h" #ifdef SAFERP @@ -450,21 +451,27 @@ int saferp_test(void) } }; - unsigned char buf[2][16]; + unsigned char tmp[2][16]; symmetric_key skey; - int err, i; + int err, i, y; for (i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) { if ((err = saferp_setup(tests[i].key, tests[i].keylen, 0, &skey)) != CRYPT_OK) { return err; } - saferp_ecb_encrypt(tests[i].pt, buf[0], &skey); - saferp_ecb_decrypt(buf[0], buf[1], &skey); + saferp_ecb_encrypt(tests[i].pt, tmp[0], &skey); + saferp_ecb_decrypt(tmp[0], tmp[1], &skey); /* compare */ - if (memcmp(buf[0], tests[i].ct, 16) || memcmp(buf[1], tests[i].pt, 16)) { + if (memcmp(tmp[0], tests[i].ct, 16) || memcmp(tmp[1], tests[i].pt, 16)) { return CRYPT_FAIL_TESTVECTOR; } + + /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ + for (y = 0; y < 16; y++) tmp[0][y] = 0; + for (y = 0; y < 1000; y++) saferp_ecb_encrypt(tmp[0], tmp[0], &skey); + for (y = 0; y < 1000; y++) saferp_ecb_decrypt(tmp[0], tmp[0], &skey); + for (y = 0; y < 16; y++) if (tmp[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; } return CRYPT_OK; diff --git a/safer.c b/safer.c index 2eb5f2a..664ec7d 100644 --- a/safer.c +++ b/safer.c @@ -393,7 +393,7 @@ int safer_sk64_test(void) symmetric_key skey; unsigned char buf[2][8]; - int err; + int err, y; /* test SK64 */ if ((err = safer_sk64_setup(sk64_key, 8, 6, &skey)) != CRYPT_OK) { @@ -407,6 +407,12 @@ int safer_sk64_test(void) return CRYPT_FAIL_TESTVECTOR; } + /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ + for (y = 0; y < 8; y++) buf[0][y] = 0; + for (y = 0; y < 1000; y++) safer_ecb_encrypt(buf[0], buf[0], &skey); + for (y = 0; y < 1000; y++) safer_ecb_decrypt(buf[0], buf[0], &skey); + for (y = 0; y < 8; y++) if (buf[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; + return CRYPT_OK; #endif } @@ -423,7 +429,7 @@ int safer_sk128_test(void) symmetric_key skey; unsigned char buf[2][8]; - int err; + int err, y; /* test SK128 */ if ((err = safer_sk128_setup(sk128_key, 16, 0, &skey)) != CRYPT_OK) { @@ -435,6 +441,12 @@ int safer_sk128_test(void) if (memcmp(buf[0], sk128_ct, 8) != 0 || memcmp(buf[1], sk128_pt, 8) != 0) { return CRYPT_FAIL_TESTVECTOR; } + + /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ + for (y = 0; y < 8; y++) buf[0][y] = 0; + for (y = 0; y < 1000; y++) safer_ecb_encrypt(buf[0], buf[0], &skey); + for (y = 0; y < 1000; y++) safer_ecb_decrypt(buf[0], buf[0], &skey); + for (y = 0; y < 8; y++) if (buf[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; return CRYPT_OK; #endif } diff --git a/sha1.c b/sha1.c index 85ea876..049feb2 100644 --- a/sha1.c +++ b/sha1.c @@ -20,18 +20,18 @@ const struct _hash_descriptor sha1_desc = #define F3(x,y,z) (x ^ y ^ z) #ifdef CLEAN_STACK -static void _sha1_compress(hash_state *md) +static void _sha1_compress(hash_state *md, unsigned char *buf) #else -static void sha1_compress(hash_state *md) +static void sha1_compress(hash_state *md, unsigned char *buf) #endif { - unsigned long a,b,c,d,e,W[80],i; + ulong32 a,b,c,d,e,W[80],i; _ARGCHK(md != NULL); /* copy the state into 512-bits into W[0..15] */ for (i = 0; i < 16; i++) { - LOAD32H(W[i], md->sha1.buf + (4*i)); + LOAD32H(W[i], buf + (4*i)); } /* copy state */ @@ -62,7 +62,7 @@ static void sha1_compress(hash_state *md) } /* round two */ - for (i = 20; i < 40; ) { + for (; i < 40; ) { FF1(a,b,c,d,e,i++); FF1(e,a,b,c,d,i++); FF1(d,e,a,b,c,i++); @@ -71,7 +71,7 @@ static void sha1_compress(hash_state *md) } /* round three */ - for (i = 40; i < 60; ) { + for (; i < 60; ) { FF2(a,b,c,d,e,i++); FF2(e,a,b,c,d,i++); FF2(d,e,a,b,c,i++); @@ -80,7 +80,7 @@ static void sha1_compress(hash_state *md) } /* round four */ - for (i = 60; i < 80; ) { + for (; i < 80; ) { FF3(a,b,c,d,e,i++); FF3(e,a,b,c,d,i++); FF3(d,e,a,b,c,i++); @@ -102,10 +102,10 @@ static void sha1_compress(hash_state *md) } #ifdef CLEAN_STACK -static void sha1_compress(hash_state *md) +static void sha1_compress(hash_state *md, unsigned char *buf) { - _sha1_compress(md); - burn_stack(sizeof(unsigned long) * 87); + _sha1_compress(md, buf); + burn_stack(sizeof(ulong32) * 87); } #endif @@ -121,35 +121,19 @@ void sha1_init(hash_state * md) md->sha1.length = 0; } -void sha1_process(hash_state * md, const unsigned char *buf, unsigned long len) -{ - unsigned long n; - _ARGCHK(md != NULL); - _ARGCHK(buf != NULL); +HASH_PROCESS(sha1_process, sha1_compress, sha1, 64) - while (len > 0) { - n = MIN(len, (64 - md->sha1.curlen)); - memcpy(md->sha1.buf + md->sha1.curlen, buf, (size_t)n); - md->sha1.curlen += n; - buf += n; - len -= n; - - /* is 64 bytes full? */ - if (md->sha1.curlen == 64) { - sha1_compress(md); - md->sha1.length += 512; - md->sha1.curlen = 0; - } - } -} - -void sha1_done(hash_state * md, unsigned char *hash) +int sha1_done(hash_state * md, unsigned char *hash) { int i; _ARGCHK(md != NULL); _ARGCHK(hash != NULL); + if (md->sha1.curlen >= sizeof(md->sha1.buf)) { + return CRYPT_INVALID_ARG; + } + /* increase the length of the message */ md->sha1.length += md->sha1.curlen * 8; @@ -164,7 +148,7 @@ void sha1_done(hash_state * md, unsigned char *hash) while (md->sha1.curlen < 64) { md->sha1.buf[md->sha1.curlen++] = (unsigned char)0; } - sha1_compress(md); + sha1_compress(md, md->sha1.buf); md->sha1.curlen = 0; } @@ -175,7 +159,7 @@ void sha1_done(hash_state * md, unsigned char *hash) /* store length */ STORE64H(md->sha1.length, md->sha1.buf+56); - sha1_compress(md); + sha1_compress(md, md->sha1.buf); /* copy output */ for (i = 0; i < 5; i++) { @@ -184,6 +168,7 @@ void sha1_done(hash_state * md, unsigned char *hash) #ifdef CLEAN_STACK zeromem(md, sizeof(hash_state)); #endif + return CRYPT_OK; } int sha1_test(void) diff --git a/sha224.c b/sha224.c new file mode 100644 index 0000000..c7c5787 --- /dev/null +++ b/sha224.c @@ -0,0 +1,82 @@ +/* SHA-224 new NIST standard based off of SHA-256 truncated to 224 bits */ +const struct _hash_descriptor sha224_desc = +{ + "sha224", + 10, + 28, + 64, + &sha224_init, + &sha256_process, + &sha224_done, + &sha224_test +}; + +/* init the sha256 er... sha224 state ;-) */ +void sha224_init(hash_state * md) +{ + _ARGCHK(md != NULL); + + md->sha256.curlen = 0; + md->sha256.length = 0; + md->sha256.state[0] = 0xc1059ed8UL; + md->sha256.state[1] = 0x367cd507UL; + md->sha256.state[2] = 0x3070dd17UL; + md->sha256.state[3] = 0xf70e5939UL; + md->sha256.state[4] = 0xffc00b31UL; + md->sha256.state[5] = 0x68581511UL; + md->sha256.state[6] = 0x64f98fa7UL; + md->sha256.state[7] = 0xbefa4fa4UL; +} + +int sha224_done(hash_state * md, unsigned char *hash) +{ + unsigned char buf[32]; + int err; + + err = sha256_done(md, buf); + memcpy(hash, buf, 28); +#ifdef CLEAN_STACK + zeromem(buf, sizeof(buf)); +#endif + return err; +} + +int sha224_test(void) +{ + #ifndef LTC_TEST + return CRYPT_NOP; + #else + static const struct { + char *msg; + unsigned char hash[28]; + } tests[] = { + { "abc", + { 0x23, 0x09, 0x7d, 0x22, 0x34, 0x05, 0xd8, + 0x22, 0x86, 0x42, 0xa4, 0x77, 0xbd, 0xa2, + 0x55, 0xb3, 0x2a, 0xad, 0xbc, 0xe4, 0xbd, + 0xa0, 0xb3, 0xf7, 0xe3, 0x6c, 0x9d, 0xa7 } + }, + { "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", + { 0x75, 0x38, 0x8b, 0x16, 0x51, 0x27, 0x76, + 0xcc, 0x5d, 0xba, 0x5d, 0xa1, 0xfd, 0x89, + 0x01, 0x50, 0xb0, 0xc6, 0x45, 0x5c, 0xb4, + 0xf5, 0x8b, 0x19, 0x52, 0x52, 0x25, 0x25 } + }, + }; + + int i; + unsigned char tmp[28]; + hash_state md; + + for (i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) { + sha224_init(&md); + sha224_process(&md, (unsigned char*)tests[i].msg, (unsigned long)strlen(tests[i].msg)); + sha224_done(&md, tmp); + if (memcmp(tmp, tests[i].hash, 28) != 0) { + return CRYPT_FAIL_TESTVECTOR; + } + } + return CRYPT_OK; + #endif +} + diff --git a/sha256.c b/sha256.c index 2402b0c..0695250 100644 --- a/sha256.c +++ b/sha256.c @@ -43,12 +43,12 @@ static const unsigned long K[64] = { /* compress 512-bits */ #ifdef CLEAN_STACK -static void _sha256_compress(hash_state * md) +static void _sha256_compress(hash_state * md, unsigned char *buf) #else -static void sha256_compress(hash_state * md) +static void sha256_compress(hash_state * md, unsigned char *buf) #endif { - unsigned long S[8], W[64], t0, t1; + ulong32 S[8], W[64], t0, t1; int i; _ARGCHK(md != NULL); @@ -60,7 +60,7 @@ static void sha256_compress(hash_state * md) /* copy the state into 512-bits into W[0..15] */ for (i = 0; i < 16; i++) { - LOAD32H(W[i], md->sha256.buf + (4*i)); + LOAD32H(W[i], buf + (4*i)); } /* fill W[16..63] */ @@ -70,18 +70,22 @@ static void sha256_compress(hash_state * md) /* Compress */ #ifdef SMALL_CODE - for (i = 0; i < 64; i++) { - t0 = S[7] + Sigma1(S[4]) + Ch(S[4], S[5], S[6]) + K[i] + W[i]; - t1 = Sigma0(S[0]) + Maj(S[0], S[1], S[2]); - S[7] = S[6]; - S[6] = S[5]; - S[5] = S[4]; - S[4] = S[3] + t0; - S[3] = S[2]; - S[2] = S[1]; - S[1] = S[0]; - S[0] = t0 + t1; - } +#define RND(a,b,c,d,e,f,g,h,i) \ + t0 = h + Sigma1(e) + Ch(e, f, g) + K[i] + W[i]; \ + t1 = Sigma0(a) + Maj(a, b, c); \ + d += t0; \ + h = t0 + t1; + + for (i = 0; i < 64; i += 8) { + RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],i+0); + RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],i+1); + RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],i+2); + RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],i+3); + RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],i+4); + RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],i+5); + RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],i+6); + RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],i+7); + } #else #define RND(a,b,c,d,e,f,g,h,i,ki) \ t0 = h + Sigma1(e) + Ch(e, f, g) + ki + W[i]; \ @@ -166,10 +170,10 @@ static void sha256_compress(hash_state * md) } #ifdef CLEAN_STACK -static void sha256_compress(hash_state * md) +static void sha256_compress(hash_state * md, unsigned char *buf) { - _sha256_compress(md); - burn_stack(sizeof(unsigned long) * 74); + _sha256_compress(md, buf); + burn_stack(sizeof(ulong32) * 74); } #endif @@ -190,35 +194,20 @@ void sha256_init(hash_state * md) md->sha256.state[7] = 0x5BE0CD19UL; } -void sha256_process(hash_state * md, const unsigned char *buf, unsigned long len) -{ - unsigned long n; - _ARGCHK(md != NULL); - _ARGCHK(buf != NULL); +HASH_PROCESS(sha256_process, sha256_compress, sha256, 64) - while (len > 0) { - n = MIN(len, (64 - md->sha256.curlen)); - memcpy(md->sha256.buf + md->sha256.curlen, buf, (size_t)n); - md->sha256.curlen += n; - buf += n; - len -= n; - - /* is 64 bytes full? */ - if (md->sha256.curlen == 64) { - sha256_compress(md); - md->sha256.length += 512; - md->sha256.curlen = 0; - } - } -} - -void sha256_done(hash_state * md, unsigned char *hash) +int sha256_done(hash_state * md, unsigned char *hash) { int i; _ARGCHK(md != NULL); _ARGCHK(hash != NULL); + if (md->sha256.curlen >= sizeof(md->sha256.buf)) { + return CRYPT_INVALID_ARG; + } + + /* increase the length of the message */ md->sha256.length += md->sha256.curlen * 8; @@ -233,7 +222,7 @@ void sha256_done(hash_state * md, unsigned char *hash) while (md->sha256.curlen < 64) { md->sha256.buf[md->sha256.curlen++] = (unsigned char)0; } - sha256_compress(md); + sha256_compress(md, md->sha256.buf); md->sha256.curlen = 0; } @@ -244,7 +233,7 @@ void sha256_done(hash_state * md, unsigned char *hash) /* store length */ STORE64H(md->sha256.length, md->sha256.buf+56); - sha256_compress(md); + sha256_compress(md, md->sha256.buf); /* copy output */ for (i = 0; i < 8; i++) { @@ -253,6 +242,7 @@ void sha256_done(hash_state * md, unsigned char *hash) #ifdef CLEAN_STACK zeromem(md, sizeof(hash_state)); #endif + return CRYPT_OK; } int sha256_test(void) @@ -261,7 +251,7 @@ int sha256_test(void) return CRYPT_NOP; #else static const struct { - char *msg; + char *msg; unsigned char hash[32]; } tests[] = { { "abc", @@ -294,6 +284,10 @@ int sha256_test(void) #endif } +#ifdef SHA224 +#include "sha224.c" +#endif + #endif diff --git a/sha384.c b/sha384.c index b07f4d6..8d05bcf 100644 --- a/sha384.c +++ b/sha384.c @@ -7,7 +7,7 @@ const struct _hash_descriptor sha384_desc = 48, 128, &sha384_init, - &sha384_process, + &sha512_process, &sha384_done, &sha384_test }; @@ -28,25 +28,23 @@ void sha384_init(hash_state * md) md->sha512.state[7] = CONST64(0x47b5481dbefa4fa4); } -void sha384_process(hash_state * md, const unsigned char *buf, unsigned long len) -{ - _ARGCHK(md != NULL); - _ARGCHK(buf != NULL); - sha512_process(md, buf, len); -} - -void sha384_done(hash_state * md, unsigned char *hash) +int sha384_done(hash_state * md, unsigned char *hash) { unsigned char buf[64]; _ARGCHK(md != NULL); _ARGCHK(hash != NULL); + if (md->sha512.curlen >= sizeof(md->sha512.buf)) { + return CRYPT_INVALID_ARG; + } + sha512_done(md, buf); memcpy(hash, buf, 48); #ifdef CLEAN_STACK zeromem(buf, sizeof(buf)); #endif + return CRYPT_OK; } int sha384_test(void) diff --git a/sha512.c b/sha512.c index b63efdb..f6cb5c9 100644 --- a/sha512.c +++ b/sha512.c @@ -70,9 +70,9 @@ CONST64(0x5fcb6fab3ad6faec), CONST64(0x6c44198c4a475817) /* compress 1024-bits */ #ifdef CLEAN_STACK -static void _sha512_compress(hash_state * md) +static void _sha512_compress(hash_state * md, unsigned char *buf) #else -static void sha512_compress(hash_state * md) +static void sha512_compress(hash_state * md, unsigned char *buf) #endif { ulong64 S[8], W[80], t0, t1; @@ -81,12 +81,13 @@ static void sha512_compress(hash_state * md) _ARGCHK(md != NULL); /* copy state into S */ - for (i = 0; i < 8; i++) + for (i = 0; i < 8; i++) { S[i] = md->sha512.state[i]; + } /* copy the state into 1024-bits into W[0..15] */ for (i = 0; i < 16; i++) { - LOAD64H(W[i], md->sha512.buf + (8*i)); + LOAD64H(W[i], buf + (8*i)); } /* fill W[16..79] */ @@ -136,9 +137,9 @@ static void sha512_compress(hash_state * md) /* compress 1024-bits */ #ifdef CLEAN_STACK -static void sha512_compress(hash_state * md) +static void sha512_compress(hash_state * md, unsigned char *buf) { - _sha512_compress(md); + _sha512_compress(md, buf); burn_stack(sizeof(ulong64) * 90 + sizeof(int)); } #endif @@ -160,34 +161,19 @@ void sha512_init(hash_state * md) md->sha512.state[7] = CONST64(0x5be0cd19137e2179); } -void sha512_process(hash_state * md, const unsigned char *buf, unsigned long len) -{ - unsigned long n; - _ARGCHK(md != NULL); - _ARGCHK(buf != NULL); - while (len > 0) { - n = MIN(len, (128 - md->sha512.curlen)); - memcpy(md->sha512.buf + md->sha512.curlen, buf, (size_t)n); - md->sha512.curlen += n; - buf += n; - len -= n; +HASH_PROCESS(sha512_process, sha512_compress, sha512, 128) - /* is 128 bytes full? */ - if (md->sha512.curlen == 128) { - sha512_compress(md); - md->sha512.length += 1024; - md->sha512.curlen = 0; - } - } -} - -void sha512_done(hash_state * md, unsigned char *hash) +int sha512_done(hash_state * md, unsigned char *hash) { int i; _ARGCHK(md != NULL); _ARGCHK(hash != NULL); + if (md->sha512.curlen >= sizeof(md->sha512.buf)) { + return CRYPT_INVALID_ARG; + } + /* increase the length of the message */ md->sha512.length += md->sha512.curlen * CONST64(8); @@ -202,7 +188,7 @@ void sha512_done(hash_state * md, unsigned char *hash) while (md->sha512.curlen < 128) { md->sha512.buf[md->sha512.curlen++] = (unsigned char)0; } - sha512_compress(md); + sha512_compress(md, md->sha512.buf); md->sha512.curlen = 0; } @@ -216,7 +202,7 @@ void sha512_done(hash_state * md, unsigned char *hash) /* store length */ STORE64H(md->sha512.length, md->sha512.buf+120); - sha512_compress(md); + sha512_compress(md, md->sha512.buf); /* copy output */ for (i = 0; i < 8; i++) { @@ -225,6 +211,7 @@ void sha512_done(hash_state * md, unsigned char *hash) #ifdef CLEAN_STACK zeromem(md, sizeof(hash_state)); #endif + return CRYPT_OK; } int sha512_test(void) diff --git a/skipjack.c b/skipjack.c new file mode 100644 index 0000000..68f4027 --- /dev/null +++ b/skipjack.c @@ -0,0 +1,279 @@ +/* Skipjack Implementation by Tom St Denis */ +#include "mycrypt.h" + +#ifdef SKIPJACK + +const struct _cipher_descriptor skipjack_desc = +{ + "skipjack", + 17, + 10, 10, 8, 32, + &skipjack_setup, + &skipjack_ecb_encrypt, + &skipjack_ecb_decrypt, + &skipjack_test, + &skipjack_keysize +}; + +static const unsigned char sbox[256] = { + 0xa3,0xd7,0x09,0x83,0xf8,0x48,0xf6,0xf4,0xb3,0x21,0x15,0x78,0x99,0xb1,0xaf,0xf9, + 0xe7,0x2d,0x4d,0x8a,0xce,0x4c,0xca,0x2e,0x52,0x95,0xd9,0x1e,0x4e,0x38,0x44,0x28, + 0x0a,0xdf,0x02,0xa0,0x17,0xf1,0x60,0x68,0x12,0xb7,0x7a,0xc3,0xe9,0xfa,0x3d,0x53, + 0x96,0x84,0x6b,0xba,0xf2,0x63,0x9a,0x19,0x7c,0xae,0xe5,0xf5,0xf7,0x16,0x6a,0xa2, + 0x39,0xb6,0x7b,0x0f,0xc1,0x93,0x81,0x1b,0xee,0xb4,0x1a,0xea,0xd0,0x91,0x2f,0xb8, + 0x55,0xb9,0xda,0x85,0x3f,0x41,0xbf,0xe0,0x5a,0x58,0x80,0x5f,0x66,0x0b,0xd8,0x90, + 0x35,0xd5,0xc0,0xa7,0x33,0x06,0x65,0x69,0x45,0x00,0x94,0x56,0x6d,0x98,0x9b,0x76, + 0x97,0xfc,0xb2,0xc2,0xb0,0xfe,0xdb,0x20,0xe1,0xeb,0xd6,0xe4,0xdd,0x47,0x4a,0x1d, + 0x42,0xed,0x9e,0x6e,0x49,0x3c,0xcd,0x43,0x27,0xd2,0x07,0xd4,0xde,0xc7,0x67,0x18, + 0x89,0xcb,0x30,0x1f,0x8d,0xc6,0x8f,0xaa,0xc8,0x74,0xdc,0xc9,0x5d,0x5c,0x31,0xa4, + 0x70,0x88,0x61,0x2c,0x9f,0x0d,0x2b,0x87,0x50,0x82,0x54,0x64,0x26,0x7d,0x03,0x40, + 0x34,0x4b,0x1c,0x73,0xd1,0xc4,0xfd,0x3b,0xcc,0xfb,0x7f,0xab,0xe6,0x3e,0x5b,0xa5, + 0xad,0x04,0x23,0x9c,0x14,0x51,0x22,0xf0,0x29,0x79,0x71,0x7e,0xff,0x8c,0x0e,0xe2, + 0x0c,0xef,0xbc,0x72,0x75,0x6f,0x37,0xa1,0xec,0xd3,0x8e,0x62,0x8b,0x86,0x10,0xe8, + 0x08,0x77,0x11,0xbe,0x92,0x4f,0x24,0xc5,0x32,0x36,0x9d,0xcf,0xf3,0xa6,0xbb,0xac, + 0x5e,0x6c,0xa9,0x13,0x57,0x25,0xb5,0xe3,0xbd,0xa8,0x3a,0x01,0x05,0x59,0x2a,0x46 +}; + +/* simple x + 1 (mod 10) in one step. */ +static const int keystep[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }; + +/* simple x - 1 (mod 10) in one step */ +static const int ikeystep[] = { 9, 0, 1, 2, 3, 4, 5, 6, 7, 8 }; + +int skipjack_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) +{ + int x; + + _ARGCHK(key != NULL); + _ARGCHK(skey != NULL); + + if (keylen != 10) { + return CRYPT_INVALID_KEYSIZE; + } + + if (num_rounds != 32 && num_rounds != 0) { + return CRYPT_INVALID_ROUNDS; + } + + /* make sure the key is in range for platforms where CHAR_BIT != 8 */ + for (x = 0; x < 10; x++) { + skey->skipjack.key[x] = key[x] & 255; + } + + return CRYPT_OK; +} + +#define RULE_A \ + tmp = g_func(w1, &kp, key->skipjack.key); \ + w1 = tmp ^ w4 ^ x; \ + w4 = w3; w3 = w2; \ + w2 = tmp; + +#define RULE_B \ + tmp = g_func(w1, &kp, key->skipjack.key); \ + tmp1 = w4; w4 = w3; \ + w3 = w1 ^ w2 ^ x; \ + w1 = tmp1; w2 = tmp; + +#define RULE_A1 \ + tmp = w1 ^ w2 ^ x; \ + w1 = ig_func(w2, &kp, key->skipjack.key); \ + w2 = w3; w3 = w4; w4 = tmp; + +#define RULE_B1 \ + tmp = ig_func(w2, &kp, key->skipjack.key); \ + w2 = tmp ^ w3 ^ x; \ + w3 = w4; w4 = w1; w1 = tmp; + +static unsigned g_func(unsigned w, int *kp, unsigned char *key) +{ + unsigned char g1,g2; + + g1 = (w >> 8) & 255; g2 = w & 255; + g1 ^= sbox[g2^key[*kp]]; *kp = keystep[*kp]; + g2 ^= sbox[g1^key[*kp]]; *kp = keystep[*kp]; + g1 ^= sbox[g2^key[*kp]]; *kp = keystep[*kp]; + g2 ^= sbox[g1^key[*kp]]; *kp = keystep[*kp]; + return ((unsigned)g1<<8)|(unsigned)g2; +} + +static unsigned ig_func(unsigned w, int *kp, unsigned char *key) +{ + unsigned char g1,g2; + + g1 = (w >> 8) & 255; g2 = w & 255; + *kp = ikeystep[*kp]; g2 ^= sbox[g1^key[*kp]]; + *kp = ikeystep[*kp]; g1 ^= sbox[g2^key[*kp]]; + *kp = ikeystep[*kp]; g2 ^= sbox[g1^key[*kp]]; + *kp = ikeystep[*kp]; g1 ^= sbox[g2^key[*kp]]; + return ((unsigned)g1<<8)|(unsigned)g2; +} + +#ifdef CLEAN_STACK +static void _skipjack_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key) +#else +void skipjack_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key) +#endif +{ + unsigned w1,w2,w3,w4,tmp,tmp1; + int x, kp; + + _ARGCHK(pt != NULL); + _ARGCHK(ct != NULL); + _ARGCHK(key != NULL); + + /* load block */ + w1 = ((unsigned)pt[0]<<8)|pt[1]; + w2 = ((unsigned)pt[2]<<8)|pt[3]; + w3 = ((unsigned)pt[4]<<8)|pt[5]; + w4 = ((unsigned)pt[6]<<8)|pt[7]; + + /* 8 rounds of RULE A */ + for (x = 1, kp = 0; x < 9; x++) { + RULE_A; + } + + /* 8 rounds of RULE B */ + for (; x < 17; x++) { + RULE_B; + } + + /* 8 rounds of RULE A */ + for (; x < 25; x++) { + RULE_A; + } + + /* 8 rounds of RULE B */ + for (; x < 33; x++) { + RULE_B; + } + + /* store block */ + ct[0] = (w1>>8)&255; ct[1] = w1&255; + ct[2] = (w2>>8)&255; ct[3] = w2&255; + ct[4] = (w3>>8)&255; ct[5] = w3&255; + ct[6] = (w4>>8)&255; ct[7] = w4&255; +} + +#ifdef CLEAN_STACK +void skipjack_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key) +{ + _skipjack_ecb_encrypt(pt, ct, key); + burn_stack(sizeof(unsigned) * 8 + sizeof(int) * 2); +} +#endif + +#ifdef CLEAN_STACK +static void _skipjack_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key) +#else +void skipjack_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key) +#endif +{ + unsigned w1,w2,w3,w4,tmp; + int x, kp; + + _ARGCHK(pt != NULL); + _ARGCHK(ct != NULL); + _ARGCHK(key != NULL); + + /* load block */ + w1 = ((unsigned)ct[0]<<8)|ct[1]; + w2 = ((unsigned)ct[2]<<8)|ct[3]; + w3 = ((unsigned)ct[4]<<8)|ct[5]; + w4 = ((unsigned)ct[6]<<8)|ct[7]; + + /* 8 rounds of RULE B^-1 + + Note the value "kp = 8" comes from "kp = (32 * 4) mod 10" where 32*4 is 128 which mod 10 is 8 + */ + for (x = 32, kp = 8; x > 24; x--) { + RULE_B1; + } + + /* 8 rounds of RULE A^-1 */ + for (; x > 16; x--) { + RULE_A1; + } + + + /* 8 rounds of RULE B^-1 */ + for (; x > 8; x--) { + RULE_B1; + } + + /* 8 rounds of RULE A^-1 */ + for (; x > 0; x--) { + RULE_A1; + } + + /* store block */ + pt[0] = (w1>>8)&255; pt[1] = w1&255; + pt[2] = (w2>>8)&255; pt[3] = w2&255; + pt[4] = (w3>>8)&255; pt[5] = w3&255; + pt[6] = (w4>>8)&255; pt[7] = w4&255; +} + +#ifdef CLEAN_STACK +void skipjack_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key) +{ + _skipjack_ecb_decrypt(ct, pt, key); + burn_stack(sizeof(unsigned) * 7 + sizeof(int) * 2); +} +#endif + +int skipjack_test(void) +{ + #ifndef LTC_TEST + return CRYPT_NOP; + #else + static const struct { + unsigned char key[10], pt[8], ct[8]; + } tests[] = { + { + { 0x00, 0x99, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11 }, + { 0x33, 0x22, 0x11, 0x00, 0xdd, 0xcc, 0xbb, 0xaa }, + { 0x25, 0x87, 0xca, 0xe2, 0x7a, 0x12, 0xd3, 0x00 } + } + }; + unsigned char buf[2][8]; + int x, y, err; + symmetric_key key; + + for (x = 0; x < (int)(sizeof(tests) / sizeof(tests[0])); x++) { + /* setup key */ + if ((err = skipjack_setup(tests[x].key, 10, 0, &key)) != CRYPT_OK) { + return err; + } + + /* encrypt and decrypt */ + skipjack_ecb_encrypt(tests[x].pt, buf[0], &key); + skipjack_ecb_decrypt(buf[0], buf[1], &key); + + /* compare */ + if (memcmp(buf[0], tests[x].ct, 8) != 0 || memcmp(buf[1], tests[x].pt, 8) != 0) { + return CRYPT_FAIL_TESTVECTOR; + } + + /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ + for (y = 0; y < 8; y++) buf[0][y] = 0; + for (y = 0; y < 1000; y++) skipjack_ecb_encrypt(buf[0], buf[0], &key); + for (y = 0; y < 1000; y++) skipjack_ecb_decrypt(buf[0], buf[0], &key); + for (y = 0; y < 8; y++) if (buf[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; + } + + return CRYPT_OK; + #endif +} + +int skipjack_keysize(int *desired_keysize) +{ + _ARGCHK(desired_keysize != NULL); + if (*desired_keysize < 10) { + return CRYPT_INVALID_KEYSIZE; + } else if (*desired_keysize > 10) { + *desired_keysize = 10; + } + return CRYPT_OK; +} + +#endif diff --git a/strings.c b/strings.c index 583be7c..2bd4297 100644 --- a/strings.c +++ b/strings.c @@ -39,6 +39,14 @@ static const char *err_2_str[] = }; +static const struct { + int mpi_code, ltc_code; +} mpi_to_ltc_codes[] = { + { MP_OKAY , CRYPT_OK}, + { MP_MEM , CRYPT_MEM}, + { MP_VAL , CRYPT_INVALID_ARG}, +}; + const char *error_to_string(int err) { if (err < 0 || err >= (int)(sizeof(err_2_str)/sizeof(err_2_str[0]))) { @@ -48,3 +56,17 @@ const char *error_to_string(int err) } } +/* convert a MPI error to a LTC error (Possibly the most powerful function ever! Oh wait... no) */ +int mpi_to_ltc_error(int err) +{ + int x; + + for (x = 0; x < (int)(sizeof(mpi_to_ltc_codes)/sizeof(mpi_to_ltc_codes[0])); x++) { + if (err == mpi_to_ltc_codes[x].mpi_code) { + return mpi_to_ltc_codes[x].ltc_code; + } + } + return CRYPT_ERROR; +} + + diff --git a/tiger.c b/tiger.c index de131b3..f326c36 100644 --- a/tiger.c +++ b/tiger.c @@ -587,9 +587,9 @@ static void key_schedule(ulong64 *x) { } #ifdef CLEAN_STACK -static void _tiger_compress(hash_state *md) +static void _tiger_compress(hash_state *md, unsigned char *buf) #else -static void tiger_compress(hash_state *md) +static void tiger_compress(hash_state *md, unsigned char *buf) #endif { ulong64 a, b, c, x[8]; @@ -599,7 +599,7 @@ static void tiger_compress(hash_state *md) /* load words */ for (i = 0; i < 8; i++) { - LOAD64L(x[i],&md->tiger.buf[8*i]); + LOAD64L(x[i],&buf[8*i]); } a = md->tiger.state[0]; b = md->tiger.state[1]; @@ -618,9 +618,9 @@ static void tiger_compress(hash_state *md) } #ifdef CLEAN_STACK -static void tiger_compress(hash_state *md) +static void tiger_compress(hash_state *md, unsigned char *buf) { - _tiger_compress(md); + _tiger_compress(md, buf); burn_stack(sizeof(ulong64) * 11 + sizeof(unsigned long)); } #endif @@ -635,32 +635,17 @@ void tiger_init(hash_state *md) md->tiger.length = 0; } -void tiger_process(hash_state * md, const unsigned char *buf, unsigned long len) -{ - unsigned long n; - _ARGCHK(md != NULL); - _ARGCHK(buf != NULL); - while (len > 0) { - n = MIN(len, (64 - md->tiger.curlen)); - memcpy(md->tiger.buf + md->tiger.curlen, buf, (size_t)n); - md->tiger.curlen += n; - buf += n; - len -= n; +HASH_PROCESS(tiger_process, tiger_compress, tiger, 64) - /* is 64 bytes full? */ - if (md->tiger.curlen == 64) { - tiger_compress(md); - md->tiger.length += 512; /* add the number of bits not bytes */ - md->tiger.curlen = 0; - } - } -} - -void tiger_done(hash_state * md, unsigned char *hash) +int tiger_done(hash_state * md, unsigned char *hash) { _ARGCHK(md != NULL); _ARGCHK(hash != NULL); + if (md->tiger.curlen >= sizeof(md->tiger.buf)) { + return CRYPT_INVALID_ARG; + } + /* increase the length of the message */ md->tiger.length += md->tiger.curlen * 8; @@ -674,7 +659,7 @@ void tiger_done(hash_state * md, unsigned char *hash) while (md->tiger.curlen < 64) { md->tiger.buf[md->tiger.curlen++] = (unsigned char)0; } - tiger_compress(md); + tiger_compress(md, md->tiger.buf); md->tiger.curlen = 0; } @@ -685,7 +670,7 @@ void tiger_done(hash_state * md, unsigned char *hash) /* store length */ STORE64L(md->tiger.length, md->tiger.buf+56); - tiger_compress(md); + tiger_compress(md, md->tiger.buf); /* copy output */ STORE64L(md->tiger.state[0], &hash[0]); @@ -694,6 +679,8 @@ void tiger_done(hash_state * md, unsigned char *hash) #ifdef CLEAN_STACK zeromem(md, sizeof(hash_state)); #endif + + return CRYPT_OK; } int tiger_test(void) diff --git a/tommath.h b/tommath.h index 069e51c..1af3396 100644 --- a/tommath.h +++ b/tommath.h @@ -91,6 +91,24 @@ extern "C" { #endif #endif +/* define heap macros */ +#ifndef CRYPT + /* default to libc stuff */ + #ifndef XMALLOC + #define XMALLOC malloc + #define XFREE free + #define XREALLOC realloc + #define XCALLOC calloc + #endif + + /* prototypes for our heap functions */ + extern void *XMALLOC(size_t n); + extern void *REALLOC(void *p, size_t n); + extern void *XCALLOC(size_t n, size_t s); + extern void XFREE(void *p); +#endif + + /* otherwise the bits per digit is calculated automatically from the size of a mp_digit */ #ifndef DIGIT_BIT #define DIGIT_BIT ((int)((CHAR_BIT * sizeof(mp_digit) - 1))) /* bits per digit */ @@ -113,6 +131,9 @@ extern "C" { #define MP_VAL -3 /* invalid input */ #define MP_RANGE MP_VAL +#define MP_YES 1 /* yes response */ +#define MP_NO 0 /* no response */ + typedef int mp_err; /* you'll have to tune these... */ @@ -130,11 +151,16 @@ extern int KARATSUBA_MUL_CUTOFF, /* size of comba arrays, should be at least 2 * 2**(BITS_PER_WORD - BITS_PER_DIGIT*2) */ #define MP_WARRAY (1 << (sizeof(mp_word) * CHAR_BIT - 2 * DIGIT_BIT + 1)) +/* the infamous mp_int structure */ typedef struct { int used, alloc, sign; mp_digit *dp; } mp_int; +/* callback for mp_prime_random, should fill dst with random bytes and return how many read [upto len] */ +typedef int ltm_prime_callback(unsigned char *dst, int len, void *dat); + + #define USED(m) ((m)->used) #define DIGIT(m,k) ((m)->dp[(k)]) #define SIGN(m) ((m)->sign) @@ -168,9 +194,9 @@ int mp_grow(mp_int *a, int size); int mp_init_size(mp_int *a, int size); /* ---> Basic Manipulations <--- */ -#define mp_iszero(a) (((a)->used == 0) ? 1 : 0) -#define mp_iseven(a) (((a)->used > 0 && (((a)->dp[0] & 1) == 0)) ? 1 : 0) -#define mp_isodd(a) (((a)->used > 0 && (((a)->dp[0] & 1) == 1)) ? 1 : 0) +#define mp_iszero(a) (((a)->used == 0) ? MP_YES : MP_NO) +#define mp_iseven(a) (((a)->used > 0 && (((a)->dp[0] & 1) == 0)) ? MP_YES : MP_NO) +#define mp_isodd(a) (((a)->used > 0 && (((a)->dp[0] & 1) == 1)) ? MP_YES : MP_NO) /* set to zero */ void mp_zero(mp_int *a); @@ -179,7 +205,7 @@ void mp_zero(mp_int *a); void mp_set(mp_int *a, mp_digit b); /* set a 32-bit const */ -int mp_set_int(mp_int *a, unsigned int b); +int mp_set_int(mp_int *a, unsigned long b); /* copy, b = a */ int mp_copy(mp_int *a, mp_int *b); @@ -219,6 +245,8 @@ int mp_2expt(mp_int *a, int b); /* Counts the number of lsbs which are zero before the first zero bit */ int mp_cnt_lsb(mp_int *a); +/* I Love Earth! */ + /* makes a pseudo-random int of a given size */ int mp_rand(mp_int *a, int digits); @@ -392,6 +420,11 @@ int mp_prime_fermat(mp_int *a, mp_int *b, int *result); */ int mp_prime_miller_rabin(mp_int *a, mp_int *b, int *result); +/* This gives [for a given bit size] the number of trials required + * such that Miller-Rabin gives a prob of failure lower than 2^-96 + */ +int mp_prime_rabin_miller_trials(int size); + /* performs t rounds of Miller-Rabin on "a" using the first * t prime bases. Also performs an initial sieve of trial * division. Determines if "a" is prime with probability @@ -408,6 +441,18 @@ int mp_prime_is_prime(mp_int *a, int t, int *result); */ int mp_prime_next_prime(mp_int *a, int t, int bbs_style); +/* makes a truly random prime of a given size (bytes), + * call with bbs = 1 if you want it to be congruent to 3 mod 4 + * + * You have to supply a callback which fills in a buffer with random bytes. "dat" is a parameter you can + * have passed to the callback (e.g. a state or something). This function doesn't use "dat" itself + * so it can be NULL + * + * The prime generated will be larger than 2^(8*size). + */ +int mp_prime_random(mp_int *a, int t, int size, int bbs, ltm_prime_callback cb, void *dat); + + /* ---> radix conversion <--- */ int mp_count_bits(mp_int *a); @@ -464,5 +509,5 @@ extern const char *mp_s_rmap; } #endif -#endif /* ?BN_H_ */ +#endif diff --git a/twofish.c b/twofish.c index 6f8156e..6199cc6 100644 --- a/twofish.c +++ b/twofish.c @@ -3,6 +3,13 @@ #ifdef TWOFISH +/* first TWOFISH_ALL_TABLES must ensure TWOFISH_TABLES is defined */ +#ifdef TWOFISH_ALL_TABLES +#ifndef TWOFISH_TABLES +#define TWOFISH_TABLES +#endif +#endif + const struct _cipher_descriptor twofish_desc = { "twofish", @@ -44,213 +51,21 @@ static const unsigned char qord[4][5] = { }; #ifdef TWOFISH_TABLES -static const unsigned char SBOX[2][256] = { -{ - 0xa9, 0x67, 0xb3, 0xe8, 0x04, 0xfd, 0xa3, 0x76, 0x9a, 0x92, - 0x80, 0x78, 0xe4, 0xdd, 0xd1, 0x38, 0x0d, 0xc6, 0x35, 0x98, - 0x18, 0xf7, 0xec, 0x6c, 0x43, 0x75, 0x37, 0x26, 0xfa, 0x13, - 0x94, 0x48, 0xf2, 0xd0, 0x8b, 0x30, 0x84, 0x54, 0xdf, 0x23, - 0x19, 0x5b, 0x3d, 0x59, 0xf3, 0xae, 0xa2, 0x82, 0x63, 0x01, - 0x83, 0x2e, 0xd9, 0x51, 0x9b, 0x7c, 0xa6, 0xeb, 0xa5, 0xbe, - 0x16, 0x0c, 0xe3, 0x61, 0xc0, 0x8c, 0x3a, 0xf5, 0x73, 0x2c, - 0x25, 0x0b, 0xbb, 0x4e, 0x89, 0x6b, 0x53, 0x6a, 0xb4, 0xf1, - 0xe1, 0xe6, 0xbd, 0x45, 0xe2, 0xf4, 0xb6, 0x66, 0xcc, 0x95, - 0x03, 0x56, 0xd4, 0x1c, 0x1e, 0xd7, 0xfb, 0xc3, 0x8e, 0xb5, - 0xe9, 0xcf, 0xbf, 0xba, 0xea, 0x77, 0x39, 0xaf, 0x33, 0xc9, - 0x62, 0x71, 0x81, 0x79, 0x09, 0xad, 0x24, 0xcd, 0xf9, 0xd8, - 0xe5, 0xc5, 0xb9, 0x4d, 0x44, 0x08, 0x86, 0xe7, 0xa1, 0x1d, - 0xaa, 0xed, 0x06, 0x70, 0xb2, 0xd2, 0x41, 0x7b, 0xa0, 0x11, - 0x31, 0xc2, 0x27, 0x90, 0x20, 0xf6, 0x60, 0xff, 0x96, 0x5c, - 0xb1, 0xab, 0x9e, 0x9c, 0x52, 0x1b, 0x5f, 0x93, 0x0a, 0xef, - 0x91, 0x85, 0x49, 0xee, 0x2d, 0x4f, 0x8f, 0x3b, 0x47, 0x87, - 0x6d, 0x46, 0xd6, 0x3e, 0x69, 0x64, 0x2a, 0xce, 0xcb, 0x2f, - 0xfc, 0x97, 0x05, 0x7a, 0xac, 0x7f, 0xd5, 0x1a, 0x4b, 0x0e, - 0xa7, 0x5a, 0x28, 0x14, 0x3f, 0x29, 0x88, 0x3c, 0x4c, 0x02, - 0xb8, 0xda, 0xb0, 0x17, 0x55, 0x1f, 0x8a, 0x7d, 0x57, 0xc7, - 0x8d, 0x74, 0xb7, 0xc4, 0x9f, 0x72, 0x7e, 0x15, 0x22, 0x12, - 0x58, 0x07, 0x99, 0x34, 0x6e, 0x50, 0xde, 0x68, 0x65, 0xbc, - 0xdb, 0xf8, 0xc8, 0xa8, 0x2b, 0x40, 0xdc, 0xfe, 0x32, 0xa4, - 0xca, 0x10, 0x21, 0xf0, 0xd3, 0x5d, 0x0f, 0x00, 0x6f, 0x9d, - 0x36, 0x42, 0x4a, 0x5e, 0xc1, 0xe0}, -{ - 0x75, 0xf3, 0xc6, 0xf4, 0xdb, 0x7b, 0xfb, 0xc8, 0x4a, 0xd3, - 0xe6, 0x6b, 0x45, 0x7d, 0xe8, 0x4b, 0xd6, 0x32, 0xd8, 0xfd, - 0x37, 0x71, 0xf1, 0xe1, 0x30, 0x0f, 0xf8, 0x1b, 0x87, 0xfa, - 0x06, 0x3f, 0x5e, 0xba, 0xae, 0x5b, 0x8a, 0x00, 0xbc, 0x9d, - 0x6d, 0xc1, 0xb1, 0x0e, 0x80, 0x5d, 0xd2, 0xd5, 0xa0, 0x84, - 0x07, 0x14, 0xb5, 0x90, 0x2c, 0xa3, 0xb2, 0x73, 0x4c, 0x54, - 0x92, 0x74, 0x36, 0x51, 0x38, 0xb0, 0xbd, 0x5a, 0xfc, 0x60, - 0x62, 0x96, 0x6c, 0x42, 0xf7, 0x10, 0x7c, 0x28, 0x27, 0x8c, - 0x13, 0x95, 0x9c, 0xc7, 0x24, 0x46, 0x3b, 0x70, 0xca, 0xe3, - 0x85, 0xcb, 0x11, 0xd0, 0x93, 0xb8, 0xa6, 0x83, 0x20, 0xff, - 0x9f, 0x77, 0xc3, 0xcc, 0x03, 0x6f, 0x08, 0xbf, 0x40, 0xe7, - 0x2b, 0xe2, 0x79, 0x0c, 0xaa, 0x82, 0x41, 0x3a, 0xea, 0xb9, - 0xe4, 0x9a, 0xa4, 0x97, 0x7e, 0xda, 0x7a, 0x17, 0x66, 0x94, - 0xa1, 0x1d, 0x3d, 0xf0, 0xde, 0xb3, 0x0b, 0x72, 0xa7, 0x1c, - 0xef, 0xd1, 0x53, 0x3e, 0x8f, 0x33, 0x26, 0x5f, 0xec, 0x76, - 0x2a, 0x49, 0x81, 0x88, 0xee, 0x21, 0xc4, 0x1a, 0xeb, 0xd9, - 0xc5, 0x39, 0x99, 0xcd, 0xad, 0x31, 0x8b, 0x01, 0x18, 0x23, - 0xdd, 0x1f, 0x4e, 0x2d, 0xf9, 0x48, 0x4f, 0xf2, 0x65, 0x8e, - 0x78, 0x5c, 0x58, 0x19, 0x8d, 0xe5, 0x98, 0x57, 0x67, 0x7f, - 0x05, 0x64, 0xaf, 0x63, 0xb6, 0xfe, 0xf5, 0xb7, 0x3c, 0xa5, - 0xce, 0xe9, 0x68, 0x44, 0xe0, 0x4d, 0x43, 0x69, 0x29, 0x2e, - 0xac, 0x15, 0x59, 0xa8, 0x0a, 0x9e, 0x6e, 0x47, 0xdf, 0x34, - 0x35, 0x6a, 0xcf, 0xdc, 0x22, 0xc9, 0xc0, 0x9b, 0x89, 0xd4, - 0xed, 0xab, 0x12, 0xa2, 0x0d, 0x52, 0xbb, 0x02, 0x2f, 0xa9, - 0xd7, 0x61, 0x1e, 0xb4, 0x50, 0x04, 0xf6, 0xc2, 0x16, 0x25, - 0x86, 0x56, 0x55, 0x09, 0xbe, 0x91} -}; -static const ulong32 mds_tab[4][256] = { -{ -0x00000000UL, 0xefef5b01UL, 0xb7b7b602UL, 0x5858ed03UL, 0x07070504UL, 0xe8e85e05UL, 0xb0b0b306UL, 0x5f5fe807UL, -0x0e0e0a08UL, 0xe1e15109UL, 0xb9b9bc0aUL, 0x5656e70bUL, 0x09090f0cUL, 0xe6e6540dUL, 0xbebeb90eUL, 0x5151e20fUL, -0x1c1c1410UL, 0xf3f34f11UL, 0xababa212UL, 0x4444f913UL, 0x1b1b1114UL, 0xf4f44a15UL, 0xacaca716UL, 0x4343fc17UL, -0x12121e18UL, 0xfdfd4519UL, 0xa5a5a81aUL, 0x4a4af31bUL, 0x15151b1cUL, 0xfafa401dUL, 0xa2a2ad1eUL, 0x4d4df61fUL, -0x38382820UL, 0xd7d77321UL, 0x8f8f9e22UL, 0x6060c523UL, 0x3f3f2d24UL, 0xd0d07625UL, 0x88889b26UL, 0x6767c027UL, -0x36362228UL, 0xd9d97929UL, 0x8181942aUL, 0x6e6ecf2bUL, 0x3131272cUL, 0xdede7c2dUL, 0x8686912eUL, 0x6969ca2fUL, -0x24243c30UL, 0xcbcb6731UL, 0x93938a32UL, 0x7c7cd133UL, 0x23233934UL, 0xcccc6235UL, 0x94948f36UL, 0x7b7bd437UL, -0x2a2a3638UL, 0xc5c56d39UL, 0x9d9d803aUL, 0x7272db3bUL, 0x2d2d333cUL, 0xc2c2683dUL, 0x9a9a853eUL, 0x7575de3fUL, -0x70705040UL, 0x9f9f0b41UL, 0xc7c7e642UL, 0x2828bd43UL, 0x77775544UL, 0x98980e45UL, 0xc0c0e346UL, 0x2f2fb847UL, -0x7e7e5a48UL, 0x91910149UL, 0xc9c9ec4aUL, 0x2626b74bUL, 0x79795f4cUL, 0x9696044dUL, 0xcecee94eUL, 0x2121b24fUL, -0x6c6c4450UL, 0x83831f51UL, 0xdbdbf252UL, 0x3434a953UL, 0x6b6b4154UL, 0x84841a55UL, 0xdcdcf756UL, 0x3333ac57UL, -0x62624e58UL, 0x8d8d1559UL, 0xd5d5f85aUL, 0x3a3aa35bUL, 0x65654b5cUL, 0x8a8a105dUL, 0xd2d2fd5eUL, 0x3d3da65fUL, -0x48487860UL, 0xa7a72361UL, 0xffffce62UL, 0x10109563UL, 0x4f4f7d64UL, 0xa0a02665UL, 0xf8f8cb66UL, 0x17179067UL, -0x46467268UL, 0xa9a92969UL, 0xf1f1c46aUL, 0x1e1e9f6bUL, 0x4141776cUL, 0xaeae2c6dUL, 0xf6f6c16eUL, 0x19199a6fUL, -0x54546c70UL, 0xbbbb3771UL, 0xe3e3da72UL, 0x0c0c8173UL, 0x53536974UL, 0xbcbc3275UL, 0xe4e4df76UL, 0x0b0b8477UL, -0x5a5a6678UL, 0xb5b53d79UL, 0xededd07aUL, 0x02028b7bUL, 0x5d5d637cUL, 0xb2b2387dUL, 0xeaead57eUL, 0x05058e7fUL, -0xe0e0a080UL, 0x0f0ffb81UL, 0x57571682UL, 0xb8b84d83UL, 0xe7e7a584UL, 0x0808fe85UL, 0x50501386UL, 0xbfbf4887UL, -0xeeeeaa88UL, 0x0101f189UL, 0x59591c8aUL, 0xb6b6478bUL, 0xe9e9af8cUL, 0x0606f48dUL, 0x5e5e198eUL, 0xb1b1428fUL, -0xfcfcb490UL, 0x1313ef91UL, 0x4b4b0292UL, 0xa4a45993UL, 0xfbfbb194UL, 0x1414ea95UL, 0x4c4c0796UL, 0xa3a35c97UL, -0xf2f2be98UL, 0x1d1de599UL, 0x4545089aUL, 0xaaaa539bUL, 0xf5f5bb9cUL, 0x1a1ae09dUL, 0x42420d9eUL, 0xadad569fUL, -0xd8d888a0UL, 0x3737d3a1UL, 0x6f6f3ea2UL, 0x808065a3UL, 0xdfdf8da4UL, 0x3030d6a5UL, 0x68683ba6UL, 0x878760a7UL, -0xd6d682a8UL, 0x3939d9a9UL, 0x616134aaUL, 0x8e8e6fabUL, 0xd1d187acUL, 0x3e3edcadUL, 0x666631aeUL, 0x89896aafUL, -0xc4c49cb0UL, 0x2b2bc7b1UL, 0x73732ab2UL, 0x9c9c71b3UL, 0xc3c399b4UL, 0x2c2cc2b5UL, 0x74742fb6UL, 0x9b9b74b7UL, -0xcaca96b8UL, 0x2525cdb9UL, 0x7d7d20baUL, 0x92927bbbUL, 0xcdcd93bcUL, 0x2222c8bdUL, 0x7a7a25beUL, 0x95957ebfUL, -0x9090f0c0UL, 0x7f7fabc1UL, 0x272746c2UL, 0xc8c81dc3UL, 0x9797f5c4UL, 0x7878aec5UL, 0x202043c6UL, 0xcfcf18c7UL, -0x9e9efac8UL, 0x7171a1c9UL, 0x29294ccaUL, 0xc6c617cbUL, 0x9999ffccUL, 0x7676a4cdUL, 0x2e2e49ceUL, 0xc1c112cfUL, -0x8c8ce4d0UL, 0x6363bfd1UL, 0x3b3b52d2UL, 0xd4d409d3UL, 0x8b8be1d4UL, 0x6464bad5UL, 0x3c3c57d6UL, 0xd3d30cd7UL, -0x8282eed8UL, 0x6d6db5d9UL, 0x353558daUL, 0xdada03dbUL, 0x8585ebdcUL, 0x6a6ab0ddUL, 0x32325ddeUL, 0xdddd06dfUL, -0xa8a8d8e0UL, 0x474783e1UL, 0x1f1f6ee2UL, 0xf0f035e3UL, 0xafafdde4UL, 0x404086e5UL, 0x18186be6UL, 0xf7f730e7UL, -0xa6a6d2e8UL, 0x494989e9UL, 0x111164eaUL, 0xfefe3febUL, 0xa1a1d7ecUL, 0x4e4e8cedUL, 0x161661eeUL, 0xf9f93aefUL, -0xb4b4ccf0UL, 0x5b5b97f1UL, 0x03037af2UL, 0xecec21f3UL, 0xb3b3c9f4UL, 0x5c5c92f5UL, 0x04047ff6UL, 0xebeb24f7UL, -0xbabac6f8UL, 0x55559df9UL, 0x0d0d70faUL, 0xe2e22bfbUL, 0xbdbdc3fcUL, 0x525298fdUL, 0x0a0a75feUL, 0xe5e52effUL -}, -{ -0x00000000UL, 0x015befefUL, 0x02b6b7b7UL, 0x03ed5858UL, 0x04050707UL, 0x055ee8e8UL, 0x06b3b0b0UL, 0x07e85f5fUL, -0x080a0e0eUL, 0x0951e1e1UL, 0x0abcb9b9UL, 0x0be75656UL, 0x0c0f0909UL, 0x0d54e6e6UL, 0x0eb9bebeUL, 0x0fe25151UL, -0x10141c1cUL, 0x114ff3f3UL, 0x12a2ababUL, 0x13f94444UL, 0x14111b1bUL, 0x154af4f4UL, 0x16a7acacUL, 0x17fc4343UL, -0x181e1212UL, 0x1945fdfdUL, 0x1aa8a5a5UL, 0x1bf34a4aUL, 0x1c1b1515UL, 0x1d40fafaUL, 0x1eada2a2UL, 0x1ff64d4dUL, -0x20283838UL, 0x2173d7d7UL, 0x229e8f8fUL, 0x23c56060UL, 0x242d3f3fUL, 0x2576d0d0UL, 0x269b8888UL, 0x27c06767UL, -0x28223636UL, 0x2979d9d9UL, 0x2a948181UL, 0x2bcf6e6eUL, 0x2c273131UL, 0x2d7cdedeUL, 0x2e918686UL, 0x2fca6969UL, -0x303c2424UL, 0x3167cbcbUL, 0x328a9393UL, 0x33d17c7cUL, 0x34392323UL, 0x3562ccccUL, 0x368f9494UL, 0x37d47b7bUL, -0x38362a2aUL, 0x396dc5c5UL, 0x3a809d9dUL, 0x3bdb7272UL, 0x3c332d2dUL, 0x3d68c2c2UL, 0x3e859a9aUL, 0x3fde7575UL, -0x40507070UL, 0x410b9f9fUL, 0x42e6c7c7UL, 0x43bd2828UL, 0x44557777UL, 0x450e9898UL, 0x46e3c0c0UL, 0x47b82f2fUL, -0x485a7e7eUL, 0x49019191UL, 0x4aecc9c9UL, 0x4bb72626UL, 0x4c5f7979UL, 0x4d049696UL, 0x4ee9ceceUL, 0x4fb22121UL, -0x50446c6cUL, 0x511f8383UL, 0x52f2dbdbUL, 0x53a93434UL, 0x54416b6bUL, 0x551a8484UL, 0x56f7dcdcUL, 0x57ac3333UL, -0x584e6262UL, 0x59158d8dUL, 0x5af8d5d5UL, 0x5ba33a3aUL, 0x5c4b6565UL, 0x5d108a8aUL, 0x5efdd2d2UL, 0x5fa63d3dUL, -0x60784848UL, 0x6123a7a7UL, 0x62ceffffUL, 0x63951010UL, 0x647d4f4fUL, 0x6526a0a0UL, 0x66cbf8f8UL, 0x67901717UL, -0x68724646UL, 0x6929a9a9UL, 0x6ac4f1f1UL, 0x6b9f1e1eUL, 0x6c774141UL, 0x6d2caeaeUL, 0x6ec1f6f6UL, 0x6f9a1919UL, -0x706c5454UL, 0x7137bbbbUL, 0x72dae3e3UL, 0x73810c0cUL, 0x74695353UL, 0x7532bcbcUL, 0x76dfe4e4UL, 0x77840b0bUL, -0x78665a5aUL, 0x793db5b5UL, 0x7ad0ededUL, 0x7b8b0202UL, 0x7c635d5dUL, 0x7d38b2b2UL, 0x7ed5eaeaUL, 0x7f8e0505UL, -0x80a0e0e0UL, 0x81fb0f0fUL, 0x82165757UL, 0x834db8b8UL, 0x84a5e7e7UL, 0x85fe0808UL, 0x86135050UL, 0x8748bfbfUL, -0x88aaeeeeUL, 0x89f10101UL, 0x8a1c5959UL, 0x8b47b6b6UL, 0x8cafe9e9UL, 0x8df40606UL, 0x8e195e5eUL, 0x8f42b1b1UL, -0x90b4fcfcUL, 0x91ef1313UL, 0x92024b4bUL, 0x9359a4a4UL, 0x94b1fbfbUL, 0x95ea1414UL, 0x96074c4cUL, 0x975ca3a3UL, -0x98bef2f2UL, 0x99e51d1dUL, 0x9a084545UL, 0x9b53aaaaUL, 0x9cbbf5f5UL, 0x9de01a1aUL, 0x9e0d4242UL, 0x9f56adadUL, -0xa088d8d8UL, 0xa1d33737UL, 0xa23e6f6fUL, 0xa3658080UL, 0xa48ddfdfUL, 0xa5d63030UL, 0xa63b6868UL, 0xa7608787UL, -0xa882d6d6UL, 0xa9d93939UL, 0xaa346161UL, 0xab6f8e8eUL, 0xac87d1d1UL, 0xaddc3e3eUL, 0xae316666UL, 0xaf6a8989UL, -0xb09cc4c4UL, 0xb1c72b2bUL, 0xb22a7373UL, 0xb3719c9cUL, 0xb499c3c3UL, 0xb5c22c2cUL, 0xb62f7474UL, 0xb7749b9bUL, -0xb896cacaUL, 0xb9cd2525UL, 0xba207d7dUL, 0xbb7b9292UL, 0xbc93cdcdUL, 0xbdc82222UL, 0xbe257a7aUL, 0xbf7e9595UL, -0xc0f09090UL, 0xc1ab7f7fUL, 0xc2462727UL, 0xc31dc8c8UL, 0xc4f59797UL, 0xc5ae7878UL, 0xc6432020UL, 0xc718cfcfUL, -0xc8fa9e9eUL, 0xc9a17171UL, 0xca4c2929UL, 0xcb17c6c6UL, 0xccff9999UL, 0xcda47676UL, 0xce492e2eUL, 0xcf12c1c1UL, -0xd0e48c8cUL, 0xd1bf6363UL, 0xd2523b3bUL, 0xd309d4d4UL, 0xd4e18b8bUL, 0xd5ba6464UL, 0xd6573c3cUL, 0xd70cd3d3UL, -0xd8ee8282UL, 0xd9b56d6dUL, 0xda583535UL, 0xdb03dadaUL, 0xdceb8585UL, 0xddb06a6aUL, 0xde5d3232UL, 0xdf06ddddUL, -0xe0d8a8a8UL, 0xe1834747UL, 0xe26e1f1fUL, 0xe335f0f0UL, 0xe4ddafafUL, 0xe5864040UL, 0xe66b1818UL, 0xe730f7f7UL, -0xe8d2a6a6UL, 0xe9894949UL, 0xea641111UL, 0xeb3ffefeUL, 0xecd7a1a1UL, 0xed8c4e4eUL, 0xee611616UL, 0xef3af9f9UL, -0xf0ccb4b4UL, 0xf1975b5bUL, 0xf27a0303UL, 0xf321ececUL, 0xf4c9b3b3UL, 0xf5925c5cUL, 0xf67f0404UL, 0xf724ebebUL, -0xf8c6babaUL, 0xf99d5555UL, 0xfa700d0dUL, 0xfb2be2e2UL, 0xfcc3bdbdUL, 0xfd985252UL, 0xfe750a0aUL, 0xff2ee5e5UL -}, -{ -0x00000000UL, 0xef01ef5bUL, 0xb702b7b6UL, 0x580358edUL, 0x07040705UL, 0xe805e85eUL, 0xb006b0b3UL, 0x5f075fe8UL, -0x0e080e0aUL, 0xe109e151UL, 0xb90ab9bcUL, 0x560b56e7UL, 0x090c090fUL, 0xe60de654UL, 0xbe0ebeb9UL, 0x510f51e2UL, -0x1c101c14UL, 0xf311f34fUL, 0xab12aba2UL, 0x441344f9UL, 0x1b141b11UL, 0xf415f44aUL, 0xac16aca7UL, 0x431743fcUL, -0x1218121eUL, 0xfd19fd45UL, 0xa51aa5a8UL, 0x4a1b4af3UL, 0x151c151bUL, 0xfa1dfa40UL, 0xa21ea2adUL, 0x4d1f4df6UL, -0x38203828UL, 0xd721d773UL, 0x8f228f9eUL, 0x602360c5UL, 0x3f243f2dUL, 0xd025d076UL, 0x8826889bUL, 0x672767c0UL, -0x36283622UL, 0xd929d979UL, 0x812a8194UL, 0x6e2b6ecfUL, 0x312c3127UL, 0xde2dde7cUL, 0x862e8691UL, 0x692f69caUL, -0x2430243cUL, 0xcb31cb67UL, 0x9332938aUL, 0x7c337cd1UL, 0x23342339UL, 0xcc35cc62UL, 0x9436948fUL, 0x7b377bd4UL, -0x2a382a36UL, 0xc539c56dUL, 0x9d3a9d80UL, 0x723b72dbUL, 0x2d3c2d33UL, 0xc23dc268UL, 0x9a3e9a85UL, 0x753f75deUL, -0x70407050UL, 0x9f419f0bUL, 0xc742c7e6UL, 0x284328bdUL, 0x77447755UL, 0x9845980eUL, 0xc046c0e3UL, 0x2f472fb8UL, -0x7e487e5aUL, 0x91499101UL, 0xc94ac9ecUL, 0x264b26b7UL, 0x794c795fUL, 0x964d9604UL, 0xce4ecee9UL, 0x214f21b2UL, -0x6c506c44UL, 0x8351831fUL, 0xdb52dbf2UL, 0x345334a9UL, 0x6b546b41UL, 0x8455841aUL, 0xdc56dcf7UL, 0x335733acUL, -0x6258624eUL, 0x8d598d15UL, 0xd55ad5f8UL, 0x3a5b3aa3UL, 0x655c654bUL, 0x8a5d8a10UL, 0xd25ed2fdUL, 0x3d5f3da6UL, -0x48604878UL, 0xa761a723UL, 0xff62ffceUL, 0x10631095UL, 0x4f644f7dUL, 0xa065a026UL, 0xf866f8cbUL, 0x17671790UL, -0x46684672UL, 0xa969a929UL, 0xf16af1c4UL, 0x1e6b1e9fUL, 0x416c4177UL, 0xae6dae2cUL, 0xf66ef6c1UL, 0x196f199aUL, -0x5470546cUL, 0xbb71bb37UL, 0xe372e3daUL, 0x0c730c81UL, 0x53745369UL, 0xbc75bc32UL, 0xe476e4dfUL, 0x0b770b84UL, -0x5a785a66UL, 0xb579b53dUL, 0xed7aedd0UL, 0x027b028bUL, 0x5d7c5d63UL, 0xb27db238UL, 0xea7eead5UL, 0x057f058eUL, -0xe080e0a0UL, 0x0f810ffbUL, 0x57825716UL, 0xb883b84dUL, 0xe784e7a5UL, 0x088508feUL, 0x50865013UL, 0xbf87bf48UL, -0xee88eeaaUL, 0x018901f1UL, 0x598a591cUL, 0xb68bb647UL, 0xe98ce9afUL, 0x068d06f4UL, 0x5e8e5e19UL, 0xb18fb142UL, -0xfc90fcb4UL, 0x139113efUL, 0x4b924b02UL, 0xa493a459UL, 0xfb94fbb1UL, 0x149514eaUL, 0x4c964c07UL, 0xa397a35cUL, -0xf298f2beUL, 0x1d991de5UL, 0x459a4508UL, 0xaa9baa53UL, 0xf59cf5bbUL, 0x1a9d1ae0UL, 0x429e420dUL, 0xad9fad56UL, -0xd8a0d888UL, 0x37a137d3UL, 0x6fa26f3eUL, 0x80a38065UL, 0xdfa4df8dUL, 0x30a530d6UL, 0x68a6683bUL, 0x87a78760UL, -0xd6a8d682UL, 0x39a939d9UL, 0x61aa6134UL, 0x8eab8e6fUL, 0xd1acd187UL, 0x3ead3edcUL, 0x66ae6631UL, 0x89af896aUL, -0xc4b0c49cUL, 0x2bb12bc7UL, 0x73b2732aUL, 0x9cb39c71UL, 0xc3b4c399UL, 0x2cb52cc2UL, 0x74b6742fUL, 0x9bb79b74UL, -0xcab8ca96UL, 0x25b925cdUL, 0x7dba7d20UL, 0x92bb927bUL, 0xcdbccd93UL, 0x22bd22c8UL, 0x7abe7a25UL, 0x95bf957eUL, -0x90c090f0UL, 0x7fc17fabUL, 0x27c22746UL, 0xc8c3c81dUL, 0x97c497f5UL, 0x78c578aeUL, 0x20c62043UL, 0xcfc7cf18UL, -0x9ec89efaUL, 0x71c971a1UL, 0x29ca294cUL, 0xc6cbc617UL, 0x99cc99ffUL, 0x76cd76a4UL, 0x2ece2e49UL, 0xc1cfc112UL, -0x8cd08ce4UL, 0x63d163bfUL, 0x3bd23b52UL, 0xd4d3d409UL, 0x8bd48be1UL, 0x64d564baUL, 0x3cd63c57UL, 0xd3d7d30cUL, -0x82d882eeUL, 0x6dd96db5UL, 0x35da3558UL, 0xdadbda03UL, 0x85dc85ebUL, 0x6add6ab0UL, 0x32de325dUL, 0xdddfdd06UL, -0xa8e0a8d8UL, 0x47e14783UL, 0x1fe21f6eUL, 0xf0e3f035UL, 0xafe4afddUL, 0x40e54086UL, 0x18e6186bUL, 0xf7e7f730UL, -0xa6e8a6d2UL, 0x49e94989UL, 0x11ea1164UL, 0xfeebfe3fUL, 0xa1eca1d7UL, 0x4eed4e8cUL, 0x16ee1661UL, 0xf9eff93aUL, -0xb4f0b4ccUL, 0x5bf15b97UL, 0x03f2037aUL, 0xecf3ec21UL, 0xb3f4b3c9UL, 0x5cf55c92UL, 0x04f6047fUL, 0xebf7eb24UL, -0xbaf8bac6UL, 0x55f9559dUL, 0x0dfa0d70UL, 0xe2fbe22bUL, 0xbdfcbdc3UL, 0x52fd5298UL, 0x0afe0a75UL, 0xe5ffe52eUL -}, -{ -0x00000000UL, 0x5bef015bUL, 0xb6b702b6UL, 0xed5803edUL, 0x05070405UL, 0x5ee8055eUL, 0xb3b006b3UL, 0xe85f07e8UL, -0x0a0e080aUL, 0x51e10951UL, 0xbcb90abcUL, 0xe7560be7UL, 0x0f090c0fUL, 0x54e60d54UL, 0xb9be0eb9UL, 0xe2510fe2UL, -0x141c1014UL, 0x4ff3114fUL, 0xa2ab12a2UL, 0xf94413f9UL, 0x111b1411UL, 0x4af4154aUL, 0xa7ac16a7UL, 0xfc4317fcUL, -0x1e12181eUL, 0x45fd1945UL, 0xa8a51aa8UL, 0xf34a1bf3UL, 0x1b151c1bUL, 0x40fa1d40UL, 0xada21eadUL, 0xf64d1ff6UL, -0x28382028UL, 0x73d72173UL, 0x9e8f229eUL, 0xc56023c5UL, 0x2d3f242dUL, 0x76d02576UL, 0x9b88269bUL, 0xc06727c0UL, -0x22362822UL, 0x79d92979UL, 0x94812a94UL, 0xcf6e2bcfUL, 0x27312c27UL, 0x7cde2d7cUL, 0x91862e91UL, 0xca692fcaUL, -0x3c24303cUL, 0x67cb3167UL, 0x8a93328aUL, 0xd17c33d1UL, 0x39233439UL, 0x62cc3562UL, 0x8f94368fUL, 0xd47b37d4UL, -0x362a3836UL, 0x6dc5396dUL, 0x809d3a80UL, 0xdb723bdbUL, 0x332d3c33UL, 0x68c23d68UL, 0x859a3e85UL, 0xde753fdeUL, -0x50704050UL, 0x0b9f410bUL, 0xe6c742e6UL, 0xbd2843bdUL, 0x55774455UL, 0x0e98450eUL, 0xe3c046e3UL, 0xb82f47b8UL, -0x5a7e485aUL, 0x01914901UL, 0xecc94aecUL, 0xb7264bb7UL, 0x5f794c5fUL, 0x04964d04UL, 0xe9ce4ee9UL, 0xb2214fb2UL, -0x446c5044UL, 0x1f83511fUL, 0xf2db52f2UL, 0xa93453a9UL, 0x416b5441UL, 0x1a84551aUL, 0xf7dc56f7UL, 0xac3357acUL, -0x4e62584eUL, 0x158d5915UL, 0xf8d55af8UL, 0xa33a5ba3UL, 0x4b655c4bUL, 0x108a5d10UL, 0xfdd25efdUL, 0xa63d5fa6UL, -0x78486078UL, 0x23a76123UL, 0xceff62ceUL, 0x95106395UL, 0x7d4f647dUL, 0x26a06526UL, 0xcbf866cbUL, 0x90176790UL, -0x72466872UL, 0x29a96929UL, 0xc4f16ac4UL, 0x9f1e6b9fUL, 0x77416c77UL, 0x2cae6d2cUL, 0xc1f66ec1UL, 0x9a196f9aUL, -0x6c54706cUL, 0x37bb7137UL, 0xdae372daUL, 0x810c7381UL, 0x69537469UL, 0x32bc7532UL, 0xdfe476dfUL, 0x840b7784UL, -0x665a7866UL, 0x3db5793dUL, 0xd0ed7ad0UL, 0x8b027b8bUL, 0x635d7c63UL, 0x38b27d38UL, 0xd5ea7ed5UL, 0x8e057f8eUL, -0xa0e080a0UL, 0xfb0f81fbUL, 0x16578216UL, 0x4db8834dUL, 0xa5e784a5UL, 0xfe0885feUL, 0x13508613UL, 0x48bf8748UL, -0xaaee88aaUL, 0xf10189f1UL, 0x1c598a1cUL, 0x47b68b47UL, 0xafe98cafUL, 0xf4068df4UL, 0x195e8e19UL, 0x42b18f42UL, -0xb4fc90b4UL, 0xef1391efUL, 0x024b9202UL, 0x59a49359UL, 0xb1fb94b1UL, 0xea1495eaUL, 0x074c9607UL, 0x5ca3975cUL, -0xbef298beUL, 0xe51d99e5UL, 0x08459a08UL, 0x53aa9b53UL, 0xbbf59cbbUL, 0xe01a9de0UL, 0x0d429e0dUL, 0x56ad9f56UL, -0x88d8a088UL, 0xd337a1d3UL, 0x3e6fa23eUL, 0x6580a365UL, 0x8ddfa48dUL, 0xd630a5d6UL, 0x3b68a63bUL, 0x6087a760UL, -0x82d6a882UL, 0xd939a9d9UL, 0x3461aa34UL, 0x6f8eab6fUL, 0x87d1ac87UL, 0xdc3eaddcUL, 0x3166ae31UL, 0x6a89af6aUL, -0x9cc4b09cUL, 0xc72bb1c7UL, 0x2a73b22aUL, 0x719cb371UL, 0x99c3b499UL, 0xc22cb5c2UL, 0x2f74b62fUL, 0x749bb774UL, -0x96cab896UL, 0xcd25b9cdUL, 0x207dba20UL, 0x7b92bb7bUL, 0x93cdbc93UL, 0xc822bdc8UL, 0x257abe25UL, 0x7e95bf7eUL, -0xf090c0f0UL, 0xab7fc1abUL, 0x4627c246UL, 0x1dc8c31dUL, 0xf597c4f5UL, 0xae78c5aeUL, 0x4320c643UL, 0x18cfc718UL, -0xfa9ec8faUL, 0xa171c9a1UL, 0x4c29ca4cUL, 0x17c6cb17UL, 0xff99ccffUL, 0xa476cda4UL, 0x492ece49UL, 0x12c1cf12UL, -0xe48cd0e4UL, 0xbf63d1bfUL, 0x523bd252UL, 0x09d4d309UL, 0xe18bd4e1UL, 0xba64d5baUL, 0x573cd657UL, 0x0cd3d70cUL, -0xee82d8eeUL, 0xb56dd9b5UL, 0x5835da58UL, 0x03dadb03UL, 0xeb85dcebUL, 0xb06addb0UL, 0x5d32de5dUL, 0x06dddf06UL, -0xd8a8e0d8UL, 0x8347e183UL, 0x6e1fe26eUL, 0x35f0e335UL, 0xddafe4ddUL, 0x8640e586UL, 0x6b18e66bUL, 0x30f7e730UL, -0xd2a6e8d2UL, 0x8949e989UL, 0x6411ea64UL, 0x3ffeeb3fUL, 0xd7a1ecd7UL, 0x8c4eed8cUL, 0x6116ee61UL, 0x3af9ef3aUL, -0xccb4f0ccUL, 0x975bf197UL, 0x7a03f27aUL, 0x21ecf321UL, 0xc9b3f4c9UL, 0x925cf592UL, 0x7f04f67fUL, 0x24ebf724UL, -0xc6baf8c6UL, 0x9d55f99dUL, 0x700dfa70UL, 0x2be2fb2bUL, 0xc3bdfcc3UL, 0x9852fd98UL, 0x750afe75UL, 0x2ee5ff2eUL -}}; +#include "twofish_tab.c" #define sbox(i, x) ((ulong32)SBOX[i][(x)&255]) #else /* The Q-box tables */ -static const unsigned char qbox[2][4][16] = { +static const unsigned char qbox[2][4][16] = { { { 0x8, 0x1, 0x7, 0xD, 0x6, 0xF, 0x3, 0x2, 0x0, 0xB, 0x5, 0x9, 0xE, 0xC, 0xA, 0x4 }, { 0xE, 0XC, 0XB, 0X8, 0X1, 0X2, 0X3, 0X5, 0XF, 0X4, 0XA, 0X6, 0X7, 0X0, 0X9, 0XD }, { 0XB, 0XA, 0X5, 0XE, 0X6, 0XD, 0X9, 0X0, 0XC, 0X8, 0XF, 0X3, 0X2, 0X4, 0X7, 0X1 }, { 0XD, 0X7, 0XF, 0X4, 0X1, 0X2, 0X6, 0XE, 0X9, 0XB, 0X3, 0X0, 0X8, 0X5, 0XC, 0XA } -}, +}, { { 0X2, 0X8, 0XB, 0XD, 0XF, 0X7, 0X6, 0XE, 0X3, 0X1, 0X9, 0X4, 0X0, 0XA, 0XC, 0X5 }, { 0X1, 0XE, 0X2, 0XB, 0X4, 0XC, 0X3, 0X7, 0X6, 0XD, 0XA, 0X5, 0XF, 0X9, 0X0, 0X8 }, @@ -314,11 +129,11 @@ static ulong32 sbox(int i, ulong32 x) /* computes ab mod p */ static ulong32 gf_mult(ulong32 a, ulong32 b, ulong32 p) { - ulong32 result = 0, B[2], P[2]; - + ulong32 result, B[2], P[2]; + P[1] = p; B[1] = b; - P[0] = B[0] = 0; + result = P[0] = B[0] = 0; /* unrolled branchless GF multiplier */ result ^= B[a&1]; a >>= 1; B[1] = P[B[1]>>7] ^ (B[1] << 1); @@ -369,7 +184,7 @@ static ulong32 mds_column_mult(unsigned char in, int col) return 0; } -#else /* TWOFISH_TABLES */ +#else /* !TWOFISH_TABLES */ #define mds_column_mult(x, i) mds_tab[i][x] @@ -386,25 +201,40 @@ static void mds_mult(const unsigned char *in, unsigned char *out) STORE32L(tmp, out); } +#ifdef TWOFISH_ALL_TABLES +/* computes [y0 y1 y2 y3] = RS . [x0 x1 x2 x3 x4 x5 x6 x7] */ +static void rs_mult(const unsigned char *in, unsigned char *out) +{ + ulong32 tmp; + tmp = rs_tab0[in[0]] ^ rs_tab1[in[1]] ^ rs_tab2[in[2]] ^ rs_tab3[in[3]] ^ + rs_tab4[in[4]] ^ rs_tab5[in[5]] ^ rs_tab6[in[6]] ^ rs_tab7[in[7]]; + STORE32L(tmp, out); +} + +#else /* !TWOFISH_ALL_TABLES */ + /* computes [y0 y1 y2 y3] = RS . [x0 x1 x2 x3 x4 x5 x6 x7] */ static void rs_mult(const unsigned char *in, unsigned char *out) { int x, y; for (x = 0; x < 4; x++) { out[x] = 0; - for (y = 0; y < 8; y++) + for (y = 0; y < 8; y++) { out[x] ^= gf_mult(in[y], RS[x][y], RS_POLY); + } } } +#endif + /* computes h(x) */ static void h_func(const unsigned char *in, unsigned char *out, unsigned char *M, int k, int offset) { int x; unsigned char y[4]; - for (x = 0; x < 4; x++) + for (x = 0; x < 4; x++) { y[x] = in[x]; - + } switch (k) { case 4: y[0] = (unsigned char)(sbox(1, (ulong32)y[0]) ^ M[4 * (6 + offset) + 0]); @@ -493,11 +323,9 @@ int twofish_setup(const unsigned char *key, int keylen, int num_rounds, symmetri #endif { #ifndef TWOFISH_SMALL - ulong32 g; - int z, i; - unsigned char S[4*4]; + unsigned char S[4*4], tmpx0, tmpx1; #endif - int k, x, y, start; + int k, x, y; unsigned char tmp[4], tmp2[4], M[8*4]; ulong32 A, B; @@ -517,29 +345,34 @@ int twofish_setup(const unsigned char *key, int keylen, int num_rounds, symmetri k = keylen / 8; /* copy the key into M */ - for (x = 0; x < keylen; x++) - M[x] = key[x]; + for (x = 0; x < keylen; x++) { + M[x] = key[x] & 255; + } /* create the S[..] words */ #ifndef TWOFISH_SMALL - for (x = 0; x < k; x++) + for (x = 0; x < k; x++) { rs_mult(M+(x*8), S+(x*4)); + } #else - for (x = 0; x < k; x++) + for (x = 0; x < k; x++) { rs_mult(M+(x*8), skey->twofish.S+(x*4)); + } #endif /* make subkeys */ for (x = 0; x < 20; x++) { /* A = h(p * 2x, Me) */ - for (y = 0; y < 4; y++) + for (y = 0; y < 4; y++) { tmp[y] = x+x; + } h_func(tmp, tmp2, M, k, 0); LOAD32L(A, tmp2); /* B = ROL(h(p * (2x + 1), Mo), 8) */ - for (y = 0; y < 4; y++) + for (y = 0; y < 4; y++) { tmp[y] = (unsigned char)(x+x+1); + } h_func(tmp, tmp2, M, k, 1); LOAD32L(B, tmp2); B = ROL(B, 8); @@ -551,37 +384,44 @@ int twofish_setup(const unsigned char *key, int keylen, int num_rounds, symmetri skey->twofish.K[x+x+1] = ROL(B + B + A, 9); } - /* where to start in the sbox layers */ - switch (k) { - case 4 : start = 0; break; - case 3 : start = 1; break; - default: start = 2; break; - } - #ifndef TWOFISH_SMALL /* make the sboxes (large ram variant) */ - for (y = 0; y < 4; y++) { - for (x = 0; x < 256; x++) { - z = start; - - /* do unkeyed substitution */ - g = sbox((int)qord[y][z++], x); - - /* first subkey */ - i = 0; - - /* do key mixing+sbox until z==5 */ - while (z != 5) { - g = sbox((int)qord[y][z++], g ^ S[4*i++ + y]); - } - - /* multiply g by a column of the MDS */ - skey->twofish.S[y][x] = mds_column_mult((unsigned char)g, y); - } + if (k == 2) { + for (x = 0; x < 256; x++) { + tmpx0 = sbox(0, x); + tmpx1 = sbox(1, x); + skey->twofish.S[0][x] = mds_column_mult(sbox(1, (sbox(0, tmpx0 ^ S[0]) ^ S[4])),0); + skey->twofish.S[1][x] = mds_column_mult(sbox(0, (sbox(0, tmpx1 ^ S[1]) ^ S[5])),1); + skey->twofish.S[2][x] = mds_column_mult(sbox(1, (sbox(1, tmpx0 ^ S[2]) ^ S[6])),2); + skey->twofish.S[3][x] = mds_column_mult(sbox(0, (sbox(1, tmpx1 ^ S[3]) ^ S[7])),3); + } + } else if (k == 3) { + for (x = 0; x < 256; x++) { + tmpx0 = sbox(0, x); + tmpx1 = sbox(1, x); + skey->twofish.S[0][x] = mds_column_mult(sbox(1, (sbox(0, sbox(0, tmpx1 ^ S[0]) ^ S[4]) ^ S[8])),0); + skey->twofish.S[1][x] = mds_column_mult(sbox(0, (sbox(0, sbox(1, tmpx1 ^ S[1]) ^ S[5]) ^ S[9])),1); + skey->twofish.S[2][x] = mds_column_mult(sbox(1, (sbox(1, sbox(0, tmpx0 ^ S[2]) ^ S[6]) ^ S[10])),2); + skey->twofish.S[3][x] = mds_column_mult(sbox(0, (sbox(1, sbox(1, tmpx0 ^ S[3]) ^ S[7]) ^ S[11])),3); + } + } else { + for (x = 0; x < 256; x++) { + tmpx0 = sbox(0, x); + tmpx1 = sbox(1, x); + skey->twofish.S[0][x] = mds_column_mult(sbox(1, (sbox(0, sbox(0, sbox(1, tmpx1 ^ S[0]) ^ S[4]) ^ S[8]) ^ S[12])),0); + skey->twofish.S[1][x] = mds_column_mult(sbox(0, (sbox(0, sbox(1, sbox(1, tmpx0 ^ S[1]) ^ S[5]) ^ S[9]) ^ S[13])),1); + skey->twofish.S[2][x] = mds_column_mult(sbox(1, (sbox(1, sbox(0, sbox(0, tmpx0 ^ S[2]) ^ S[6]) ^ S[10]) ^ S[14])),2); + skey->twofish.S[3][x] = mds_column_mult(sbox(0, (sbox(1, sbox(1, sbox(0, tmpx1 ^ S[3]) ^ S[7]) ^ S[11]) ^ S[15])),3); + } } #else + /* where to start in the sbox layers */ /* small ram variant */ - skey->twofish.start = start; + switch (k) { + case 4 : skey->twofish.start = 0; break; + case 3 : skey->twofish.start = 1; break; + default: skey->twofish.start = 2; break; + } #endif return CRYPT_OK; } @@ -639,7 +479,7 @@ void twofish_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_k a = ROR(a ^ (t1 + t2 + k[0]), 1); b = ROL(b, 1) ^ (t2 + t2 + t1 + k[1]); k += 2; - } + } /* output with "undo last swap" */ ta = c ^ key->twofish.K[4]; @@ -768,7 +608,7 @@ int twofish_test(void) symmetric_key key; unsigned char tmp[2][16]; - int err, i; + int err, i, y; for (i = 0; i < (int)(sizeof(tests)/sizeof(tests[0])); i++) { if ((err = twofish_setup(tests[i].key, tests[i].keylen, 0, &key)) != CRYPT_OK) { @@ -779,6 +619,11 @@ int twofish_test(void) if (memcmp(tmp[0], tests[i].ct, 16) != 0 || memcmp(tmp[1], tests[i].pt, 16) != 0) { return CRYPT_FAIL_TESTVECTOR; } + /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ + for (y = 0; y < 16; y++) tmp[0][y] = 0; + for (y = 0; y < 1000; y++) twofish_ecb_encrypt(tmp[0], tmp[0], &key); + for (y = 0; y < 1000; y++) twofish_ecb_decrypt(tmp[0], tmp[0], &key); + for (y = 0; y < 16; y++) if (tmp[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; } return CRYPT_OK; #endif diff --git a/twofish_tab.c b/twofish_tab.c new file mode 100644 index 0000000..99f7aba --- /dev/null +++ b/twofish_tab.c @@ -0,0 +1,477 @@ +#ifdef TWOFISH_TABLES + +/* pre generated 8x8 tables from the four 4x4s */ +static const unsigned char SBOX[2][256] = { +{ + 0xa9, 0x67, 0xb3, 0xe8, 0x04, 0xfd, 0xa3, 0x76, 0x9a, 0x92, + 0x80, 0x78, 0xe4, 0xdd, 0xd1, 0x38, 0x0d, 0xc6, 0x35, 0x98, + 0x18, 0xf7, 0xec, 0x6c, 0x43, 0x75, 0x37, 0x26, 0xfa, 0x13, + 0x94, 0x48, 0xf2, 0xd0, 0x8b, 0x30, 0x84, 0x54, 0xdf, 0x23, + 0x19, 0x5b, 0x3d, 0x59, 0xf3, 0xae, 0xa2, 0x82, 0x63, 0x01, + 0x83, 0x2e, 0xd9, 0x51, 0x9b, 0x7c, 0xa6, 0xeb, 0xa5, 0xbe, + 0x16, 0x0c, 0xe3, 0x61, 0xc0, 0x8c, 0x3a, 0xf5, 0x73, 0x2c, + 0x25, 0x0b, 0xbb, 0x4e, 0x89, 0x6b, 0x53, 0x6a, 0xb4, 0xf1, + 0xe1, 0xe6, 0xbd, 0x45, 0xe2, 0xf4, 0xb6, 0x66, 0xcc, 0x95, + 0x03, 0x56, 0xd4, 0x1c, 0x1e, 0xd7, 0xfb, 0xc3, 0x8e, 0xb5, + 0xe9, 0xcf, 0xbf, 0xba, 0xea, 0x77, 0x39, 0xaf, 0x33, 0xc9, + 0x62, 0x71, 0x81, 0x79, 0x09, 0xad, 0x24, 0xcd, 0xf9, 0xd8, + 0xe5, 0xc5, 0xb9, 0x4d, 0x44, 0x08, 0x86, 0xe7, 0xa1, 0x1d, + 0xaa, 0xed, 0x06, 0x70, 0xb2, 0xd2, 0x41, 0x7b, 0xa0, 0x11, + 0x31, 0xc2, 0x27, 0x90, 0x20, 0xf6, 0x60, 0xff, 0x96, 0x5c, + 0xb1, 0xab, 0x9e, 0x9c, 0x52, 0x1b, 0x5f, 0x93, 0x0a, 0xef, + 0x91, 0x85, 0x49, 0xee, 0x2d, 0x4f, 0x8f, 0x3b, 0x47, 0x87, + 0x6d, 0x46, 0xd6, 0x3e, 0x69, 0x64, 0x2a, 0xce, 0xcb, 0x2f, + 0xfc, 0x97, 0x05, 0x7a, 0xac, 0x7f, 0xd5, 0x1a, 0x4b, 0x0e, + 0xa7, 0x5a, 0x28, 0x14, 0x3f, 0x29, 0x88, 0x3c, 0x4c, 0x02, + 0xb8, 0xda, 0xb0, 0x17, 0x55, 0x1f, 0x8a, 0x7d, 0x57, 0xc7, + 0x8d, 0x74, 0xb7, 0xc4, 0x9f, 0x72, 0x7e, 0x15, 0x22, 0x12, + 0x58, 0x07, 0x99, 0x34, 0x6e, 0x50, 0xde, 0x68, 0x65, 0xbc, + 0xdb, 0xf8, 0xc8, 0xa8, 0x2b, 0x40, 0xdc, 0xfe, 0x32, 0xa4, + 0xca, 0x10, 0x21, 0xf0, 0xd3, 0x5d, 0x0f, 0x00, 0x6f, 0x9d, + 0x36, 0x42, 0x4a, 0x5e, 0xc1, 0xe0}, +{ + 0x75, 0xf3, 0xc6, 0xf4, 0xdb, 0x7b, 0xfb, 0xc8, 0x4a, 0xd3, + 0xe6, 0x6b, 0x45, 0x7d, 0xe8, 0x4b, 0xd6, 0x32, 0xd8, 0xfd, + 0x37, 0x71, 0xf1, 0xe1, 0x30, 0x0f, 0xf8, 0x1b, 0x87, 0xfa, + 0x06, 0x3f, 0x5e, 0xba, 0xae, 0x5b, 0x8a, 0x00, 0xbc, 0x9d, + 0x6d, 0xc1, 0xb1, 0x0e, 0x80, 0x5d, 0xd2, 0xd5, 0xa0, 0x84, + 0x07, 0x14, 0xb5, 0x90, 0x2c, 0xa3, 0xb2, 0x73, 0x4c, 0x54, + 0x92, 0x74, 0x36, 0x51, 0x38, 0xb0, 0xbd, 0x5a, 0xfc, 0x60, + 0x62, 0x96, 0x6c, 0x42, 0xf7, 0x10, 0x7c, 0x28, 0x27, 0x8c, + 0x13, 0x95, 0x9c, 0xc7, 0x24, 0x46, 0x3b, 0x70, 0xca, 0xe3, + 0x85, 0xcb, 0x11, 0xd0, 0x93, 0xb8, 0xa6, 0x83, 0x20, 0xff, + 0x9f, 0x77, 0xc3, 0xcc, 0x03, 0x6f, 0x08, 0xbf, 0x40, 0xe7, + 0x2b, 0xe2, 0x79, 0x0c, 0xaa, 0x82, 0x41, 0x3a, 0xea, 0xb9, + 0xe4, 0x9a, 0xa4, 0x97, 0x7e, 0xda, 0x7a, 0x17, 0x66, 0x94, + 0xa1, 0x1d, 0x3d, 0xf0, 0xde, 0xb3, 0x0b, 0x72, 0xa7, 0x1c, + 0xef, 0xd1, 0x53, 0x3e, 0x8f, 0x33, 0x26, 0x5f, 0xec, 0x76, + 0x2a, 0x49, 0x81, 0x88, 0xee, 0x21, 0xc4, 0x1a, 0xeb, 0xd9, + 0xc5, 0x39, 0x99, 0xcd, 0xad, 0x31, 0x8b, 0x01, 0x18, 0x23, + 0xdd, 0x1f, 0x4e, 0x2d, 0xf9, 0x48, 0x4f, 0xf2, 0x65, 0x8e, + 0x78, 0x5c, 0x58, 0x19, 0x8d, 0xe5, 0x98, 0x57, 0x67, 0x7f, + 0x05, 0x64, 0xaf, 0x63, 0xb6, 0xfe, 0xf5, 0xb7, 0x3c, 0xa5, + 0xce, 0xe9, 0x68, 0x44, 0xe0, 0x4d, 0x43, 0x69, 0x29, 0x2e, + 0xac, 0x15, 0x59, 0xa8, 0x0a, 0x9e, 0x6e, 0x47, 0xdf, 0x34, + 0x35, 0x6a, 0xcf, 0xdc, 0x22, 0xc9, 0xc0, 0x9b, 0x89, 0xd4, + 0xed, 0xab, 0x12, 0xa2, 0x0d, 0x52, 0xbb, 0x02, 0x2f, 0xa9, + 0xd7, 0x61, 0x1e, 0xb4, 0x50, 0x04, 0xf6, 0xc2, 0x16, 0x25, + 0x86, 0x56, 0x55, 0x09, 0xbe, 0x91} +}; + +/* the 4x4 MDS in a nicer format */ +static const ulong32 mds_tab[4][256] = { +{ +0x00000000UL, 0xefef5b01UL, 0xb7b7b602UL, 0x5858ed03UL, 0x07070504UL, 0xe8e85e05UL, 0xb0b0b306UL, 0x5f5fe807UL, +0x0e0e0a08UL, 0xe1e15109UL, 0xb9b9bc0aUL, 0x5656e70bUL, 0x09090f0cUL, 0xe6e6540dUL, 0xbebeb90eUL, 0x5151e20fUL, +0x1c1c1410UL, 0xf3f34f11UL, 0xababa212UL, 0x4444f913UL, 0x1b1b1114UL, 0xf4f44a15UL, 0xacaca716UL, 0x4343fc17UL, +0x12121e18UL, 0xfdfd4519UL, 0xa5a5a81aUL, 0x4a4af31bUL, 0x15151b1cUL, 0xfafa401dUL, 0xa2a2ad1eUL, 0x4d4df61fUL, +0x38382820UL, 0xd7d77321UL, 0x8f8f9e22UL, 0x6060c523UL, 0x3f3f2d24UL, 0xd0d07625UL, 0x88889b26UL, 0x6767c027UL, +0x36362228UL, 0xd9d97929UL, 0x8181942aUL, 0x6e6ecf2bUL, 0x3131272cUL, 0xdede7c2dUL, 0x8686912eUL, 0x6969ca2fUL, +0x24243c30UL, 0xcbcb6731UL, 0x93938a32UL, 0x7c7cd133UL, 0x23233934UL, 0xcccc6235UL, 0x94948f36UL, 0x7b7bd437UL, +0x2a2a3638UL, 0xc5c56d39UL, 0x9d9d803aUL, 0x7272db3bUL, 0x2d2d333cUL, 0xc2c2683dUL, 0x9a9a853eUL, 0x7575de3fUL, +0x70705040UL, 0x9f9f0b41UL, 0xc7c7e642UL, 0x2828bd43UL, 0x77775544UL, 0x98980e45UL, 0xc0c0e346UL, 0x2f2fb847UL, +0x7e7e5a48UL, 0x91910149UL, 0xc9c9ec4aUL, 0x2626b74bUL, 0x79795f4cUL, 0x9696044dUL, 0xcecee94eUL, 0x2121b24fUL, +0x6c6c4450UL, 0x83831f51UL, 0xdbdbf252UL, 0x3434a953UL, 0x6b6b4154UL, 0x84841a55UL, 0xdcdcf756UL, 0x3333ac57UL, +0x62624e58UL, 0x8d8d1559UL, 0xd5d5f85aUL, 0x3a3aa35bUL, 0x65654b5cUL, 0x8a8a105dUL, 0xd2d2fd5eUL, 0x3d3da65fUL, +0x48487860UL, 0xa7a72361UL, 0xffffce62UL, 0x10109563UL, 0x4f4f7d64UL, 0xa0a02665UL, 0xf8f8cb66UL, 0x17179067UL, +0x46467268UL, 0xa9a92969UL, 0xf1f1c46aUL, 0x1e1e9f6bUL, 0x4141776cUL, 0xaeae2c6dUL, 0xf6f6c16eUL, 0x19199a6fUL, +0x54546c70UL, 0xbbbb3771UL, 0xe3e3da72UL, 0x0c0c8173UL, 0x53536974UL, 0xbcbc3275UL, 0xe4e4df76UL, 0x0b0b8477UL, +0x5a5a6678UL, 0xb5b53d79UL, 0xededd07aUL, 0x02028b7bUL, 0x5d5d637cUL, 0xb2b2387dUL, 0xeaead57eUL, 0x05058e7fUL, +0xe0e0a080UL, 0x0f0ffb81UL, 0x57571682UL, 0xb8b84d83UL, 0xe7e7a584UL, 0x0808fe85UL, 0x50501386UL, 0xbfbf4887UL, +0xeeeeaa88UL, 0x0101f189UL, 0x59591c8aUL, 0xb6b6478bUL, 0xe9e9af8cUL, 0x0606f48dUL, 0x5e5e198eUL, 0xb1b1428fUL, +0xfcfcb490UL, 0x1313ef91UL, 0x4b4b0292UL, 0xa4a45993UL, 0xfbfbb194UL, 0x1414ea95UL, 0x4c4c0796UL, 0xa3a35c97UL, +0xf2f2be98UL, 0x1d1de599UL, 0x4545089aUL, 0xaaaa539bUL, 0xf5f5bb9cUL, 0x1a1ae09dUL, 0x42420d9eUL, 0xadad569fUL, +0xd8d888a0UL, 0x3737d3a1UL, 0x6f6f3ea2UL, 0x808065a3UL, 0xdfdf8da4UL, 0x3030d6a5UL, 0x68683ba6UL, 0x878760a7UL, +0xd6d682a8UL, 0x3939d9a9UL, 0x616134aaUL, 0x8e8e6fabUL, 0xd1d187acUL, 0x3e3edcadUL, 0x666631aeUL, 0x89896aafUL, +0xc4c49cb0UL, 0x2b2bc7b1UL, 0x73732ab2UL, 0x9c9c71b3UL, 0xc3c399b4UL, 0x2c2cc2b5UL, 0x74742fb6UL, 0x9b9b74b7UL, +0xcaca96b8UL, 0x2525cdb9UL, 0x7d7d20baUL, 0x92927bbbUL, 0xcdcd93bcUL, 0x2222c8bdUL, 0x7a7a25beUL, 0x95957ebfUL, +0x9090f0c0UL, 0x7f7fabc1UL, 0x272746c2UL, 0xc8c81dc3UL, 0x9797f5c4UL, 0x7878aec5UL, 0x202043c6UL, 0xcfcf18c7UL, +0x9e9efac8UL, 0x7171a1c9UL, 0x29294ccaUL, 0xc6c617cbUL, 0x9999ffccUL, 0x7676a4cdUL, 0x2e2e49ceUL, 0xc1c112cfUL, +0x8c8ce4d0UL, 0x6363bfd1UL, 0x3b3b52d2UL, 0xd4d409d3UL, 0x8b8be1d4UL, 0x6464bad5UL, 0x3c3c57d6UL, 0xd3d30cd7UL, +0x8282eed8UL, 0x6d6db5d9UL, 0x353558daUL, 0xdada03dbUL, 0x8585ebdcUL, 0x6a6ab0ddUL, 0x32325ddeUL, 0xdddd06dfUL, +0xa8a8d8e0UL, 0x474783e1UL, 0x1f1f6ee2UL, 0xf0f035e3UL, 0xafafdde4UL, 0x404086e5UL, 0x18186be6UL, 0xf7f730e7UL, +0xa6a6d2e8UL, 0x494989e9UL, 0x111164eaUL, 0xfefe3febUL, 0xa1a1d7ecUL, 0x4e4e8cedUL, 0x161661eeUL, 0xf9f93aefUL, +0xb4b4ccf0UL, 0x5b5b97f1UL, 0x03037af2UL, 0xecec21f3UL, 0xb3b3c9f4UL, 0x5c5c92f5UL, 0x04047ff6UL, 0xebeb24f7UL, +0xbabac6f8UL, 0x55559df9UL, 0x0d0d70faUL, 0xe2e22bfbUL, 0xbdbdc3fcUL, 0x525298fdUL, 0x0a0a75feUL, 0xe5e52effUL +}, +{ +0x00000000UL, 0x015befefUL, 0x02b6b7b7UL, 0x03ed5858UL, 0x04050707UL, 0x055ee8e8UL, 0x06b3b0b0UL, 0x07e85f5fUL, +0x080a0e0eUL, 0x0951e1e1UL, 0x0abcb9b9UL, 0x0be75656UL, 0x0c0f0909UL, 0x0d54e6e6UL, 0x0eb9bebeUL, 0x0fe25151UL, +0x10141c1cUL, 0x114ff3f3UL, 0x12a2ababUL, 0x13f94444UL, 0x14111b1bUL, 0x154af4f4UL, 0x16a7acacUL, 0x17fc4343UL, +0x181e1212UL, 0x1945fdfdUL, 0x1aa8a5a5UL, 0x1bf34a4aUL, 0x1c1b1515UL, 0x1d40fafaUL, 0x1eada2a2UL, 0x1ff64d4dUL, +0x20283838UL, 0x2173d7d7UL, 0x229e8f8fUL, 0x23c56060UL, 0x242d3f3fUL, 0x2576d0d0UL, 0x269b8888UL, 0x27c06767UL, +0x28223636UL, 0x2979d9d9UL, 0x2a948181UL, 0x2bcf6e6eUL, 0x2c273131UL, 0x2d7cdedeUL, 0x2e918686UL, 0x2fca6969UL, +0x303c2424UL, 0x3167cbcbUL, 0x328a9393UL, 0x33d17c7cUL, 0x34392323UL, 0x3562ccccUL, 0x368f9494UL, 0x37d47b7bUL, +0x38362a2aUL, 0x396dc5c5UL, 0x3a809d9dUL, 0x3bdb7272UL, 0x3c332d2dUL, 0x3d68c2c2UL, 0x3e859a9aUL, 0x3fde7575UL, +0x40507070UL, 0x410b9f9fUL, 0x42e6c7c7UL, 0x43bd2828UL, 0x44557777UL, 0x450e9898UL, 0x46e3c0c0UL, 0x47b82f2fUL, +0x485a7e7eUL, 0x49019191UL, 0x4aecc9c9UL, 0x4bb72626UL, 0x4c5f7979UL, 0x4d049696UL, 0x4ee9ceceUL, 0x4fb22121UL, +0x50446c6cUL, 0x511f8383UL, 0x52f2dbdbUL, 0x53a93434UL, 0x54416b6bUL, 0x551a8484UL, 0x56f7dcdcUL, 0x57ac3333UL, +0x584e6262UL, 0x59158d8dUL, 0x5af8d5d5UL, 0x5ba33a3aUL, 0x5c4b6565UL, 0x5d108a8aUL, 0x5efdd2d2UL, 0x5fa63d3dUL, +0x60784848UL, 0x6123a7a7UL, 0x62ceffffUL, 0x63951010UL, 0x647d4f4fUL, 0x6526a0a0UL, 0x66cbf8f8UL, 0x67901717UL, +0x68724646UL, 0x6929a9a9UL, 0x6ac4f1f1UL, 0x6b9f1e1eUL, 0x6c774141UL, 0x6d2caeaeUL, 0x6ec1f6f6UL, 0x6f9a1919UL, +0x706c5454UL, 0x7137bbbbUL, 0x72dae3e3UL, 0x73810c0cUL, 0x74695353UL, 0x7532bcbcUL, 0x76dfe4e4UL, 0x77840b0bUL, +0x78665a5aUL, 0x793db5b5UL, 0x7ad0ededUL, 0x7b8b0202UL, 0x7c635d5dUL, 0x7d38b2b2UL, 0x7ed5eaeaUL, 0x7f8e0505UL, +0x80a0e0e0UL, 0x81fb0f0fUL, 0x82165757UL, 0x834db8b8UL, 0x84a5e7e7UL, 0x85fe0808UL, 0x86135050UL, 0x8748bfbfUL, +0x88aaeeeeUL, 0x89f10101UL, 0x8a1c5959UL, 0x8b47b6b6UL, 0x8cafe9e9UL, 0x8df40606UL, 0x8e195e5eUL, 0x8f42b1b1UL, +0x90b4fcfcUL, 0x91ef1313UL, 0x92024b4bUL, 0x9359a4a4UL, 0x94b1fbfbUL, 0x95ea1414UL, 0x96074c4cUL, 0x975ca3a3UL, +0x98bef2f2UL, 0x99e51d1dUL, 0x9a084545UL, 0x9b53aaaaUL, 0x9cbbf5f5UL, 0x9de01a1aUL, 0x9e0d4242UL, 0x9f56adadUL, +0xa088d8d8UL, 0xa1d33737UL, 0xa23e6f6fUL, 0xa3658080UL, 0xa48ddfdfUL, 0xa5d63030UL, 0xa63b6868UL, 0xa7608787UL, +0xa882d6d6UL, 0xa9d93939UL, 0xaa346161UL, 0xab6f8e8eUL, 0xac87d1d1UL, 0xaddc3e3eUL, 0xae316666UL, 0xaf6a8989UL, +0xb09cc4c4UL, 0xb1c72b2bUL, 0xb22a7373UL, 0xb3719c9cUL, 0xb499c3c3UL, 0xb5c22c2cUL, 0xb62f7474UL, 0xb7749b9bUL, +0xb896cacaUL, 0xb9cd2525UL, 0xba207d7dUL, 0xbb7b9292UL, 0xbc93cdcdUL, 0xbdc82222UL, 0xbe257a7aUL, 0xbf7e9595UL, +0xc0f09090UL, 0xc1ab7f7fUL, 0xc2462727UL, 0xc31dc8c8UL, 0xc4f59797UL, 0xc5ae7878UL, 0xc6432020UL, 0xc718cfcfUL, +0xc8fa9e9eUL, 0xc9a17171UL, 0xca4c2929UL, 0xcb17c6c6UL, 0xccff9999UL, 0xcda47676UL, 0xce492e2eUL, 0xcf12c1c1UL, +0xd0e48c8cUL, 0xd1bf6363UL, 0xd2523b3bUL, 0xd309d4d4UL, 0xd4e18b8bUL, 0xd5ba6464UL, 0xd6573c3cUL, 0xd70cd3d3UL, +0xd8ee8282UL, 0xd9b56d6dUL, 0xda583535UL, 0xdb03dadaUL, 0xdceb8585UL, 0xddb06a6aUL, 0xde5d3232UL, 0xdf06ddddUL, +0xe0d8a8a8UL, 0xe1834747UL, 0xe26e1f1fUL, 0xe335f0f0UL, 0xe4ddafafUL, 0xe5864040UL, 0xe66b1818UL, 0xe730f7f7UL, +0xe8d2a6a6UL, 0xe9894949UL, 0xea641111UL, 0xeb3ffefeUL, 0xecd7a1a1UL, 0xed8c4e4eUL, 0xee611616UL, 0xef3af9f9UL, +0xf0ccb4b4UL, 0xf1975b5bUL, 0xf27a0303UL, 0xf321ececUL, 0xf4c9b3b3UL, 0xf5925c5cUL, 0xf67f0404UL, 0xf724ebebUL, +0xf8c6babaUL, 0xf99d5555UL, 0xfa700d0dUL, 0xfb2be2e2UL, 0xfcc3bdbdUL, 0xfd985252UL, 0xfe750a0aUL, 0xff2ee5e5UL +}, +{ +0x00000000UL, 0xef01ef5bUL, 0xb702b7b6UL, 0x580358edUL, 0x07040705UL, 0xe805e85eUL, 0xb006b0b3UL, 0x5f075fe8UL, +0x0e080e0aUL, 0xe109e151UL, 0xb90ab9bcUL, 0x560b56e7UL, 0x090c090fUL, 0xe60de654UL, 0xbe0ebeb9UL, 0x510f51e2UL, +0x1c101c14UL, 0xf311f34fUL, 0xab12aba2UL, 0x441344f9UL, 0x1b141b11UL, 0xf415f44aUL, 0xac16aca7UL, 0x431743fcUL, +0x1218121eUL, 0xfd19fd45UL, 0xa51aa5a8UL, 0x4a1b4af3UL, 0x151c151bUL, 0xfa1dfa40UL, 0xa21ea2adUL, 0x4d1f4df6UL, +0x38203828UL, 0xd721d773UL, 0x8f228f9eUL, 0x602360c5UL, 0x3f243f2dUL, 0xd025d076UL, 0x8826889bUL, 0x672767c0UL, +0x36283622UL, 0xd929d979UL, 0x812a8194UL, 0x6e2b6ecfUL, 0x312c3127UL, 0xde2dde7cUL, 0x862e8691UL, 0x692f69caUL, +0x2430243cUL, 0xcb31cb67UL, 0x9332938aUL, 0x7c337cd1UL, 0x23342339UL, 0xcc35cc62UL, 0x9436948fUL, 0x7b377bd4UL, +0x2a382a36UL, 0xc539c56dUL, 0x9d3a9d80UL, 0x723b72dbUL, 0x2d3c2d33UL, 0xc23dc268UL, 0x9a3e9a85UL, 0x753f75deUL, +0x70407050UL, 0x9f419f0bUL, 0xc742c7e6UL, 0x284328bdUL, 0x77447755UL, 0x9845980eUL, 0xc046c0e3UL, 0x2f472fb8UL, +0x7e487e5aUL, 0x91499101UL, 0xc94ac9ecUL, 0x264b26b7UL, 0x794c795fUL, 0x964d9604UL, 0xce4ecee9UL, 0x214f21b2UL, +0x6c506c44UL, 0x8351831fUL, 0xdb52dbf2UL, 0x345334a9UL, 0x6b546b41UL, 0x8455841aUL, 0xdc56dcf7UL, 0x335733acUL, +0x6258624eUL, 0x8d598d15UL, 0xd55ad5f8UL, 0x3a5b3aa3UL, 0x655c654bUL, 0x8a5d8a10UL, 0xd25ed2fdUL, 0x3d5f3da6UL, +0x48604878UL, 0xa761a723UL, 0xff62ffceUL, 0x10631095UL, 0x4f644f7dUL, 0xa065a026UL, 0xf866f8cbUL, 0x17671790UL, +0x46684672UL, 0xa969a929UL, 0xf16af1c4UL, 0x1e6b1e9fUL, 0x416c4177UL, 0xae6dae2cUL, 0xf66ef6c1UL, 0x196f199aUL, +0x5470546cUL, 0xbb71bb37UL, 0xe372e3daUL, 0x0c730c81UL, 0x53745369UL, 0xbc75bc32UL, 0xe476e4dfUL, 0x0b770b84UL, +0x5a785a66UL, 0xb579b53dUL, 0xed7aedd0UL, 0x027b028bUL, 0x5d7c5d63UL, 0xb27db238UL, 0xea7eead5UL, 0x057f058eUL, +0xe080e0a0UL, 0x0f810ffbUL, 0x57825716UL, 0xb883b84dUL, 0xe784e7a5UL, 0x088508feUL, 0x50865013UL, 0xbf87bf48UL, +0xee88eeaaUL, 0x018901f1UL, 0x598a591cUL, 0xb68bb647UL, 0xe98ce9afUL, 0x068d06f4UL, 0x5e8e5e19UL, 0xb18fb142UL, +0xfc90fcb4UL, 0x139113efUL, 0x4b924b02UL, 0xa493a459UL, 0xfb94fbb1UL, 0x149514eaUL, 0x4c964c07UL, 0xa397a35cUL, +0xf298f2beUL, 0x1d991de5UL, 0x459a4508UL, 0xaa9baa53UL, 0xf59cf5bbUL, 0x1a9d1ae0UL, 0x429e420dUL, 0xad9fad56UL, +0xd8a0d888UL, 0x37a137d3UL, 0x6fa26f3eUL, 0x80a38065UL, 0xdfa4df8dUL, 0x30a530d6UL, 0x68a6683bUL, 0x87a78760UL, +0xd6a8d682UL, 0x39a939d9UL, 0x61aa6134UL, 0x8eab8e6fUL, 0xd1acd187UL, 0x3ead3edcUL, 0x66ae6631UL, 0x89af896aUL, +0xc4b0c49cUL, 0x2bb12bc7UL, 0x73b2732aUL, 0x9cb39c71UL, 0xc3b4c399UL, 0x2cb52cc2UL, 0x74b6742fUL, 0x9bb79b74UL, +0xcab8ca96UL, 0x25b925cdUL, 0x7dba7d20UL, 0x92bb927bUL, 0xcdbccd93UL, 0x22bd22c8UL, 0x7abe7a25UL, 0x95bf957eUL, +0x90c090f0UL, 0x7fc17fabUL, 0x27c22746UL, 0xc8c3c81dUL, 0x97c497f5UL, 0x78c578aeUL, 0x20c62043UL, 0xcfc7cf18UL, +0x9ec89efaUL, 0x71c971a1UL, 0x29ca294cUL, 0xc6cbc617UL, 0x99cc99ffUL, 0x76cd76a4UL, 0x2ece2e49UL, 0xc1cfc112UL, +0x8cd08ce4UL, 0x63d163bfUL, 0x3bd23b52UL, 0xd4d3d409UL, 0x8bd48be1UL, 0x64d564baUL, 0x3cd63c57UL, 0xd3d7d30cUL, +0x82d882eeUL, 0x6dd96db5UL, 0x35da3558UL, 0xdadbda03UL, 0x85dc85ebUL, 0x6add6ab0UL, 0x32de325dUL, 0xdddfdd06UL, +0xa8e0a8d8UL, 0x47e14783UL, 0x1fe21f6eUL, 0xf0e3f035UL, 0xafe4afddUL, 0x40e54086UL, 0x18e6186bUL, 0xf7e7f730UL, +0xa6e8a6d2UL, 0x49e94989UL, 0x11ea1164UL, 0xfeebfe3fUL, 0xa1eca1d7UL, 0x4eed4e8cUL, 0x16ee1661UL, 0xf9eff93aUL, +0xb4f0b4ccUL, 0x5bf15b97UL, 0x03f2037aUL, 0xecf3ec21UL, 0xb3f4b3c9UL, 0x5cf55c92UL, 0x04f6047fUL, 0xebf7eb24UL, +0xbaf8bac6UL, 0x55f9559dUL, 0x0dfa0d70UL, 0xe2fbe22bUL, 0xbdfcbdc3UL, 0x52fd5298UL, 0x0afe0a75UL, 0xe5ffe52eUL +}, +{ +0x00000000UL, 0x5bef015bUL, 0xb6b702b6UL, 0xed5803edUL, 0x05070405UL, 0x5ee8055eUL, 0xb3b006b3UL, 0xe85f07e8UL, +0x0a0e080aUL, 0x51e10951UL, 0xbcb90abcUL, 0xe7560be7UL, 0x0f090c0fUL, 0x54e60d54UL, 0xb9be0eb9UL, 0xe2510fe2UL, +0x141c1014UL, 0x4ff3114fUL, 0xa2ab12a2UL, 0xf94413f9UL, 0x111b1411UL, 0x4af4154aUL, 0xa7ac16a7UL, 0xfc4317fcUL, +0x1e12181eUL, 0x45fd1945UL, 0xa8a51aa8UL, 0xf34a1bf3UL, 0x1b151c1bUL, 0x40fa1d40UL, 0xada21eadUL, 0xf64d1ff6UL, +0x28382028UL, 0x73d72173UL, 0x9e8f229eUL, 0xc56023c5UL, 0x2d3f242dUL, 0x76d02576UL, 0x9b88269bUL, 0xc06727c0UL, +0x22362822UL, 0x79d92979UL, 0x94812a94UL, 0xcf6e2bcfUL, 0x27312c27UL, 0x7cde2d7cUL, 0x91862e91UL, 0xca692fcaUL, +0x3c24303cUL, 0x67cb3167UL, 0x8a93328aUL, 0xd17c33d1UL, 0x39233439UL, 0x62cc3562UL, 0x8f94368fUL, 0xd47b37d4UL, +0x362a3836UL, 0x6dc5396dUL, 0x809d3a80UL, 0xdb723bdbUL, 0x332d3c33UL, 0x68c23d68UL, 0x859a3e85UL, 0xde753fdeUL, +0x50704050UL, 0x0b9f410bUL, 0xe6c742e6UL, 0xbd2843bdUL, 0x55774455UL, 0x0e98450eUL, 0xe3c046e3UL, 0xb82f47b8UL, +0x5a7e485aUL, 0x01914901UL, 0xecc94aecUL, 0xb7264bb7UL, 0x5f794c5fUL, 0x04964d04UL, 0xe9ce4ee9UL, 0xb2214fb2UL, +0x446c5044UL, 0x1f83511fUL, 0xf2db52f2UL, 0xa93453a9UL, 0x416b5441UL, 0x1a84551aUL, 0xf7dc56f7UL, 0xac3357acUL, +0x4e62584eUL, 0x158d5915UL, 0xf8d55af8UL, 0xa33a5ba3UL, 0x4b655c4bUL, 0x108a5d10UL, 0xfdd25efdUL, 0xa63d5fa6UL, +0x78486078UL, 0x23a76123UL, 0xceff62ceUL, 0x95106395UL, 0x7d4f647dUL, 0x26a06526UL, 0xcbf866cbUL, 0x90176790UL, +0x72466872UL, 0x29a96929UL, 0xc4f16ac4UL, 0x9f1e6b9fUL, 0x77416c77UL, 0x2cae6d2cUL, 0xc1f66ec1UL, 0x9a196f9aUL, +0x6c54706cUL, 0x37bb7137UL, 0xdae372daUL, 0x810c7381UL, 0x69537469UL, 0x32bc7532UL, 0xdfe476dfUL, 0x840b7784UL, +0x665a7866UL, 0x3db5793dUL, 0xd0ed7ad0UL, 0x8b027b8bUL, 0x635d7c63UL, 0x38b27d38UL, 0xd5ea7ed5UL, 0x8e057f8eUL, +0xa0e080a0UL, 0xfb0f81fbUL, 0x16578216UL, 0x4db8834dUL, 0xa5e784a5UL, 0xfe0885feUL, 0x13508613UL, 0x48bf8748UL, +0xaaee88aaUL, 0xf10189f1UL, 0x1c598a1cUL, 0x47b68b47UL, 0xafe98cafUL, 0xf4068df4UL, 0x195e8e19UL, 0x42b18f42UL, +0xb4fc90b4UL, 0xef1391efUL, 0x024b9202UL, 0x59a49359UL, 0xb1fb94b1UL, 0xea1495eaUL, 0x074c9607UL, 0x5ca3975cUL, +0xbef298beUL, 0xe51d99e5UL, 0x08459a08UL, 0x53aa9b53UL, 0xbbf59cbbUL, 0xe01a9de0UL, 0x0d429e0dUL, 0x56ad9f56UL, +0x88d8a088UL, 0xd337a1d3UL, 0x3e6fa23eUL, 0x6580a365UL, 0x8ddfa48dUL, 0xd630a5d6UL, 0x3b68a63bUL, 0x6087a760UL, +0x82d6a882UL, 0xd939a9d9UL, 0x3461aa34UL, 0x6f8eab6fUL, 0x87d1ac87UL, 0xdc3eaddcUL, 0x3166ae31UL, 0x6a89af6aUL, +0x9cc4b09cUL, 0xc72bb1c7UL, 0x2a73b22aUL, 0x719cb371UL, 0x99c3b499UL, 0xc22cb5c2UL, 0x2f74b62fUL, 0x749bb774UL, +0x96cab896UL, 0xcd25b9cdUL, 0x207dba20UL, 0x7b92bb7bUL, 0x93cdbc93UL, 0xc822bdc8UL, 0x257abe25UL, 0x7e95bf7eUL, +0xf090c0f0UL, 0xab7fc1abUL, 0x4627c246UL, 0x1dc8c31dUL, 0xf597c4f5UL, 0xae78c5aeUL, 0x4320c643UL, 0x18cfc718UL, +0xfa9ec8faUL, 0xa171c9a1UL, 0x4c29ca4cUL, 0x17c6cb17UL, 0xff99ccffUL, 0xa476cda4UL, 0x492ece49UL, 0x12c1cf12UL, +0xe48cd0e4UL, 0xbf63d1bfUL, 0x523bd252UL, 0x09d4d309UL, 0xe18bd4e1UL, 0xba64d5baUL, 0x573cd657UL, 0x0cd3d70cUL, +0xee82d8eeUL, 0xb56dd9b5UL, 0x5835da58UL, 0x03dadb03UL, 0xeb85dcebUL, 0xb06addb0UL, 0x5d32de5dUL, 0x06dddf06UL, +0xd8a8e0d8UL, 0x8347e183UL, 0x6e1fe26eUL, 0x35f0e335UL, 0xddafe4ddUL, 0x8640e586UL, 0x6b18e66bUL, 0x30f7e730UL, +0xd2a6e8d2UL, 0x8949e989UL, 0x6411ea64UL, 0x3ffeeb3fUL, 0xd7a1ecd7UL, 0x8c4eed8cUL, 0x6116ee61UL, 0x3af9ef3aUL, +0xccb4f0ccUL, 0x975bf197UL, 0x7a03f27aUL, 0x21ecf321UL, 0xc9b3f4c9UL, 0x925cf592UL, 0x7f04f67fUL, 0x24ebf724UL, +0xc6baf8c6UL, 0x9d55f99dUL, 0x700dfa70UL, 0x2be2fb2bUL, 0xc3bdfcc3UL, 0x9852fd98UL, 0x750afe75UL, 0x2ee5ff2eUL +}}; + +#ifdef TWOFISH_ALL_TABLES + +/* the 4x8 RS transform */ +static const ulong32 rs_tab0[256] = { +0x00000000LU, 0xa402a401LU, 0x05040502LU, 0xa106a103LU, 0x0a080a04LU, 0xae0aae05LU, 0x0f0c0f06LU, 0xab0eab07LU, +0x14101408LU, 0xb012b009LU, 0x1114110aLU, 0xb516b50bLU, 0x1e181e0cLU, 0xba1aba0dLU, 0x1b1c1b0eLU, 0xbf1ebf0fLU, +0x28202810LU, 0x8c228c11LU, 0x2d242d12LU, 0x89268913LU, 0x22282214LU, 0x862a8615LU, 0x272c2716LU, 0x832e8317LU, +0x3c303c18LU, 0x98329819LU, 0x3934391aLU, 0x9d369d1bLU, 0x3638361cLU, 0x923a921dLU, 0x333c331eLU, 0x973e971fLU, +0x50405020LU, 0xf442f421LU, 0x55445522LU, 0xf146f123LU, 0x5a485a24LU, 0xfe4afe25LU, 0x5f4c5f26LU, 0xfb4efb27LU, +0x44504428LU, 0xe052e029LU, 0x4154412aLU, 0xe556e52bLU, 0x4e584e2cLU, 0xea5aea2dLU, 0x4b5c4b2eLU, 0xef5eef2fLU, +0x78607830LU, 0xdc62dc31LU, 0x7d647d32LU, 0xd966d933LU, 0x72687234LU, 0xd66ad635LU, 0x776c7736LU, 0xd36ed337LU, +0x6c706c38LU, 0xc872c839LU, 0x6974693aLU, 0xcd76cd3bLU, 0x6678663cLU, 0xc27ac23dLU, 0x637c633eLU, 0xc77ec73fLU, +0xa080a040LU, 0x04820441LU, 0xa584a542LU, 0x01860143LU, 0xaa88aa44LU, 0x0e8a0e45LU, 0xaf8caf46LU, 0x0b8e0b47LU, +0xb490b448LU, 0x10921049LU, 0xb194b14aLU, 0x1596154bLU, 0xbe98be4cLU, 0x1a9a1a4dLU, 0xbb9cbb4eLU, 0x1f9e1f4fLU, +0x88a08850LU, 0x2ca22c51LU, 0x8da48d52LU, 0x29a62953LU, 0x82a88254LU, 0x26aa2655LU, 0x87ac8756LU, 0x23ae2357LU, +0x9cb09c58LU, 0x38b23859LU, 0x99b4995aLU, 0x3db63d5bLU, 0x96b8965cLU, 0x32ba325dLU, 0x93bc935eLU, 0x37be375fLU, +0xf0c0f060LU, 0x54c25461LU, 0xf5c4f562LU, 0x51c65163LU, 0xfac8fa64LU, 0x5eca5e65LU, 0xffccff66LU, 0x5bce5b67LU, +0xe4d0e468LU, 0x40d24069LU, 0xe1d4e16aLU, 0x45d6456bLU, 0xeed8ee6cLU, 0x4ada4a6dLU, 0xebdceb6eLU, 0x4fde4f6fLU, +0xd8e0d870LU, 0x7ce27c71LU, 0xdde4dd72LU, 0x79e67973LU, 0xd2e8d274LU, 0x76ea7675LU, 0xd7ecd776LU, 0x73ee7377LU, +0xccf0cc78LU, 0x68f26879LU, 0xc9f4c97aLU, 0x6df66d7bLU, 0xc6f8c67cLU, 0x62fa627dLU, 0xc3fcc37eLU, 0x67fe677fLU, +0x0d4d0d80LU, 0xa94fa981LU, 0x08490882LU, 0xac4bac83LU, 0x07450784LU, 0xa347a385LU, 0x02410286LU, 0xa643a687LU, +0x195d1988LU, 0xbd5fbd89LU, 0x1c591c8aLU, 0xb85bb88bLU, 0x1355138cLU, 0xb757b78dLU, 0x1651168eLU, 0xb253b28fLU, +0x256d2590LU, 0x816f8191LU, 0x20692092LU, 0x846b8493LU, 0x2f652f94LU, 0x8b678b95LU, 0x2a612a96LU, 0x8e638e97LU, +0x317d3198LU, 0x957f9599LU, 0x3479349aLU, 0x907b909bLU, 0x3b753b9cLU, 0x9f779f9dLU, 0x3e713e9eLU, 0x9a739a9fLU, +0x5d0d5da0LU, 0xf90ff9a1LU, 0x580958a2LU, 0xfc0bfca3LU, 0x570557a4LU, 0xf307f3a5LU, 0x520152a6LU, 0xf603f6a7LU, +0x491d49a8LU, 0xed1feda9LU, 0x4c194caaLU, 0xe81be8abLU, 0x431543acLU, 0xe717e7adLU, 0x461146aeLU, 0xe213e2afLU, +0x752d75b0LU, 0xd12fd1b1LU, 0x702970b2LU, 0xd42bd4b3LU, 0x7f257fb4LU, 0xdb27dbb5LU, 0x7a217ab6LU, 0xde23deb7LU, +0x613d61b8LU, 0xc53fc5b9LU, 0x643964baLU, 0xc03bc0bbLU, 0x6b356bbcLU, 0xcf37cfbdLU, 0x6e316ebeLU, 0xca33cabfLU, +0xadcdadc0LU, 0x09cf09c1LU, 0xa8c9a8c2LU, 0x0ccb0cc3LU, 0xa7c5a7c4LU, 0x03c703c5LU, 0xa2c1a2c6LU, 0x06c306c7LU, +0xb9ddb9c8LU, 0x1ddf1dc9LU, 0xbcd9bccaLU, 0x18db18cbLU, 0xb3d5b3ccLU, 0x17d717cdLU, 0xb6d1b6ceLU, 0x12d312cfLU, +0x85ed85d0LU, 0x21ef21d1LU, 0x80e980d2LU, 0x24eb24d3LU, 0x8fe58fd4LU, 0x2be72bd5LU, 0x8ae18ad6LU, 0x2ee32ed7LU, +0x91fd91d8LU, 0x35ff35d9LU, 0x94f994daLU, 0x30fb30dbLU, 0x9bf59bdcLU, 0x3ff73fddLU, 0x9ef19edeLU, 0x3af33adfLU, +0xfd8dfde0LU, 0x598f59e1LU, 0xf889f8e2LU, 0x5c8b5ce3LU, 0xf785f7e4LU, 0x538753e5LU, 0xf281f2e6LU, 0x568356e7LU, +0xe99de9e8LU, 0x4d9f4de9LU, 0xec99eceaLU, 0x489b48ebLU, 0xe395e3ecLU, 0x479747edLU, 0xe691e6eeLU, 0x429342efLU, +0xd5add5f0LU, 0x71af71f1LU, 0xd0a9d0f2LU, 0x74ab74f3LU, 0xdfa5dff4LU, 0x7ba77bf5LU, 0xdaa1daf6LU, 0x7ea37ef7LU, +0xc1bdc1f8LU, 0x65bf65f9LU, 0xc4b9c4faLU, 0x60bb60fbLU, 0xcbb5cbfcLU, 0x6fb76ffdLU, 0xceb1cefeLU, 0x6ab36affLU }; + +static const ulong32 rs_tab1[256] = { +0x00000000LU, 0x55a156a4LU, 0xaa0fac05LU, 0xffaefaa1LU, 0x191e150aLU, 0x4cbf43aeLU, 0xb311b90fLU, 0xe6b0efabLU, +0x323c2a14LU, 0x679d7cb0LU, 0x98338611LU, 0xcd92d0b5LU, 0x2b223f1eLU, 0x7e8369baLU, 0x812d931bLU, 0xd48cc5bfLU, +0x64785428LU, 0x31d9028cLU, 0xce77f82dLU, 0x9bd6ae89LU, 0x7d664122LU, 0x28c71786LU, 0xd769ed27LU, 0x82c8bb83LU, +0x56447e3cLU, 0x03e52898LU, 0xfc4bd239LU, 0xa9ea849dLU, 0x4f5a6b36LU, 0x1afb3d92LU, 0xe555c733LU, 0xb0f49197LU, +0xc8f0a850LU, 0x9d51fef4LU, 0x62ff0455LU, 0x375e52f1LU, 0xd1eebd5aLU, 0x844febfeLU, 0x7be1115fLU, 0x2e4047fbLU, +0xfacc8244LU, 0xaf6dd4e0LU, 0x50c32e41LU, 0x056278e5LU, 0xe3d2974eLU, 0xb673c1eaLU, 0x49dd3b4bLU, 0x1c7c6defLU, +0xac88fc78LU, 0xf929aadcLU, 0x0687507dLU, 0x532606d9LU, 0xb596e972LU, 0xe037bfd6LU, 0x1f994577LU, 0x4a3813d3LU, +0x9eb4d66cLU, 0xcb1580c8LU, 0x34bb7a69LU, 0x611a2ccdLU, 0x87aac366LU, 0xd20b95c2LU, 0x2da56f63LU, 0x780439c7LU, +0xddad1da0LU, 0x880c4b04LU, 0x77a2b1a5LU, 0x2203e701LU, 0xc4b308aaLU, 0x91125e0eLU, 0x6ebca4afLU, 0x3b1df20bLU, +0xef9137b4LU, 0xba306110LU, 0x459e9bb1LU, 0x103fcd15LU, 0xf68f22beLU, 0xa32e741aLU, 0x5c808ebbLU, 0x0921d81fLU, +0xb9d54988LU, 0xec741f2cLU, 0x13dae58dLU, 0x467bb329LU, 0xa0cb5c82LU, 0xf56a0a26LU, 0x0ac4f087LU, 0x5f65a623LU, +0x8be9639cLU, 0xde483538LU, 0x21e6cf99LU, 0x7447993dLU, 0x92f77696LU, 0xc7562032LU, 0x38f8da93LU, 0x6d598c37LU, +0x155db5f0LU, 0x40fce354LU, 0xbf5219f5LU, 0xeaf34f51LU, 0x0c43a0faLU, 0x59e2f65eLU, 0xa64c0cffLU, 0xf3ed5a5bLU, +0x27619fe4LU, 0x72c0c940LU, 0x8d6e33e1LU, 0xd8cf6545LU, 0x3e7f8aeeLU, 0x6bdedc4aLU, 0x947026ebLU, 0xc1d1704fLU, +0x7125e1d8LU, 0x2484b77cLU, 0xdb2a4dddLU, 0x8e8b1b79LU, 0x683bf4d2LU, 0x3d9aa276LU, 0xc23458d7LU, 0x97950e73LU, +0x4319cbccLU, 0x16b89d68LU, 0xe91667c9LU, 0xbcb7316dLU, 0x5a07dec6LU, 0x0fa68862LU, 0xf00872c3LU, 0xa5a92467LU, +0xf7173a0dLU, 0xa2b66ca9LU, 0x5d189608LU, 0x08b9c0acLU, 0xee092f07LU, 0xbba879a3LU, 0x44068302LU, 0x11a7d5a6LU, +0xc52b1019LU, 0x908a46bdLU, 0x6f24bc1cLU, 0x3a85eab8LU, 0xdc350513LU, 0x899453b7LU, 0x763aa916LU, 0x239bffb2LU, +0x936f6e25LU, 0xc6ce3881LU, 0x3960c220LU, 0x6cc19484LU, 0x8a717b2fLU, 0xdfd02d8bLU, 0x207ed72aLU, 0x75df818eLU, +0xa1534431LU, 0xf4f21295LU, 0x0b5ce834LU, 0x5efdbe90LU, 0xb84d513bLU, 0xedec079fLU, 0x1242fd3eLU, 0x47e3ab9aLU, +0x3fe7925dLU, 0x6a46c4f9LU, 0x95e83e58LU, 0xc04968fcLU, 0x26f98757LU, 0x7358d1f3LU, 0x8cf62b52LU, 0xd9577df6LU, +0x0ddbb849LU, 0x587aeeedLU, 0xa7d4144cLU, 0xf27542e8LU, 0x14c5ad43LU, 0x4164fbe7LU, 0xbeca0146LU, 0xeb6b57e2LU, +0x5b9fc675LU, 0x0e3e90d1LU, 0xf1906a70LU, 0xa4313cd4LU, 0x4281d37fLU, 0x172085dbLU, 0xe88e7f7aLU, 0xbd2f29deLU, +0x69a3ec61LU, 0x3c02bac5LU, 0xc3ac4064LU, 0x960d16c0LU, 0x70bdf96bLU, 0x251cafcfLU, 0xdab2556eLU, 0x8f1303caLU, +0x2aba27adLU, 0x7f1b7109LU, 0x80b58ba8LU, 0xd514dd0cLU, 0x33a432a7LU, 0x66056403LU, 0x99ab9ea2LU, 0xcc0ac806LU, +0x18860db9LU, 0x4d275b1dLU, 0xb289a1bcLU, 0xe728f718LU, 0x019818b3LU, 0x54394e17LU, 0xab97b4b6LU, 0xfe36e212LU, +0x4ec27385LU, 0x1b632521LU, 0xe4cddf80LU, 0xb16c8924LU, 0x57dc668fLU, 0x027d302bLU, 0xfdd3ca8aLU, 0xa8729c2eLU, +0x7cfe5991LU, 0x295f0f35LU, 0xd6f1f594LU, 0x8350a330LU, 0x65e04c9bLU, 0x30411a3fLU, 0xcfefe09eLU, 0x9a4eb63aLU, +0xe24a8ffdLU, 0xb7ebd959LU, 0x484523f8LU, 0x1de4755cLU, 0xfb549af7LU, 0xaef5cc53LU, 0x515b36f2LU, 0x04fa6056LU, +0xd076a5e9LU, 0x85d7f34dLU, 0x7a7909ecLU, 0x2fd85f48LU, 0xc968b0e3LU, 0x9cc9e647LU, 0x63671ce6LU, 0x36c64a42LU, +0x8632dbd5LU, 0xd3938d71LU, 0x2c3d77d0LU, 0x799c2174LU, 0x9f2ccedfLU, 0xca8d987bLU, 0x352362daLU, 0x6082347eLU, +0xb40ef1c1LU, 0xe1afa765LU, 0x1e015dc4LU, 0x4ba00b60LU, 0xad10e4cbLU, 0xf8b1b26fLU, 0x071f48ceLU, 0x52be1e6aLU }; + +static const ulong32 rs_tab2[256] = { +0x00000000LU, 0x87fc8255LU, 0x43b549aaLU, 0xc449cbffLU, 0x86279219LU, 0x01db104cLU, 0xc592dbb3LU, 0x426e59e6LU, +0x414e6932LU, 0xc6b2eb67LU, 0x02fb2098LU, 0x8507a2cdLU, 0xc769fb2bLU, 0x4095797eLU, 0x84dcb281LU, 0x032030d4LU, +0x829cd264LU, 0x05605031LU, 0xc1299bceLU, 0x46d5199bLU, 0x04bb407dLU, 0x8347c228LU, 0x470e09d7LU, 0xc0f28b82LU, +0xc3d2bb56LU, 0x442e3903LU, 0x8067f2fcLU, 0x079b70a9LU, 0x45f5294fLU, 0xc209ab1aLU, 0x064060e5LU, 0x81bce2b0LU, +0x4975e9c8LU, 0xce896b9dLU, 0x0ac0a062LU, 0x8d3c2237LU, 0xcf527bd1LU, 0x48aef984LU, 0x8ce7327bLU, 0x0b1bb02eLU, +0x083b80faLU, 0x8fc702afLU, 0x4b8ec950LU, 0xcc724b05LU, 0x8e1c12e3LU, 0x09e090b6LU, 0xcda95b49LU, 0x4a55d91cLU, +0xcbe93bacLU, 0x4c15b9f9LU, 0x885c7206LU, 0x0fa0f053LU, 0x4dcea9b5LU, 0xca322be0LU, 0x0e7be01fLU, 0x8987624aLU, +0x8aa7529eLU, 0x0d5bd0cbLU, 0xc9121b34LU, 0x4eee9961LU, 0x0c80c087LU, 0x8b7c42d2LU, 0x4f35892dLU, 0xc8c90b78LU, +0x92ea9fddLU, 0x15161d88LU, 0xd15fd677LU, 0x56a35422LU, 0x14cd0dc4LU, 0x93318f91LU, 0x5778446eLU, 0xd084c63bLU, +0xd3a4f6efLU, 0x545874baLU, 0x9011bf45LU, 0x17ed3d10LU, 0x558364f6LU, 0xd27fe6a3LU, 0x16362d5cLU, 0x91caaf09LU, +0x10764db9LU, 0x978acfecLU, 0x53c30413LU, 0xd43f8646LU, 0x9651dfa0LU, 0x11ad5df5LU, 0xd5e4960aLU, 0x5218145fLU, +0x5138248bLU, 0xd6c4a6deLU, 0x128d6d21LU, 0x9571ef74LU, 0xd71fb692LU, 0x50e334c7LU, 0x94aaff38LU, 0x13567d6dLU, +0xdb9f7615LU, 0x5c63f440LU, 0x982a3fbfLU, 0x1fd6bdeaLU, 0x5db8e40cLU, 0xda446659LU, 0x1e0dada6LU, 0x99f12ff3LU, +0x9ad11f27LU, 0x1d2d9d72LU, 0xd964568dLU, 0x5e98d4d8LU, 0x1cf68d3eLU, 0x9b0a0f6bLU, 0x5f43c494LU, 0xd8bf46c1LU, +0x5903a471LU, 0xdeff2624LU, 0x1ab6eddbLU, 0x9d4a6f8eLU, 0xdf243668LU, 0x58d8b43dLU, 0x9c917fc2LU, 0x1b6dfd97LU, +0x184dcd43LU, 0x9fb14f16LU, 0x5bf884e9LU, 0xdc0406bcLU, 0x9e6a5f5aLU, 0x1996dd0fLU, 0xdddf16f0LU, 0x5a2394a5LU, +0x699973f7LU, 0xee65f1a2LU, 0x2a2c3a5dLU, 0xadd0b808LU, 0xefbee1eeLU, 0x684263bbLU, 0xac0ba844LU, 0x2bf72a11LU, +0x28d71ac5LU, 0xaf2b9890LU, 0x6b62536fLU, 0xec9ed13aLU, 0xaef088dcLU, 0x290c0a89LU, 0xed45c176LU, 0x6ab94323LU, +0xeb05a193LU, 0x6cf923c6LU, 0xa8b0e839LU, 0x2f4c6a6cLU, 0x6d22338aLU, 0xeadeb1dfLU, 0x2e977a20LU, 0xa96bf875LU, +0xaa4bc8a1LU, 0x2db74af4LU, 0xe9fe810bLU, 0x6e02035eLU, 0x2c6c5ab8LU, 0xab90d8edLU, 0x6fd91312LU, 0xe8259147LU, +0x20ec9a3fLU, 0xa710186aLU, 0x6359d395LU, 0xe4a551c0LU, 0xa6cb0826LU, 0x21378a73LU, 0xe57e418cLU, 0x6282c3d9LU, +0x61a2f30dLU, 0xe65e7158LU, 0x2217baa7LU, 0xa5eb38f2LU, 0xe7856114LU, 0x6079e341LU, 0xa43028beLU, 0x23ccaaebLU, +0xa270485bLU, 0x258cca0eLU, 0xe1c501f1LU, 0x663983a4LU, 0x2457da42LU, 0xa3ab5817LU, 0x67e293e8LU, 0xe01e11bdLU, +0xe33e2169LU, 0x64c2a33cLU, 0xa08b68c3LU, 0x2777ea96LU, 0x6519b370LU, 0xe2e53125LU, 0x26acfadaLU, 0xa150788fLU, +0xfb73ec2aLU, 0x7c8f6e7fLU, 0xb8c6a580LU, 0x3f3a27d5LU, 0x7d547e33LU, 0xfaa8fc66LU, 0x3ee13799LU, 0xb91db5ccLU, +0xba3d8518LU, 0x3dc1074dLU, 0xf988ccb2LU, 0x7e744ee7LU, 0x3c1a1701LU, 0xbbe69554LU, 0x7faf5eabLU, 0xf853dcfeLU, +0x79ef3e4eLU, 0xfe13bc1bLU, 0x3a5a77e4LU, 0xbda6f5b1LU, 0xffc8ac57LU, 0x78342e02LU, 0xbc7de5fdLU, 0x3b8167a8LU, +0x38a1577cLU, 0xbf5dd529LU, 0x7b141ed6LU, 0xfce89c83LU, 0xbe86c565LU, 0x397a4730LU, 0xfd338ccfLU, 0x7acf0e9aLU, +0xb20605e2LU, 0x35fa87b7LU, 0xf1b34c48LU, 0x764fce1dLU, 0x342197fbLU, 0xb3dd15aeLU, 0x7794de51LU, 0xf0685c04LU, +0xf3486cd0LU, 0x74b4ee85LU, 0xb0fd257aLU, 0x3701a72fLU, 0x756ffec9LU, 0xf2937c9cLU, 0x36dab763LU, 0xb1263536LU, +0x309ad786LU, 0xb76655d3LU, 0x732f9e2cLU, 0xf4d31c79LU, 0xb6bd459fLU, 0x3141c7caLU, 0xf5080c35LU, 0x72f48e60LU, +0x71d4beb4LU, 0xf6283ce1LU, 0x3261f71eLU, 0xb59d754bLU, 0xf7f32cadLU, 0x700faef8LU, 0xb4466507LU, 0x33bae752LU }; + +static const ulong32 rs_tab3[256] = { +0x00000000LU, 0x5ac1f387LU, 0xb4cfab43LU, 0xee0e58c4LU, 0x25d31b86LU, 0x7f12e801LU, 0x911cb0c5LU, 0xcbdd4342LU, +0x4aeb3641LU, 0x102ac5c6LU, 0xfe249d02LU, 0xa4e56e85LU, 0x6f382dc7LU, 0x35f9de40LU, 0xdbf78684LU, 0x81367503LU, +0x949b6c82LU, 0xce5a9f05LU, 0x2054c7c1LU, 0x7a953446LU, 0xb1487704LU, 0xeb898483LU, 0x0587dc47LU, 0x5f462fc0LU, +0xde705ac3LU, 0x84b1a944LU, 0x6abff180LU, 0x307e0207LU, 0xfba34145LU, 0xa162b2c2LU, 0x4f6cea06LU, 0x15ad1981LU, +0x657bd849LU, 0x3fba2bceLU, 0xd1b4730aLU, 0x8b75808dLU, 0x40a8c3cfLU, 0x1a693048LU, 0xf467688cLU, 0xaea69b0bLU, +0x2f90ee08LU, 0x75511d8fLU, 0x9b5f454bLU, 0xc19eb6ccLU, 0x0a43f58eLU, 0x50820609LU, 0xbe8c5ecdLU, 0xe44dad4aLU, +0xf1e0b4cbLU, 0xab21474cLU, 0x452f1f88LU, 0x1feeec0fLU, 0xd433af4dLU, 0x8ef25ccaLU, 0x60fc040eLU, 0x3a3df789LU, +0xbb0b828aLU, 0xe1ca710dLU, 0x0fc429c9LU, 0x5505da4eLU, 0x9ed8990cLU, 0xc4196a8bLU, 0x2a17324fLU, 0x70d6c1c8LU, +0xcaf6fd92LU, 0x90370e15LU, 0x7e3956d1LU, 0x24f8a556LU, 0xef25e614LU, 0xb5e41593LU, 0x5bea4d57LU, 0x012bbed0LU, +0x801dcbd3LU, 0xdadc3854LU, 0x34d26090LU, 0x6e139317LU, 0xa5ced055LU, 0xff0f23d2LU, 0x11017b16LU, 0x4bc08891LU, +0x5e6d9110LU, 0x04ac6297LU, 0xeaa23a53LU, 0xb063c9d4LU, 0x7bbe8a96LU, 0x217f7911LU, 0xcf7121d5LU, 0x95b0d252LU, +0x1486a751LU, 0x4e4754d6LU, 0xa0490c12LU, 0xfa88ff95LU, 0x3155bcd7LU, 0x6b944f50LU, 0x859a1794LU, 0xdf5be413LU, +0xaf8d25dbLU, 0xf54cd65cLU, 0x1b428e98LU, 0x41837d1fLU, 0x8a5e3e5dLU, 0xd09fcddaLU, 0x3e91951eLU, 0x64506699LU, +0xe566139aLU, 0xbfa7e01dLU, 0x51a9b8d9LU, 0x0b684b5eLU, 0xc0b5081cLU, 0x9a74fb9bLU, 0x747aa35fLU, 0x2ebb50d8LU, +0x3b164959LU, 0x61d7badeLU, 0x8fd9e21aLU, 0xd518119dLU, 0x1ec552dfLU, 0x4404a158LU, 0xaa0af99cLU, 0xf0cb0a1bLU, +0x71fd7f18LU, 0x2b3c8c9fLU, 0xc532d45bLU, 0x9ff327dcLU, 0x542e649eLU, 0x0eef9719LU, 0xe0e1cfddLU, 0xba203c5aLU, +0xd9a1b769LU, 0x836044eeLU, 0x6d6e1c2aLU, 0x37afefadLU, 0xfc72acefLU, 0xa6b35f68LU, 0x48bd07acLU, 0x127cf42bLU, +0x934a8128LU, 0xc98b72afLU, 0x27852a6bLU, 0x7d44d9ecLU, 0xb6999aaeLU, 0xec586929LU, 0x025631edLU, 0x5897c26aLU, +0x4d3adbebLU, 0x17fb286cLU, 0xf9f570a8LU, 0xa334832fLU, 0x68e9c06dLU, 0x322833eaLU, 0xdc266b2eLU, 0x86e798a9LU, +0x07d1edaaLU, 0x5d101e2dLU, 0xb31e46e9LU, 0xe9dfb56eLU, 0x2202f62cLU, 0x78c305abLU, 0x96cd5d6fLU, 0xcc0caee8LU, +0xbcda6f20LU, 0xe61b9ca7LU, 0x0815c463LU, 0x52d437e4LU, 0x990974a6LU, 0xc3c88721LU, 0x2dc6dfe5LU, 0x77072c62LU, +0xf6315961LU, 0xacf0aae6LU, 0x42fef222LU, 0x183f01a5LU, 0xd3e242e7LU, 0x8923b160LU, 0x672de9a4LU, 0x3dec1a23LU, +0x284103a2LU, 0x7280f025LU, 0x9c8ea8e1LU, 0xc64f5b66LU, 0x0d921824LU, 0x5753eba3LU, 0xb95db367LU, 0xe39c40e0LU, +0x62aa35e3LU, 0x386bc664LU, 0xd6659ea0LU, 0x8ca46d27LU, 0x47792e65LU, 0x1db8dde2LU, 0xf3b68526LU, 0xa97776a1LU, +0x13574afbLU, 0x4996b97cLU, 0xa798e1b8LU, 0xfd59123fLU, 0x3684517dLU, 0x6c45a2faLU, 0x824bfa3eLU, 0xd88a09b9LU, +0x59bc7cbaLU, 0x037d8f3dLU, 0xed73d7f9LU, 0xb7b2247eLU, 0x7c6f673cLU, 0x26ae94bbLU, 0xc8a0cc7fLU, 0x92613ff8LU, +0x87cc2679LU, 0xdd0dd5feLU, 0x33038d3aLU, 0x69c27ebdLU, 0xa21f3dffLU, 0xf8dece78LU, 0x16d096bcLU, 0x4c11653bLU, +0xcd271038LU, 0x97e6e3bfLU, 0x79e8bb7bLU, 0x232948fcLU, 0xe8f40bbeLU, 0xb235f839LU, 0x5c3ba0fdLU, 0x06fa537aLU, +0x762c92b2LU, 0x2ced6135LU, 0xc2e339f1LU, 0x9822ca76LU, 0x53ff8934LU, 0x093e7ab3LU, 0xe7302277LU, 0xbdf1d1f0LU, +0x3cc7a4f3LU, 0x66065774LU, 0x88080fb0LU, 0xd2c9fc37LU, 0x1914bf75LU, 0x43d54cf2LU, 0xaddb1436LU, 0xf71ae7b1LU, +0xe2b7fe30LU, 0xb8760db7LU, 0x56785573LU, 0x0cb9a6f4LU, 0xc764e5b6LU, 0x9da51631LU, 0x73ab4ef5LU, 0x296abd72LU, +0xa85cc871LU, 0xf29d3bf6LU, 0x1c936332LU, 0x465290b5LU, 0x8d8fd3f7LU, 0xd74e2070LU, 0x394078b4LU, 0x63818b33LU }; + +static const ulong32 rs_tab4[256] = { +0x00000000LU, 0x58471e5aLU, 0xb08e3cb4LU, 0xe8c922eeLU, 0x2d517825LU, 0x7516667fLU, 0x9ddf4491LU, 0xc5985acbLU, +0x5aa2f04aLU, 0x02e5ee10LU, 0xea2cccfeLU, 0xb26bd2a4LU, 0x77f3886fLU, 0x2fb49635LU, 0xc77db4dbLU, 0x9f3aaa81LU, +0xb409ad94LU, 0xec4eb3ceLU, 0x04879120LU, 0x5cc08f7aLU, 0x9958d5b1LU, 0xc11fcbebLU, 0x29d6e905LU, 0x7191f75fLU, +0xeeab5ddeLU, 0xb6ec4384LU, 0x5e25616aLU, 0x06627f30LU, 0xc3fa25fbLU, 0x9bbd3ba1LU, 0x7374194fLU, 0x2b330715LU, +0x25121765LU, 0x7d55093fLU, 0x959c2bd1LU, 0xcddb358bLU, 0x08436f40LU, 0x5004711aLU, 0xb8cd53f4LU, 0xe08a4daeLU, +0x7fb0e72fLU, 0x27f7f975LU, 0xcf3edb9bLU, 0x9779c5c1LU, 0x52e19f0aLU, 0x0aa68150LU, 0xe26fa3beLU, 0xba28bde4LU, +0x911bbaf1LU, 0xc95ca4abLU, 0x21958645LU, 0x79d2981fLU, 0xbc4ac2d4LU, 0xe40ddc8eLU, 0x0cc4fe60LU, 0x5483e03aLU, +0xcbb94abbLU, 0x93fe54e1LU, 0x7b37760fLU, 0x23706855LU, 0xe6e8329eLU, 0xbeaf2cc4LU, 0x56660e2aLU, 0x0e211070LU, +0x4a242ecaLU, 0x12633090LU, 0xfaaa127eLU, 0xa2ed0c24LU, 0x677556efLU, 0x3f3248b5LU, 0xd7fb6a5bLU, 0x8fbc7401LU, +0x1086de80LU, 0x48c1c0daLU, 0xa008e234LU, 0xf84ffc6eLU, 0x3dd7a6a5LU, 0x6590b8ffLU, 0x8d599a11LU, 0xd51e844bLU, +0xfe2d835eLU, 0xa66a9d04LU, 0x4ea3bfeaLU, 0x16e4a1b0LU, 0xd37cfb7bLU, 0x8b3be521LU, 0x63f2c7cfLU, 0x3bb5d995LU, +0xa48f7314LU, 0xfcc86d4eLU, 0x14014fa0LU, 0x4c4651faLU, 0x89de0b31LU, 0xd199156bLU, 0x39503785LU, 0x611729dfLU, +0x6f3639afLU, 0x377127f5LU, 0xdfb8051bLU, 0x87ff1b41LU, 0x4267418aLU, 0x1a205fd0LU, 0xf2e97d3eLU, 0xaaae6364LU, +0x3594c9e5LU, 0x6dd3d7bfLU, 0x851af551LU, 0xdd5deb0bLU, 0x18c5b1c0LU, 0x4082af9aLU, 0xa84b8d74LU, 0xf00c932eLU, +0xdb3f943bLU, 0x83788a61LU, 0x6bb1a88fLU, 0x33f6b6d5LU, 0xf66eec1eLU, 0xae29f244LU, 0x46e0d0aaLU, 0x1ea7cef0LU, +0x819d6471LU, 0xd9da7a2bLU, 0x311358c5LU, 0x6954469fLU, 0xaccc1c54LU, 0xf48b020eLU, 0x1c4220e0LU, 0x44053ebaLU, +0x94485cd9LU, 0xcc0f4283LU, 0x24c6606dLU, 0x7c817e37LU, 0xb91924fcLU, 0xe15e3aa6LU, 0x09971848LU, 0x51d00612LU, +0xceeaac93LU, 0x96adb2c9LU, 0x7e649027LU, 0x26238e7dLU, 0xe3bbd4b6LU, 0xbbfccaecLU, 0x5335e802LU, 0x0b72f658LU, +0x2041f14dLU, 0x7806ef17LU, 0x90cfcdf9LU, 0xc888d3a3LU, 0x0d108968LU, 0x55579732LU, 0xbd9eb5dcLU, 0xe5d9ab86LU, +0x7ae30107LU, 0x22a41f5dLU, 0xca6d3db3LU, 0x922a23e9LU, 0x57b27922LU, 0x0ff56778LU, 0xe73c4596LU, 0xbf7b5bccLU, +0xb15a4bbcLU, 0xe91d55e6LU, 0x01d47708LU, 0x59936952LU, 0x9c0b3399LU, 0xc44c2dc3LU, 0x2c850f2dLU, 0x74c21177LU, +0xebf8bbf6LU, 0xb3bfa5acLU, 0x5b768742LU, 0x03319918LU, 0xc6a9c3d3LU, 0x9eeedd89LU, 0x7627ff67LU, 0x2e60e13dLU, +0x0553e628LU, 0x5d14f872LU, 0xb5ddda9cLU, 0xed9ac4c6LU, 0x28029e0dLU, 0x70458057LU, 0x988ca2b9LU, 0xc0cbbce3LU, +0x5ff11662LU, 0x07b60838LU, 0xef7f2ad6LU, 0xb738348cLU, 0x72a06e47LU, 0x2ae7701dLU, 0xc22e52f3LU, 0x9a694ca9LU, +0xde6c7213LU, 0x862b6c49LU, 0x6ee24ea7LU, 0x36a550fdLU, 0xf33d0a36LU, 0xab7a146cLU, 0x43b33682LU, 0x1bf428d8LU, +0x84ce8259LU, 0xdc899c03LU, 0x3440beedLU, 0x6c07a0b7LU, 0xa99ffa7cLU, 0xf1d8e426LU, 0x1911c6c8LU, 0x4156d892LU, +0x6a65df87LU, 0x3222c1ddLU, 0xdaebe333LU, 0x82acfd69LU, 0x4734a7a2LU, 0x1f73b9f8LU, 0xf7ba9b16LU, 0xaffd854cLU, +0x30c72fcdLU, 0x68803197LU, 0x80491379LU, 0xd80e0d23LU, 0x1d9657e8LU, 0x45d149b2LU, 0xad186b5cLU, 0xf55f7506LU, +0xfb7e6576LU, 0xa3397b2cLU, 0x4bf059c2LU, 0x13b74798LU, 0xd62f1d53LU, 0x8e680309LU, 0x66a121e7LU, 0x3ee63fbdLU, +0xa1dc953cLU, 0xf99b8b66LU, 0x1152a988LU, 0x4915b7d2LU, 0x8c8ded19LU, 0xd4caf343LU, 0x3c03d1adLU, 0x6444cff7LU, +0x4f77c8e2LU, 0x1730d6b8LU, 0xfff9f456LU, 0xa7beea0cLU, 0x6226b0c7LU, 0x3a61ae9dLU, 0xd2a88c73LU, 0x8aef9229LU, +0x15d538a8LU, 0x4d9226f2LU, 0xa55b041cLU, 0xfd1c1a46LU, 0x3884408dLU, 0x60c35ed7LU, 0x880a7c39LU, 0xd04d6263LU }; + +static const ulong32 rs_tab5[256] = { +0x00000000LU, 0xdbaec658LU, 0xfb11c1b0LU, 0x20bf07e8LU, 0xbb22cf2dLU, 0x608c0975LU, 0x40330e9dLU, 0x9b9dc8c5LU, +0x3b44d35aLU, 0xe0ea1502LU, 0xc05512eaLU, 0x1bfbd4b2LU, 0x80661c77LU, 0x5bc8da2fLU, 0x7b77ddc7LU, 0xa0d91b9fLU, +0x7688ebb4LU, 0xad262decLU, 0x8d992a04LU, 0x5637ec5cLU, 0xcdaa2499LU, 0x1604e2c1LU, 0x36bbe529LU, 0xed152371LU, +0x4dcc38eeLU, 0x9662feb6LU, 0xb6ddf95eLU, 0x6d733f06LU, 0xf6eef7c3LU, 0x2d40319bLU, 0x0dff3673LU, 0xd651f02bLU, +0xec5d9b25LU, 0x37f35d7dLU, 0x174c5a95LU, 0xcce29ccdLU, 0x577f5408LU, 0x8cd19250LU, 0xac6e95b8LU, 0x77c053e0LU, +0xd719487fLU, 0x0cb78e27LU, 0x2c0889cfLU, 0xf7a64f97LU, 0x6c3b8752LU, 0xb795410aLU, 0x972a46e2LU, 0x4c8480baLU, +0x9ad57091LU, 0x417bb6c9LU, 0x61c4b121LU, 0xba6a7779LU, 0x21f7bfbcLU, 0xfa5979e4LU, 0xdae67e0cLU, 0x0148b854LU, +0xa191a3cbLU, 0x7a3f6593LU, 0x5a80627bLU, 0x812ea423LU, 0x1ab36ce6LU, 0xc11daabeLU, 0xe1a2ad56LU, 0x3a0c6b0eLU, +0x95ba7b4aLU, 0x4e14bd12LU, 0x6eabbafaLU, 0xb5057ca2LU, 0x2e98b467LU, 0xf536723fLU, 0xd58975d7LU, 0x0e27b38fLU, +0xaefea810LU, 0x75506e48LU, 0x55ef69a0LU, 0x8e41aff8LU, 0x15dc673dLU, 0xce72a165LU, 0xeecda68dLU, 0x356360d5LU, +0xe33290feLU, 0x389c56a6LU, 0x1823514eLU, 0xc38d9716LU, 0x58105fd3LU, 0x83be998bLU, 0xa3019e63LU, 0x78af583bLU, +0xd87643a4LU, 0x03d885fcLU, 0x23678214LU, 0xf8c9444cLU, 0x63548c89LU, 0xb8fa4ad1LU, 0x98454d39LU, 0x43eb8b61LU, +0x79e7e06fLU, 0xa2492637LU, 0x82f621dfLU, 0x5958e787LU, 0xc2c52f42LU, 0x196be91aLU, 0x39d4eef2LU, 0xe27a28aaLU, +0x42a33335LU, 0x990df56dLU, 0xb9b2f285LU, 0x621c34ddLU, 0xf981fc18LU, 0x222f3a40LU, 0x02903da8LU, 0xd93efbf0LU, +0x0f6f0bdbLU, 0xd4c1cd83LU, 0xf47eca6bLU, 0x2fd00c33LU, 0xb44dc4f6LU, 0x6fe302aeLU, 0x4f5c0546LU, 0x94f2c31eLU, +0x342bd881LU, 0xef851ed9LU, 0xcf3a1931LU, 0x1494df69LU, 0x8f0917acLU, 0x54a7d1f4LU, 0x7418d61cLU, 0xafb61044LU, +0x6739f694LU, 0xbc9730ccLU, 0x9c283724LU, 0x4786f17cLU, 0xdc1b39b9LU, 0x07b5ffe1LU, 0x270af809LU, 0xfca43e51LU, +0x5c7d25ceLU, 0x87d3e396LU, 0xa76ce47eLU, 0x7cc22226LU, 0xe75feae3LU, 0x3cf12cbbLU, 0x1c4e2b53LU, 0xc7e0ed0bLU, +0x11b11d20LU, 0xca1fdb78LU, 0xeaa0dc90LU, 0x310e1ac8LU, 0xaa93d20dLU, 0x713d1455LU, 0x518213bdLU, 0x8a2cd5e5LU, +0x2af5ce7aLU, 0xf15b0822LU, 0xd1e40fcaLU, 0x0a4ac992LU, 0x91d70157LU, 0x4a79c70fLU, 0x6ac6c0e7LU, 0xb16806bfLU, +0x8b646db1LU, 0x50caabe9LU, 0x7075ac01LU, 0xabdb6a59LU, 0x3046a29cLU, 0xebe864c4LU, 0xcb57632cLU, 0x10f9a574LU, +0xb020beebLU, 0x6b8e78b3LU, 0x4b317f5bLU, 0x909fb903LU, 0x0b0271c6LU, 0xd0acb79eLU, 0xf013b076LU, 0x2bbd762eLU, +0xfdec8605LU, 0x2642405dLU, 0x06fd47b5LU, 0xdd5381edLU, 0x46ce4928LU, 0x9d608f70LU, 0xbddf8898LU, 0x66714ec0LU, +0xc6a8555fLU, 0x1d069307LU, 0x3db994efLU, 0xe61752b7LU, 0x7d8a9a72LU, 0xa6245c2aLU, 0x869b5bc2LU, 0x5d359d9aLU, +0xf2838ddeLU, 0x292d4b86LU, 0x09924c6eLU, 0xd23c8a36LU, 0x49a142f3LU, 0x920f84abLU, 0xb2b08343LU, 0x691e451bLU, +0xc9c75e84LU, 0x126998dcLU, 0x32d69f34LU, 0xe978596cLU, 0x72e591a9LU, 0xa94b57f1LU, 0x89f45019LU, 0x525a9641LU, +0x840b666aLU, 0x5fa5a032LU, 0x7f1aa7daLU, 0xa4b46182LU, 0x3f29a947LU, 0xe4876f1fLU, 0xc43868f7LU, 0x1f96aeafLU, +0xbf4fb530LU, 0x64e17368LU, 0x445e7480LU, 0x9ff0b2d8LU, 0x046d7a1dLU, 0xdfc3bc45LU, 0xff7cbbadLU, 0x24d27df5LU, +0x1ede16fbLU, 0xc570d0a3LU, 0xe5cfd74bLU, 0x3e611113LU, 0xa5fcd9d6LU, 0x7e521f8eLU, 0x5eed1866LU, 0x8543de3eLU, +0x259ac5a1LU, 0xfe3403f9LU, 0xde8b0411LU, 0x0525c249LU, 0x9eb80a8cLU, 0x4516ccd4LU, 0x65a9cb3cLU, 0xbe070d64LU, +0x6856fd4fLU, 0xb3f83b17LU, 0x93473cffLU, 0x48e9faa7LU, 0xd3743262LU, 0x08daf43aLU, 0x2865f3d2LU, 0xf3cb358aLU, +0x53122e15LU, 0x88bce84dLU, 0xa803efa5LU, 0x73ad29fdLU, 0xe830e138LU, 0x339e2760LU, 0x13212088LU, 0xc88fe6d0LU }; + +static const ulong32 rs_tab6[256] = { +0x00000000LU, 0x9e3d68dbLU, 0x717ad0fbLU, 0xef47b820LU, 0xe2f4edbbLU, 0x7cc98560LU, 0x938e3d40LU, 0x0db3559bLU, +0x89a5973bLU, 0x1798ffe0LU, 0xf8df47c0LU, 0x66e22f1bLU, 0x6b517a80LU, 0xf56c125bLU, 0x1a2baa7bLU, 0x8416c2a0LU, +0x5f076376LU, 0xc13a0badLU, 0x2e7db38dLU, 0xb040db56LU, 0xbdf38ecdLU, 0x23cee616LU, 0xcc895e36LU, 0x52b436edLU, +0xd6a2f44dLU, 0x489f9c96LU, 0xa7d824b6LU, 0x39e54c6dLU, 0x345619f6LU, 0xaa6b712dLU, 0x452cc90dLU, 0xdb11a1d6LU, +0xbe0ec6ecLU, 0x2033ae37LU, 0xcf741617LU, 0x51497eccLU, 0x5cfa2b57LU, 0xc2c7438cLU, 0x2d80fbacLU, 0xb3bd9377LU, +0x37ab51d7LU, 0xa996390cLU, 0x46d1812cLU, 0xd8ece9f7LU, 0xd55fbc6cLU, 0x4b62d4b7LU, 0xa4256c97LU, 0x3a18044cLU, +0xe109a59aLU, 0x7f34cd41LU, 0x90737561LU, 0x0e4e1dbaLU, 0x03fd4821LU, 0x9dc020faLU, 0x728798daLU, 0xecbaf001LU, +0x68ac32a1LU, 0xf6915a7aLU, 0x19d6e25aLU, 0x87eb8a81LU, 0x8a58df1aLU, 0x1465b7c1LU, 0xfb220fe1LU, 0x651f673aLU, +0x311cc195LU, 0xaf21a94eLU, 0x4066116eLU, 0xde5b79b5LU, 0xd3e82c2eLU, 0x4dd544f5LU, 0xa292fcd5LU, 0x3caf940eLU, +0xb8b956aeLU, 0x26843e75LU, 0xc9c38655LU, 0x57feee8eLU, 0x5a4dbb15LU, 0xc470d3ceLU, 0x2b376beeLU, 0xb50a0335LU, +0x6e1ba2e3LU, 0xf026ca38LU, 0x1f617218LU, 0x815c1ac3LU, 0x8cef4f58LU, 0x12d22783LU, 0xfd959fa3LU, 0x63a8f778LU, +0xe7be35d8LU, 0x79835d03LU, 0x96c4e523LU, 0x08f98df8LU, 0x054ad863LU, 0x9b77b0b8LU, 0x74300898LU, 0xea0d6043LU, +0x8f120779LU, 0x112f6fa2LU, 0xfe68d782LU, 0x6055bf59LU, 0x6de6eac2LU, 0xf3db8219LU, 0x1c9c3a39LU, 0x82a152e2LU, +0x06b79042LU, 0x988af899LU, 0x77cd40b9LU, 0xe9f02862LU, 0xe4437df9LU, 0x7a7e1522LU, 0x9539ad02LU, 0x0b04c5d9LU, +0xd015640fLU, 0x4e280cd4LU, 0xa16fb4f4LU, 0x3f52dc2fLU, 0x32e189b4LU, 0xacdce16fLU, 0x439b594fLU, 0xdda63194LU, +0x59b0f334LU, 0xc78d9befLU, 0x28ca23cfLU, 0xb6f74b14LU, 0xbb441e8fLU, 0x25797654LU, 0xca3ece74LU, 0x5403a6afLU, +0x6238cf67LU, 0xfc05a7bcLU, 0x13421f9cLU, 0x8d7f7747LU, 0x80cc22dcLU, 0x1ef14a07LU, 0xf1b6f227LU, 0x6f8b9afcLU, +0xeb9d585cLU, 0x75a03087LU, 0x9ae788a7LU, 0x04dae07cLU, 0x0969b5e7LU, 0x9754dd3cLU, 0x7813651cLU, 0xe62e0dc7LU, +0x3d3fac11LU, 0xa302c4caLU, 0x4c457ceaLU, 0xd2781431LU, 0xdfcb41aaLU, 0x41f62971LU, 0xaeb19151LU, 0x308cf98aLU, +0xb49a3b2aLU, 0x2aa753f1LU, 0xc5e0ebd1LU, 0x5bdd830aLU, 0x566ed691LU, 0xc853be4aLU, 0x2714066aLU, 0xb9296eb1LU, +0xdc36098bLU, 0x420b6150LU, 0xad4cd970LU, 0x3371b1abLU, 0x3ec2e430LU, 0xa0ff8cebLU, 0x4fb834cbLU, 0xd1855c10LU, +0x55939eb0LU, 0xcbaef66bLU, 0x24e94e4bLU, 0xbad42690LU, 0xb767730bLU, 0x295a1bd0LU, 0xc61da3f0LU, 0x5820cb2bLU, +0x83316afdLU, 0x1d0c0226LU, 0xf24bba06LU, 0x6c76d2ddLU, 0x61c58746LU, 0xfff8ef9dLU, 0x10bf57bdLU, 0x8e823f66LU, +0x0a94fdc6LU, 0x94a9951dLU, 0x7bee2d3dLU, 0xe5d345e6LU, 0xe860107dLU, 0x765d78a6LU, 0x991ac086LU, 0x0727a85dLU, +0x53240ef2LU, 0xcd196629LU, 0x225ede09LU, 0xbc63b6d2LU, 0xb1d0e349LU, 0x2fed8b92LU, 0xc0aa33b2LU, 0x5e975b69LU, +0xda8199c9LU, 0x44bcf112LU, 0xabfb4932LU, 0x35c621e9LU, 0x38757472LU, 0xa6481ca9LU, 0x490fa489LU, 0xd732cc52LU, +0x0c236d84LU, 0x921e055fLU, 0x7d59bd7fLU, 0xe364d5a4LU, 0xeed7803fLU, 0x70eae8e4LU, 0x9fad50c4LU, 0x0190381fLU, +0x8586fabfLU, 0x1bbb9264LU, 0xf4fc2a44LU, 0x6ac1429fLU, 0x67721704LU, 0xf94f7fdfLU, 0x1608c7ffLU, 0x8835af24LU, +0xed2ac81eLU, 0x7317a0c5LU, 0x9c5018e5LU, 0x026d703eLU, 0x0fde25a5LU, 0x91e34d7eLU, 0x7ea4f55eLU, 0xe0999d85LU, +0x648f5f25LU, 0xfab237feLU, 0x15f58fdeLU, 0x8bc8e705LU, 0x867bb29eLU, 0x1846da45LU, 0xf7016265LU, 0x693c0abeLU, +0xb22dab68LU, 0x2c10c3b3LU, 0xc3577b93LU, 0x5d6a1348LU, 0x50d946d3LU, 0xcee42e08LU, 0x21a39628LU, 0xbf9efef3LU, +0x3b883c53LU, 0xa5b55488LU, 0x4af2eca8LU, 0xd4cf8473LU, 0xd97cd1e8LU, 0x4741b933LU, 0xa8060113LU, 0x363b69c8LU }; + +static const ulong32 rs_tab7[256] = { +0x00000000LU, 0x0319e59eLU, 0x06328771LU, 0x052b62efLU, 0x0c6443e2LU, 0x0f7da67cLU, 0x0a56c493LU, 0x094f210dLU, +0x18c88689LU, 0x1bd16317LU, 0x1efa01f8LU, 0x1de3e466LU, 0x14acc56bLU, 0x17b520f5LU, 0x129e421aLU, 0x1187a784LU, +0x30dd415fLU, 0x33c4a4c1LU, 0x36efc62eLU, 0x35f623b0LU, 0x3cb902bdLU, 0x3fa0e723LU, 0x3a8b85ccLU, 0x39926052LU, +0x2815c7d6LU, 0x2b0c2248LU, 0x2e2740a7LU, 0x2d3ea539LU, 0x24718434LU, 0x276861aaLU, 0x22430345LU, 0x215ae6dbLU, +0x60f782beLU, 0x63ee6720LU, 0x66c505cfLU, 0x65dce051LU, 0x6c93c15cLU, 0x6f8a24c2LU, 0x6aa1462dLU, 0x69b8a3b3LU, +0x783f0437LU, 0x7b26e1a9LU, 0x7e0d8346LU, 0x7d1466d8LU, 0x745b47d5LU, 0x7742a24bLU, 0x7269c0a4LU, 0x7170253aLU, +0x502ac3e1LU, 0x5333267fLU, 0x56184490LU, 0x5501a10eLU, 0x5c4e8003LU, 0x5f57659dLU, 0x5a7c0772LU, 0x5965e2ecLU, +0x48e24568LU, 0x4bfba0f6LU, 0x4ed0c219LU, 0x4dc92787LU, 0x4486068aLU, 0x479fe314LU, 0x42b481fbLU, 0x41ad6465LU, +0xc0a34931LU, 0xc3baacafLU, 0xc691ce40LU, 0xc5882bdeLU, 0xccc70ad3LU, 0xcfdeef4dLU, 0xcaf58da2LU, 0xc9ec683cLU, +0xd86bcfb8LU, 0xdb722a26LU, 0xde5948c9LU, 0xdd40ad57LU, 0xd40f8c5aLU, 0xd71669c4LU, 0xd23d0b2bLU, 0xd124eeb5LU, +0xf07e086eLU, 0xf367edf0LU, 0xf64c8f1fLU, 0xf5556a81LU, 0xfc1a4b8cLU, 0xff03ae12LU, 0xfa28ccfdLU, 0xf9312963LU, +0xe8b68ee7LU, 0xebaf6b79LU, 0xee840996LU, 0xed9dec08LU, 0xe4d2cd05LU, 0xe7cb289bLU, 0xe2e04a74LU, 0xe1f9afeaLU, +0xa054cb8fLU, 0xa34d2e11LU, 0xa6664cfeLU, 0xa57fa960LU, 0xac30886dLU, 0xaf296df3LU, 0xaa020f1cLU, 0xa91bea82LU, +0xb89c4d06LU, 0xbb85a898LU, 0xbeaeca77LU, 0xbdb72fe9LU, 0xb4f80ee4LU, 0xb7e1eb7aLU, 0xb2ca8995LU, 0xb1d36c0bLU, +0x90898ad0LU, 0x93906f4eLU, 0x96bb0da1LU, 0x95a2e83fLU, 0x9cedc932LU, 0x9ff42cacLU, 0x9adf4e43LU, 0x99c6abddLU, +0x88410c59LU, 0x8b58e9c7LU, 0x8e738b28LU, 0x8d6a6eb6LU, 0x84254fbbLU, 0x873caa25LU, 0x8217c8caLU, 0x810e2d54LU, +0xcd0b9262LU, 0xce1277fcLU, 0xcb391513LU, 0xc820f08dLU, 0xc16fd180LU, 0xc276341eLU, 0xc75d56f1LU, 0xc444b36fLU, +0xd5c314ebLU, 0xd6daf175LU, 0xd3f1939aLU, 0xd0e87604LU, 0xd9a75709LU, 0xdabeb297LU, 0xdf95d078LU, 0xdc8c35e6LU, +0xfdd6d33dLU, 0xfecf36a3LU, 0xfbe4544cLU, 0xf8fdb1d2LU, 0xf1b290dfLU, 0xf2ab7541LU, 0xf78017aeLU, 0xf499f230LU, +0xe51e55b4LU, 0xe607b02aLU, 0xe32cd2c5LU, 0xe035375bLU, 0xe97a1656LU, 0xea63f3c8LU, 0xef489127LU, 0xec5174b9LU, +0xadfc10dcLU, 0xaee5f542LU, 0xabce97adLU, 0xa8d77233LU, 0xa198533eLU, 0xa281b6a0LU, 0xa7aad44fLU, 0xa4b331d1LU, +0xb5349655LU, 0xb62d73cbLU, 0xb3061124LU, 0xb01ff4baLU, 0xb950d5b7LU, 0xba493029LU, 0xbf6252c6LU, 0xbc7bb758LU, +0x9d215183LU, 0x9e38b41dLU, 0x9b13d6f2LU, 0x980a336cLU, 0x91451261LU, 0x925cf7ffLU, 0x97779510LU, 0x946e708eLU, +0x85e9d70aLU, 0x86f03294LU, 0x83db507bLU, 0x80c2b5e5LU, 0x898d94e8LU, 0x8a947176LU, 0x8fbf1399LU, 0x8ca6f607LU, +0x0da8db53LU, 0x0eb13ecdLU, 0x0b9a5c22LU, 0x0883b9bcLU, 0x01cc98b1LU, 0x02d57d2fLU, 0x07fe1fc0LU, 0x04e7fa5eLU, +0x15605ddaLU, 0x1679b844LU, 0x1352daabLU, 0x104b3f35LU, 0x19041e38LU, 0x1a1dfba6LU, 0x1f369949LU, 0x1c2f7cd7LU, +0x3d759a0cLU, 0x3e6c7f92LU, 0x3b471d7dLU, 0x385ef8e3LU, 0x3111d9eeLU, 0x32083c70LU, 0x37235e9fLU, 0x343abb01LU, +0x25bd1c85LU, 0x26a4f91bLU, 0x238f9bf4LU, 0x20967e6aLU, 0x29d95f67LU, 0x2ac0baf9LU, 0x2febd816LU, 0x2cf23d88LU, +0x6d5f59edLU, 0x6e46bc73LU, 0x6b6dde9cLU, 0x68743b02LU, 0x613b1a0fLU, 0x6222ff91LU, 0x67099d7eLU, 0x641078e0LU, +0x7597df64LU, 0x768e3afaLU, 0x73a55815LU, 0x70bcbd8bLU, 0x79f39c86LU, 0x7aea7918LU, 0x7fc11bf7LU, 0x7cd8fe69LU, +0x5d8218b2LU, 0x5e9bfd2cLU, 0x5bb09fc3LU, 0x58a97a5dLU, 0x51e65b50LU, 0x52ffbeceLU, 0x57d4dc21LU, 0x54cd39bfLU, +0x454a9e3bLU, 0x46537ba5LU, 0x4378194aLU, 0x4061fcd4LU, 0x492eddd9LU, 0x4a373847LU, 0x4f1c5aa8LU, 0x4c05bf36LU }; + +#endif /* TWOFISH_ALL_TABLES */ + +#endif diff --git a/xtea.c b/xtea.c index c0e4715..6c528d3 100644 --- a/xtea.c +++ b/xtea.c @@ -119,7 +119,7 @@ int xtea_test(void) { 0x75, 0xd7, 0xc5, 0xbf, 0xcf, 0x58, 0xc9, 0x3f }; unsigned char tmp[2][8]; symmetric_key skey; - int err; + int err, y; if ((err = xtea_setup(key, 16, 0, &skey)) != CRYPT_OK) { return err; @@ -131,6 +131,12 @@ int xtea_test(void) return CRYPT_FAIL_TESTVECTOR; } + /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ + for (y = 0; y < 8; y++) tmp[0][y] = 0; + for (y = 0; y < 1000; y++) xtea_ecb_encrypt(tmp[0], tmp[0], &skey); + for (y = 0; y < 1000; y++) xtea_ecb_decrypt(tmp[0], tmp[0], &skey); + for (y = 0; y < 8; y++) if (tmp[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; + return CRYPT_OK; #endif } diff --git a/yarrow.c b/yarrow.c index be638f6..ee4d016 100644 --- a/yarrow.c +++ b/yarrow.c @@ -20,24 +20,26 @@ int yarrow_start(prng_state *prng) /* these are the default hash/cipher combo used */ #ifdef RIJNDAEL prng->yarrow.cipher = register_cipher(&rijndael_desc); -#elif defined(NOEKEON) - prng->yarrow.cipher = register_cipher(&noekeon_desc); #elif defined(BLOWFISH) prng->yarrow.cipher = register_cipher(&blowfish_desc); #elif defined(TWOFISH) prng->yarrow.cipher = register_cipher(&twofish_desc); -#elif defined(CAST5) - prng->yarrow.cipher = register_cipher(&cast5_desc); -#elif defined(SAFER) - prng->yarrow.cipher = register_cipher(&saferp_desc); -#elif defined(RC5) - prng->yarrow.cipher = register_cipher(&rc5_desc); #elif defined(RC6) prng->yarrow.cipher = register_cipher(&rc6_desc); -#elif defined(XTEA) - prng->yarrow.cipher = register_cipher(&xtea_desc); +#elif defined(RC5) + prng->yarrow.cipher = register_cipher(&rc5_desc); +#elif defined(SAFERP) + prng->yarrow.cipher = register_cipher(&saferp_desc); #elif defined(RC2) prng->yarrow.cipher = register_cipher(&rc2_desc); +#elif defined(NOEKEON) + prng->yarrow.cipher = register_cipher(&noekeon_desc); +#elif defined(CAST5) + prng->yarrow.cipher = register_cipher(&cast5_desc); +#elif defined(XTEA) + prng->yarrow.cipher = register_cipher(&xtea_desc); +#elif defined(SAFER) + prng->yarrow.cipher = register_cipher(&safer_sk128_desc); #elif defined(DES) prng->yarrow.cipher = register_cipher(&des3_desc); #elif @@ -51,12 +53,14 @@ int yarrow_start(prng_state *prng) prng->yarrow.hash = register_hash(&sha256_desc); #elif defined(SHA512) prng->yarrow.hash = register_hash(&sha512_desc); -#elif defined(SHA384) - prng->yarrow.hash = register_hash(&sha384_desc); -#elif defined(SHA1) - prng->yarrow.hash = register_hash(&sha1_desc); #elif defined(TIGER) prng->yarrow.hash = register_hash(&tiger_desc); +#elif defined(SHA1) + prng->yarrow.hash = register_hash(&sha1_desc); +#elif defined(RIPEMD160) + prng->yarrow.hash = register_hash(&rmd160_desc); +#elif defined(RIPEMD128) + prng->yarrow.hash = register_hash(&rmd128_desc); #elif defined(MD5) prng->yarrow.hash = register_hash(&md5_desc); #elif defined(MD4)