diff options
Diffstat (limited to 'src')
66 files changed, 35 insertions, 6235 deletions
diff --git a/src/build-data/oids.txt b/src/build-data/oids.txt index 03ce80a84..ac87ea4ed 100644 --- a/src/build-data/oids.txt +++ b/src/build-data/oids.txt @@ -106,7 +106,6 @@ [hash] # Hash functions 1.2.840.113549.2.5 = MD5 -1.3.6.1.4.1.11591.12.2 = Tiger(24,3) 1.2.156.10197.1.401 = SM3 1.3.14.3.2.26 = SHA-160 1.3.36.3.2.1 = RIPEMD-160 diff --git a/src/build-data/policy/bsi.txt b/src/build-data/policy/bsi.txt index 719afc836..e969c4c9a 100644 --- a/src/build-data/policy/bsi.txt +++ b/src/build-data/policy/bsi.txt @@ -90,14 +90,11 @@ blowfish camellia cascade cast128 -cast256 des gost_28147 idea idea_sse2 -kasumi lion -misty1 noekeon noekeon_simd seed @@ -111,7 +108,6 @@ sm4 threefish_512 threefish_512_avx2 twofish -xtea # modes chacha20poly1305 @@ -143,7 +139,6 @@ ed25519 elgamal gost_3410 mce -mceies rfc6979 newhope sm2 @@ -166,7 +161,6 @@ skein #sha1 // needed for x509 sm3 streebog -tiger whirlpool keccak @@ -174,7 +168,6 @@ keccak chacha_rng # mac -cbc_mac poly1305 siphash x919_mac diff --git a/src/build-data/policy/modern.txt b/src/build-data/policy/modern.txt index ce2b3fd2a..3d3093ec9 100644 --- a/src/build-data/policy/modern.txt +++ b/src/build-data/policy/modern.txt @@ -96,19 +96,14 @@ win32_stats tls_cbc cast128 -cast256 des gost_28147 idea idea_sse2 -kasumi lion -misty1 rc4 seed -xtea -cbc_mac x919_mac # MD5 and SHA1 are broken but not prohibited. They are widely in use @@ -123,7 +118,6 @@ elgamal gost_3410 emsa_x931 -pbkdf1 prf_x942 passhash9 diff --git a/src/build-data/policy/nist.txt b/src/build-data/policy/nist.txt index e4a19b4fe..908c49db1 100644 --- a/src/build-data/policy/nist.txt +++ b/src/build-data/policy/nist.txt @@ -89,13 +89,10 @@ blowfish camellia cascade cast128 -cast256 gost_28147 idea idea_sse2 -kasumi lion -misty1 noekeon noekeon_simd seed @@ -109,7 +106,6 @@ shacal2_simd threefish_512 threefish_512_avx2 twofish -xtea # modes chacha20poly1305 @@ -141,7 +137,6 @@ eckcdsa elgamal gost_3410 mce -mceies rfc6979 newhope cecpq1 @@ -165,14 +160,12 @@ skein #sha1 // needed for x509 sm3 streebog -tiger whirlpool # rng chacha_rng # mac -cbc_mac poly1305 siphash x919_mac diff --git a/src/cli/speed.cpp b/src/cli/speed.cpp index b8454d2a7..bd0c5ac96 100644 --- a/src/cli/speed.cpp +++ b/src/cli/speed.cpp @@ -345,7 +345,6 @@ class Speed final : public Command "ARIA-256", "Blowfish", "CAST-128", - "CAST-256", "Camellia-128", "Camellia-192", "Camellia-256", @@ -353,15 +352,12 @@ class Speed final : public Command "TripleDES", "GOST-28147-89", "IDEA", - "KASUMI", - "MISTY1", "Noekeon", "SHACAL2", "SM4", "Serpent", "Threefish-512", "Twofish", - "XTEA", /* Cipher modes */ "AES-128/CBC", @@ -396,7 +392,6 @@ class Speed final : public Command "RIPEMD-160", "Skein-512", "Blake2b", - "Tiger", "Whirlpool", /* MACs */ diff --git a/src/lib/asn1/oid_maps.cpp b/src/lib/asn1/oid_maps.cpp index d385dfd84..015963c35 100644 --- a/src/lib/asn1/oid_maps.cpp +++ b/src/lib/asn1/oid_maps.cpp @@ -1,7 +1,7 @@ /* * OID maps * -* This file was automatically generated by ./src/scripts/oids.py on 2019-10-21 +* This file was automatically generated by ./src/scripts/oids.py on 2020-09-26 * * All manual edits to this file will be lost. Edit the script * then regenerate this source file. @@ -136,7 +136,6 @@ std::unordered_map<std::string, std::string> OIDS::load_oid2str_map() { "1.3.36.3.3.2.8.1.1.5", "brainpool224r1" }, { "1.3.36.3.3.2.8.1.1.7", "brainpool256r1" }, { "1.3.36.3.3.2.8.1.1.9", "brainpool320r1" }, - { "1.3.6.1.4.1.11591.12.2", "Tiger(24,3)" }, { "1.3.6.1.4.1.11591.15.1", "OpenPGP.Ed25519" }, { "1.3.6.1.4.1.11591.4.11", "Scrypt" }, { "1.3.6.1.4.1.25258.1.3", "McEliece" }, @@ -432,7 +431,6 @@ std::unordered_map<std::string, OID> OIDS::load_str2oid_map() { "Streebog-256", OID({1,2,643,7,1,1,2,2}) }, { "Streebog-512", OID({1,2,643,7,1,1,2,3}) }, { "Threefish-512/CBC", OID({1,3,6,1,4,1,25258,3,2}) }, - { "Tiger(24,3)", OID({1,3,6,1,4,1,11591,12,2}) }, { "TripleDES/CBC", OID({1,2,840,113549,3,7}) }, { "Twofish/CBC", OID({1,3,6,1,4,1,25258,3,3}) }, { "Twofish/GCM", OID({1,3,6,1,4,1,25258,3,102}) }, diff --git a/src/lib/base/scan_name.cpp b/src/lib/base/scan_name.cpp index f79866ba6..0d6917491 100644 --- a/src/lib/base/scan_name.cpp +++ b/src/lib/base/scan_name.cpp @@ -146,4 +146,9 @@ size_t SCAN_Name::arg_as_integer(size_t i, size_t def_value) const return to_u32bit(m_args[i]); } +size_t SCAN_Name::arg_as_integer(size_t i) const + { + return to_u32bit(arg(i)); + } + } diff --git a/src/lib/base/scan_name.h b/src/lib/base/scan_name.h index 069783d1b..1a4349859 100644 --- a/src/lib/base/scan_name.h +++ b/src/lib/base/scan_name.h @@ -84,6 +84,12 @@ class BOTAN_PUBLIC_API(2,0) SCAN_Name final size_t arg_as_integer(size_t i, size_t def_value) const; /** + * @param i which argument + * @return ith argument as an integer + */ + size_t arg_as_integer(size_t i) const; + + /** * @return cipher mode (if any) */ std::string cipher_mode() const diff --git a/src/lib/block/block_cipher.cpp b/src/lib/block/block_cipher.cpp index fb0564646..1883d477c 100644 --- a/src/lib/block/block_cipher.cpp +++ b/src/lib/block/block_cipher.cpp @@ -29,17 +29,12 @@ #include <botan/cast128.h> #endif -#if defined(BOTAN_HAS_CAST_256) - #include <botan/cast256.h> -#endif - #if defined(BOTAN_HAS_CASCADE) #include <botan/cascade.h> #endif #if defined(BOTAN_HAS_DES) #include <botan/des.h> - #include <botan/desx.h> #endif #if defined(BOTAN_HAS_GOST_28147_89) @@ -50,18 +45,10 @@ #include <botan/idea.h> #endif -#if defined(BOTAN_HAS_KASUMI) - #include <botan/kasumi.h> -#endif - #if defined(BOTAN_HAS_LION) #include <botan/lion.h> #endif -#if defined(BOTAN_HAS_MISTY1) - #include <botan/misty1.h> -#endif - #if defined(BOTAN_HAS_NOEKEON) #include <botan/noekeon.h> #endif @@ -90,10 +77,6 @@ #include <botan/threefish_512.h> #endif -#if defined(BOTAN_HAS_XTEA) - #include <botan/xtea.h> -#endif - #if defined(BOTAN_HAS_OPENSSL) #include <botan/internal/openssl.h> #endif @@ -229,11 +212,6 @@ BlockCipher::create(const std::string& algo, return std::unique_ptr<BlockCipher>(new DES); } - if(algo == "DESX") - { - return std::unique_ptr<BlockCipher>(new DESX); - } - if(algo == "TripleDES" || algo == "3DES" || algo == "DES-EDE") { return std::unique_ptr<BlockCipher>(new TripleDES); @@ -254,13 +232,6 @@ BlockCipher::create(const std::string& algo, } #endif -#if defined(BOTAN_HAS_CAST_256) - if(algo == "CAST-256") - { - return std::unique_ptr<BlockCipher>(new CAST_256); - } -#endif - #if defined(BOTAN_HAS_IDEA) if(algo == "IDEA") { @@ -268,20 +239,6 @@ BlockCipher::create(const std::string& algo, } #endif -#if defined(BOTAN_HAS_KASUMI) - if(algo == "KASUMI") - { - return std::unique_ptr<BlockCipher>(new KASUMI); - } -#endif - -#if defined(BOTAN_HAS_MISTY1) - if(algo == "MISTY1") - { - return std::unique_ptr<BlockCipher>(new MISTY1); - } -#endif - #if defined(BOTAN_HAS_SEED) if(algo == "SEED") { @@ -296,13 +253,6 @@ BlockCipher::create(const std::string& algo, } #endif -#if defined(BOTAN_HAS_XTEA) - if(algo == "XTEA") - { - return std::unique_ptr<BlockCipher>(new XTEA); - } -#endif - const SCAN_Name req(algo); #if defined(BOTAN_HAS_GOST_28147_89) diff --git a/src/lib/block/cast256/cast256.cpp b/src/lib/block/cast256/cast256.cpp deleted file mode 100644 index 226955f7c..000000000 --- a/src/lib/block/cast256/cast256.cpp +++ /dev/null @@ -1,232 +0,0 @@ -/* -* CAST-256 -* (C) 1999-2007 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#include <botan/cast256.h> -#include <botan/internal/cast_sboxes.h> -#include <botan/loadstor.h> -#include <botan/rotate.h> - -namespace Botan { - -namespace { - -/* -* CAST-256 Round Type 1 -*/ -void round1(uint32_t& out, uint32_t in, uint32_t MK, uint32_t RK) - { - const uint32_t T = rotl_var(MK + in, RK); - out ^= (CAST_SBOX1[get_byte(0, T)] ^ CAST_SBOX2[get_byte(1, T)]) - - CAST_SBOX3[get_byte(2, T)] + CAST_SBOX4[get_byte(3, T)]; - } - -/* -* CAST-256 Round Type 2 -*/ -void round2(uint32_t& out, uint32_t in, uint32_t MK, uint32_t RK) - { - const uint32_t T = rotl_var(MK ^ in, RK); - out ^= (CAST_SBOX1[get_byte(0, T)] - CAST_SBOX2[get_byte(1, T)] + - CAST_SBOX3[get_byte(2, T)]) ^ CAST_SBOX4[get_byte(3, T)]; - } - -/* -* CAST-256 Round Type 3 -*/ -void round3(uint32_t& out, uint32_t in, uint32_t MK, uint32_t RK) - { - const uint32_t T = rotl_var(MK - in, RK); - out ^= ((CAST_SBOX1[get_byte(0, T)] + CAST_SBOX2[get_byte(1, T)]) ^ - CAST_SBOX3[get_byte(2, T)]) - CAST_SBOX4[get_byte(3, T)]; - } - -} - -/* -* CAST-256 Encryption -*/ -void CAST_256::encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const - { - verify_key_set(m_RK.empty() == false); - - for(size_t i = 0; i != blocks; ++i) - { - uint32_t A = load_be<uint32_t>(in, 0); - uint32_t B = load_be<uint32_t>(in, 1); - uint32_t C = load_be<uint32_t>(in, 2); - uint32_t D = load_be<uint32_t>(in, 3); - - round1(C, D, m_MK[ 0], m_RK[ 0]); round2(B, C, m_MK[ 1], m_RK[ 1]); - round3(A, B, m_MK[ 2], m_RK[ 2]); round1(D, A, m_MK[ 3], m_RK[ 3]); - round1(C, D, m_MK[ 4], m_RK[ 4]); round2(B, C, m_MK[ 5], m_RK[ 5]); - round3(A, B, m_MK[ 6], m_RK[ 6]); round1(D, A, m_MK[ 7], m_RK[ 7]); - round1(C, D, m_MK[ 8], m_RK[ 8]); round2(B, C, m_MK[ 9], m_RK[ 9]); - round3(A, B, m_MK[10], m_RK[10]); round1(D, A, m_MK[11], m_RK[11]); - round1(C, D, m_MK[12], m_RK[12]); round2(B, C, m_MK[13], m_RK[13]); - round3(A, B, m_MK[14], m_RK[14]); round1(D, A, m_MK[15], m_RK[15]); - round1(C, D, m_MK[16], m_RK[16]); round2(B, C, m_MK[17], m_RK[17]); - round3(A, B, m_MK[18], m_RK[18]); round1(D, A, m_MK[19], m_RK[19]); - round1(C, D, m_MK[20], m_RK[20]); round2(B, C, m_MK[21], m_RK[21]); - round3(A, B, m_MK[22], m_RK[22]); round1(D, A, m_MK[23], m_RK[23]); - round1(D, A, m_MK[27], m_RK[27]); round3(A, B, m_MK[26], m_RK[26]); - round2(B, C, m_MK[25], m_RK[25]); round1(C, D, m_MK[24], m_RK[24]); - round1(D, A, m_MK[31], m_RK[31]); round3(A, B, m_MK[30], m_RK[30]); - round2(B, C, m_MK[29], m_RK[29]); round1(C, D, m_MK[28], m_RK[28]); - round1(D, A, m_MK[35], m_RK[35]); round3(A, B, m_MK[34], m_RK[34]); - round2(B, C, m_MK[33], m_RK[33]); round1(C, D, m_MK[32], m_RK[32]); - round1(D, A, m_MK[39], m_RK[39]); round3(A, B, m_MK[38], m_RK[38]); - round2(B, C, m_MK[37], m_RK[37]); round1(C, D, m_MK[36], m_RK[36]); - round1(D, A, m_MK[43], m_RK[43]); round3(A, B, m_MK[42], m_RK[42]); - round2(B, C, m_MK[41], m_RK[41]); round1(C, D, m_MK[40], m_RK[40]); - round1(D, A, m_MK[47], m_RK[47]); round3(A, B, m_MK[46], m_RK[46]); - round2(B, C, m_MK[45], m_RK[45]); round1(C, D, m_MK[44], m_RK[44]); - - store_be(out, A, B, C, D); - - in += BLOCK_SIZE; - out += BLOCK_SIZE; - } - } - -/* -* CAST-256 Decryption -*/ -void CAST_256::decrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const - { - verify_key_set(m_RK.empty() == false); - - for(size_t i = 0; i != blocks; ++i) - { - uint32_t A = load_be<uint32_t>(in, 0); - uint32_t B = load_be<uint32_t>(in, 1); - uint32_t C = load_be<uint32_t>(in, 2); - uint32_t D = load_be<uint32_t>(in, 3); - - round1(C, D, m_MK[44], m_RK[44]); round2(B, C, m_MK[45], m_RK[45]); - round3(A, B, m_MK[46], m_RK[46]); round1(D, A, m_MK[47], m_RK[47]); - round1(C, D, m_MK[40], m_RK[40]); round2(B, C, m_MK[41], m_RK[41]); - round3(A, B, m_MK[42], m_RK[42]); round1(D, A, m_MK[43], m_RK[43]); - round1(C, D, m_MK[36], m_RK[36]); round2(B, C, m_MK[37], m_RK[37]); - round3(A, B, m_MK[38], m_RK[38]); round1(D, A, m_MK[39], m_RK[39]); - round1(C, D, m_MK[32], m_RK[32]); round2(B, C, m_MK[33], m_RK[33]); - round3(A, B, m_MK[34], m_RK[34]); round1(D, A, m_MK[35], m_RK[35]); - round1(C, D, m_MK[28], m_RK[28]); round2(B, C, m_MK[29], m_RK[29]); - round3(A, B, m_MK[30], m_RK[30]); round1(D, A, m_MK[31], m_RK[31]); - round1(C, D, m_MK[24], m_RK[24]); round2(B, C, m_MK[25], m_RK[25]); - round3(A, B, m_MK[26], m_RK[26]); round1(D, A, m_MK[27], m_RK[27]); - round1(D, A, m_MK[23], m_RK[23]); round3(A, B, m_MK[22], m_RK[22]); - round2(B, C, m_MK[21], m_RK[21]); round1(C, D, m_MK[20], m_RK[20]); - round1(D, A, m_MK[19], m_RK[19]); round3(A, B, m_MK[18], m_RK[18]); - round2(B, C, m_MK[17], m_RK[17]); round1(C, D, m_MK[16], m_RK[16]); - round1(D, A, m_MK[15], m_RK[15]); round3(A, B, m_MK[14], m_RK[14]); - round2(B, C, m_MK[13], m_RK[13]); round1(C, D, m_MK[12], m_RK[12]); - round1(D, A, m_MK[11], m_RK[11]); round3(A, B, m_MK[10], m_RK[10]); - round2(B, C, m_MK[ 9], m_RK[ 9]); round1(C, D, m_MK[ 8], m_RK[ 8]); - round1(D, A, m_MK[ 7], m_RK[ 7]); round3(A, B, m_MK[ 6], m_RK[ 6]); - round2(B, C, m_MK[ 5], m_RK[ 5]); round1(C, D, m_MK[ 4], m_RK[ 4]); - round1(D, A, m_MK[ 3], m_RK[ 3]); round3(A, B, m_MK[ 2], m_RK[ 2]); - round2(B, C, m_MK[ 1], m_RK[ 1]); round1(C, D, m_MK[ 0], m_RK[ 0]); - - store_be(out, A, B, C, D); - - in += BLOCK_SIZE; - out += BLOCK_SIZE; - } - } - -/* -* CAST-256 Key Schedule -*/ -void CAST_256::key_schedule(const uint8_t key[], size_t length) - { - static const uint32_t KEY_MASK[192] = { - 0x5A827999, 0xC95C653A, 0x383650DB, 0xA7103C7C, 0x15EA281D, 0x84C413BE, - 0xF39DFF5F, 0x6277EB00, 0xD151D6A1, 0x402BC242, 0xAF05ADE3, 0x1DDF9984, - 0x8CB98525, 0xFB9370C6, 0x6A6D5C67, 0xD9474808, 0x482133A9, 0xB6FB1F4A, - 0x25D50AEB, 0x94AEF68C, 0x0388E22D, 0x7262CDCE, 0xE13CB96F, 0x5016A510, - 0xBEF090B1, 0x2DCA7C52, 0x9CA467F3, 0x0B7E5394, 0x7A583F35, 0xE9322AD6, - 0x580C1677, 0xC6E60218, 0x35BFEDB9, 0xA499D95A, 0x1373C4FB, 0x824DB09C, - 0xF1279C3D, 0x600187DE, 0xCEDB737F, 0x3DB55F20, 0xAC8F4AC1, 0x1B693662, - 0x8A432203, 0xF91D0DA4, 0x67F6F945, 0xD6D0E4E6, 0x45AAD087, 0xB484BC28, - 0x235EA7C9, 0x9238936A, 0x01127F0B, 0x6FEC6AAC, 0xDEC6564D, 0x4DA041EE, - 0xBC7A2D8F, 0x2B541930, 0x9A2E04D1, 0x0907F072, 0x77E1DC13, 0xE6BBC7B4, - 0x5595B355, 0xC46F9EF6, 0x33498A97, 0xA2237638, 0x10FD61D9, 0x7FD74D7A, - 0xEEB1391B, 0x5D8B24BC, 0xCC65105D, 0x3B3EFBFE, 0xAA18E79F, 0x18F2D340, - 0x87CCBEE1, 0xF6A6AA82, 0x65809623, 0xD45A81C4, 0x43346D65, 0xB20E5906, - 0x20E844A7, 0x8FC23048, 0xFE9C1BE9, 0x6D76078A, 0xDC4FF32B, 0x4B29DECC, - 0xBA03CA6D, 0x28DDB60E, 0x97B7A1AF, 0x06918D50, 0x756B78F1, 0xE4456492, - 0x531F5033, 0xC1F93BD4, 0x30D32775, 0x9FAD1316, 0x0E86FEB7, 0x7D60EA58, - 0xEC3AD5F9, 0x5B14C19A, 0xC9EEAD3B, 0x38C898DC, 0xA7A2847D, 0x167C701E, - 0x85565BBF, 0xF4304760, 0x630A3301, 0xD1E41EA2, 0x40BE0A43, 0xAF97F5E4, - 0x1E71E185, 0x8D4BCD26, 0xFC25B8C7, 0x6AFFA468, 0xD9D99009, 0x48B37BAA, - 0xB78D674B, 0x266752EC, 0x95413E8D, 0x041B2A2E, 0x72F515CF, 0xE1CF0170, - 0x50A8ED11, 0xBF82D8B2, 0x2E5CC453, 0x9D36AFF4, 0x0C109B95, 0x7AEA8736, - 0xE9C472D7, 0x589E5E78, 0xC7784A19, 0x365235BA, 0xA52C215B, 0x14060CFC, - 0x82DFF89D, 0xF1B9E43E, 0x6093CFDF, 0xCF6DBB80, 0x3E47A721, 0xAD2192C2, - 0x1BFB7E63, 0x8AD56A04, 0xF9AF55A5, 0x68894146, 0xD7632CE7, 0x463D1888, - 0xB5170429, 0x23F0EFCA, 0x92CADB6B, 0x01A4C70C, 0x707EB2AD, 0xDF589E4E, - 0x4E3289EF, 0xBD0C7590, 0x2BE66131, 0x9AC04CD2, 0x099A3873, 0x78742414, - 0xE74E0FB5, 0x5627FB56, 0xC501E6F7, 0x33DBD298, 0xA2B5BE39, 0x118FA9DA, - 0x8069957B, 0xEF43811C, 0x5E1D6CBD, 0xCCF7585E, 0x3BD143FF, 0xAAAB2FA0, - 0x19851B41, 0x885F06E2, 0xF738F283, 0x6612DE24, 0xD4ECC9C5, 0x43C6B566, - 0xB2A0A107, 0x217A8CA8, 0x90547849, 0xFF2E63EA, 0x6E084F8B, 0xDCE23B2C, - 0x4BBC26CD, 0xBA96126E, 0x296FFE0F, 0x9849E9B0, 0x0723D551, 0x75FDC0F2, - 0xE4D7AC93, 0x53B19834, 0xC28B83D5, 0x31656F76, 0xA03F5B17, 0x0F1946B8 }; - - static const uint8_t KEY_ROT[32] = { - 0x13, 0x04, 0x15, 0x06, 0x17, 0x08, 0x19, 0x0A, 0x1B, 0x0C, - 0x1D, 0x0E, 0x1F, 0x10, 0x01, 0x12, 0x03, 0x14, 0x05, 0x16, - 0x07, 0x18, 0x09, 0x1A, 0x0B, 0x1C, 0x0D, 0x1E, 0x0F, 0x00, - 0x11, 0x02 }; - - m_MK.resize(48); - m_RK.resize(48); - - secure_vector<uint32_t> K(8); - for(size_t i = 0; i != length; ++i) - K[i/4] = (K[i/4] << 8) + key[i]; - - uint32_t A = K[0], B = K[1], C = K[2], D = K[3], - E = K[4], F = K[5], G = K[6], H = K[7]; - - for(size_t i = 0; i != 48; i += 4) - { - round1(G, H, KEY_MASK[4*i+ 0], KEY_ROT[(4*i+ 0) % 32]); - round2(F, G, KEY_MASK[4*i+ 1], KEY_ROT[(4*i+ 1) % 32]); - round3(E, F, KEY_MASK[4*i+ 2], KEY_ROT[(4*i+ 2) % 32]); - round1(D, E, KEY_MASK[4*i+ 3], KEY_ROT[(4*i+ 3) % 32]); - round2(C, D, KEY_MASK[4*i+ 4], KEY_ROT[(4*i+ 4) % 32]); - round3(B, C, KEY_MASK[4*i+ 5], KEY_ROT[(4*i+ 5) % 32]); - round1(A, B, KEY_MASK[4*i+ 6], KEY_ROT[(4*i+ 6) % 32]); - round2(H, A, KEY_MASK[4*i+ 7], KEY_ROT[(4*i+ 7) % 32]); - round1(G, H, KEY_MASK[4*i+ 8], KEY_ROT[(4*i+ 8) % 32]); - round2(F, G, KEY_MASK[4*i+ 9], KEY_ROT[(4*i+ 9) % 32]); - round3(E, F, KEY_MASK[4*i+10], KEY_ROT[(4*i+10) % 32]); - round1(D, E, KEY_MASK[4*i+11], KEY_ROT[(4*i+11) % 32]); - round2(C, D, KEY_MASK[4*i+12], KEY_ROT[(4*i+12) % 32]); - round3(B, C, KEY_MASK[4*i+13], KEY_ROT[(4*i+13) % 32]); - round1(A, B, KEY_MASK[4*i+14], KEY_ROT[(4*i+14) % 32]); - round2(H, A, KEY_MASK[4*i+15], KEY_ROT[(4*i+15) % 32]); - - m_RK[i ] = (A % 32); - m_RK[i+1] = (C % 32); - m_RK[i+2] = (E % 32); - m_RK[i+3] = (G % 32); - m_MK[i ] = H; - m_MK[i+1] = F; - m_MK[i+2] = D; - m_MK[i+3] = B; - } - } - -void CAST_256::clear() - { - zap(m_MK); - zap(m_RK); - } - -} diff --git a/src/lib/block/cast256/cast256.h b/src/lib/block/cast256/cast256.h deleted file mode 100644 index 3c3016937..000000000 --- a/src/lib/block/cast256/cast256.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -* CAST-256 -* (C) 1999-2007 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#ifndef BOTAN_CAST256_H_ -#define BOTAN_CAST256_H_ - -#include <botan/block_cipher.h> - -BOTAN_FUTURE_INTERNAL_HEADER(cast256.h) - -namespace Botan { - -/** -* CAST-256 -*/ -class BOTAN_PUBLIC_API(2,0) CAST_256 final : public Block_Cipher_Fixed_Params<16, 4, 32, 4> - { - public: - void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; - void decrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; - - void clear() override; - std::string name() const override { return "CAST-256"; } - BlockCipher* clone() const override { return new CAST_256; } - private: - void key_schedule(const uint8_t[], size_t) override; - - secure_vector<uint32_t> m_MK; - secure_vector<uint8_t> m_RK; - }; - -} - -#endif diff --git a/src/lib/block/cast256/info.txt b/src/lib/block/cast256/info.txt deleted file mode 100644 index b109fe053..000000000 --- a/src/lib/block/cast256/info.txt +++ /dev/null @@ -1,7 +0,0 @@ -<defines> -CAST_256 -> 20171203 -</defines> - -<requires> -cast128 -</requires> diff --git a/src/lib/block/des/desx.cpp b/src/lib/block/des/desx.cpp deleted file mode 100644 index e869b3ebf..000000000 --- a/src/lib/block/des/desx.cpp +++ /dev/null @@ -1,65 +0,0 @@ -/* -* DES -* (C) 1999-2007 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#include <botan/desx.h> - -namespace Botan { - -/* -* DESX Encryption -*/ -void DESX::encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const - { - verify_key_set(m_K1.empty() == false); - - for(size_t i = 0; i != blocks; ++i) - { - xor_buf(out, in, m_K1.data(), BLOCK_SIZE); - m_des.encrypt(out); - xor_buf(out, m_K2.data(), BLOCK_SIZE); - - in += BLOCK_SIZE; - out += BLOCK_SIZE; - } - } - -/* -* DESX Decryption -*/ -void DESX::decrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const - { - verify_key_set(m_K1.empty() == false); - - for(size_t i = 0; i != blocks; ++i) - { - xor_buf(out, in, m_K2.data(), BLOCK_SIZE); - m_des.decrypt(out); - xor_buf(out, m_K1.data(), BLOCK_SIZE); - - in += BLOCK_SIZE; - out += BLOCK_SIZE; - } - } - -/* -* DESX Key Schedule -*/ -void DESX::key_schedule(const uint8_t key[], size_t) - { - m_K1.assign(key, key + 8); - m_des.set_key(key + 8, 8); - m_K2.assign(key + 16, key + 24); - } - -void DESX::clear() - { - m_des.clear(); - zap(m_K1); - zap(m_K2); - } - -} diff --git a/src/lib/block/des/desx.h b/src/lib/block/des/desx.h deleted file mode 100644 index 0189a9982..000000000 --- a/src/lib/block/des/desx.h +++ /dev/null @@ -1,37 +0,0 @@ -/* -* DESX -* (C) 1999-2007 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#ifndef BOTAN_DESX_H_ -#define BOTAN_DESX_H_ - -#include <botan/des.h> - -BOTAN_FUTURE_INTERNAL_HEADER(desx.h) - -namespace Botan { - -/** -* DESX -*/ -class BOTAN_PUBLIC_API(2,0) DESX final : public Block_Cipher_Fixed_Params<8, 24> - { - public: - void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; - void decrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; - - void clear() override; - std::string name() const override { return "DESX"; } - BlockCipher* clone() const override { return new DESX; } - private: - void key_schedule(const uint8_t[], size_t) override; - secure_vector<uint8_t> m_K1, m_K2; - DES m_des; - }; - -} - -#endif diff --git a/src/lib/block/des/info.txt b/src/lib/block/des/info.txt index 05f85b523..0cbafc317 100644 --- a/src/lib/block/des/info.txt +++ b/src/lib/block/des/info.txt @@ -1,3 +1,3 @@ <defines> -DES -> 20131128 +DES -> 20200926 </defines> diff --git a/src/lib/block/kasumi/info.txt b/src/lib/block/kasumi/info.txt deleted file mode 100644 index b48183ca9..000000000 --- a/src/lib/block/kasumi/info.txt +++ /dev/null @@ -1,3 +0,0 @@ -<defines> -KASUMI -> 20131128 -</defines> diff --git a/src/lib/block/kasumi/kasumi.cpp b/src/lib/block/kasumi/kasumi.cpp deleted file mode 100644 index a715cfc13..000000000 --- a/src/lib/block/kasumi/kasumi.cpp +++ /dev/null @@ -1,238 +0,0 @@ -/* -* KASUMI -* (C) 1999-2007 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#include <botan/kasumi.h> -#include <botan/loadstor.h> -#include <botan/rotate.h> - -namespace Botan { - -namespace { - -/* -* KASUMI S-Boxes -*/ -const uint8_t KASUMI_SBOX_S7[128] = { - 0x36, 0x32, 0x3E, 0x38, 0x16, 0x22, 0x5E, 0x60, 0x26, 0x06, 0x3F, 0x5D, - 0x02, 0x12, 0x7B, 0x21, 0x37, 0x71, 0x27, 0x72, 0x15, 0x43, 0x41, 0x0C, - 0x2F, 0x49, 0x2E, 0x1B, 0x19, 0x6F, 0x7C, 0x51, 0x35, 0x09, 0x79, 0x4F, - 0x34, 0x3C, 0x3A, 0x30, 0x65, 0x7F, 0x28, 0x78, 0x68, 0x46, 0x47, 0x2B, - 0x14, 0x7A, 0x48, 0x3D, 0x17, 0x6D, 0x0D, 0x64, 0x4D, 0x01, 0x10, 0x07, - 0x52, 0x0A, 0x69, 0x62, 0x75, 0x74, 0x4C, 0x0B, 0x59, 0x6A, 0x00, 0x7D, - 0x76, 0x63, 0x56, 0x45, 0x1E, 0x39, 0x7E, 0x57, 0x70, 0x33, 0x11, 0x05, - 0x5F, 0x0E, 0x5A, 0x54, 0x5B, 0x08, 0x23, 0x67, 0x20, 0x61, 0x1C, 0x42, - 0x66, 0x1F, 0x1A, 0x2D, 0x4B, 0x04, 0x55, 0x5C, 0x25, 0x4A, 0x50, 0x31, - 0x44, 0x1D, 0x73, 0x2C, 0x40, 0x6B, 0x6C, 0x18, 0x6E, 0x53, 0x24, 0x4E, - 0x2A, 0x13, 0x0F, 0x29, 0x58, 0x77, 0x3B, 0x03 }; - -const uint16_t KASUMI_SBOX_S9[512] = { - 0x00A7, 0x00EF, 0x00A1, 0x017B, 0x0187, 0x014E, 0x0009, 0x0152, 0x0026, - 0x00E2, 0x0030, 0x0166, 0x01C4, 0x0181, 0x005A, 0x018D, 0x00B7, 0x00FD, - 0x0093, 0x014B, 0x019F, 0x0154, 0x0033, 0x016A, 0x0132, 0x01F4, 0x0106, - 0x0052, 0x00D8, 0x009F, 0x0164, 0x00B1, 0x00AF, 0x00F1, 0x01E9, 0x0025, - 0x00CE, 0x0011, 0x0000, 0x014D, 0x002C, 0x00FE, 0x017A, 0x003A, 0x008F, - 0x00DC, 0x0051, 0x0190, 0x005F, 0x0003, 0x013B, 0x00F5, 0x0036, 0x00EB, - 0x00DA, 0x0195, 0x01D8, 0x0108, 0x00AC, 0x01EE, 0x0173, 0x0122, 0x018F, - 0x004C, 0x00A5, 0x00C5, 0x018B, 0x0079, 0x0101, 0x01E0, 0x01A7, 0x00D4, - 0x00F0, 0x001C, 0x01CE, 0x00B0, 0x0196, 0x01FB, 0x0120, 0x00DF, 0x01F5, - 0x0197, 0x00F9, 0x0109, 0x0059, 0x00BA, 0x00DD, 0x01AC, 0x00A4, 0x004A, - 0x01B8, 0x00C4, 0x01CA, 0x01A5, 0x015E, 0x00A3, 0x00E8, 0x009E, 0x0086, - 0x0162, 0x000D, 0x00FA, 0x01EB, 0x008E, 0x00BF, 0x0045, 0x00C1, 0x01A9, - 0x0098, 0x00E3, 0x016E, 0x0087, 0x0158, 0x012C, 0x0114, 0x00F2, 0x01B5, - 0x0140, 0x0071, 0x0116, 0x000B, 0x00F3, 0x0057, 0x013D, 0x0024, 0x005D, - 0x01F0, 0x001B, 0x01E7, 0x01BE, 0x01E2, 0x0029, 0x0044, 0x009C, 0x01C9, - 0x0083, 0x0146, 0x0193, 0x0153, 0x0014, 0x0027, 0x0073, 0x01BA, 0x007C, - 0x01DB, 0x0180, 0x01FC, 0x0035, 0x0070, 0x00AA, 0x01DF, 0x0097, 0x007E, - 0x00A9, 0x0049, 0x010C, 0x0117, 0x0141, 0x00A8, 0x016C, 0x016B, 0x0124, - 0x002E, 0x01F3, 0x0189, 0x0147, 0x0144, 0x0018, 0x01C8, 0x010B, 0x009D, - 0x01CC, 0x01E8, 0x01AA, 0x0135, 0x00E5, 0x01B7, 0x01FA, 0x00D0, 0x010F, - 0x015D, 0x0191, 0x01B2, 0x00EC, 0x0010, 0x00D1, 0x0167, 0x0034, 0x0038, - 0x0078, 0x00C7, 0x0115, 0x01D1, 0x01A0, 0x00FC, 0x011F, 0x00F6, 0x0006, - 0x0053, 0x0131, 0x01A4, 0x0159, 0x0099, 0x01F6, 0x0041, 0x003D, 0x00F4, - 0x011A, 0x00AD, 0x00DE, 0x01A2, 0x0043, 0x0182, 0x0170, 0x0105, 0x0065, - 0x01DC, 0x0123, 0x00C3, 0x01AE, 0x0031, 0x004F, 0x00A6, 0x014A, 0x0118, - 0x017F, 0x0175, 0x0080, 0x017E, 0x0198, 0x009B, 0x01EF, 0x016F, 0x0184, - 0x0112, 0x006B, 0x01CB, 0x01A1, 0x003E, 0x01C6, 0x0084, 0x00E1, 0x00CB, - 0x013C, 0x00EA, 0x000E, 0x012D, 0x005B, 0x01F7, 0x011E, 0x01A8, 0x00D3, - 0x015B, 0x0133, 0x008C, 0x0176, 0x0023, 0x0067, 0x007D, 0x01AB, 0x0013, - 0x00D6, 0x01C5, 0x0092, 0x01F2, 0x013A, 0x01BC, 0x00E6, 0x0100, 0x0149, - 0x00C6, 0x011D, 0x0032, 0x0074, 0x004E, 0x019A, 0x000A, 0x00CD, 0x01FE, - 0x00AB, 0x00E7, 0x002D, 0x008B, 0x01D3, 0x001D, 0x0056, 0x01F9, 0x0020, - 0x0048, 0x001A, 0x0156, 0x0096, 0x0139, 0x01EA, 0x01AF, 0x00EE, 0x019B, - 0x0145, 0x0095, 0x01D9, 0x0028, 0x0077, 0x00AE, 0x0163, 0x00B9, 0x00E9, - 0x0185, 0x0047, 0x01C0, 0x0111, 0x0174, 0x0037, 0x006E, 0x00B2, 0x0142, - 0x000C, 0x01D5, 0x0188, 0x0171, 0x00BE, 0x0001, 0x006D, 0x0177, 0x0089, - 0x00B5, 0x0058, 0x004B, 0x0134, 0x0104, 0x01E4, 0x0062, 0x0110, 0x0172, - 0x0113, 0x019C, 0x006F, 0x0150, 0x013E, 0x0004, 0x01F8, 0x01EC, 0x0103, - 0x0130, 0x004D, 0x0151, 0x01B3, 0x0015, 0x0165, 0x012F, 0x014C, 0x01E3, - 0x0012, 0x002F, 0x0055, 0x0019, 0x01F1, 0x01DA, 0x0121, 0x0064, 0x010D, - 0x0128, 0x01DE, 0x010E, 0x006A, 0x001F, 0x0068, 0x01B1, 0x0054, 0x019E, - 0x01E6, 0x018A, 0x0060, 0x0063, 0x009A, 0x01FF, 0x0094, 0x019D, 0x0169, - 0x0199, 0x00FF, 0x00A2, 0x00D7, 0x012E, 0x00C9, 0x010A, 0x015F, 0x0157, - 0x0090, 0x01B9, 0x016D, 0x006C, 0x012A, 0x00FB, 0x0022, 0x00B6, 0x01FD, - 0x008A, 0x00D2, 0x014F, 0x0085, 0x0137, 0x0160, 0x0148, 0x008D, 0x018C, - 0x015A, 0x007B, 0x013F, 0x01C2, 0x0119, 0x01AD, 0x00E4, 0x01BB, 0x01E1, - 0x005C, 0x0194, 0x01E5, 0x01A6, 0x00F8, 0x0129, 0x0017, 0x00D5, 0x0082, - 0x01D2, 0x0016, 0x00D9, 0x011B, 0x0046, 0x0126, 0x0168, 0x01A3, 0x007F, - 0x0138, 0x0179, 0x0007, 0x01D4, 0x00C2, 0x0002, 0x0075, 0x0127, 0x01CF, - 0x0102, 0x00E0, 0x01BF, 0x00F7, 0x00BB, 0x0050, 0x018E, 0x011C, 0x0161, - 0x0069, 0x0186, 0x012B, 0x01D7, 0x01D6, 0x00B8, 0x0039, 0x00C8, 0x015C, - 0x003F, 0x00CC, 0x00BC, 0x0021, 0x01C3, 0x0061, 0x001E, 0x0136, 0x00DB, - 0x005E, 0x00A0, 0x0081, 0x01ED, 0x0040, 0x00B3, 0x0107, 0x0066, 0x00BD, - 0x00CF, 0x0072, 0x0192, 0x01B6, 0x01DD, 0x0183, 0x007A, 0x00C0, 0x002A, - 0x017D, 0x0005, 0x0091, 0x0076, 0x00B4, 0x01C1, 0x0125, 0x0143, 0x0088, - 0x017C, 0x002B, 0x0042, 0x003C, 0x01C7, 0x0155, 0x01BD, 0x00CA, 0x01B0, - 0x0008, 0x00ED, 0x000F, 0x0178, 0x01B4, 0x01D0, 0x003B, 0x01CD }; - -/* -* KASUMI FI Function -*/ -uint16_t FI(uint16_t I, uint16_t K) - { - uint16_t D9 = (I >> 7); - uint8_t D7 = (I & 0x7F); - D9 = KASUMI_SBOX_S9[D9] ^ D7; - D7 = KASUMI_SBOX_S7[D7] ^ (D9 & 0x7F); - - D7 ^= (K >> 9); - D9 = KASUMI_SBOX_S9[D9 ^ (K & 0x1FF)] ^ D7; - D7 = KASUMI_SBOX_S7[D7] ^ (D9 & 0x7F); - return static_cast<uint16_t>(D7 << 9) | D9; - } - -} - -/* -* KASUMI Encryption -*/ -void KASUMI::encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const - { - verify_key_set(m_EK.empty() == false); - - for(size_t i = 0; i != blocks; ++i) - { - uint16_t B0 = load_be<uint16_t>(in, 0); - uint16_t B1 = load_be<uint16_t>(in, 1); - uint16_t B2 = load_be<uint16_t>(in, 2); - uint16_t B3 = load_be<uint16_t>(in, 3); - - for(size_t j = 0; j != 8; j += 2) - { - const uint16_t* K = &m_EK[8*j]; - - uint16_t R = B1 ^ (rotl<1>(B0) & K[0]); - uint16_t L = B0 ^ (rotl<1>(R) | K[1]); - - L = FI(L ^ K[ 2], K[ 3]) ^ R; - R = FI(R ^ K[ 4], K[ 5]) ^ L; - L = FI(L ^ K[ 6], K[ 7]) ^ R; - - R = B2 ^= R; - L = B3 ^= L; - - R = FI(R ^ K[10], K[11]) ^ L; - L = FI(L ^ K[12], K[13]) ^ R; - R = FI(R ^ K[14], K[15]) ^ L; - - R ^= (rotl<1>(L) & K[8]); - L ^= (rotl<1>(R) | K[9]); - - B0 ^= L; - B1 ^= R; - } - - store_be(out, B0, B1, B2, B3); - - in += BLOCK_SIZE; - out += BLOCK_SIZE; - } - } - -/* -* KASUMI Decryption -*/ -void KASUMI::decrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const - { - verify_key_set(m_EK.empty() == false); - - for(size_t i = 0; i != blocks; ++i) - { - uint16_t B0 = load_be<uint16_t>(in, 0); - uint16_t B1 = load_be<uint16_t>(in, 1); - uint16_t B2 = load_be<uint16_t>(in, 2); - uint16_t B3 = load_be<uint16_t>(in, 3); - - for(size_t j = 0; j != 8; j += 2) - { - const uint16_t* K = &m_EK[8*(6-j)]; - - uint16_t L = B2, R = B3; - - L = FI(L ^ K[10], K[11]) ^ R; - R = FI(R ^ K[12], K[13]) ^ L; - L = FI(L ^ K[14], K[15]) ^ R; - - L ^= (rotl<1>(R) & K[8]); - R ^= (rotl<1>(L) | K[9]); - - R = B0 ^= R; - L = B1 ^= L; - - L ^= (rotl<1>(R) & K[0]); - R ^= (rotl<1>(L) | K[1]); - - R = FI(R ^ K[2], K[3]) ^ L; - L = FI(L ^ K[4], K[5]) ^ R; - R = FI(R ^ K[6], K[7]) ^ L; - - B2 ^= L; - B3 ^= R; - } - - store_be(out, B0, B1, B2, B3); - - in += BLOCK_SIZE; - out += BLOCK_SIZE; - } - } - -/* -* KASUMI Key Schedule -*/ -void KASUMI::key_schedule(const uint8_t key[], size_t) - { - static const uint16_t RC[] = { 0x0123, 0x4567, 0x89AB, 0xCDEF, - 0xFEDC, 0xBA98, 0x7654, 0x3210 }; - - secure_vector<uint16_t> K(16); - for(size_t i = 0; i != 8; ++i) - { - K[i] = load_be<uint16_t>(key, i); - K[i+8] = K[i] ^ RC[i]; - } - - m_EK.resize(64); - - for(size_t i = 0; i != 8; ++i) - { - m_EK[8*i ] = rotl<2>(K[(i+0) % 8]); - m_EK[8*i+1] = rotl<1>(K[(i+2) % 8 + 8]); - m_EK[8*i+2] = rotl<5>(K[(i+1) % 8]); - m_EK[8*i+3] = K[(i+4) % 8 + 8]; - m_EK[8*i+4] = rotl<8>(K[(i+5) % 8]); - m_EK[8*i+5] = K[(i+3) % 8 + 8]; - m_EK[8*i+6] = rotl<13>(K[(i+6) % 8]); - m_EK[8*i+7] = K[(i+7) % 8 + 8]; - } - } - -void KASUMI::clear() - { - zap(m_EK); - } - -} diff --git a/src/lib/block/kasumi/kasumi.h b/src/lib/block/kasumi/kasumi.h deleted file mode 100644 index 9ea09a103..000000000 --- a/src/lib/block/kasumi/kasumi.h +++ /dev/null @@ -1,37 +0,0 @@ -/* -* KASUMI -* (C) 1999-2007 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#ifndef BOTAN_KASUMI_H_ -#define BOTAN_KASUMI_H_ - -#include <botan/block_cipher.h> - -BOTAN_FUTURE_INTERNAL_HEADER(kasumi.h) - -namespace Botan { - -/** -* KASUMI, the block cipher used in 3G telephony -*/ -class BOTAN_PUBLIC_API(2,0) KASUMI final : public Block_Cipher_Fixed_Params<8, 16> - { - public: - void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; - void decrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; - - void clear() override; - std::string name() const override { return "KASUMI"; } - BlockCipher* clone() const override { return new KASUMI; } - private: - void key_schedule(const uint8_t[], size_t) override; - - secure_vector<uint16_t> m_EK; - }; - -} - -#endif diff --git a/src/lib/block/misty1/info.txt b/src/lib/block/misty1/info.txt deleted file mode 100644 index bf21dd439..000000000 --- a/src/lib/block/misty1/info.txt +++ /dev/null @@ -1,3 +0,0 @@ -<defines> -MISTY1 -> 20131128 -</defines> diff --git a/src/lib/block/misty1/misty1.cpp b/src/lib/block/misty1/misty1.cpp deleted file mode 100644 index e7ebffa6e..000000000 --- a/src/lib/block/misty1/misty1.cpp +++ /dev/null @@ -1,263 +0,0 @@ -/* -* MISTY1 -* (C) 1999-2009 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#include <botan/misty1.h> -#include <botan/loadstor.h> - -namespace Botan { - -namespace { - -static const uint8_t MISTY1_SBOX_S7[128] = { - 0x1B, 0x32, 0x33, 0x5A, 0x3B, 0x10, 0x17, 0x54, 0x5B, 0x1A, 0x72, 0x73, - 0x6B, 0x2C, 0x66, 0x49, 0x1F, 0x24, 0x13, 0x6C, 0x37, 0x2E, 0x3F, 0x4A, - 0x5D, 0x0F, 0x40, 0x56, 0x25, 0x51, 0x1C, 0x04, 0x0B, 0x46, 0x20, 0x0D, - 0x7B, 0x35, 0x44, 0x42, 0x2B, 0x1E, 0x41, 0x14, 0x4B, 0x79, 0x15, 0x6F, - 0x0E, 0x55, 0x09, 0x36, 0x74, 0x0C, 0x67, 0x53, 0x28, 0x0A, 0x7E, 0x38, - 0x02, 0x07, 0x60, 0x29, 0x19, 0x12, 0x65, 0x2F, 0x30, 0x39, 0x08, 0x68, - 0x5F, 0x78, 0x2A, 0x4C, 0x64, 0x45, 0x75, 0x3D, 0x59, 0x48, 0x03, 0x57, - 0x7C, 0x4F, 0x62, 0x3C, 0x1D, 0x21, 0x5E, 0x27, 0x6A, 0x70, 0x4D, 0x3A, - 0x01, 0x6D, 0x6E, 0x63, 0x18, 0x77, 0x23, 0x05, 0x26, 0x76, 0x00, 0x31, - 0x2D, 0x7A, 0x7F, 0x61, 0x50, 0x22, 0x11, 0x06, 0x47, 0x16, 0x52, 0x4E, - 0x71, 0x3E, 0x69, 0x43, 0x34, 0x5C, 0x58, 0x7D }; - -static const uint16_t MISTY1_SBOX_S9[512] = { - 0x01C3, 0x00CB, 0x0153, 0x019F, 0x01E3, 0x00E9, 0x00FB, 0x0035, 0x0181, - 0x00B9, 0x0117, 0x01EB, 0x0133, 0x0009, 0x002D, 0x00D3, 0x00C7, 0x014A, - 0x0037, 0x007E, 0x00EB, 0x0164, 0x0193, 0x01D8, 0x00A3, 0x011E, 0x0055, - 0x002C, 0x001D, 0x01A2, 0x0163, 0x0118, 0x014B, 0x0152, 0x01D2, 0x000F, - 0x002B, 0x0030, 0x013A, 0x00E5, 0x0111, 0x0138, 0x018E, 0x0063, 0x00E3, - 0x00C8, 0x01F4, 0x001B, 0x0001, 0x009D, 0x00F8, 0x01A0, 0x016D, 0x01F3, - 0x001C, 0x0146, 0x007D, 0x00D1, 0x0082, 0x01EA, 0x0183, 0x012D, 0x00F4, - 0x019E, 0x01D3, 0x00DD, 0x01E2, 0x0128, 0x01E0, 0x00EC, 0x0059, 0x0091, - 0x0011, 0x012F, 0x0026, 0x00DC, 0x00B0, 0x018C, 0x010F, 0x01F7, 0x00E7, - 0x016C, 0x00B6, 0x00F9, 0x00D8, 0x0151, 0x0101, 0x014C, 0x0103, 0x00B8, - 0x0154, 0x012B, 0x01AE, 0x0017, 0x0071, 0x000C, 0x0047, 0x0058, 0x007F, - 0x01A4, 0x0134, 0x0129, 0x0084, 0x015D, 0x019D, 0x01B2, 0x01A3, 0x0048, - 0x007C, 0x0051, 0x01CA, 0x0023, 0x013D, 0x01A7, 0x0165, 0x003B, 0x0042, - 0x00DA, 0x0192, 0x00CE, 0x00C1, 0x006B, 0x009F, 0x01F1, 0x012C, 0x0184, - 0x00FA, 0x0196, 0x01E1, 0x0169, 0x017D, 0x0031, 0x0180, 0x010A, 0x0094, - 0x01DA, 0x0186, 0x013E, 0x011C, 0x0060, 0x0175, 0x01CF, 0x0067, 0x0119, - 0x0065, 0x0068, 0x0099, 0x0150, 0x0008, 0x0007, 0x017C, 0x00B7, 0x0024, - 0x0019, 0x00DE, 0x0127, 0x00DB, 0x00E4, 0x01A9, 0x0052, 0x0109, 0x0090, - 0x019C, 0x01C1, 0x0028, 0x01B3, 0x0135, 0x016A, 0x0176, 0x00DF, 0x01E5, - 0x0188, 0x00C5, 0x016E, 0x01DE, 0x01B1, 0x00C3, 0x01DF, 0x0036, 0x00EE, - 0x01EE, 0x00F0, 0x0093, 0x0049, 0x009A, 0x01B6, 0x0069, 0x0081, 0x0125, - 0x000B, 0x005E, 0x00B4, 0x0149, 0x01C7, 0x0174, 0x003E, 0x013B, 0x01B7, - 0x008E, 0x01C6, 0x00AE, 0x0010, 0x0095, 0x01EF, 0x004E, 0x00F2, 0x01FD, - 0x0085, 0x00FD, 0x00F6, 0x00A0, 0x016F, 0x0083, 0x008A, 0x0156, 0x009B, - 0x013C, 0x0107, 0x0167, 0x0098, 0x01D0, 0x01E9, 0x0003, 0x01FE, 0x00BD, - 0x0122, 0x0089, 0x00D2, 0x018F, 0x0012, 0x0033, 0x006A, 0x0142, 0x00ED, - 0x0170, 0x011B, 0x00E2, 0x014F, 0x0158, 0x0131, 0x0147, 0x005D, 0x0113, - 0x01CD, 0x0079, 0x0161, 0x01A5, 0x0179, 0x009E, 0x01B4, 0x00CC, 0x0022, - 0x0132, 0x001A, 0x00E8, 0x0004, 0x0187, 0x01ED, 0x0197, 0x0039, 0x01BF, - 0x01D7, 0x0027, 0x018B, 0x00C6, 0x009C, 0x00D0, 0x014E, 0x006C, 0x0034, - 0x01F2, 0x006E, 0x00CA, 0x0025, 0x00BA, 0x0191, 0x00FE, 0x0013, 0x0106, - 0x002F, 0x01AD, 0x0172, 0x01DB, 0x00C0, 0x010B, 0x01D6, 0x00F5, 0x01EC, - 0x010D, 0x0076, 0x0114, 0x01AB, 0x0075, 0x010C, 0x01E4, 0x0159, 0x0054, - 0x011F, 0x004B, 0x00C4, 0x01BE, 0x00F7, 0x0029, 0x00A4, 0x000E, 0x01F0, - 0x0077, 0x004D, 0x017A, 0x0086, 0x008B, 0x00B3, 0x0171, 0x00BF, 0x010E, - 0x0104, 0x0097, 0x015B, 0x0160, 0x0168, 0x00D7, 0x00BB, 0x0066, 0x01CE, - 0x00FC, 0x0092, 0x01C5, 0x006F, 0x0016, 0x004A, 0x00A1, 0x0139, 0x00AF, - 0x00F1, 0x0190, 0x000A, 0x01AA, 0x0143, 0x017B, 0x0056, 0x018D, 0x0166, - 0x00D4, 0x01FB, 0x014D, 0x0194, 0x019A, 0x0087, 0x01F8, 0x0123, 0x00A7, - 0x01B8, 0x0141, 0x003C, 0x01F9, 0x0140, 0x002A, 0x0155, 0x011A, 0x01A1, - 0x0198, 0x00D5, 0x0126, 0x01AF, 0x0061, 0x012E, 0x0157, 0x01DC, 0x0072, - 0x018A, 0x00AA, 0x0096, 0x0115, 0x00EF, 0x0045, 0x007B, 0x008D, 0x0145, - 0x0053, 0x005F, 0x0178, 0x00B2, 0x002E, 0x0020, 0x01D5, 0x003F, 0x01C9, - 0x01E7, 0x01AC, 0x0044, 0x0038, 0x0014, 0x00B1, 0x016B, 0x00AB, 0x00B5, - 0x005A, 0x0182, 0x01C8, 0x01D4, 0x0018, 0x0177, 0x0064, 0x00CF, 0x006D, - 0x0100, 0x0199, 0x0130, 0x015A, 0x0005, 0x0120, 0x01BB, 0x01BD, 0x00E0, - 0x004F, 0x00D6, 0x013F, 0x01C4, 0x012A, 0x0015, 0x0006, 0x00FF, 0x019B, - 0x00A6, 0x0043, 0x0088, 0x0050, 0x015F, 0x01E8, 0x0121, 0x0073, 0x017E, - 0x00BC, 0x00C2, 0x00C9, 0x0173, 0x0189, 0x01F5, 0x0074, 0x01CC, 0x01E6, - 0x01A8, 0x0195, 0x001F, 0x0041, 0x000D, 0x01BA, 0x0032, 0x003D, 0x01D1, - 0x0080, 0x00A8, 0x0057, 0x01B9, 0x0162, 0x0148, 0x00D9, 0x0105, 0x0062, - 0x007A, 0x0021, 0x01FF, 0x0112, 0x0108, 0x01C0, 0x00A9, 0x011D, 0x01B0, - 0x01A6, 0x00CD, 0x00F3, 0x005C, 0x0102, 0x005B, 0x01D9, 0x0144, 0x01F6, - 0x00AD, 0x00A5, 0x003A, 0x01CB, 0x0136, 0x017F, 0x0046, 0x00E1, 0x001E, - 0x01DD, 0x00E6, 0x0137, 0x01FA, 0x0185, 0x008C, 0x008F, 0x0040, 0x01B5, - 0x00BE, 0x0078, 0x0000, 0x00AC, 0x0110, 0x015E, 0x0124, 0x0002, 0x01BC, - 0x00A2, 0x00EA, 0x0070, 0x01FC, 0x0116, 0x015C, 0x004C, 0x01C2 }; - -/* -* MISTY1 FI Function -*/ -uint16_t FI(uint16_t input, uint16_t key7, uint16_t key9) - { - uint16_t D9 = input >> 7, D7 = input & 0x7F; - D9 = MISTY1_SBOX_S9[D9] ^ D7; - D7 = (MISTY1_SBOX_S7[D7] ^ key7 ^ D9) & 0x7F; - D9 = MISTY1_SBOX_S9[D9 ^ key9] ^ D7; - return static_cast<uint16_t>(D7 << 9) | D9; - } - -} - -/* -* MISTY1 Encryption -*/ -void MISTY1::encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const - { - verify_key_set(m_EK.empty() == false); - - for(size_t i = 0; i != blocks; ++i) - { - uint16_t B0 = load_be<uint16_t>(in, 0); - uint16_t B1 = load_be<uint16_t>(in, 1); - uint16_t B2 = load_be<uint16_t>(in, 2); - uint16_t B3 = load_be<uint16_t>(in, 3); - - for(size_t j = 0; j != 12; j += 3) - { - const uint16_t* RK = &m_EK[8 * j]; - - B1 ^= B0 & RK[0]; - B0 ^= B1 | RK[1]; - B3 ^= B2 & RK[2]; - B2 ^= B3 | RK[3]; - - uint16_t T0, T1; - - T0 = FI(B0 ^ RK[ 4], RK[ 5], RK[ 6]) ^ B1; - T1 = FI(B1 ^ RK[ 7], RK[ 8], RK[ 9]) ^ T0; - T0 = FI(T0 ^ RK[10], RK[11], RK[12]) ^ T1; - - B2 ^= T1 ^ RK[13]; - B3 ^= T0; - - T0 = FI(B2 ^ RK[14], RK[15], RK[16]) ^ B3; - T1 = FI(B3 ^ RK[17], RK[18], RK[19]) ^ T0; - T0 = FI(T0 ^ RK[20], RK[21], RK[22]) ^ T1; - - B0 ^= T1 ^ RK[23]; - B1 ^= T0; - } - - B1 ^= B0 & m_EK[96]; - B0 ^= B1 | m_EK[97]; - B3 ^= B2 & m_EK[98]; - B2 ^= B3 | m_EK[99]; - - store_be(out, B2, B3, B0, B1); - - in += BLOCK_SIZE; - out += BLOCK_SIZE; - } - } - -/* -* MISTY1 Decryption -*/ -void MISTY1::decrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const - { - verify_key_set(m_DK.empty() == false); - - for(size_t i = 0; i != blocks; ++i) - { - uint16_t B0 = load_be<uint16_t>(in, 2); - uint16_t B1 = load_be<uint16_t>(in, 3); - uint16_t B2 = load_be<uint16_t>(in, 0); - uint16_t B3 = load_be<uint16_t>(in, 1); - - for(size_t j = 0; j != 12; j += 3) - { - const uint16_t* RK = &m_DK[8 * j]; - - B2 ^= B3 | RK[0]; - B3 ^= B2 & RK[1]; - B0 ^= B1 | RK[2]; - B1 ^= B0 & RK[3]; - - uint16_t T0, T1; - - T0 = FI(B2 ^ RK[ 4], RK[ 5], RK[ 6]) ^ B3; - T1 = FI(B3 ^ RK[ 7], RK[ 8], RK[ 9]) ^ T0; - T0 = FI(T0 ^ RK[10], RK[11], RK[12]) ^ T1; - - B0 ^= T1 ^ RK[13]; - B1 ^= T0; - - T0 = FI(B0 ^ RK[14], RK[15], RK[16]) ^ B1; - T1 = FI(B1 ^ RK[17], RK[18], RK[19]) ^ T0; - T0 = FI(T0 ^ RK[20], RK[21], RK[22]) ^ T1; - - B2 ^= T1 ^ RK[23]; - B3 ^= T0; - } - - B2 ^= B3 | m_DK[96]; - B3 ^= B2 & m_DK[97]; - B0 ^= B1 | m_DK[98]; - B1 ^= B0 & m_DK[99]; - - store_be(out, B0, B1, B2, B3); - - in += BLOCK_SIZE; - out += BLOCK_SIZE; - } - } - -/* -* MISTY1 Key Schedule -*/ -void MISTY1::key_schedule(const uint8_t key[], size_t length) - { - secure_vector<uint16_t> KS(32); - for(size_t i = 0; i != length / 2; ++i) - KS[i] = load_be<uint16_t>(key, i); - - for(size_t i = 0; i != 8; ++i) - { - KS[i+ 8] = FI(KS[i], KS[(i+1) % 8] >> 9, KS[(i+1) % 8] & 0x1FF); - KS[i+16] = KS[i+8] >> 9; - KS[i+24] = KS[i+8] & 0x1FF; - } - - /* - * Precomputed indexes for the orderings of the subkeys (MISTY1 reuses - * values) - */ - static const uint8_t EK_ORDER[100] = { - 0x00, 0x0E, 0x0A, 0x04, 0x00, 0x15, 0x1D, 0x02, 0x11, 0x19, 0x07, 0x13, - 0x1B, 0x04, 0x01, 0x16, 0x1E, 0x03, 0x12, 0x1A, 0x00, 0x14, 0x1C, 0x05, - 0x01, 0x0F, 0x0B, 0x05, 0x02, 0x17, 0x1F, 0x04, 0x13, 0x1B, 0x01, 0x15, - 0x1D, 0x06, 0x03, 0x10, 0x18, 0x05, 0x14, 0x1C, 0x02, 0x16, 0x1E, 0x07, - 0x02, 0x08, 0x0C, 0x06, 0x04, 0x11, 0x19, 0x06, 0x15, 0x1D, 0x03, 0x17, - 0x1F, 0x00, 0x05, 0x12, 0x1A, 0x07, 0x16, 0x1E, 0x04, 0x10, 0x18, 0x01, - 0x03, 0x09, 0x0D, 0x07, 0x06, 0x13, 0x1B, 0x00, 0x17, 0x1F, 0x05, 0x11, - 0x19, 0x02, 0x07, 0x14, 0x1C, 0x01, 0x10, 0x18, 0x06, 0x12, 0x1A, 0x03, - 0x04, 0x0A, 0x0E, 0x00 }; - - static const uint8_t DK_ORDER[100] = { - 0x00, 0x0E, 0x0A, 0x04, 0x07, 0x14, 0x1C, 0x01, 0x10, 0x18, 0x06, 0x12, - 0x1A, 0x03, 0x06, 0x13, 0x1B, 0x00, 0x17, 0x1F, 0x05, 0x11, 0x19, 0x02, - 0x07, 0x0D, 0x09, 0x03, 0x05, 0x12, 0x1A, 0x07, 0x16, 0x1E, 0x04, 0x10, - 0x18, 0x01, 0x04, 0x11, 0x19, 0x06, 0x15, 0x1D, 0x03, 0x17, 0x1F, 0x00, - 0x06, 0x0C, 0x08, 0x02, 0x03, 0x10, 0x18, 0x05, 0x14, 0x1C, 0x02, 0x16, - 0x1E, 0x07, 0x02, 0x17, 0x1F, 0x04, 0x13, 0x1B, 0x01, 0x15, 0x1D, 0x06, - 0x05, 0x0B, 0x0F, 0x01, 0x01, 0x16, 0x1E, 0x03, 0x12, 0x1A, 0x00, 0x14, - 0x1C, 0x05, 0x00, 0x15, 0x1D, 0x02, 0x11, 0x19, 0x07, 0x13, 0x1B, 0x04, - 0x04, 0x0A, 0x0E, 0x00 }; - - m_EK.resize(100); - m_DK.resize(100); - - for(size_t i = 0; i != 100; ++i) - { - m_EK[i] = KS[EK_ORDER[i]]; - m_DK[i] = KS[DK_ORDER[i]]; - } - } - -void MISTY1::clear() - { - zap(m_EK); - zap(m_DK); - } - -} diff --git a/src/lib/block/misty1/misty1.h b/src/lib/block/misty1/misty1.h deleted file mode 100644 index b6c4abbd5..000000000 --- a/src/lib/block/misty1/misty1.h +++ /dev/null @@ -1,37 +0,0 @@ -/* -* MISTY1 -* (C) 1999-2008 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#ifndef BOTAN_MISTY1_H_ -#define BOTAN_MISTY1_H_ - -#include <botan/block_cipher.h> - -BOTAN_FUTURE_INTERNAL_HEADER(misty1.h) - -namespace Botan { - -/** -* MISTY1 with 8 rounds -*/ -class BOTAN_PUBLIC_API(2,0) MISTY1 final : public Block_Cipher_Fixed_Params<8, 16> - { - public: - void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; - void decrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; - - void clear() override; - std::string name() const override { return "MISTY1"; } - BlockCipher* clone() const override { return new MISTY1; } - private: - void key_schedule(const uint8_t[], size_t) override; - - secure_vector<uint16_t> m_EK, m_DK; - }; - -} - -#endif diff --git a/src/lib/block/threefish_512/threefish.h b/src/lib/block/threefish_512/threefish.h deleted file mode 100644 index f866a717f..000000000 --- a/src/lib/block/threefish_512/threefish.h +++ /dev/null @@ -1,17 +0,0 @@ -/* -* Threefish -* (C) 2013,2014 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#ifndef BOTAN_THREEFISH_H_ -#define BOTAN_THREEFISH_H_ - -// This header is deprecated and will be removed in a future major release - -#include <botan/threefish_512.h> - -BOTAN_DEPRECATED_HEADER(threefish.h) - -#endif diff --git a/src/lib/block/xtea/info.txt b/src/lib/block/xtea/info.txt deleted file mode 100644 index b9b9ad365..000000000 --- a/src/lib/block/xtea/info.txt +++ /dev/null @@ -1,3 +0,0 @@ -<defines> -XTEA -> 20131128 -</defines> diff --git a/src/lib/block/xtea/xtea.cpp b/src/lib/block/xtea/xtea.cpp deleted file mode 100644 index 7d815529f..000000000 --- a/src/lib/block/xtea/xtea.cpp +++ /dev/null @@ -1,134 +0,0 @@ -/* -* XTEA -* (C) 1999-2009,2016 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#include <botan/xtea.h> -#include <botan/loadstor.h> - -namespace Botan { - -/* -* XTEA Encryption -*/ -void XTEA::encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const - { - verify_key_set(m_EK.empty() == false); - - const uint32_t* EK = &m_EK[0]; - - const size_t blocks4 = blocks / 4; - const size_t blocks_left = blocks % 4; - - BOTAN_PARALLEL_FOR(size_t i = 0; i < blocks4; i++) - { - uint32_t L0, R0, L1, R1, L2, R2, L3, R3; - load_be(in + 4*BLOCK_SIZE*i, L0, R0, L1, R1, L2, R2, L3, R3); - - for(size_t r = 0; r != 32; ++r) - { - L0 += (((R0 << 4) ^ (R0 >> 5)) + R0) ^ EK[2*r]; - L1 += (((R1 << 4) ^ (R1 >> 5)) + R1) ^ EK[2*r]; - L2 += (((R2 << 4) ^ (R2 >> 5)) + R2) ^ EK[2*r]; - L3 += (((R3 << 4) ^ (R3 >> 5)) + R3) ^ EK[2*r]; - - R0 += (((L0 << 4) ^ (L0 >> 5)) + L0) ^ EK[2*r+1]; - R1 += (((L1 << 4) ^ (L1 >> 5)) + L1) ^ EK[2*r+1]; - R2 += (((L2 << 4) ^ (L2 >> 5)) + L2) ^ EK[2*r+1]; - R3 += (((L3 << 4) ^ (L3 >> 5)) + L3) ^ EK[2*r+1]; - } - - store_be(out + 4*BLOCK_SIZE*i, L0, R0, L1, R1, L2, R2, L3, R3); - } - - BOTAN_PARALLEL_FOR(size_t i = 0; i < blocks_left; ++i) - { - uint32_t L, R; - load_be(in + BLOCK_SIZE*(4*blocks4+i), L, R); - - for(size_t r = 0; r != 32; ++r) - { - L += (((R << 4) ^ (R >> 5)) + R) ^ EK[2*r]; - R += (((L << 4) ^ (L >> 5)) + L) ^ EK[2*r+1]; - } - - store_be(out + BLOCK_SIZE*(4*blocks4+i), L, R); - } - } - -/* -* XTEA Decryption -*/ -void XTEA::decrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const - { - verify_key_set(m_EK.empty() == false); - - const uint32_t* EK = &m_EK[0]; - - const size_t blocks4 = blocks / 4; - const size_t blocks_left = blocks % 4; - - BOTAN_PARALLEL_FOR(size_t i = 0; i < blocks4; i++) - { - uint32_t L0, R0, L1, R1, L2, R2, L3, R3; - load_be(in + 4*BLOCK_SIZE*i, L0, R0, L1, R1, L2, R2, L3, R3); - - for(size_t r = 0; r != 32; ++r) - { - R0 -= (((L0 << 4) ^ (L0 >> 5)) + L0) ^ EK[63 - 2*r]; - R1 -= (((L1 << 4) ^ (L1 >> 5)) + L1) ^ EK[63 - 2*r]; - R2 -= (((L2 << 4) ^ (L2 >> 5)) + L2) ^ EK[63 - 2*r]; - R3 -= (((L3 << 4) ^ (L3 >> 5)) + L3) ^ EK[63 - 2*r]; - - L0 -= (((R0 << 4) ^ (R0 >> 5)) + R0) ^ EK[62 - 2*r]; - L1 -= (((R1 << 4) ^ (R1 >> 5)) + R1) ^ EK[62 - 2*r]; - L2 -= (((R2 << 4) ^ (R2 >> 5)) + R2) ^ EK[62 - 2*r]; - L3 -= (((R3 << 4) ^ (R3 >> 5)) + R3) ^ EK[62 - 2*r]; - } - - store_be(out + 4*BLOCK_SIZE*i, L0, R0, L1, R1, L2, R2, L3, R3); - } - - BOTAN_PARALLEL_FOR(size_t i = 0; i < blocks_left; ++i) - { - uint32_t L, R; - load_be(in + BLOCK_SIZE*(4*blocks4+i), L, R); - - for(size_t r = 0; r != 32; ++r) - { - R -= (((L << 4) ^ (L >> 5)) + L) ^ m_EK[63 - 2*r]; - L -= (((R << 4) ^ (R >> 5)) + R) ^ m_EK[62 - 2*r]; - } - - store_be(out + BLOCK_SIZE*(4*blocks4+i), L, R); - } - } - -/* -* XTEA Key Schedule -*/ -void XTEA::key_schedule(const uint8_t key[], size_t) - { - m_EK.resize(64); - - secure_vector<uint32_t> UK(4); - for(size_t i = 0; i != 4; ++i) - UK[i] = load_be<uint32_t>(key, i); - - uint32_t D = 0; - for(size_t i = 0; i != 64; i += 2) - { - m_EK[i ] = D + UK[D % 4]; - D += 0x9E3779B9; - m_EK[i+1] = D + UK[(D >> 11) % 4]; - } - } - -void XTEA::clear() - { - zap(m_EK); - } - -} diff --git a/src/lib/block/xtea/xtea.h b/src/lib/block/xtea/xtea.h deleted file mode 100644 index bae0bc7e6..000000000 --- a/src/lib/block/xtea/xtea.h +++ /dev/null @@ -1,37 +0,0 @@ -/* -* XTEA -* (C) 1999-2007 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#ifndef BOTAN_XTEA_H_ -#define BOTAN_XTEA_H_ - -#include <botan/block_cipher.h> - -BOTAN_FUTURE_INTERNAL_HEADER(xtea.h) - -namespace Botan { - -/** -* XTEA -*/ -class BOTAN_PUBLIC_API(2,0) XTEA final : public Block_Cipher_Fixed_Params<8, 16> - { - public: - void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; - void decrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; - - void clear() override; - std::string name() const override { return "XTEA"; } - BlockCipher* clone() const override { return new XTEA; } - - private: - void key_schedule(const uint8_t[], size_t) override; - secure_vector<uint32_t> m_EK; - }; - -} - -#endif diff --git a/src/lib/ffi/ffi.h b/src/lib/ffi/ffi.h index cf8931acf..09a77ca1e 100644 --- a/src/lib/ffi/ffi.h +++ b/src/lib/ffi/ffi.h @@ -1480,11 +1480,9 @@ BOTAN_PUBLIC_API(2,0) int botan_pkcs_hash_id(const char* hash_name, uint8_t pkcs /* -* -* @param mce_key must be a McEliece key -* ct_len should be pt_len + n/8 + a few? +* Always returns BOTAN_FFI_ERROR_NOT_IMPLEMENTED */ -BOTAN_PUBLIC_API(2,0) BOTAN_DEPRECATED("Poorly specified, avoid in new code") +BOTAN_PUBLIC_API(2,0) BOTAN_DEPRECATED("No longer implemented") int botan_mceies_encrypt(botan_pubkey_t mce_key, botan_rng_t rng, const char* aead, @@ -1492,7 +1490,10 @@ int botan_mceies_encrypt(botan_pubkey_t mce_key, const uint8_t ad[], size_t ad_len, uint8_t ct[], size_t* ct_len); -BOTAN_PUBLIC_API(2,0) BOTAN_DEPRECATED("Poorly specified, avoid in new code") +/* +* Always returns BOTAN_FFI_ERROR_NOT_IMPLEMENTED +*/ +BOTAN_PUBLIC_API(2,0) BOTAN_DEPRECATED("No longer implemented") int botan_mceies_decrypt(botan_privkey_t mce_key, const char* aead, const uint8_t ct[], size_t ct_len, diff --git a/src/lib/ffi/ffi_pkey_algs.cpp b/src/lib/ffi/ffi_pkey_algs.cpp index 9f5d54310..fe9456d93 100644 --- a/src/lib/ffi/ffi_pkey_algs.cpp +++ b/src/lib/ffi/ffi_pkey_algs.cpp @@ -58,10 +58,6 @@ #include <botan/mceliece.h> #endif -#if defined(BOTAN_HAS_MCEIES) - #include <botan/mceies.h> -#endif - #if defined(BOTAN_HAS_DIFFIE_HELLMAN) #include <botan/dh.h> #endif @@ -937,20 +933,8 @@ int botan_mceies_decrypt(botan_privkey_t mce_key_obj, const uint8_t ad[], size_t ad_len, uint8_t out[], size_t* out_len) { - return ffi_guard_thunk(__func__, [=]() -> int { - Botan::Private_Key& key = safe_get(mce_key_obj); - -#if defined(BOTAN_HAS_MCELIECE) && defined(BOTAN_HAS_MCEIES) - Botan::McEliece_PrivateKey* mce = dynamic_cast<Botan::McEliece_PrivateKey*>(&key); - if(!mce) - return BOTAN_FFI_ERROR_BAD_PARAMETER; - - const Botan::secure_vector<uint8_t> pt = mceies_decrypt(*mce, ct, ct_len, ad, ad_len, aead); - return write_vec_output(out, out_len, pt); -#else - return BOTAN_FFI_ERROR_NOT_IMPLEMENTED; -#endif - }); + BOTAN_UNUSED(mce_key_obj, aead, ct, ct_len, ad, ad_len, out, out_len); + return BOTAN_FFI_ERROR_NOT_IMPLEMENTED; } int botan_mceies_encrypt(botan_pubkey_t mce_key_obj, @@ -960,21 +944,8 @@ int botan_mceies_encrypt(botan_pubkey_t mce_key_obj, const uint8_t ad[], size_t ad_len, uint8_t out[], size_t* out_len) { - return ffi_guard_thunk(__func__, [=]() -> int { - Botan::Public_Key& key = safe_get(mce_key_obj); - Botan::RandomNumberGenerator& rng = safe_get(rng_obj); - -#if defined(BOTAN_HAS_MCELIECE) && defined(BOTAN_HAS_MCEIES) - Botan::McEliece_PublicKey* mce = dynamic_cast<Botan::McEliece_PublicKey*>(&key); - if(!mce) - return BOTAN_FFI_ERROR_BAD_PARAMETER; - - Botan::secure_vector<uint8_t> ct = mceies_encrypt(*mce, pt, pt_len, ad, ad_len, rng, aead); - return write_vec_output(out, out_len, ct); -#else - return BOTAN_FFI_ERROR_NOT_IMPLEMENTED; -#endif - }); + BOTAN_UNUSED(mce_key_obj, rng_obj, aead, pt, pt_len, ad, ad_len, out, out_len); + return BOTAN_FFI_ERROR_NOT_IMPLEMENTED; } } diff --git a/src/lib/hash/hash.cpp b/src/lib/hash/hash.cpp index 63218006c..2293059ca 100644 --- a/src/lib/hash/hash.cpp +++ b/src/lib/hash/hash.cpp @@ -73,10 +73,6 @@ #include <botan/sm3.h> #endif -#if defined(BOTAN_HAS_TIGER) - #include <botan/tiger.h> -#endif - #if defined(BOTAN_HAS_WHIRLPOOL) #include <botan/whrlpool.h> #endif @@ -228,15 +224,6 @@ std::unique_ptr<HashFunction> HashFunction::create(const std::string& algo_spec, const SCAN_Name req(algo_spec); -#if defined(BOTAN_HAS_TIGER) - if(req.algo_name() == "Tiger") - { - return std::unique_ptr<HashFunction>( - new Tiger(req.arg_as_integer(0, 24), - req.arg_as_integer(1, 3))); - } -#endif - #if defined(BOTAN_HAS_SKEIN_512) if(req.algo_name() == "Skein-512") { @@ -270,13 +257,13 @@ std::unique_ptr<HashFunction> HashFunction::create(const std::string& algo_spec, #endif #if defined(BOTAN_HAS_SHAKE) - if(req.algo_name() == "SHAKE-128") + if(req.algo_name() == "SHAKE-128" && req.arg_count() == 1) { - return std::unique_ptr<HashFunction>(new SHAKE_128(req.arg_as_integer(0, 128))); + return std::unique_ptr<HashFunction>(new SHAKE_128(req.arg_as_integer(0))); } - if(req.algo_name() == "SHAKE-256") + if(req.algo_name() == "SHAKE-256" && req.arg_count() == 1) { - return std::unique_ptr<HashFunction>(new SHAKE_256(req.arg_as_integer(0, 256))); + return std::unique_ptr<HashFunction>(new SHAKE_256(req.arg_as_integer(0))); } #endif diff --git a/src/lib/hash/tiger/info.txt b/src/lib/hash/tiger/info.txt deleted file mode 100644 index a244b2f0b..000000000 --- a/src/lib/hash/tiger/info.txt +++ /dev/null @@ -1,7 +0,0 @@ -<defines> -TIGER -> 20131128 -</defines> - -<requires> -mdx_hash -</requires> diff --git a/src/lib/hash/tiger/tig_tab.cpp b/src/lib/hash/tiger/tig_tab.cpp deleted file mode 100644 index 3d1dc1eeb..000000000 --- a/src/lib/hash/tiger/tig_tab.cpp +++ /dev/null @@ -1,364 +0,0 @@ -/* -* S-Box Tables for Tiger -* (C) 1999-2007 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#include <botan/tiger.h> - -namespace Botan { - -const uint64_t Tiger::SBOX1[256] = { - 0x02AAB17CF7E90C5E, 0xAC424B03E243A8EC, 0x72CD5BE30DD5FCD3, - 0x6D019B93F6F97F3A, 0xCD9978FFD21F9193, 0x7573A1C9708029E2, - 0xB164326B922A83C3, 0x46883EEE04915870, 0xEAACE3057103ECE6, - 0xC54169B808A3535C, 0x4CE754918DDEC47C, 0x0AA2F4DFDC0DF40C, - 0x10B76F18A74DBEFA, 0xC6CCB6235AD1AB6A, 0x13726121572FE2FF, - 0x1A488C6F199D921E, 0x4BC9F9F4DA0007CA, 0x26F5E6F6E85241C7, - 0x859079DBEA5947B6, 0x4F1885C5C99E8C92, 0xD78E761EA96F864B, - 0x8E36428C52B5C17D, 0x69CF6827373063C1, 0xB607C93D9BB4C56E, - 0x7D820E760E76B5EA, 0x645C9CC6F07FDC42, 0xBF38A078243342E0, - 0x5F6B343C9D2E7D04, 0xF2C28AEB600B0EC6, 0x6C0ED85F7254BCAC, - 0x71592281A4DB4FE5, 0x1967FA69CE0FED9F, 0xFD5293F8B96545DB, - 0xC879E9D7F2A7600B, 0x860248920193194E, 0xA4F9533B2D9CC0B3, - 0x9053836C15957613, 0xDB6DCF8AFC357BF1, 0x18BEEA7A7A370F57, - 0x037117CA50B99066, 0x6AB30A9774424A35, 0xF4E92F02E325249B, - 0x7739DB07061CCAE1, 0xD8F3B49CECA42A05, 0xBD56BE3F51382F73, - 0x45FAED5843B0BB28, 0x1C813D5C11BF1F83, 0x8AF0E4B6D75FA169, - 0x33EE18A487AD9999, 0x3C26E8EAB1C94410, 0xB510102BC0A822F9, - 0x141EEF310CE6123B, 0xFC65B90059DDB154, 0xE0158640C5E0E607, - 0x884E079826C3A3CF, 0x930D0D9523C535FD, 0x35638D754E9A2B00, - 0x4085FCCF40469DD5, 0xC4B17AD28BE23A4C, 0xCAB2F0FC6A3E6A2E, - 0x2860971A6B943FCD, 0x3DDE6EE212E30446, 0x6222F32AE01765AE, - 0x5D550BB5478308FE, 0xA9EFA98DA0EDA22A, 0xC351A71686C40DA7, - 0x1105586D9C867C84, 0xDCFFEE85FDA22853, 0xCCFBD0262C5EEF76, - 0xBAF294CB8990D201, 0xE69464F52AFAD975, 0x94B013AFDF133E14, - 0x06A7D1A32823C958, 0x6F95FE5130F61119, 0xD92AB34E462C06C0, - 0xED7BDE33887C71D2, 0x79746D6E6518393E, 0x5BA419385D713329, - 0x7C1BA6B948A97564, 0x31987C197BFDAC67, 0xDE6C23C44B053D02, - 0x581C49FED002D64D, 0xDD474D6338261571, 0xAA4546C3E473D062, - 0x928FCE349455F860, 0x48161BBACAAB94D9, 0x63912430770E6F68, - 0x6EC8A5E602C6641C, 0x87282515337DDD2B, 0x2CDA6B42034B701B, - 0xB03D37C181CB096D, 0xE108438266C71C6F, 0x2B3180C7EB51B255, - 0xDF92B82F96C08BBC, 0x5C68C8C0A632F3BA, 0x5504CC861C3D0556, - 0xABBFA4E55FB26B8F, 0x41848B0AB3BACEB4, 0xB334A273AA445D32, - 0xBCA696F0A85AD881, 0x24F6EC65B528D56C, 0x0CE1512E90F4524A, - 0x4E9DD79D5506D35A, 0x258905FAC6CE9779, 0x2019295B3E109B33, - 0xF8A9478B73A054CC, 0x2924F2F934417EB0, 0x3993357D536D1BC4, - 0x38A81AC21DB6FF8B, 0x47C4FBF17D6016BF, 0x1E0FAADD7667E3F5, - 0x7ABCFF62938BEB96, 0xA78DAD948FC179C9, 0x8F1F98B72911E50D, - 0x61E48EAE27121A91, 0x4D62F7AD31859808, 0xECEBA345EF5CEAEB, - 0xF5CEB25EBC9684CE, 0xF633E20CB7F76221, 0xA32CDF06AB8293E4, - 0x985A202CA5EE2CA4, 0xCF0B8447CC8A8FB1, 0x9F765244979859A3, - 0xA8D516B1A1240017, 0x0BD7BA3EBB5DC726, 0xE54BCA55B86ADB39, - 0x1D7A3AFD6C478063, 0x519EC608E7669EDD, 0x0E5715A2D149AA23, - 0x177D4571848FF194, 0xEEB55F3241014C22, 0x0F5E5CA13A6E2EC2, - 0x8029927B75F5C361, 0xAD139FABC3D6E436, 0x0D5DF1A94CCF402F, - 0x3E8BD948BEA5DFC8, 0xA5A0D357BD3FF77E, 0xA2D12E251F74F645, - 0x66FD9E525E81A082, 0x2E0C90CE7F687A49, 0xC2E8BCBEBA973BC5, - 0x000001BCE509745F, 0x423777BBE6DAB3D6, 0xD1661C7EAEF06EB5, - 0xA1781F354DAACFD8, 0x2D11284A2B16AFFC, 0xF1FC4F67FA891D1F, - 0x73ECC25DCB920ADA, 0xAE610C22C2A12651, 0x96E0A810D356B78A, - 0x5A9A381F2FE7870F, 0xD5AD62EDE94E5530, 0xD225E5E8368D1427, - 0x65977B70C7AF4631, 0x99F889B2DE39D74F, 0x233F30BF54E1D143, - 0x9A9675D3D9A63C97, 0x5470554FF334F9A8, 0x166ACB744A4F5688, - 0x70C74CAAB2E4AEAD, 0xF0D091646F294D12, 0x57B82A89684031D1, - 0xEFD95A5A61BE0B6B, 0x2FBD12E969F2F29A, 0x9BD37013FEFF9FE8, - 0x3F9B0404D6085A06, 0x4940C1F3166CFE15, 0x09542C4DCDF3DEFB, - 0xB4C5218385CD5CE3, 0xC935B7DC4462A641, 0x3417F8A68ED3B63F, - 0xB80959295B215B40, 0xF99CDAEF3B8C8572, 0x018C0614F8FCB95D, - 0x1B14ACCD1A3ACDF3, 0x84D471F200BB732D, 0xC1A3110E95E8DA16, - 0x430A7220BF1A82B8, 0xB77E090D39DF210E, 0x5EF4BD9F3CD05E9D, - 0x9D4FF6DA7E57A444, 0xDA1D60E183D4A5F8, 0xB287C38417998E47, - 0xFE3EDC121BB31886, 0xC7FE3CCC980CCBEF, 0xE46FB590189BFD03, - 0x3732FD469A4C57DC, 0x7EF700A07CF1AD65, 0x59C64468A31D8859, - 0x762FB0B4D45B61F6, 0x155BAED099047718, 0x68755E4C3D50BAA6, - 0xE9214E7F22D8B4DF, 0x2ADDBF532EAC95F4, 0x32AE3909B4BD0109, - 0x834DF537B08E3450, 0xFA209DA84220728D, 0x9E691D9B9EFE23F7, - 0x0446D288C4AE8D7F, 0x7B4CC524E169785B, 0x21D87F0135CA1385, - 0xCEBB400F137B8AA5, 0x272E2B66580796BE, 0x3612264125C2B0DE, - 0x057702BDAD1EFBB2, 0xD4BABB8EACF84BE9, 0x91583139641BC67B, - 0x8BDC2DE08036E024, 0x603C8156F49F68ED, 0xF7D236F7DBEF5111, - 0x9727C4598AD21E80, 0xA08A0896670A5FD7, 0xCB4A8F4309EBA9CB, - 0x81AF564B0F7036A1, 0xC0B99AA778199ABD, 0x959F1EC83FC8E952, - 0x8C505077794A81B9, 0x3ACAAF8F056338F0, 0x07B43F50627A6778, - 0x4A44AB49F5ECCC77, 0x3BC3D6E4B679EE98, 0x9CC0D4D1CF14108C, - 0x4406C00B206BC8A0, 0x82A18854C8D72D89, 0x67E366B35C3C432C, - 0xB923DD61102B37F2, 0x56AB2779D884271D, 0xBE83E1B0FF1525AF, - 0xFB7C65D4217E49A9, 0x6BDBE0E76D48E7D4, 0x08DF828745D9179E, - 0x22EA6A9ADD53BD34, 0xE36E141C5622200A, 0x7F805D1B8CB750EE, - 0xAFE5C7A59F58E837, 0xE27F996A4FB1C23C, 0xD3867DFB0775F0D0, - 0xD0E673DE6E88891A, 0x123AEB9EAFB86C25, 0x30F1D5D5C145B895, - 0xBB434A2DEE7269E7, 0x78CB67ECF931FA38, 0xF33B0372323BBF9C, - 0x52D66336FB279C74, 0x505F33AC0AFB4EAA, 0xE8A5CD99A2CCE187, - 0x534974801E2D30BB, 0x8D2D5711D5876D90, 0x1F1A412891BC038E, - 0xD6E2E71D82E56648, 0x74036C3A497732B7, 0x89B67ED96361F5AB, - 0xFFED95D8F1EA02A2, 0xE72B3BD61464D43D, 0xA6300F170BDC4820, - 0xEBC18760ED78A77A }; - -const uint64_t Tiger::SBOX2[256] = { - 0xE6A6BE5A05A12138, 0xB5A122A5B4F87C98, 0x563C6089140B6990, - 0x4C46CB2E391F5DD5, 0xD932ADDBC9B79434, 0x08EA70E42015AFF5, - 0xD765A6673E478CF1, 0xC4FB757EAB278D99, 0xDF11C6862D6E0692, - 0xDDEB84F10D7F3B16, 0x6F2EF604A665EA04, 0x4A8E0F0FF0E0DFB3, - 0xA5EDEEF83DBCBA51, 0xFC4F0A2A0EA4371E, 0xE83E1DA85CB38429, - 0xDC8FF882BA1B1CE2, 0xCD45505E8353E80D, 0x18D19A00D4DB0717, - 0x34A0CFEDA5F38101, 0x0BE77E518887CAF2, 0x1E341438B3C45136, - 0xE05797F49089CCF9, 0xFFD23F9DF2591D14, 0x543DDA228595C5CD, - 0x661F81FD99052A33, 0x8736E641DB0F7B76, 0x15227725418E5307, - 0xE25F7F46162EB2FA, 0x48A8B2126C13D9FE, 0xAFDC541792E76EEA, - 0x03D912BFC6D1898F, 0x31B1AAFA1B83F51B, 0xF1AC2796E42AB7D9, - 0x40A3A7D7FCD2EBAC, 0x1056136D0AFBBCC5, 0x7889E1DD9A6D0C85, - 0xD33525782A7974AA, 0xA7E25D09078AC09B, 0xBD4138B3EAC6EDD0, - 0x920ABFBE71EB9E70, 0xA2A5D0F54FC2625C, 0xC054E36B0B1290A3, - 0xF6DD59FF62FE932B, 0x3537354511A8AC7D, 0xCA845E9172FADCD4, - 0x84F82B60329D20DC, 0x79C62CE1CD672F18, 0x8B09A2ADD124642C, - 0xD0C1E96A19D9E726, 0x5A786A9B4BA9500C, 0x0E020336634C43F3, - 0xC17B474AEB66D822, 0x6A731AE3EC9BAAC2, 0x8226667AE0840258, - 0x67D4567691CAECA5, 0x1D94155C4875ADB5, 0x6D00FD985B813FDF, - 0x51286EFCB774CD06, 0x5E8834471FA744AF, 0xF72CA0AEE761AE2E, - 0xBE40E4CDAEE8E09A, 0xE9970BBB5118F665, 0x726E4BEB33DF1964, - 0x703B000729199762, 0x4631D816F5EF30A7, 0xB880B5B51504A6BE, - 0x641793C37ED84B6C, 0x7B21ED77F6E97D96, 0x776306312EF96B73, - 0xAE528948E86FF3F4, 0x53DBD7F286A3F8F8, 0x16CADCE74CFC1063, - 0x005C19BDFA52C6DD, 0x68868F5D64D46AD3, 0x3A9D512CCF1E186A, - 0x367E62C2385660AE, 0xE359E7EA77DCB1D7, 0x526C0773749ABE6E, - 0x735AE5F9D09F734B, 0x493FC7CC8A558BA8, 0xB0B9C1533041AB45, - 0x321958BA470A59BD, 0x852DB00B5F46C393, 0x91209B2BD336B0E5, - 0x6E604F7D659EF19F, 0xB99A8AE2782CCB24, 0xCCF52AB6C814C4C7, - 0x4727D9AFBE11727B, 0x7E950D0C0121B34D, 0x756F435670AD471F, - 0xF5ADD442615A6849, 0x4E87E09980B9957A, 0x2ACFA1DF50AEE355, - 0xD898263AFD2FD556, 0xC8F4924DD80C8FD6, 0xCF99CA3D754A173A, - 0xFE477BACAF91BF3C, 0xED5371F6D690C12D, 0x831A5C285E687094, - 0xC5D3C90A3708A0A4, 0x0F7F903717D06580, 0x19F9BB13B8FDF27F, - 0xB1BD6F1B4D502843, 0x1C761BA38FFF4012, 0x0D1530C4E2E21F3B, - 0x8943CE69A7372C8A, 0xE5184E11FEB5CE66, 0x618BDB80BD736621, - 0x7D29BAD68B574D0B, 0x81BB613E25E6FE5B, 0x071C9C10BC07913F, - 0xC7BEEB7909AC2D97, 0xC3E58D353BC5D757, 0xEB017892F38F61E8, - 0xD4EFFB9C9B1CC21A, 0x99727D26F494F7AB, 0xA3E063A2956B3E03, - 0x9D4A8B9A4AA09C30, 0x3F6AB7D500090FB4, 0x9CC0F2A057268AC0, - 0x3DEE9D2DEDBF42D1, 0x330F49C87960A972, 0xC6B2720287421B41, - 0x0AC59EC07C00369C, 0xEF4EAC49CB353425, 0xF450244EEF0129D8, - 0x8ACC46E5CAF4DEB6, 0x2FFEAB63989263F7, 0x8F7CB9FE5D7A4578, - 0x5BD8F7644E634635, 0x427A7315BF2DC900, 0x17D0C4AA2125261C, - 0x3992486C93518E50, 0xB4CBFEE0A2D7D4C3, 0x7C75D6202C5DDD8D, - 0xDBC295D8E35B6C61, 0x60B369D302032B19, 0xCE42685FDCE44132, - 0x06F3DDB9DDF65610, 0x8EA4D21DB5E148F0, 0x20B0FCE62FCD496F, - 0x2C1B912358B0EE31, 0xB28317B818F5A308, 0xA89C1E189CA6D2CF, - 0x0C6B18576AAADBC8, 0xB65DEAA91299FAE3, 0xFB2B794B7F1027E7, - 0x04E4317F443B5BEB, 0x4B852D325939D0A6, 0xD5AE6BEEFB207FFC, - 0x309682B281C7D374, 0xBAE309A194C3B475, 0x8CC3F97B13B49F05, - 0x98A9422FF8293967, 0x244B16B01076FF7C, 0xF8BF571C663D67EE, - 0x1F0D6758EEE30DA1, 0xC9B611D97ADEB9B7, 0xB7AFD5887B6C57A2, - 0x6290AE846B984FE1, 0x94DF4CDEACC1A5FD, 0x058A5BD1C5483AFF, - 0x63166CC142BA3C37, 0x8DB8526EB2F76F40, 0xE10880036F0D6D4E, - 0x9E0523C9971D311D, 0x45EC2824CC7CD691, 0x575B8359E62382C9, - 0xFA9E400DC4889995, 0xD1823ECB45721568, 0xDAFD983B8206082F, - 0xAA7D29082386A8CB, 0x269FCD4403B87588, 0x1B91F5F728BDD1E0, - 0xE4669F39040201F6, 0x7A1D7C218CF04ADE, 0x65623C29D79CE5CE, - 0x2368449096C00BB1, 0xAB9BF1879DA503BA, 0xBC23ECB1A458058E, - 0x9A58DF01BB401ECC, 0xA070E868A85F143D, 0x4FF188307DF2239E, - 0x14D565B41A641183, 0xEE13337452701602, 0x950E3DCF3F285E09, - 0x59930254B9C80953, 0x3BF299408930DA6D, 0xA955943F53691387, - 0xA15EDECAA9CB8784, 0x29142127352BE9A0, 0x76F0371FFF4E7AFB, - 0x0239F450274F2228, 0xBB073AF01D5E868B, 0xBFC80571C10E96C1, - 0xD267088568222E23, 0x9671A3D48E80B5B0, 0x55B5D38AE193BB81, - 0x693AE2D0A18B04B8, 0x5C48B4ECADD5335F, 0xFD743B194916A1CA, - 0x2577018134BE98C4, 0xE77987E83C54A4AD, 0x28E11014DA33E1B9, - 0x270CC59E226AA213, 0x71495F756D1A5F60, 0x9BE853FB60AFEF77, - 0xADC786A7F7443DBF, 0x0904456173B29A82, 0x58BC7A66C232BD5E, - 0xF306558C673AC8B2, 0x41F639C6B6C9772A, 0x216DEFE99FDA35DA, - 0x11640CC71C7BE615, 0x93C43694565C5527, 0xEA038E6246777839, - 0xF9ABF3CE5A3E2469, 0x741E768D0FD312D2, 0x0144B883CED652C6, - 0xC20B5A5BA33F8552, 0x1AE69633C3435A9D, 0x97A28CA4088CFDEC, - 0x8824A43C1E96F420, 0x37612FA66EEEA746, 0x6B4CB165F9CF0E5A, - 0x43AA1C06A0ABFB4A, 0x7F4DC26FF162796B, 0x6CBACC8E54ED9B0F, - 0xA6B7FFEFD2BB253E, 0x2E25BC95B0A29D4F, 0x86D6A58BDEF1388C, - 0xDED74AC576B6F054, 0x8030BDBC2B45805D, 0x3C81AF70E94D9289, - 0x3EFF6DDA9E3100DB, 0xB38DC39FDFCC8847, 0x123885528D17B87E, - 0xF2DA0ED240B1B642, 0x44CEFADCD54BF9A9, 0x1312200E433C7EE6, - 0x9FFCC84F3A78C748, 0xF0CD1F72248576BB, 0xEC6974053638CFE4, - 0x2BA7B67C0CEC4E4C, 0xAC2F4DF3E5CE32ED, 0xCB33D14326EA4C11, - 0xA4E9044CC77E58BC, 0x5F513293D934FCEF, 0x5DC9645506E55444, - 0x50DE418F317DE40A, 0x388CB31A69DDE259, 0x2DB4A83455820A86, - 0x9010A91E84711AE9, 0x4DF7F0B7B1498371, 0xD62A2EABC0977179, - 0x22FAC097AA8D5C0E }; - -const uint64_t Tiger::SBOX3[256] = { - 0xF49FCC2FF1DAF39B, 0x487FD5C66FF29281, 0xE8A30667FCDCA83F, - 0x2C9B4BE3D2FCCE63, 0xDA3FF74B93FBBBC2, 0x2FA165D2FE70BA66, - 0xA103E279970E93D4, 0xBECDEC77B0E45E71, 0xCFB41E723985E497, - 0xB70AAA025EF75017, 0xD42309F03840B8E0, 0x8EFC1AD035898579, - 0x96C6920BE2B2ABC5, 0x66AF4163375A9172, 0x2174ABDCCA7127FB, - 0xB33CCEA64A72FF41, 0xF04A4933083066A5, 0x8D970ACDD7289AF5, - 0x8F96E8E031C8C25E, 0xF3FEC02276875D47, 0xEC7BF310056190DD, - 0xF5ADB0AEBB0F1491, 0x9B50F8850FD58892, 0x4975488358B74DE8, - 0xA3354FF691531C61, 0x0702BBE481D2C6EE, 0x89FB24057DEDED98, - 0xAC3075138596E902, 0x1D2D3580172772ED, 0xEB738FC28E6BC30D, - 0x5854EF8F63044326, 0x9E5C52325ADD3BBE, 0x90AA53CF325C4623, - 0xC1D24D51349DD067, 0x2051CFEEA69EA624, 0x13220F0A862E7E4F, - 0xCE39399404E04864, 0xD9C42CA47086FCB7, 0x685AD2238A03E7CC, - 0x066484B2AB2FF1DB, 0xFE9D5D70EFBF79EC, 0x5B13B9DD9C481854, - 0x15F0D475ED1509AD, 0x0BEBCD060EC79851, 0xD58C6791183AB7F8, - 0xD1187C5052F3EEE4, 0xC95D1192E54E82FF, 0x86EEA14CB9AC6CA2, - 0x3485BEB153677D5D, 0xDD191D781F8C492A, 0xF60866BAA784EBF9, - 0x518F643BA2D08C74, 0x8852E956E1087C22, 0xA768CB8DC410AE8D, - 0x38047726BFEC8E1A, 0xA67738B4CD3B45AA, 0xAD16691CEC0DDE19, - 0xC6D4319380462E07, 0xC5A5876D0BA61938, 0x16B9FA1FA58FD840, - 0x188AB1173CA74F18, 0xABDA2F98C99C021F, 0x3E0580AB134AE816, - 0x5F3B05B773645ABB, 0x2501A2BE5575F2F6, 0x1B2F74004E7E8BA9, - 0x1CD7580371E8D953, 0x7F6ED89562764E30, 0xB15926FF596F003D, - 0x9F65293DA8C5D6B9, 0x6ECEF04DD690F84C, 0x4782275FFF33AF88, - 0xE41433083F820801, 0xFD0DFE409A1AF9B5, 0x4325A3342CDB396B, - 0x8AE77E62B301B252, 0xC36F9E9F6655615A, 0x85455A2D92D32C09, - 0xF2C7DEA949477485, 0x63CFB4C133A39EBA, 0x83B040CC6EBC5462, - 0x3B9454C8FDB326B0, 0x56F56A9E87FFD78C, 0x2DC2940D99F42BC6, - 0x98F7DF096B096E2D, 0x19A6E01E3AD852BF, 0x42A99CCBDBD4B40B, - 0xA59998AF45E9C559, 0x366295E807D93186, 0x6B48181BFAA1F773, - 0x1FEC57E2157A0A1D, 0x4667446AF6201AD5, 0xE615EBCACFB0F075, - 0xB8F31F4F68290778, 0x22713ED6CE22D11E, 0x3057C1A72EC3C93B, - 0xCB46ACC37C3F1F2F, 0xDBB893FD02AAF50E, 0x331FD92E600B9FCF, - 0xA498F96148EA3AD6, 0xA8D8426E8B6A83EA, 0xA089B274B7735CDC, - 0x87F6B3731E524A11, 0x118808E5CBC96749, 0x9906E4C7B19BD394, - 0xAFED7F7E9B24A20C, 0x6509EADEEB3644A7, 0x6C1EF1D3E8EF0EDE, - 0xB9C97D43E9798FB4, 0xA2F2D784740C28A3, 0x7B8496476197566F, - 0x7A5BE3E6B65F069D, 0xF96330ED78BE6F10, 0xEEE60DE77A076A15, - 0x2B4BEE4AA08B9BD0, 0x6A56A63EC7B8894E, 0x02121359BA34FEF4, - 0x4CBF99F8283703FC, 0x398071350CAF30C8, 0xD0A77A89F017687A, - 0xF1C1A9EB9E423569, 0x8C7976282DEE8199, 0x5D1737A5DD1F7ABD, - 0x4F53433C09A9FA80, 0xFA8B0C53DF7CA1D9, 0x3FD9DCBC886CCB77, - 0xC040917CA91B4720, 0x7DD00142F9D1DCDF, 0x8476FC1D4F387B58, - 0x23F8E7C5F3316503, 0x032A2244E7E37339, 0x5C87A5D750F5A74B, - 0x082B4CC43698992E, 0xDF917BECB858F63C, 0x3270B8FC5BF86DDA, - 0x10AE72BB29B5DD76, 0x576AC94E7700362B, 0x1AD112DAC61EFB8F, - 0x691BC30EC5FAA427, 0xFF246311CC327143, 0x3142368E30E53206, - 0x71380E31E02CA396, 0x958D5C960AAD76F1, 0xF8D6F430C16DA536, - 0xC8FFD13F1BE7E1D2, 0x7578AE66004DDBE1, 0x05833F01067BE646, - 0xBB34B5AD3BFE586D, 0x095F34C9A12B97F0, 0x247AB64525D60CA8, - 0xDCDBC6F3017477D1, 0x4A2E14D4DECAD24D, 0xBDB5E6D9BE0A1EEB, - 0x2A7E70F7794301AB, 0xDEF42D8A270540FD, 0x01078EC0A34C22C1, - 0xE5DE511AF4C16387, 0x7EBB3A52BD9A330A, 0x77697857AA7D6435, - 0x004E831603AE4C32, 0xE7A21020AD78E312, 0x9D41A70C6AB420F2, - 0x28E06C18EA1141E6, 0xD2B28CBD984F6B28, 0x26B75F6C446E9D83, - 0xBA47568C4D418D7F, 0xD80BADBFE6183D8E, 0x0E206D7F5F166044, - 0xE258A43911CBCA3E, 0x723A1746B21DC0BC, 0xC7CAA854F5D7CDD3, - 0x7CAC32883D261D9C, 0x7690C26423BA942C, 0x17E55524478042B8, - 0xE0BE477656A2389F, 0x4D289B5E67AB2DA0, 0x44862B9C8FBBFD31, - 0xB47CC8049D141365, 0x822C1B362B91C793, 0x4EB14655FB13DFD8, - 0x1ECBBA0714E2A97B, 0x6143459D5CDE5F14, 0x53A8FBF1D5F0AC89, - 0x97EA04D81C5E5B00, 0x622181A8D4FDB3F3, 0xE9BCD341572A1208, - 0x1411258643CCE58A, 0x9144C5FEA4C6E0A4, 0x0D33D06565CF620F, - 0x54A48D489F219CA1, 0xC43E5EAC6D63C821, 0xA9728B3A72770DAF, - 0xD7934E7B20DF87EF, 0xE35503B61A3E86E5, 0xCAE321FBC819D504, - 0x129A50B3AC60BFA6, 0xCD5E68EA7E9FB6C3, 0xB01C90199483B1C7, - 0x3DE93CD5C295376C, 0xAED52EDF2AB9AD13, 0x2E60F512C0A07884, - 0xBC3D86A3E36210C9, 0x35269D9B163951CE, 0x0C7D6E2AD0CDB5FA, - 0x59E86297D87F5733, 0x298EF221898DB0E7, 0x55000029D1A5AA7E, - 0x8BC08AE1B5061B45, 0xC2C31C2B6C92703A, 0x94CC596BAF25EF42, - 0x0A1D73DB22540456, 0x04B6A0F9D9C4179A, 0xEFFDAFA2AE3D3C60, - 0xF7C8075BB49496C4, 0x9CC5C7141D1CD4E3, 0x78BD1638218E5534, - 0xB2F11568F850246A, 0xEDFABCFA9502BC29, 0x796CE5F2DA23051B, - 0xAAE128B0DC93537C, 0x3A493DA0EE4B29AE, 0xB5DF6B2C416895D7, - 0xFCABBD25122D7F37, 0x70810B58105DC4B1, 0xE10FDD37F7882A90, - 0x524DCAB5518A3F5C, 0x3C9E85878451255B, 0x4029828119BD34E2, - 0x74A05B6F5D3CECCB, 0xB610021542E13ECA, 0x0FF979D12F59E2AC, - 0x6037DA27E4F9CC50, 0x5E92975A0DF1847D, 0xD66DE190D3E623FE, - 0x5032D6B87B568048, 0x9A36B7CE8235216E, 0x80272A7A24F64B4A, - 0x93EFED8B8C6916F7, 0x37DDBFF44CCE1555, 0x4B95DB5D4B99BD25, - 0x92D3FDA169812FC0, 0xFB1A4A9A90660BB6, 0x730C196946A4B9B2, - 0x81E289AA7F49DA68, 0x64669A0F83B1A05F, 0x27B3FF7D9644F48B, - 0xCC6B615C8DB675B3, 0x674F20B9BCEBBE95, 0x6F31238275655982, - 0x5AE488713E45CF05, 0xBF619F9954C21157, 0xEABAC46040A8EAE9, - 0x454C6FE9F2C0C1CD, 0x419CF6496412691C, 0xD3DC3BEF265B0F70, - 0x6D0E60F5C3578A9E }; - -const uint64_t Tiger::SBOX4[256] = { - 0x5B0E608526323C55, 0x1A46C1A9FA1B59F5, 0xA9E245A17C4C8FFA, - 0x65CA5159DB2955D7, 0x05DB0A76CE35AFC2, 0x81EAC77EA9113D45, - 0x528EF88AB6AC0A0D, 0xA09EA253597BE3FF, 0x430DDFB3AC48CD56, - 0xC4B3A67AF45CE46F, 0x4ECECFD8FBE2D05E, 0x3EF56F10B39935F0, - 0x0B22D6829CD619C6, 0x17FD460A74DF2069, 0x6CF8CC8E8510ED40, - 0xD6C824BF3A6ECAA7, 0x61243D581A817049, 0x048BACB6BBC163A2, - 0xD9A38AC27D44CC32, 0x7FDDFF5BAAF410AB, 0xAD6D495AA804824B, - 0xE1A6A74F2D8C9F94, 0xD4F7851235DEE8E3, 0xFD4B7F886540D893, - 0x247C20042AA4BFDA, 0x096EA1C517D1327C, 0xD56966B4361A6685, - 0x277DA5C31221057D, 0x94D59893A43ACFF7, 0x64F0C51CCDC02281, - 0x3D33BCC4FF6189DB, 0xE005CB184CE66AF1, 0xFF5CCD1D1DB99BEA, - 0xB0B854A7FE42980F, 0x7BD46A6A718D4B9F, 0xD10FA8CC22A5FD8C, - 0xD31484952BE4BD31, 0xC7FA975FCB243847, 0x4886ED1E5846C407, - 0x28CDDB791EB70B04, 0xC2B00BE2F573417F, 0x5C9590452180F877, - 0x7A6BDDFFF370EB00, 0xCE509E38D6D9D6A4, 0xEBEB0F00647FA702, - 0x1DCC06CF76606F06, 0xE4D9F28BA286FF0A, 0xD85A305DC918C262, - 0x475B1D8732225F54, 0x2D4FB51668CCB5FE, 0xA679B9D9D72BBA20, - 0x53841C0D912D43A5, 0x3B7EAA48BF12A4E8, 0x781E0E47F22F1DDF, - 0xEFF20CE60AB50973, 0x20D261D19DFFB742, 0x16A12B03062A2E39, - 0x1960EB2239650495, 0x251C16FED50EB8B8, 0x9AC0C330F826016E, - 0xED152665953E7671, 0x02D63194A6369570, 0x5074F08394B1C987, - 0x70BA598C90B25CE1, 0x794A15810B9742F6, 0x0D5925E9FCAF8C6C, - 0x3067716CD868744E, 0x910AB077E8D7731B, 0x6A61BBDB5AC42F61, - 0x93513EFBF0851567, 0xF494724B9E83E9D5, 0xE887E1985C09648D, - 0x34B1D3C675370CFD, 0xDC35E433BC0D255D, 0xD0AAB84234131BE0, - 0x08042A50B48B7EAF, 0x9997C4EE44A3AB35, 0x829A7B49201799D0, - 0x263B8307B7C54441, 0x752F95F4FD6A6CA6, 0x927217402C08C6E5, - 0x2A8AB754A795D9EE, 0xA442F7552F72943D, 0x2C31334E19781208, - 0x4FA98D7CEAEE6291, 0x55C3862F665DB309, 0xBD0610175D53B1F3, - 0x46FE6CB840413F27, 0x3FE03792DF0CFA59, 0xCFE700372EB85E8F, - 0xA7BE29E7ADBCE118, 0xE544EE5CDE8431DD, 0x8A781B1B41F1873E, - 0xA5C94C78A0D2F0E7, 0x39412E2877B60728, 0xA1265EF3AFC9A62C, - 0xBCC2770C6A2506C5, 0x3AB66DD5DCE1CE12, 0xE65499D04A675B37, - 0x7D8F523481BFD216, 0x0F6F64FCEC15F389, 0x74EFBE618B5B13C8, - 0xACDC82B714273E1D, 0xDD40BFE003199D17, 0x37E99257E7E061F8, - 0xFA52626904775AAA, 0x8BBBF63A463D56F9, 0xF0013F1543A26E64, - 0xA8307E9F879EC898, 0xCC4C27A4150177CC, 0x1B432F2CCA1D3348, - 0xDE1D1F8F9F6FA013, 0x606602A047A7DDD6, 0xD237AB64CC1CB2C7, - 0x9B938E7225FCD1D3, 0xEC4E03708E0FF476, 0xFEB2FBDA3D03C12D, - 0xAE0BCED2EE43889A, 0x22CB8923EBFB4F43, 0x69360D013CF7396D, - 0x855E3602D2D4E022, 0x073805BAD01F784C, 0x33E17A133852F546, - 0xDF4874058AC7B638, 0xBA92B29C678AA14A, 0x0CE89FC76CFAADCD, - 0x5F9D4E0908339E34, 0xF1AFE9291F5923B9, 0x6E3480F60F4A265F, - 0xEEBF3A2AB29B841C, 0xE21938A88F91B4AD, 0x57DFEFF845C6D3C3, - 0x2F006B0BF62CAAF2, 0x62F479EF6F75EE78, 0x11A55AD41C8916A9, - 0xF229D29084FED453, 0x42F1C27B16B000E6, 0x2B1F76749823C074, - 0x4B76ECA3C2745360, 0x8C98F463B91691BD, 0x14BCC93CF1ADE66A, - 0x8885213E6D458397, 0x8E177DF0274D4711, 0xB49B73B5503F2951, - 0x10168168C3F96B6B, 0x0E3D963B63CAB0AE, 0x8DFC4B5655A1DB14, - 0xF789F1356E14DE5C, 0x683E68AF4E51DAC1, 0xC9A84F9D8D4B0FD9, - 0x3691E03F52A0F9D1, 0x5ED86E46E1878E80, 0x3C711A0E99D07150, - 0x5A0865B20C4E9310, 0x56FBFC1FE4F0682E, 0xEA8D5DE3105EDF9B, - 0x71ABFDB12379187A, 0x2EB99DE1BEE77B9C, 0x21ECC0EA33CF4523, - 0x59A4D7521805C7A1, 0x3896F5EB56AE7C72, 0xAA638F3DB18F75DC, - 0x9F39358DABE9808E, 0xB7DEFA91C00B72AC, 0x6B5541FD62492D92, - 0x6DC6DEE8F92E4D5B, 0x353F57ABC4BEEA7E, 0x735769D6DA5690CE, - 0x0A234AA642391484, 0xF6F9508028F80D9D, 0xB8E319A27AB3F215, - 0x31AD9C1151341A4D, 0x773C22A57BEF5805, 0x45C7561A07968633, - 0xF913DA9E249DBE36, 0xDA652D9B78A64C68, 0x4C27A97F3BC334EF, - 0x76621220E66B17F4, 0x967743899ACD7D0B, 0xF3EE5BCAE0ED6782, - 0x409F753600C879FC, 0x06D09A39B5926DB6, 0x6F83AEB0317AC588, - 0x01E6CA4A86381F21, 0x66FF3462D19F3025, 0x72207C24DDFD3BFB, - 0x4AF6B6D3E2ECE2EB, 0x9C994DBEC7EA08DE, 0x49ACE597B09A8BC4, - 0xB38C4766CF0797BA, 0x131B9373C57C2A75, 0xB1822CCE61931E58, - 0x9D7555B909BA1C0C, 0x127FAFDD937D11D2, 0x29DA3BADC66D92E4, - 0xA2C1D57154C2ECBC, 0x58C5134D82F6FE24, 0x1C3AE3515B62274F, - 0xE907C82E01CB8126, 0xF8ED091913E37FCB, 0x3249D8F9C80046C9, - 0x80CF9BEDE388FB63, 0x1881539A116CF19E, 0x5103F3F76BD52457, - 0x15B7E6F5AE47F7A8, 0xDBD7C6DED47E9CCF, 0x44E55C410228BB1A, - 0xB647D4255EDB4E99, 0x5D11882BB8AAFC30, 0xF5098BBB29D3212A, - 0x8FB5EA14E90296B3, 0x677B942157DD025A, 0xFB58E7C0A390ACB5, - 0x89D3674C83BD4A01, 0x9E2DA4DF4BF3B93B, 0xFCC41E328CAB4829, - 0x03F38C96BA582C52, 0xCAD1BDBD7FD85DB2, 0xBBB442C16082AE83, - 0xB95FE86BA5DA9AB0, 0xB22E04673771A93F, 0x845358C9493152D8, - 0xBE2A488697B4541E, 0x95A2DC2DD38E6966, 0xC02C11AC923C852B, - 0x2388B1990DF2A87B, 0x7C8008FA1B4F37BE, 0x1F70D0C84D54E503, - 0x5490ADEC7ECE57D4, 0x002B3C27D9063A3A, 0x7EAEA3848030A2BF, - 0xC602326DED2003C0, 0x83A7287D69A94086, 0xC57A5FCB30F57A8A, - 0xB56844E479EBE779, 0xA373B40F05DCBCE9, 0xD71A786E88570EE2, - 0x879CBACDBDE8F6A0, 0x976AD1BCC164A32F, 0xAB21E25E9666D78B, - 0x901063AAE5E5C33C, 0x9818B34448698D90, 0xE36487AE3E1E8ABB, - 0xAFBDF931893BDCB4, 0x6345A0DC5FBBD519, 0x8628FE269B9465CA, - 0x1E5D01603F9C51EC, 0x4DE44006A15049B7, 0xBF6C70E5F776CBB1, - 0x411218F2EF552BED, 0xCB0C0708705A36A3, 0xE74D14754F986044, - 0xCD56D9430EA8280E, 0xC12591D7535F5065, 0xC83223F1720AEF96, - 0xC3A0396F7363A51F }; - -} diff --git a/src/lib/hash/tiger/tiger.cpp b/src/lib/hash/tiger/tiger.cpp deleted file mode 100644 index ac2038a0f..000000000 --- a/src/lib/hash/tiger/tiger.cpp +++ /dev/null @@ -1,190 +0,0 @@ -/* -* Tiger -* (C) 1999-2007 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#include <botan/tiger.h> -#include <botan/loadstor.h> -#include <botan/exceptn.h> - -namespace Botan { - -std::unique_ptr<HashFunction> Tiger::copy_state() const - { - return std::unique_ptr<HashFunction>(new Tiger(*this)); - } - -namespace { - -/* -* Tiger Mixing Function -*/ -inline void mix(secure_vector<uint64_t>& X) - { - X[0] -= X[7] ^ 0xA5A5A5A5A5A5A5A5; - X[1] ^= X[0]; - X[2] += X[1]; - X[3] -= X[2] ^ ((~X[1]) << 19); - X[4] ^= X[3]; - X[5] += X[4]; - X[6] -= X[5] ^ ((~X[4]) >> 23); - X[7] ^= X[6]; - - X[0] += X[7]; - X[1] -= X[0] ^ ((~X[7]) << 19); - X[2] ^= X[1]; - X[3] += X[2]; - X[4] -= X[3] ^ ((~X[2]) >> 23); - X[5] ^= X[4]; - X[6] += X[5]; - X[7] -= X[6] ^ 0x0123456789ABCDEF; - } - -} - -/* -* Tiger Compression Function -*/ -void Tiger::compress_n(const uint8_t input[], size_t blocks) - { - uint64_t A = m_digest[0], B = m_digest[1], C = m_digest[2]; - - for(size_t i = 0; i != blocks; ++i) - { - load_le(m_X.data(), input, m_X.size()); - - pass(A, B, C, m_X, 5); mix(m_X); - pass(C, A, B, m_X, 7); mix(m_X); - pass(B, C, A, m_X, 9); - - for(size_t j = 3; j != m_passes; ++j) - { - mix(m_X); - pass(A, B, C, m_X, 9); - uint64_t T = A; A = C; C = B; B = T; - } - - A = (m_digest[0] ^= A); - B = m_digest[1] = B - m_digest[1]; - C = (m_digest[2] += C); - - input += hash_block_size(); - } - } - -/* -* Copy out the digest -*/ -void Tiger::copy_out(uint8_t output[]) - { - copy_out_vec_le(output, output_length(), m_digest); - } - -/* -* Tiger Pass -*/ -void Tiger::pass(uint64_t& A, uint64_t& B, uint64_t& C, - const secure_vector<uint64_t>& X, - uint8_t mul) - { - C ^= X[0]; - A -= SBOX1[get_byte(7, C)] ^ SBOX2[get_byte(5, C)] ^ - SBOX3[get_byte(3, C)] ^ SBOX4[get_byte(1, C)]; - B += SBOX1[get_byte(0, C)] ^ SBOX2[get_byte(2, C)] ^ - SBOX3[get_byte(4, C)] ^ SBOX4[get_byte(6, C)]; - B *= mul; - - A ^= X[1]; - B -= SBOX1[get_byte(7, A)] ^ SBOX2[get_byte(5, A)] ^ - SBOX3[get_byte(3, A)] ^ SBOX4[get_byte(1, A)]; - C += SBOX1[get_byte(0, A)] ^ SBOX2[get_byte(2, A)] ^ - SBOX3[get_byte(4, A)] ^ SBOX4[get_byte(6, A)]; - C *= mul; - - B ^= X[2]; - C -= SBOX1[get_byte(7, B)] ^ SBOX2[get_byte(5, B)] ^ - SBOX3[get_byte(3, B)] ^ SBOX4[get_byte(1, B)]; - A += SBOX1[get_byte(0, B)] ^ SBOX2[get_byte(2, B)] ^ - SBOX3[get_byte(4, B)] ^ SBOX4[get_byte(6, B)]; - A *= mul; - - C ^= X[3]; - A -= SBOX1[get_byte(7, C)] ^ SBOX2[get_byte(5, C)] ^ - SBOX3[get_byte(3, C)] ^ SBOX4[get_byte(1, C)]; - B += SBOX1[get_byte(0, C)] ^ SBOX2[get_byte(2, C)] ^ - SBOX3[get_byte(4, C)] ^ SBOX4[get_byte(6, C)]; - B *= mul; - - A ^= X[4]; - B -= SBOX1[get_byte(7, A)] ^ SBOX2[get_byte(5, A)] ^ - SBOX3[get_byte(3, A)] ^ SBOX4[get_byte(1, A)]; - C += SBOX1[get_byte(0, A)] ^ SBOX2[get_byte(2, A)] ^ - SBOX3[get_byte(4, A)] ^ SBOX4[get_byte(6, A)]; - C *= mul; - - B ^= X[5]; - C -= SBOX1[get_byte(7, B)] ^ SBOX2[get_byte(5, B)] ^ - SBOX3[get_byte(3, B)] ^ SBOX4[get_byte(1, B)]; - A += SBOX1[get_byte(0, B)] ^ SBOX2[get_byte(2, B)] ^ - SBOX3[get_byte(4, B)] ^ SBOX4[get_byte(6, B)]; - A *= mul; - - C ^= X[6]; - A -= SBOX1[get_byte(7, C)] ^ SBOX2[get_byte(5, C)] ^ - SBOX3[get_byte(3, C)] ^ SBOX4[get_byte(1, C)]; - B += SBOX1[get_byte(0, C)] ^ SBOX2[get_byte(2, C)] ^ - SBOX3[get_byte(4, C)] ^ SBOX4[get_byte(6, C)]; - B *= mul; - - A ^= X[7]; - B -= SBOX1[get_byte(7, A)] ^ SBOX2[get_byte(5, A)] ^ - SBOX3[get_byte(3, A)] ^ SBOX4[get_byte(1, A)]; - C += SBOX1[get_byte(0, A)] ^ SBOX2[get_byte(2, A)] ^ - SBOX3[get_byte(4, A)] ^ SBOX4[get_byte(6, A)]; - C *= mul; - } - -/* -* Clear memory of sensitive data -*/ -void Tiger::clear() - { - MDx_HashFunction::clear(); - zeroise(m_X); - m_digest[0] = 0x0123456789ABCDEF; - m_digest[1] = 0xFEDCBA9876543210; - m_digest[2] = 0xF096A5B4C3B2E187; - } - -/* -* Return the name of this type -*/ -std::string Tiger::name() const - { - return "Tiger(" + std::to_string(output_length()) + "," + - std::to_string(m_passes) + ")"; - } - -/* -* Tiger Constructor -*/ -Tiger::Tiger(size_t hash_len, size_t passes) : - MDx_HashFunction(64, false, false), - m_X(8), - m_digest(3), - m_hash_len(hash_len), - m_passes(passes) - { - if(output_length() != 16 && output_length() != 20 && output_length() != 24) - throw Invalid_Argument("Tiger: Illegal hash output size: " + - std::to_string(output_length())); - - if(passes < 3) - throw Invalid_Argument("Tiger: Invalid number of passes: " - + std::to_string(passes)); - clear(); - } - -} diff --git a/src/lib/hash/tiger/tiger.h b/src/lib/hash/tiger/tiger.h deleted file mode 100644 index 6e17ce83c..000000000 --- a/src/lib/hash/tiger/tiger.h +++ /dev/null @@ -1,59 +0,0 @@ -/* -* Tiger -* (C) 1999-2007 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#ifndef BOTAN_TIGER_H_ -#define BOTAN_TIGER_H_ - -#include <botan/mdx_hash.h> - -BOTAN_FUTURE_INTERNAL_HEADER(tiger.h) - -namespace Botan { - -/** -* Tiger -*/ -class BOTAN_PUBLIC_API(2,0) Tiger final : public MDx_HashFunction - { - public: - std::string name() const override; - size_t output_length() const override { return m_hash_len; } - - HashFunction* clone() const override - { - return new Tiger(output_length(), m_passes); - } - - std::unique_ptr<HashFunction> copy_state() const override; - - void clear() override; - - /** - * @param out_size specifies the output length; can be 16, 20, or 24 - * @param passes to make in the algorithm - */ - Tiger(size_t out_size = 24, size_t passes = 3); - private: - void compress_n(const uint8_t[], size_t block) override; - void copy_out(uint8_t[]) override; - - static void pass(uint64_t& A, uint64_t& B, uint64_t& C, - const secure_vector<uint64_t>& M, - uint8_t mul); - - static const uint64_t SBOX1[256]; - static const uint64_t SBOX2[256]; - static const uint64_t SBOX3[256]; - static const uint64_t SBOX4[256]; - - secure_vector<uint64_t> m_X, m_digest; - const size_t m_hash_len, m_passes; - }; - -} - -#endif diff --git a/src/lib/mac/cbc_mac/cbc_mac.cpp b/src/lib/mac/cbc_mac/cbc_mac.cpp deleted file mode 100644 index ba403b564..000000000 --- a/src/lib/mac/cbc_mac/cbc_mac.cpp +++ /dev/null @@ -1,99 +0,0 @@ -/* -* CBC-MAC -* (C) 1999-2007 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#include <botan/cbc_mac.h> - -namespace Botan { - -/* -* Update an CBC-MAC Calculation -*/ -void CBC_MAC::add_data(const uint8_t input[], size_t length) - { - verify_key_set(m_state.empty() == false); - - size_t xored = std::min(output_length() - m_position, length); - xor_buf(&m_state[m_position], input, xored); - m_position += xored; - - if(m_position < output_length()) - return; - - m_cipher->encrypt(m_state); - input += xored; - length -= xored; - while(length >= output_length()) - { - xor_buf(m_state, input, output_length()); - m_cipher->encrypt(m_state); - input += output_length(); - length -= output_length(); - } - - xor_buf(m_state, input, length); - m_position = length; - } - -/* -* Finalize an CBC-MAC Calculation -*/ -void CBC_MAC::final_result(uint8_t mac[]) - { - verify_key_set(m_state.empty() == false); - - if(m_position) - m_cipher->encrypt(m_state); - - copy_mem(mac, m_state.data(), m_state.size()); - zeroise(m_state); - m_position = 0; - } - -/* -* CBC-MAC Key Schedule -*/ -void CBC_MAC::key_schedule(const uint8_t key[], size_t length) - { - m_state.resize(m_cipher->block_size()); - m_cipher->set_key(key, length); - } - -/* -* Clear memory of sensitive data -*/ -void CBC_MAC::clear() - { - m_cipher->clear(); - zap(m_state); - m_position = 0; - } - -/* -* Return the name of this type -*/ -std::string CBC_MAC::name() const - { - return "CBC-MAC(" + m_cipher->name() + ")"; - } - -/* -* Return a clone of this object -*/ -MessageAuthenticationCode* CBC_MAC::clone() const - { - return new CBC_MAC(m_cipher->clone()); - } - -/* -* CBC-MAC Constructor -*/ -CBC_MAC::CBC_MAC(BlockCipher* cipher) : - m_cipher(cipher) - { - } - -} diff --git a/src/lib/mac/cbc_mac/cbc_mac.h b/src/lib/mac/cbc_mac/cbc_mac.h deleted file mode 100644 index ed4eb2bd1..000000000 --- a/src/lib/mac/cbc_mac/cbc_mac.h +++ /dev/null @@ -1,50 +0,0 @@ -/* -* CBC-MAC -* (C) 1999-2007 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#ifndef BOTAN_CBC_MAC_H_ -#define BOTAN_CBC_MAC_H_ - -#include <botan/mac.h> -#include <botan/block_cipher.h> - -BOTAN_FUTURE_INTERNAL_HEADER(cbc_mac.h) - -namespace Botan { - -/** -* CBC-MAC -*/ -class BOTAN_PUBLIC_API(2,0) CBC_MAC final : public MessageAuthenticationCode - { - public: - std::string name() const override; - MessageAuthenticationCode* clone() const override; - size_t output_length() const override { return m_cipher->block_size(); } - void clear() override; - - Key_Length_Specification key_spec() const override - { - return m_cipher->key_spec(); - } - - /** - * @param cipher the block cipher to use - */ - explicit CBC_MAC(BlockCipher* cipher); - private: - void add_data(const uint8_t[], size_t) override; - void final_result(uint8_t[]) override; - void key_schedule(const uint8_t[], size_t) override; - - std::unique_ptr<BlockCipher> m_cipher; - secure_vector<uint8_t> m_state; - size_t m_position = 0; - }; - -} - -#endif diff --git a/src/lib/mac/cbc_mac/info.txt b/src/lib/mac/cbc_mac/info.txt deleted file mode 100644 index 994a63872..000000000 --- a/src/lib/mac/cbc_mac/info.txt +++ /dev/null @@ -1,7 +0,0 @@ -<defines> -CBC_MAC -> 20131128 -</defines> - -<requires> -block -</requires> diff --git a/src/lib/mac/mac.cpp b/src/lib/mac/mac.cpp index 4c3fc5230..e7f7be88e 100644 --- a/src/lib/mac/mac.cpp +++ b/src/lib/mac/mac.cpp @@ -10,10 +10,6 @@ #include <botan/scan_name.h> #include <botan/mem_ops.h> -#if defined(BOTAN_HAS_CBC_MAC) - #include <botan/cbc_mac.h> -#endif - #if defined(BOTAN_HAS_CMAC) #include <botan/cmac.h> #endif @@ -103,17 +99,6 @@ MessageAuthenticationCode::create(const std::string& algo_spec, #endif -#if defined(BOTAN_HAS_CBC_MAC) - if(req.algo_name() == "CBC-MAC" && req.arg_count() == 1) - { - if(provider.empty() || provider == "base") - { - if(auto bc = BlockCipher::create(req.arg(0))) - return std::unique_ptr<MessageAuthenticationCode>(new CBC_MAC(bc.release())); - } - } -#endif - #if defined(BOTAN_HAS_ANSI_X919_MAC) if(req.algo_name() == "X9.19-MAC") { diff --git a/src/lib/misc/aont/info.txt b/src/lib/misc/aont/info.txt deleted file mode 100644 index bbd6449f7..000000000 --- a/src/lib/misc/aont/info.txt +++ /dev/null @@ -1,9 +0,0 @@ -<defines> -PACKAGE_TRANSFORM -> 20131128 -</defines> - -<requires> -ctr -rng -filters -</requires> diff --git a/src/lib/misc/aont/package.cpp b/src/lib/misc/aont/package.cpp deleted file mode 100644 index 7cadc62f4..000000000 --- a/src/lib/misc/aont/package.cpp +++ /dev/null @@ -1,125 +0,0 @@ -/* -* Rivest's Package Tranform -* -* (C) 2009 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#include <botan/package.h> -#include <botan/filters.h> -#include <botan/ctr.h> -#include <botan/loadstor.h> -#include <botan/rng.h> - -namespace Botan { - -void aont_package(RandomNumberGenerator& rng, - BlockCipher* cipher, - const uint8_t input[], size_t input_len, - uint8_t output[]) - { - if(input_len <= 1) - throw Encoding_Error("Package transform cannot encode small inputs"); - - const size_t BLOCK_SIZE = cipher->block_size(); - - if(!cipher->valid_keylength(BLOCK_SIZE)) - throw Invalid_Argument("AONT::package: Invalid cipher"); - - // The all-zero string which is used both as the CTR IV and as K0 - const std::string all_zeros(BLOCK_SIZE*2, '0'); - - SymmetricKey package_key(rng, BLOCK_SIZE); - - Pipe pipe(new StreamCipher_Filter(new CTR_BE(cipher), package_key)); - - pipe.process_msg(input, input_len); - const size_t remaining = pipe.remaining(); - BOTAN_ASSERT_EQUAL(remaining, pipe.read(output, remaining), "Expected read size"); - - // Set K0 (the all zero key) - cipher->set_key(SymmetricKey(all_zeros)); - - secure_vector<uint8_t> buf(BLOCK_SIZE); - - const size_t blocks = - (input_len + BLOCK_SIZE - 1) / BLOCK_SIZE; - - uint8_t* final_block = output + input_len; - clear_mem(final_block, BLOCK_SIZE); - - // XOR the hash blocks into the final block - for(size_t i = 0; i != blocks; ++i) - { - const size_t left = std::min<size_t>(BLOCK_SIZE, - input_len - BLOCK_SIZE * i); - - zeroise(buf); - copy_mem(buf.data(), output + (BLOCK_SIZE * i), left); - - for(size_t j = 0; j != sizeof(i); ++j) - buf[BLOCK_SIZE - 1 - j] ^= get_byte(sizeof(i)-1-j, i); - - cipher->encrypt(buf.data()); - - xor_buf(final_block, buf.data(), BLOCK_SIZE); - } - - // XOR the random package key into the final block - xor_buf(final_block, package_key.begin(), BLOCK_SIZE); - } - -void aont_unpackage(BlockCipher* cipher, - const uint8_t input[], size_t input_len, - uint8_t output[]) - { - const size_t BLOCK_SIZE = cipher->block_size(); - - if(!cipher->valid_keylength(BLOCK_SIZE)) - throw Invalid_Argument("AONT::unpackage: Invalid cipher"); - - if(input_len < BLOCK_SIZE) - throw Invalid_Argument("AONT::unpackage: Input too short"); - - // The all-zero string which is used both as the CTR IV and as K0 - const std::string all_zeros(BLOCK_SIZE*2, '0'); - - cipher->set_key(SymmetricKey(all_zeros)); - - secure_vector<uint8_t> package_key(BLOCK_SIZE); - secure_vector<uint8_t> buf(BLOCK_SIZE); - - // Copy the package key (masked with the block hashes) - copy_mem(package_key.data(), - input + (input_len - BLOCK_SIZE), - BLOCK_SIZE); - - const size_t blocks = ((input_len - 1) / BLOCK_SIZE); - - // XOR the blocks into the package key bits - for(size_t i = 0; i != blocks; ++i) - { - const size_t left = std::min<size_t>(BLOCK_SIZE, - input_len - BLOCK_SIZE * (i+1)); - - zeroise(buf); - copy_mem(buf.data(), input + (BLOCK_SIZE * i), left); - - for(size_t j = 0; j != sizeof(i); ++j) - buf[BLOCK_SIZE - 1 - j] ^= get_byte(sizeof(i)-1-j, i); - - cipher->encrypt(buf.data()); - - xor_buf(package_key.data(), buf.data(), BLOCK_SIZE); - } - - Pipe pipe(new StreamCipher_Filter(new CTR_BE(cipher), package_key)); - - pipe.process_msg(input, input_len - BLOCK_SIZE); - - const size_t remaining = pipe.remaining(); - BOTAN_ASSERT_EQUAL(remaining, pipe.read(output, remaining), "Expected read size"); - } - -} diff --git a/src/lib/misc/aont/package.h b/src/lib/misc/aont/package.h deleted file mode 100644 index 38e04e470..000000000 --- a/src/lib/misc/aont/package.h +++ /dev/null @@ -1,49 +0,0 @@ -/* -* Rivest's Package Tranform -* (C) 2009 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#ifndef BOTAN_AONT_PACKAGE_TRANSFORM_H_ -#define BOTAN_AONT_PACKAGE_TRANSFORM_H_ - -#include <botan/block_cipher.h> - -namespace Botan { - -class RandomNumberGenerator; - -/** -* Rivest's Package Tranform -* @param rng the random number generator to use -* @param cipher the block cipher to use (aont_package takes ownership) -* @param input the input data buffer -* @param input_len the length of the input data in bytes -* @param output the output data buffer (must be at least -* input_len + cipher->BLOCK_SIZE bytes long) -*/ -BOTAN_DEPRECATED("Possibly broken, avoid") -void BOTAN_PUBLIC_API(2,0) -aont_package(RandomNumberGenerator& rng, - BlockCipher* cipher, - const uint8_t input[], size_t input_len, - uint8_t output[]); - -/** -* Rivest's Package Tranform (Inversion) -* @param cipher the block cipher to use (aont_package takes ownership) -* @param input the input data buffer -* @param input_len the length of the input data in bytes -* @param output the output data buffer (must be at least -* input_len - cipher->BLOCK_SIZE bytes long) -*/ -BOTAN_DEPRECATED("Possibly broken, avoid") -void BOTAN_PUBLIC_API(2,0) -aont_unpackage(BlockCipher* cipher, - const uint8_t input[], size_t input_len, - uint8_t output[]); - -} - -#endif diff --git a/src/lib/pbkdf/pbkdf.cpp b/src/lib/pbkdf/pbkdf.cpp index 73b482725..1434ec183 100644 --- a/src/lib/pbkdf/pbkdf.cpp +++ b/src/lib/pbkdf/pbkdf.cpp @@ -9,10 +9,6 @@ #include <botan/exceptn.h> #include <botan/scan_name.h> -#if defined(BOTAN_HAS_PBKDF1) -#include <botan/pbkdf1.h> -#endif - #if defined(BOTAN_HAS_PBKDF2) #include <botan/pbkdf2.h> #endif @@ -46,15 +42,6 @@ std::unique_ptr<PBKDF> PBKDF::create(const std::string& algo_spec, } #endif -#if defined(BOTAN_HAS_PBKDF1) - if(req.algo_name() == "PBKDF1" && req.arg_count() == 1) - { - if(auto hash = HashFunction::create(req.arg(0))) - return std::unique_ptr<PBKDF>(new PKCS5_PBKDF1(hash.release())); - - } -#endif - #if defined(BOTAN_HAS_PGP_S2K) if(req.algo_name() == "OpenPGP-S2K" && req.arg_count() == 1) { diff --git a/src/lib/pbkdf/pbkdf1/info.txt b/src/lib/pbkdf/pbkdf1/info.txt deleted file mode 100644 index e4b972e4b..000000000 --- a/src/lib/pbkdf/pbkdf1/info.txt +++ /dev/null @@ -1,7 +0,0 @@ -<defines> -PBKDF1 -> 20131128 -</defines> - -<requires> -hash -</requires> diff --git a/src/lib/pbkdf/pbkdf1/pbkdf1.cpp b/src/lib/pbkdf/pbkdf1/pbkdf1.cpp deleted file mode 100644 index ad922ce9c..000000000 --- a/src/lib/pbkdf/pbkdf1/pbkdf1.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/* -* PBKDF1 -* (C) 1999-2007 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#include <botan/pbkdf1.h> -#include <botan/exceptn.h> - -namespace Botan { - -size_t PKCS5_PBKDF1::pbkdf(uint8_t output_buf[], size_t output_len, - const std::string& passphrase, - const uint8_t salt[], size_t salt_len, - size_t iterations, - std::chrono::milliseconds msec) const - { - if(output_len > m_hash->output_length()) - throw Invalid_Argument("PKCS5_PBKDF1: Requested output length too long"); - - m_hash->update(passphrase); - m_hash->update(salt, salt_len); - secure_vector<uint8_t> key = m_hash->final(); - - const auto start = std::chrono::high_resolution_clock::now(); - size_t iterations_performed = 1; - - while(true) - { - if(iterations == 0) - { - if(iterations_performed % 10000 == 0) - { - auto time_taken = std::chrono::high_resolution_clock::now() - start; - auto msec_taken = std::chrono::duration_cast<std::chrono::milliseconds>(time_taken); - if(msec_taken > msec) - break; - } - } - else if(iterations_performed == iterations) - break; - - m_hash->update(key); - m_hash->final(key.data()); - - ++iterations_performed; - } - - copy_mem(output_buf, key.data(), output_len); - return iterations_performed; - } - -} diff --git a/src/lib/pbkdf/pbkdf1/pbkdf1.h b/src/lib/pbkdf/pbkdf1/pbkdf1.h deleted file mode 100644 index f5e95b836..000000000 --- a/src/lib/pbkdf/pbkdf1/pbkdf1.h +++ /dev/null @@ -1,53 +0,0 @@ -/* -* PBKDF1 -* (C) 1999-2007 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#ifndef BOTAN_PBKDF1_H_ -#define BOTAN_PBKDF1_H_ - -#include <botan/pbkdf.h> -#include <botan/hash.h> - -BOTAN_FUTURE_INTERNAL_HEADER(pbkdf1.h) - -namespace Botan { - -/** -* PKCS #5 v1 PBKDF, aka PBKDF1 -* Can only generate a key up to the size of the hash output. -* Unless needed for backwards compatibility, use PKCS5_PBKDF2 -*/ -class BOTAN_PUBLIC_API(2,0) PKCS5_PBKDF1 final : public PBKDF - { - public: - /** - * Create a PKCS #5 instance using the specified hash function. - * @param hash pointer to a hash function object to use - */ - explicit PKCS5_PBKDF1(HashFunction* hash) : m_hash(hash) {} - - std::string name() const override - { - return "PBKDF1(" + m_hash->name() + ")"; - } - - PBKDF* clone() const override - { - return new PKCS5_PBKDF1(m_hash->clone()); - } - - size_t pbkdf(uint8_t output_buf[], size_t output_len, - const std::string& passphrase, - const uint8_t salt[], size_t salt_len, - size_t iterations, - std::chrono::milliseconds msec) const override; - private: - std::unique_ptr<HashFunction> m_hash; - }; - -} - -#endif diff --git a/src/lib/pk_pad/hash_id/hash_id.cpp b/src/lib/pk_pad/hash_id/hash_id.cpp index ec317f969..efebf5095 100644 --- a/src/lib/pk_pad/hash_id/hash_id.cpp +++ b/src/lib/pk_pad/hash_id/hash_id.cpp @@ -65,10 +65,6 @@ const uint8_t SM3_PKCS_ID[] = { 0x55, 0x01, 0x83, 0x11, 0x05, 0x00, 0x04, 0x20, }; -const uint8_t TIGER_PKCS_ID[] = { -0x30, 0x29, 0x30, 0x0D, 0x06, 0x09, 0x2B, 0x06, 0x01, 0x04, -0x01, 0xDA, 0x47, 0x0C, 0x02, 0x05, 0x00, 0x04, 0x18 }; - } /* @@ -133,10 +129,6 @@ std::vector<uint8_t> pkcs_hash_id(const std::string& name) if(name == "SM3") return std::vector<uint8_t>(SM3_PKCS_ID, SM3_PKCS_ID + sizeof(SM3_PKCS_ID)); - if(name == "Tiger(24,3)") - return std::vector<uint8_t>(TIGER_PKCS_ID, - TIGER_PKCS_ID + sizeof(TIGER_PKCS_ID)); - throw Invalid_Argument("No PKCS #1 identifier for " + name); } diff --git a/src/lib/pubkey/mceies/info.txt b/src/lib/pubkey/mceies/info.txt deleted file mode 100644 index cf5e01154..000000000 --- a/src/lib/pubkey/mceies/info.txt +++ /dev/null @@ -1,10 +0,0 @@ -<defines> -MCEIES -> 20150706 -</defines> - -<requires> -aes -mce -ocb -kdf1 -</requires> diff --git a/src/lib/pubkey/mceies/mceies.cpp b/src/lib/pubkey/mceies/mceies.cpp deleted file mode 100644 index 4d62889fe..000000000 --- a/src/lib/pubkey/mceies/mceies.cpp +++ /dev/null @@ -1,110 +0,0 @@ -/* -* McEliece Integrated Encryption System -* (C) 2014,2015 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#include <botan/mceies.h> -#include <botan/aead.h> -#include <botan/rng.h> -#include <botan/mceliece.h> -#include <botan/pubkey.h> - -namespace Botan { - -namespace { - -secure_vector<uint8_t> aead_key(const secure_vector<uint8_t>& mk, - const AEAD_Mode& aead) - { - // Fold the key as required for the AEAD mode in use - if(aead.valid_keylength(mk.size())) - return mk; - - secure_vector<uint8_t> r(aead.key_spec().maximum_keylength()); - BOTAN_ASSERT_NOMSG(r.size() > 0); - for(size_t i = 0; i != mk.size(); ++i) - r[i % r.size()] ^= mk[i]; - return r; - } - -} - -secure_vector<uint8_t> -mceies_encrypt(const McEliece_PublicKey& pubkey, - const uint8_t pt[], size_t pt_len, - const uint8_t ad[], size_t ad_len, - RandomNumberGenerator& rng, - const std::string& algo) - { - PK_KEM_Encryptor kem_op(pubkey, rng, "KDF1(SHA-512)"); - - secure_vector<uint8_t> mce_ciphertext, mce_key; - kem_op.encrypt(mce_ciphertext, mce_key, 64, rng); - - const size_t mce_code_bytes = (pubkey.get_code_length() + 7) / 8; - - BOTAN_ASSERT(mce_ciphertext.size() == mce_code_bytes, "Unexpected size"); - - std::unique_ptr<AEAD_Mode> aead = AEAD_Mode::create_or_throw(algo, ENCRYPTION); - - const size_t nonce_len = aead->default_nonce_length(); - - aead->set_key(aead_key(mce_key, *aead)); - aead->set_associated_data(ad, ad_len); - - const secure_vector<uint8_t> nonce = rng.random_vec(nonce_len); - - secure_vector<uint8_t> msg(mce_ciphertext.size() + nonce.size() + pt_len); - copy_mem(msg.data(), mce_ciphertext.data(), mce_ciphertext.size()); - copy_mem(msg.data() + mce_ciphertext.size(), nonce.data(), nonce.size()); - copy_mem(msg.data() + mce_ciphertext.size() + nonce.size(), pt, pt_len); - - aead->start(nonce); - aead->finish(msg, mce_ciphertext.size() + nonce.size()); - return msg; - } - -secure_vector<uint8_t> -mceies_decrypt(const McEliece_PrivateKey& privkey, - const uint8_t ct[], size_t ct_len, - const uint8_t ad[], size_t ad_len, - const std::string& algo) - { - try - { - Null_RNG null_rng; - PK_KEM_Decryptor kem_op(privkey, null_rng, "KDF1(SHA-512)"); - - const size_t mce_code_bytes = (privkey.get_code_length() + 7) / 8; - - std::unique_ptr<AEAD_Mode> aead = AEAD_Mode::create_or_throw(algo, DECRYPTION); - - const size_t nonce_len = aead->default_nonce_length(); - - if(ct_len < mce_code_bytes + nonce_len + aead->tag_size()) - throw Decoding_Error("Input message too small to be valid"); - - const secure_vector<uint8_t> mce_key = kem_op.decrypt(ct, mce_code_bytes, 64); - - aead->set_key(aead_key(mce_key, *aead)); - aead->set_associated_data(ad, ad_len); - - secure_vector<uint8_t> pt(ct + mce_code_bytes + nonce_len, ct + ct_len); - - aead->start(&ct[mce_code_bytes], nonce_len); - aead->finish(pt, 0); - return pt; - } - catch(Invalid_Authentication_Tag&) - { - throw; - } - catch(std::exception& e) - { - throw Decoding_Error("mce_decrypt failed: " + std::string(e.what())); - } - } - -} diff --git a/src/lib/pubkey/mceies/mceies.h b/src/lib/pubkey/mceies/mceies.h deleted file mode 100644 index c9b3f7efd..000000000 --- a/src/lib/pubkey/mceies/mceies.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -* McEliece Integrated Encryption System -* (C) 2014,2015 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#ifndef BOTAN_MCEIES_H_ -#define BOTAN_MCEIES_H_ - -#include <botan/secmem.h> -#include <string> - -namespace Botan { - -class RandomNumberGenerator; -class McEliece_PublicKey; -class McEliece_PrivateKey; - -/** -* McEliece Integrated Encryption System -* Derive a shared key using MCE KEM and encrypt/authenticate the -* plaintext and AD using AES-256 in OCB mode. -*/ -secure_vector<uint8_t> -BOTAN_PUBLIC_API(2,0) mceies_encrypt(const McEliece_PublicKey& pubkey, - const uint8_t pt[], size_t pt_len, - const uint8_t ad[], size_t ad_len, - RandomNumberGenerator& rng, - const std::string& aead = "AES-256/OCB"); - -/** -* McEliece Integrated Encryption System -* Derive a shared key using MCE KEM and decrypt/authenticate the -* ciphertext and AD using AES-256 in OCB mode. -*/ -secure_vector<uint8_t> -BOTAN_PUBLIC_API(2,0) mceies_decrypt(const McEliece_PrivateKey& privkey, - const uint8_t ct[], size_t ct_len, - const uint8_t ad[], size_t ad_len, - const std::string& aead = "AES-256/OCB"); - - -} - -#endif diff --git a/src/lib/utils/types.h b/src/lib/utils/types.h index 549163aa8..aeb616f9a 100644 --- a/src/lib/utils/types.h +++ b/src/lib/utils/types.h @@ -32,30 +32,29 @@ namespace Botan { * @ref GCM_Mode "GCM", @ref OCB_Mode "OCB", @ref SIV_Mode "SIV" * <dt>Block Ciphers<dd> * @ref aria.h "ARIA", @ref aes.h "AES", @ref Blowfish, @ref camellia.h "Camellia", @ref Cascade_Cipher "Cascade", -* @ref CAST_128 "CAST-128", @ref CAST_128 "CAST-256", DES, @ref DESX "DES-X", @ref TripleDES "3DES", -* @ref GOST_28147_89 "GOST 28147-89", IDEA, KASUMI, Lion, MISTY1, Noekeon, SEED, Serpent, SHACAL2, SM4, -* @ref Threefish_512 "Threefish", Twofish, XTEA +* @ref CAST_128 "CAST-128", @ref CAST_128 DES, @ref TripleDES "3DES", +* @ref GOST_28147_89 "GOST 28147-89", IDEA, Lion, Noekeon, SEED, Serpent, SHACAL2, SM4, +* @ref Threefish_512 "Threefish", Twofish * <dt>Stream Ciphers<dd> * ChaCha, @ref CTR_BE "CTR", OFB, RC4, Salsa20 * <dt>Hash Functions<dd> * BLAKE2b, @ref GOST_34_11 "GOST 34.11", @ref Keccak_1600 "Keccak", MD4, MD5, @ref RIPEMD_160 "RIPEMD-160", * @ref SHA_160 "SHA-1", @ref SHA_224 "SHA-224", @ref SHA_256 "SHA-256", @ref SHA_384 "SHA-384", -* @ref SHA_512 "SHA-512", @ref Skein_512 "Skein-512", SM3, Streebog, Tiger, Whirlpool +* @ref SHA_512 "SHA-512", @ref Skein_512 "Skein-512", SM3, Streebog, Whirlpool * <dt>Non-Cryptographic Checksums<dd> * Adler32, CRC24, CRC32 * <dt>Message Authentication Codes<dd> -* @ref CBC_MAC "CBC-MAC", CMAC, HMAC, Poly1305, SipHash, ANSI_X919_MAC +* CMAC, HMAC, Poly1305, SipHash, ANSI_X919_MAC * <dt>Random Number Generators<dd> * AutoSeeded_RNG, HMAC_DRBG, Processor_RNG, System_RNG * <dt>Key Derivation<dd> * HKDF, @ref KDF1 "KDF1 (IEEE 1363)", @ref KDF1_18033 "KDF1 (ISO 18033-2)", @ref KDF2 "KDF2 (IEEE 1363)", -* @ref sp800_108.h "SP800-108", @ref SP800_56C "SP800-56C", @ref PKCS5_PBKDF1 "PBKDF1 (PKCS#5), -* @ref PKCS5_PBKDF2 "PBKDF2 (PKCS#5)" +* @ref sp800_108.h "SP800-108", @ref SP800_56C "SP800-56C", @ref PKCS5_PBKDF2 "PBKDF2 (PKCS#5)" * <dt>Password Hashing<dd> * @ref argon2.h "Argon2", @ref scrypt.h "scrypt", @ref bcrypt.h "bcrypt", @ref passhash9.h "passhash9" * <dt>Public Key Cryptosystems<dd> * @ref dlies.h "DLIES", @ref ecies.h "ECIES", @ref elgamal.h "ElGamal" -* @ref rsa.h "RSA", @ref newhope.h "NewHope", @ref mceliece.h "McEliece" and @ref mceies.h "MCEIES", +* @ref rsa.h "RSA", @ref newhope.h "NewHope", @ref mceliece.h "McEliece" * @ref sm2.h "SM2" * <dt>Public Key Signature Schemes<dd> * @ref dsa.h "DSA", @ref ecdsa.h "ECDSA", @ref ecgdsa.h "ECGDSA", @ref eckcdsa.h "ECKCDSA", diff --git a/src/python/botan2.py b/src/python/botan2.py index 358d3bc59..78bc27934 100755 --- a/src/python/botan2.py +++ b/src/python/botan2.py @@ -1238,35 +1238,6 @@ class PKKeyAgreement(object): other, len(other), salt, len(salt))) -# -# MCEIES encryption -# Must be used with McEliece keys -# -def mceies_encrypt(mce, rng_obj, aead, pt, ad): - return _call_fn_returning_vec(len(pt) + 1024, lambda b, bl: - _DLL.botan_mceies_encrypt(mce.handle_(), - rng_obj.handle_(), - _ctype_str(aead), - _ctype_bits(pt), - len(pt), - _ctype_bits(ad), - len(ad), - b, bl)) - -def mceies_decrypt(mce, aead, ct, ad): - - #msg = cast(msg, c_char_p) - #ll = c_size_t(ll) - - return _call_fn_returning_vec(len(ct), lambda b, bl: - _DLL.botan_mceies_decrypt(mce.handle_(), - _ctype_str(aead), - _ctype_bits(ct), - len(ct), - _ctype_bits(ad), - len(ad), - b, bl)) - def _load_buf_or_file(filename, buf, file_fn, buf_fn): if filename is None and buf is None: diff --git a/src/scripts/oids.py b/src/scripts/oids.py index 323b6efb5..dae1a4dc5 100755 --- a/src/scripts/oids.py +++ b/src/scripts/oids.py @@ -200,7 +200,7 @@ def format_set_map(m): s += '{ "%s", {' % k for pad in v: s += '"%s", ' % pad - if len(v) is not 0: + if len(v) != 0: s = s[:-2] s += '} },\n' s = s[:-1] diff --git a/src/scripts/test_python.py b/src/scripts/test_python.py index e4f115d0c..868de11ab 100644 --- a/src/scripts/test_python.py +++ b/src/scripts/test_python.py @@ -197,14 +197,6 @@ class BotanPythonTests(unittest.TestCase): mce_pub = mce_priv.get_public_key() self.assertEqual(mce_pub.estimated_strength(), 128) - mce_plaintext = rng.get(16) - mce_ad = rng.get(48) - mce_ciphertext = botan2.mceies_encrypt(mce_pub, rng, 'ChaCha20Poly1305', mce_plaintext, mce_ad) - - mce_decrypt = botan2.mceies_decrypt(mce_priv, 'ChaCha20Poly1305', mce_ciphertext, mce_ad) - - self.assertEqual(mce_plaintext, mce_decrypt) - def test_rsa_load_store(self): rsa_priv_pem = """-----BEGIN PRIVATE KEY----- diff --git a/src/tests/data/block/cast256.vec b/src/tests/data/block/cast256.vec deleted file mode 100644 index e0db1b2e2..000000000 --- a/src/tests/data/block/cast256.vec +++ /dev/null @@ -1,53 +0,0 @@ -[CAST-256] -Key = 80000000000000000000000000000000 -In = 00000000000000000000000000000000 -Out = 66918B620F075819CDE620469D5F39B8 - -Key = 2342BB9EFA38542C0AF75647F29F615D -In = 00000000000000000000000000000000 -Out = C842A08972B43D20836C91D1B7530F6B - -Key = 00000000000000000000000000000000 -In = 00000000000000000000000000000001 -Out = 4DBF11C2CA26D5A712578A5C18E8487B - -Key = 2342BB9EFA38542CBED0AC83940AC298BAC77A7717942863 -In = 00000000000000000000000000000000 -Out = 1B386C0210DCADCBDD0E41AA08A7A7E8 - -Key = 000000000000000000000000000000000000000000000000 -In = 80000000000000000000000000000000 -Out = D64AD4962DCF990CB9EB1BEF19A21B98 - -Key = 000000000000000000000000000000000000000000000000 -In = 00000000000040000000000000000000 -Out = 0154FF22D769EB57AE14D7ECDD60C1D8 - -Key = 0000000000000000000000000000000000000000000000000000000000000000 -In = 80000000000000000000000000000000 -Out = D64AD4962DCF990CB9EB1BEF19A21B98 - -Key = 0000000000000000000000000000000000000000000000000000000000000000 -In = 00000000000000000000000000000001 -Out = 4DBF11C2CA26D5A712578A5C18E8487B - -Key = 0000000000000000000000200000000000000000000000000000000000000000 -In = 00000000000000000000000000000000 -Out = 41C30E3025A7E66F6AE733DFDC861341 - -Key = 2342BB9EFA38542CBED0AC83940AC2988D7C47CE264908461CC1B5137AE6B604 -In = 00000000000000000000000000000000 -Out = 4F6A2038286897B9C9870136553317FA - -Key = 2342BB9EFA38542C0AF75647F29F615D -In = 0000000000000000000000000C9B2807 -Out = 963A8A50CEB54D08E0DEE0F1D0413DCF - -Key = 2342BB9EFA38542CBED0AC83940AC298BAC77A7717942863 -In = 000000000000000000000000EE356B0F -Out = B25683CD9188DB9307F8A1236B53DE86 - -Key = 2342BB9EFA38542CBED0AC83940AC2988D7C47CE264908461CC1B5137AE6B604 -In = 000000000000000000000000B2E9D805 -Out = AAB348855CAC0DC7BDF2FA02757A2154 - diff --git a/src/tests/data/block/des.vec b/src/tests/data/block/des.vec index 80324bf34..42853248a 100644 --- a/src/tests/data/block/des.vec +++ b/src/tests/data/block/des.vec @@ -1283,43 +1283,6 @@ Key = 95EC2578C2C433F0 In = 1B1A2DDB4C642438 Out = 95EC2578C2C433F0 -[DESX] -Key = 0123456789ABCDEF01010101010101011011121314151617 -In = 94DBE082549A14EF -Out = 9011121314151617 - -Key = E874076EF40EDA62908D12ADF2B7B9ECDA474BF3FEDCDA11 -In = B83DF91F844FF695 -Out = FA942810AC8355C0 - -Key = 2AF5602DA83F821A69C81B1B83EFA70A3B4E3C1D546BF825 -In = 4EF5D7337D420403 -Out = B2C3C73B303BE0D7 - -Key = BEB7DF4A710FACB364183EEBCA3EE934A5B470031CE64A03 -In = 8D3C8F07A610FD51 -Out = 5712559676CABA44 - -Key = 46312600F8B5F05AFAA080D26672B9C44AF057D694702AB5 -In = B39949A845EF61C1 -Out = 3769F87FB393D49F - -Key = 25A3EAE6D9FB10E86E14032BB652262CD1D7ED74A2BFC75B -In = B00E6572A847D27A -Out = 6B1C14571BC9EBCE - -Key = 3D5BEA2C2216E30CE961882A593608CB5BA96FC656AF7487 -In = 07608C7CB2B11972 -Out = CD627B22E13ECCD4 - -Key = 5AD28C1D67C65E4D5F4A9DB38C32827BC6C4FE098996F017 -In = C2B7BCC1EA18B54A -Out = 66EF45BEA20DDAAF - -Key = 8A94FCBF30415180EF79881D32C8C061E4527DE53BF5915D -In = 59004793279BBEFA -Out = F0B6AC1318F01331 - [TripleDES] Key = 0123456789ABCDEFFEDCBA9876543210 In = 0123456789ABCDE7 diff --git a/src/tests/data/block/kasumi.vec b/src/tests/data/block/kasumi.vec deleted file mode 100644 index 90c1ecbda..000000000 --- a/src/tests/data/block/kasumi.vec +++ /dev/null @@ -1,13 +0,0 @@ -[KASUMI] -Key = 2BD6459F82C5B300952C49104881FF48 -In = EA024714AD5C4D84 -Out = DF1F9B251C0BF45F - -Key = 8CE33E2CC3C0B5FC1F3DE8A6DC66B1F3 -In = D3C5D592327FB11C -Out = DE551988CEB2F9B7 - -Key = 4035C6680AF8C6D1A8FF8667B1714013 -In = 62A540981BA6F9B7 -Out = 4592B0E78690F71B - diff --git a/src/tests/data/block/misty.vec b/src/tests/data/block/misty.vec deleted file mode 100644 index 54770bace..000000000 --- a/src/tests/data/block/misty.vec +++ /dev/null @@ -1,125 +0,0 @@ -[MISTY1] -Key = 00112233445566778899AABBCCDDEEFF -In = 0123456789ABCDEF -Out = 8B1DA5F56AB3D07C - -Key = 00112233445566778899AABBCCDDEEFF -In = FEDCBA9876543210 -Out = 04B68240B13BE95D - -Key = 0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A -In = 0A0A0A0A0A0A0A0A -Out = DAD2CFFB201C00DF - -Key = 0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B -In = 0B0B0B0B0B0B0B0B -Out = EBCF435B23CFB4C9 - -Key = 0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C -In = 0C0C0C0C0C0C0C0C -Out = 92E00981E5350015 - -Key = 0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D -In = 0D0D0D0D0D0D0D0D -Out = CD70199048ADB686 - -Key = 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E -In = 0E0E0E0E0E0E0E0E -Out = ACAD6C19AE66EB41 - -Key = 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F -In = 0F0F0F0F0F0F0F0F -Out = 4ECFE751E0E6A16F - -Key = 10101010101010101010101010101010 -In = 1010101010101010 -Out = C7A91953216F1B61 - -Key = 11111111111111111111111111111111 -In = 1111111111111111 -Out = 0227EB3422109682 - -Key = 12121212121212121212121212121212 -In = 1212121212121212 -Out = 5B88EB8714B2CE08 - -Key = 13131313131313131313131313131313 -In = 1313131313131313 -Out = E325B133AB02C021 - -Key = 14141414141414141414141414141414 -In = 1414141414141414 -Out = 93A4074EE9C38AE3 - -Key = 15151515151515151515151515151515 -In = 1515151515151515 -Out = 15AB85B70F337868 - -Key = 16161616161616161616161616161616 -In = 1616161616161616 -Out = 7EFD6E05D384512F - -Key = 17171717171717171717171717171717 -In = 1717171717171717 -Out = C1E46E7B54BAD271 - -Key = 18181818181818181818181818181818 -In = 1818181818181818 -Out = 956504E0F372D380 - -Key = 19191919191919191919191919191919 -In = 1919191919191919 -Out = 667C8BB548330E81 - -Key = 1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A -In = 1A1A1A1A1A1A1A1A -Out = 1F8787DF7582DCD0 - -Key = 1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B -In = 1B1B1B1B1B1B1B1B -Out = 47F4EAF5BA82C610 - -Key = 1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C -In = 1C1C1C1C1C1C1C1C -Out = 0F772431C6E54F3C - -Key = 1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D -In = 1D1D1D1D1D1D1D1D -Out = 51CF4361B3EF3EAC - -Key = 1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E -In = 1E1E1E1E1E1E1E1E -Out = 7AC52498328C66BE - -Key = 1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F -In = 1F1F1F1F1F1F1F1F -Out = 9C4E0F782BBBD830 - -Key = 81818181818181818181818181818181 -In = 8181818181818181 -Out = 2FFAF44121E4F834 - -Key = 82828282828282828282828282828282 -In = 8282828282828282 -Out = 4EED79D6916AA112 - -Key = 83838383838383838383838383838383 -In = 8383838383838383 -Out = 12B62B3C7FCAA24B - -Key = 84848484848484848484848484848484 -In = 8484848484848484 -Out = F7FAF70C7E4ED8B7 - -Key = 85858585858585858585858585858585 -In = 8585858585858585 -Out = C58EC8FEE9DD45CF - -Key = 86868686868686868686868686868686 -In = 8686868686868686 -Out = A6159BD7C1E24B82 - -Key = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -In = FFFFFFFFFFFFFFFF -Out = 651F3092AFA551D0 - diff --git a/src/tests/data/block/xtea.vec b/src/tests/data/block/xtea.vec deleted file mode 100644 index 27b88ae99..000000000 --- a/src/tests/data/block/xtea.vec +++ /dev/null @@ -1,272 +0,0 @@ -[XTEA] -Key = 00112233445566778899AABBCCDDEEFF -In = FEFEFEFEFEFEFEFE -Out = 36552E889D6A41CF - -Key = 00112233445566778899AABBCCDDEEFF -In = 0123456789ABCDEF -Out = B8BF2821622B5B30 - -Key = 00112233445566778899AABBCCDDEEFF -In = FEFEFEFEFEFEFEFE0123456789ABCDEFFEFEFEFEFEFEFEFE0123456789ABCDEFFEFEFEFEFEFEFEFE0123456789ABCDEFFEFEFEFEFEFEFEFE0123456789ABCDEF -Out = 36552E889D6A41CFB8BF2821622B5B3036552E889D6A41CFB8BF2821622B5B3036552E889D6A41CFB8BF2821622B5B3036552E889D6A41CFB8BF2821622B5B30 - -Key = D94576CD1A5F99E4155DC7BEC5D33DF2 -In = D51399607F7AA9D7 -Out = 782E4E131C5BA746 - -Key = 07EF12BC9D06D7DA20131116B665E335 -In = 10B233473624CCD3 -Out = 57733A1DEECE283E - -Key = C6462B48AFD604B75FCC455506FFD411 -In = 3B905E951E4FAFE7 -Out = 776F4965DEB65775 - -Key = BE195F703D6FEC2232CD0890C981B27D -In = 15B623D1FA2DF9DF -Out = 3BD5AD5C9ED6101E - -Key = 5B8410F7A9EB92DA120810C56FCAF8C9 -In = 7C1035940696D91D -Out = 5F93FA1D06991415 - -Key = B85C9E26661889D0FF1054C6BE27FDEB -In = 90B245144895F3AD -Out = 6105BFB0947828B7 - -Key = A8A1E956D54D238F6CEAB186E7EC99ED -In = 4EF2CFD120B8D4DC -Out = 51FAE58A10F7C3DD - -Key = 8BC4879201A96368927ECCEEE67024EE -In = F6CB5353F4A1C432 -Out = 550AD71BA8A34568 - -Key = F1372D85D8C3D1A60DF57EEDF317AB81 -In = 215C080CF158A09B -Out = 13D1E24BA9FF7B63 - -Key = 017F01683F5E009D196FEEAAD385C5A9 -In = 568583061DA98D0D -Out = 6439B1DFE2ECB541 - -Key = 281C932DDD3C364B09F1896007FFAB03 -In = 0558B306316B0823 -Out = C8F82FE4491A8917 - -Key = C1E95465C7EF8EB04254D1A5463C6A43 -In = FDCB2764303222C7 -Out = 244DBFA1D2C914E4 - -Key = 0F86DD6C96DD31164B656B0F25E4B411 -In = EADDBA89070EC46C -Out = 5A4909646763454F - -Key = FBACFB479AE21194C35B8184E58DD66E -In = C6507BCF99B9C2A1 -Out = 6F08EC714E8A7C18 - -Key = 2EB36C4A9598D471700A1330070FFFC9 -In = C380B0F1C21D4D37 -Out = 72D4D4BDF5C00585 - -Key = 0A7F48127091780617A1F534B3271BC9 -In = E5B7C1517F24F298 -Out = 64374B40BB732354 - -Key = 303FB24822A1B8A84D0ECE77B86380FF -In = D14DDF77FDDA17BF -Out = 014F1E707D02C8D8 - -Key = F04EBF798C193F199C1F532AF383555B -In = B9682750BB15CAAD -Out = 9001D21B57AB5360 - -Key = 200C0CE59717D5D9AF6813CD207FEE73 -In = 9706769A18A2D03D -Out = 835FD788C089FD45 - -Key = 2828D51F98AE0B33F4DE2B7FBD18A529 -In = EDB76C54847DA59E -Out = B0C0125494D39CE9 - -Key = 61AABA6BE48B0D0D14FE5D27FAB852A4 -In = 178A49BAFBA53F23 -Out = ADE26742F25EFBE1 - -Key = 2080E2409BA01C8532FC84403EE8C06A -In = DF4CDB61A5F38536 -Out = 9C895E72168B409E - -Key = 271AD15192C4D1204A4A2561E3DB6FF7 -In = 7C944D08DEF34C0C -Out = B784E23E00B3B498 - -Key = C1E297C0C761777D8A76FFF02D22B859 -In = F4C76C1D47FE568F -Out = 62F9E58B0364B0B6 - -Key = 23C807A2EF0A551F858FD52D125A47D8 -In = CAB16583E15D0074 -Out = 4563BE765E74653A - -Key = 9FA5D4D8CBDFCECD559E3CE88BF78EE1 -In = 97B05C60774164AD -Out = 714807767366854B - -Key = 24F4E91083139099D663647A7FFAC321 -In = 7017A263985B735C -Out = CC68E1ED7F7C7832 - -Key = 7CF8626DE76D8462218ED5C9DC8ACC26 -In = 15475A90DF04CD29 -Out = 416EAB1EBC155782 - -Key = 3C6AD7DF17332A3E1E3DE06007387357 -In = 87CA0AACCF146CC8 -Out = DED575554058EF42 - -Key = 24237A762D8A89383A2949F5A0F5EC08 -In = 9268AF048ECBAE67 -Out = 899B9B877106C764 - -Key = 209A2833A39472D9720380FFB2F74761 -In = AF0062CD77A84EBD -Out = 26DB40C151B74530 - -Key = 22EBE7A30E8855B3B453A6E926D4F187 -In = F922CA875B991A31 -Out = 2763F255636A34C1 - -Key = 1B5E23EBD915C1FEE59F57DD91AF7347 -In = B4ECC305C3DBD8E5 -Out = FBBEC8F5DBF4CEFD - -Key = A6BFB85FA91B8CA4197C8B502A62F972 -In = 3DAADD7A9633E19B -Out = 4DE5C07EA1564A64 - -Key = DD0C8719A8DA117DD9D1DAA189E65654 -In = E197D59E064818B7C8AD72C29E227E09 -Out = 04CD161E422154E5BCA5249582B9D4C0 - -Key = D8C8ACF6B4B68A837639320798994979 -In = AE53AA320088B4042EAAEE3649FE6E36445696F01CA40D3C -Out = A3B303C42178F97F719449529D51511491B41EB70E6101C6 - -Key = 24059EA6D8A9F0CA678ED6680362596F -In = 655A6B1D6970ABA078819E5AE1D08471A0E01E0A5C64E612504F4BD9BE4A8AE8 -Out = 7DB966E1A2B7C0E8EAA9D308EF89652A5857461D100DD0CEF9C6FE7BB4DFE33A - -Key = 2434D48F17E0A7D91F255FCE60F3D6EA -In = F3B1BB81C053DB02A8515885CA6DF124AB04927D2AAF6F0032BF17B4B437E1F2C7D82F89BAD898DF -Out = 215D5ABF53C4AA0D7571A0D9D05C3B6D33D65BF35EFFA4778FF59DEE90900ACDD4FC6645368A294F - -Key = 18C1E1EB3925EEC61559DB74EC99491B -In = 06F0A1AD9F9EAA665044D0A2EFA10ABC30F7FBA3FC47C6AE1947B7E9B47733547E5C843DAC59D09393835061D834971E -Out = 066309B116A6692F279F2526FD284E75479BF7FB5F63096AD7108CFB0DB39062A2627594F098F0BF5A3B4C67CF29E993 - -Key = 5258617DB39A2968B1EB02565A2BDD1D -In = 2FA1106E95056E070352666F059A72DF6CC949BB3161D5FFD8FE46451444D096BBD606B0BD443189AF001E5BBBA134DB1FEA7AE9B4587438 -Out = 1DF05B34A733F83B7DA1F194507904CDA99C374174AAB472CC598E06960263BD9DD0EFA2F4C14CC8AF4039A55EC00125766D25FBB7139081 - -Key = C4A02982C1291093144C64DA1E7E3D67 -In = E6ABE28FD1E9392CFC65978D586D31D344140673E345D6AA06C75E1C03E4E314831EB94ABCAF6B23F2C34670A79500C6142EE722FD7E408D751DCB30E5C63F5D -Out = 3EC6FE802F4EAA740DDF34EB79798F458049FE09190D12455EDD6129BAE85D22FF4E96AEB59DB9413DC24D41730454F65C443C819265B4CDBFB87F5ADDE7F4EA - -Key = 58B61987700468A366178595E20A365A -In = 213595590E62A55F241E3D4CFCA65C1BA23BF801ED05D25A8FD0A06A9846BE3C28B9BA45A2B32BE80ED468E007EB6EFF0EECDA4460A700977B84464631B642135BAB8519248CA0E0 -Out = 5A6D52C19193A6C002D58C15BD2490CAA36550B684A726C33F1A12DFA2D4764FB75EA336823833637765F37547103691B852FAB81BBD74EF6C20BB885AC42946998E74D2B8C2BB75 - -Key = 75E691CF7E511D4B1A114C0E80BC7C7E -In = 7DE080A1683521CEAF78AB4C3160D326A07FF4C6F446A94FEADFC0BC8464EB781D743694734C5938F7D2DE4822EFFF34A82EF0C2E11F92CF1E0B2989786FA990DA3AAEC7FC647675024BDB47F20C67A7 -Out = 1A5002651E1686F56A6BFDD8DC40DA9DCAE7E4773237720BAC8962DC2FEBCAAD885C4A62F13476B303B2700150F5CBA1CA976A753E6971095F175E8BA2D97E1F1C18FEBB0F8658DCE957E65DA18D38D8 - -Key = 5161285DC54A3D9ECB691C0CDF987D33 -In = 739D59F39F57C04D1450926AD161AE7CF1522C4929CB299C2EE03842E3DA7AFD54AF4DEF19867E278678222C85D8901526E62A008D449478FE4249173B6E80980B9F91D09F7F5CA8A174EC73A57AA878E74F0315B6F3E15C -Out = 59E210F2DF601ECB05F4FBAED1077A9AE1B783526DABCB881881BCD103658E03FD6C1D122508DD039470226BA0AA50AA087D40732D77D137DD2CC96824E24C44BA8955D250297C02E3D444F4F1E78F5A02C50C7314CE356C - -Key = 19B8DF4B8C9BEBE46AE4F71FDB4EF5D4 -In = 3A483364A30C28F9B932A11152D741304802030C60453D1E9433823A21F033DF5A6FB43FE9CCB423946DD363F9EEA9F0E60898652E8E4C4B6AB6410B468861CDCE22B3043BBF72520232EB34D1685274A3FDCBFD9753DAD0AE467CF7EE661145 -Out = 11AB2B4CC8CC30311EE2B979C6AF90C5EDF073CA2E483C2F0207E8E95AACC55F0120C9B0DC689A2B645EA1560FEBF3D027F0F24E551205091D04A72657209E814A9DAF3457ED96539FC1CC8937D76E2EB4854313E2C067F86EF889757E014B35 - -Key = 3D29E84526A1D60D177C03632DBF1E96 -In = A9E72827F67035507B5F0747149A73AC2763000470087FD6F8F165FCB872AE7BA58CF568E1D70D28891881F0464207E5FF67CD2A707B71286DA7635085B3B68F9228A646A186C8D09D3E31B56562ACABD0D5AA32F608C54086642AEBB72767643C90B7DC02FF772F -Out = 5AC440B8C9AF2D5843B125711F519D34DACF4D86CDBC856933C96D5B3CEA980E9DEC2F0E2BF6E8EEF38214D59B5562324C009953DCCC4ED2D6C6B55211AC5E0EDC7C8AD3F8760823D55365D84525E09DD3145DB6D700D9BAA4A92F38EAAD8CE33000A0ED72A1FEAF - -Key = 10E1FEA37BE818FD0CC1421E16A3151F -In = D24A21AB1ECBCF2EF83A1FCBC1032EED930FE269AFF8EDCFEE26FB1A2DA9D063EAE522E841024B7FDEDCDD6BAA1126834C996B9FD09654901FA8830C64AB1F5CA3BE896D5E60BE29D08C9E0A4F07956551E618F1FBF46DC8255A4E2F4DC8DE5729CCBB39FAECEA0A4C45F53FCF5C3973 -Out = 2A2A34F1EB3F99FAFADAE4A68CC85799D9EB7B1F0277E71D56FBC395E3A93980B670D36B87153B90B8154EA962C39A049088665EBFE6D43A5E9A04A93F4D683DD509E27BD3AC659E5AEEE8B62EC3037C425EFEC0E726E8E572017940725A794E58817914308832AB59644B03D1155D33 - -Key = 80477A99D76ADDF3DEBEF9E8FF185DFD -In = 9CF0C3E72880B2C3FEB787D84866DB80D4B4EFA60E3708CE6FAF0ECC29EDED0C8D9EB26957F1DF63FD39EB11158DD089B9622D161AA83E0BB921067F77D6F4479B17FB9C9F30C4F56A86EEF38733C8D557053BD4978E41B965CF1F2025402836AC90935E9564BF23F5FC76F29DDBA491446695A82D54514C -Out = 3A8E38AC17AD900742F711491153A7FB93C04F981CF75FB34FC9B28A2C24A81C60AC4585DFE04FC026B6731A8C2404E65DE9FDAFDD32685A3863EC4CC77490F8E0D3ED234152FAEF3C8E1BCE7E4BAFD1171141D5ACE23BB3E5EAB0F20D000371DEF9E831BF716B6AC5EC2313F013766071F3AAD4492FD780 - -Key = 978393BF38701AE612953AE4C060B632 -In = C1BB0B801F25223FCDF8CF13251877AA8472CA6924C0F51F1C968E981CFEF665F99EC57E4C33C3B083D7DC62DC0096B062CBB6DDF4D39DC28843A74E81A5F9558FD9F5F74D3857BF01A341BA443A2440C85CF069A757AA0E1ADD2B67860F3BEA805EAE1316BFD5638C312E96614607B5BD816B55FA16C301B71212B5B1203F2B -Out = D481D95387B075DDB6771A669D3E11AC591A629B53405802F016E710D5E919E195A4553CF83337ABBBD506131F363D2BB5A8D3B542AE8A99B4D4641C373BABFE737C14AC6612FE466D2A83C867F42D4004685B230D3FC1C23D3410D767353A5C523B0B36E0D35D9B3D9605AE9C8402D0F7679A3573F3354E6BE0F2D173355B6B - -Key = 9A4972A00B5C1B22AA07DA8C1C8B8FF9 -In = 0C0627A330788002C9DCDFBBF23F46ECFF4CF793D93D934CC553A64ABAD1DEA3710F775C71D54412BB3B6361B54C5E2DE7244CED9B546D146F20D8730FDD8AA155EAFFBEF34C70BE1F6199F67D88186ED039E00BB88B7DD13F071AA4C309CF92C10DE3882674B5C5C5EDB457F826C2D62724E1AD328CC09FB4113E083E4C4D31717FFA66914890CC -Out = 5AAE35C53504B9DB9CBD7C00B01AF71772BE3E911DC6EBE45C1EBD331DD81CAAE710F9637B2B22C12BD16B0D84F0B41A59BF169938475F56B57347362C7E6EF4F9ABAEC9F44C3BF11BC2D02DD0DB00A8DB780A1D1B399C11485EAAE96E1AF12EDF48B4CF6FCCD343F16CD0565E843EB4FE1DFFC1EE2FA8E0F73839D6F6E131442154A4972F552DC4 - -Key = 8EBCF7F6F9025BD94D2985A4D3982A84 -In = F2DF92A7AF36169DF9F2CE6DAAB0788284FEFC9D1C43619FAE6CB75576EE173DA697A01D96835B357C89B737794D0E5B2C7F02F8E5DB968E2D000AFCFDF9B17BFC8383832A2CA177CBE99385C9314F94977350C2D4B4AC6D37E0EC8F36E666C54011B2ABAD25CA922946A7B0C9FB5AAF54D618BBFE59C1751404200BA90051B5E54F64C7045B72B01681FCC6E7763F8B -Out = F090795579AE3AFE49B96ECD3A8C01D449DA8AD81AEABAC135EB9CBB904647D5B1522B208F325C0597A2294CC1A10164551549B69E96F5AE72DDE9A4656AA533FBD7E98A6E66BE29663176D5621CD21F29494D1CF6D784432B1524BA56BC3E67E9FB4378190268B4DE6BA74B8B2B0E1EA52B75C45FCEA715B8A00B7D2456BCE2B45B192EDC10FE777FE53260F8E25397 - -Key = C2A7EAFAE3BAD26025FBC1EC1F3B1342 -In = EE4C225C44528549B4F609723FB33467DBF135FAAB3F6C82DD9E3383714F39EBB31FA595850389D1BB1C1E9DDC3D1E0439F21B819B3D294B15EF81EA1E95C36E75D20B4C0D7C3765E97E9A2B9E03B5F5D5705DBB35C241779E232B0781EF9A3F371D89E451DC68F6F7E0AC8AEB7F8E41DEE6A0A86ED9195CCF12BDBD820243865FDD31B8D0F33418023E2089BF65A5C9D20E03DD7D4C8287 -Out = 355BDD01480727A7496347973315434AFD0D75AC1AAF3869A461F78EF5E5923A7C4F749F7929C497CDCA398F4CA868A860E0296A952BC115C07B38D5460753D134E8111C0C108136154EBC7A386921F754D1F116F474C4B7DC8B5515ECA301E30D1D4661FF2814621C0CE1CE812B317C94EE900FD23FC2D941504B345B5BCB4DF7CC3A01BD3D759E4A7C4C4FA893B6B230D21FEFFB69C0E4 - -Key = 86014B66CAE76E61371F64A580B3A3F7 -In = FC2B09E77FD6C0DFAFA0EBA6AA058D2357A620E4EFE70E52E8136B5294EBCF97E3DB642E3062EDA1DD93DAF24E97FB14F41C53D38729105BB46DB59507B6152CBF7747537F9FC8A8CDAB5028AEBB26FA8B5E020D7E1D110C159425ADA07B6E2526106DB5C1B4E2F62B5FFDD398EF3581EEA831FC686389C19E679B394A79D24AA34403BAB37A8B313F82878605E027EED34926D390BCFBB1E786153B0379C382 -Out = F330598D81495B8AEFCBEF71B791A872B394E7A472E4E9E4D4C4DAABF7C2EDA0AF52CC162FF5001DF22EB012792A509C25566AD0BEBA50529F015CF3C4E6139C80373604EABA6F7593AF87B31E300A3A2C5B9DC10EB36DE921BDF7E5569BFE8A4155F6F5F272846194E0178B228E15DF6787AD158F0907205FA941D76BA4A4F2C121652806B463CC1DB8BDDE50776BBF19577A25A66B4DC3230870963E53A137 - -Key = 372ADAC63D66E934514CB2E26B388F25 -In = 2642676CAE2461ADAADCE76CB12F9BE1A85DA497B5B6FA3FFFDA136E5ED6E53ABE52AA961D3D12EDA92644D9CCF6EE1C0023744BE75786CE57FCA3102D0E4AEFB3F6CF7E0FC1C74D37DDC4CBF3CD59560DE06209006A55E8C463156B8F1D81C7C9FDC270A39FDBD67F53A19673514569BD75BD747076C2CDBCF51C98995EDFE830CA8372279EA41819DC68ECA82B247653BA8EB10A8F909A762B74D9D46D7BB3E29C725C74504D0D -Out = 20401A5F52C04821DB0609B9113ECE78977DB9A614CAEF283062D84985985C50090D64F5BE66BB90E68D75801900FEBFFEA8BD5790337BB0ED215011E541AE1285FB3B305E05F4A24E2CD6D3A62EE76CA4DDDD2E371A67E36DEA94EA5C26CA1D1B322F249DAD9C5DE435D7704B4F29A7D960EB9582316EC193C97BB5B64BBB2ADE27F250C2BFBDD48D660825EBE99E75C0E4354E0E5B84338E6361A5C9C368F095D3630C3E9878AD - -Key = B4BB2D7C1DCCF12BF555DFBFF33BFA09 -In = 26BA6EF5054908E2CE4618CFABAF79F8D87DA4605B7F33EFA1C6AA0F039E138CCA821C75F0B2D17E52932B25CDCDE78DA2BC77432786E865CB153E0A0C637E9691D08679075095EA47DC18F40435B2DDD071D066F3B2B792FA528C0A64725F2B07981A2FD91F658C49B75317FB963B2BB68430EC9FAAE98963A8EA85F62AD4F77E115D3FD979DB421A773F2454E6AF49BD950550B126921E2FA581EEDB2387EA285D652DA362BBABE6F7D8454074B6C9 -Out = 9CD37096F29ED2C56C7D2842883A79D712F6AB9F5F08AED655CFECAA2F482FF470D74597188C280E8FAA0B19B51B56A4A8B2B8E3ACE48927A61787341F5DC153621C14110710895E4AD3886ACE7599919C985C70A8B9A7891FA43D1CDDB30726A2D5027D77386E5E8B80BD7CBCBAA250269C250A8F2276E052A88997182528B947751DECC3E8555A8D4C6D6C223F7B6D431AE2C7931DB88200DA4D987FA0ADDF0C0C8997B7224E06F9701BFAAB2E99CB - -Key = FB8C5F864EAD033E0F3D427E76B5C9F5 -In = C1EFE0B080811DBEAB17EB4C00E62F695BA71BB8E27006187F6F224F29D83820BEF01EF26D3CD5FF85CD5B005FF0DE9A8795B20F31E4D98A3BAE15B7BFB60FB8642D77C12E488652A26B5E32116AA0F7177D1E3F46C31DFDF212683B08E84C0EE72A15466974FC5024F3A0FA2061F53AAA86B3A29114D165C150D6FBBF0F07645C91CB5C9EFBCB292ACCF7159203BF83A28FD040E92711854CDB4679A6D885FBADD29438BA11E9ECBA68F8BCD4433F7DCC6C263E41C3E64D -Out = 781D45863F3047C63BDB423712F166E4E5D018A6CD05B70E1131622E93BD6E0CB56735B5335001B9B971A671475DF0EDBEC0FAB32DDFD422504A941860C223D86B77EE2A4F7CBC4434738CF7F59059EFC0CFE4693FA9BD553B5EF3C1F311FDB66C8B4117620126768A74227874D9BC89FECA06CEBCEE39528378B1B5915543453E667860D94C0406543B341175650D865D245225B0964BE723516490D8F908DA7B73A72C790A5B6CD6B980D0FF8DEFE9BE0859163D3527D5 - -Key = 4ABBB43F2BF9C69B02AED5D4D82310F2 -In = B863168DAF023E33D00F90F5BD076FA62F3BFADC93F0A1EE0E1466DC87507BE3E0420F884D40511F5C1A6DC912E70F33EC90D52E2F98FBE89EF076E3A95CF011F6ABA8A946B409C196ED86094597D35C548EF84ACAD0CB3E292CFC4D43183F4D97C43BFC5445A5DDF396159F9662D0D844391075E5A209A00CFD49AA86519F7C3DE285D9DD02F3924D0836C725AA0669F3B98C4B42AC893B90F55D4F07B83CAD7F693BF49D72423A369E7FC563D44229CBFB5F7A25EEBB50DBDCA0852851D417 -Out = 3F22A08DF104CB891887000C0B975296A0A736B7D074739DBB7B16100EC96EA30F84438E3C9B6F38063C2C4FD8B39262D828F000B8176D6793F8537598DA976A29228966AF45F698BE394FD0FBFED864BB1B81BCEF8D9FED2BC7FBECEFC31D319D6C54648C9C0ADBB83B18A56E8C1D72DB37FD24EABA87F6C9767E3B3FA4566DA71D03539EB8E558390EFB8B1839AFEBE11FCD2F81774674228FB965D4A78164E57F5348DB47E06C0D2507B9738F3750D1780D49E485B9CF89A7C716F9A628AF - -Key = 8C366409428A56AD49CF09F5C790325F -In = FB669C4A5B01B8808E3A7A08E47D2ECE63202C4F896402163D88BDE3FA02A0C7EA924B808AC430A3A157B09FDA1991A18DE25F842E2DD3A221AD2804660791AE592E60D9991C59D6D0E50CA49F1F4FF5AABA0C81DA2C36EC169B420745357B82201009C2E2EF15853C65647FC93B587E25415AAABB8AAA7B441F8E1616A1DDBA24C83935C5A4755C19719837AC1EFC7275B37E264B1AF004513D53BC94BFF7D6763AB8AEA592FFCE8725BF2CC06C711AA2691475CDCDB82A28ABFBB1D166A20D3563B66060699F16 -Out = EF73A9BB5596BC30BAF024316E5085A71F83CA9C8BBEBA4C0F5EACE57BD0F19A9688590B4F255E048E90EE2F8316885ABBC82BD6F15FD6AD56C3C58D5FE6BF3BBBC6795E4E9D424EB570CA5775B39EF117F4D0337F88E6B3096F0206F89D01F1EEB39A388F42C44CB03AD06A6A4E914D545499852E2EC5F1F35556515FC7D04E884D48D92BB1ED179C485EE5E5B136F81BEDF14ABB843AC9292B80440FDB5CDD50EB573C744AF2444BDFFFD785FE3535F698F446B533FECEFC1ADF7752916B2B77C68F1AD08A77B5 - -Key = 0D852CA9C6CB0FA6A95F2B0D414A6F19 -In = 379AC957E6721F2C33CFA9C8E8FAA85B3AE28E346E99FAFE06C5F2497724D800C332A3DE25424523CBDEBB0EA95AA31C88B8A00ED3CF0E90B42BC1CF690618CC15796E1966AA57067D5B7E172A1F818C1C7EAF58C27E6EB3F647879E9785FC8362210C8E8C458A60AF1CFDBEF698869E3347645C6D9AE7407F8DC7A1F84B20C1CEB17E33320F9BECC4B3E8E450BE9F5956F74CF33F764526F097DFCB63C57C9798F791B471C494062BB6675C374EA7273E69C12B5349172AEED9C66AF0380490B74F2293AA22DA87976580994A5109B5 -Out = 7AE8556DD6A8EE6E86499658479AE39CC400452F06071044CD165FF5C2B85FD59DE4BFEC7FBFE20F578C1E21A53BC896D3FE5D77C7F908FA96A68FADA439645F621ACDDD9E2F351F1E4D87BE5BCA2D6C93584DC331DD623925B630EC01C296F64F71DF0DD92232C7B0A0DB821B1761A442CA73EC3FCBAB386B0FFA35754ED91B113D51CD9239DF73ED46BBE1485075BAAAFAC363F541870AA96EE7F21C4ECDBC0DA9F309B2CAB1C77D6220B2BC9EF5F2319607D7C3D32C9F007C21CCA676872818085C971FFB778138C5398EE372DEC9 - -Key = C071C64B7DBA548A42CF9656521425FB -In = 84B35BBFE1FFE781B931EEA1556DBA23D38673BB229EDBAAEA95A93736104DF3805D496895F105FC5433F698CAC70526A74EB67935788C35D87E6ACB63A285999CB981173BA6EB6F8402F89D4D2DBF0A5DE904D5BDFC4864C6E48B906090DC418E9A91BDA8BE63E3CB341B570EBA6C5095A478C0FF43C062E12FB180D0B74DA39F7B562FFE9F652B3FF4356BA024777AC34D7F84C45FEA5EC21BBAB205C6FF43EC92782BEEFD471DD8703FBD5DE167A829443F5F1EE398475A40049C2AB577B5A6BF2581420F38D22F46142B59C92ED80F44A22A49644843 -Out = 17B0379B31BE60CD613289C2176135F971DDAAC953B76C8B48BA9FFCA0A040EF00E97A320FD19C9D4CB269AC205DCEDA98DB7390992FA4FC567DE5A39ACF08DACE83858E03E3BDE07B75AB74CF4D90DA3FF2B95476F9A81853BFFEBD91450E71E4D5BB5291BEA641F877361112D65E7578390A71CA8778CFACD4D25F71C90D289AD29045358D1DC8E14983E75CCA03F12521969916432CB967202086B62B33AFE1FA5B5A68BD4BF19888922F814577ED0E4F09C50D884A7DAE5B08B2AABFA8FA159BEA131841CB0F3B63F826E36682208F78839D9E84D917 - -Key = BC12C0EA9A1D8C2F0CA4F4683EFB8E38 -In = AC1211AABCB5E081D8C95FDD138A42FD6F1D808E37077D65D8FEAC80791E5D169A32B2F333CED7B84CFA383B430BD7611726230664C2471C0413CE30006872B0707DBDA38F9640D5E376D050DDD5526A3313AD1247B6CE98F1484D9FF0169B7190F8D4CBE10BC03234E3CA2581EEB98DC5969E2EB57A4C5A10DD5B5619D80D5A9B9C3595EAD7E0B5B622A5A2F685D70CD687BEA1876C74A29DE026C1F8F673D66F1171B1633A05393A9896705A8E504BC474083DB285BF8DD893D3D699505345EB97985948DA52A17AEABF279CC28E9793D360E8D707D5C36C0047BDC6ABE83E -Out = 40BF0E1D3B5D92417849BBAE059D7EA6F22D409F5563957BAD0A4398F963AC823AE33A6F6E908AC004E94A5AB9E3E7C4184C94FC90EBFAC6CC70C60FE939453507BB65913FC9A97721A730880EFE22439DF0C516009A06FAE30F6CED63D9CEB707C331D0EDC2945EE3561EDAE176E525E66EEF01E4FE4880F8F7D79A32E45CF71300A262A5F78079C20D7A9EB543D2269579EC077A33EBCFB9289EB85C979951923ED96ADAA2984D6DEB1F5B3FA9CDD859EF877B7594E84B99E3A9D2C8B8F984428D18A1B59EBFB851CB8EF0B4719725CF07D73E580C18B537BE3AFB34186668 - -Key = A114856E299B436E09F437C57B15109B -In = 2D2E50EFC0C6378E1D6BF584C498600F883CB10A49E27325E20A018B0BB3F192C7462F1CF76636CB86F3CE38DBE3A70502A7A6F72EEFB76990773407DA628C11FBEC2E8478EF2F98F0BEDB6733F695CF0158B8CF5AF6097F84116CDF8B973F3B0A6BC863B12EFCEDF0AD18F4755974E9A05E554654115EA2B309DC37D41B7C1C6686C6470A7A528BFD2E8ECA7E28657ABB5BC34532C38365FA1BA9DAA3CEBC85A9F30195E6D4EB52EF8CD243AE7DB1D082501FCA2A93A4A81C4E1DEF5F4E0625BB088D0B2F4C31DC26561179DC3B46DFCACE0E82CA9A05058E2118194F6021CFDBE0D8C1D7B6D41B -Out = A6A0348A6F587D6664381AE45F8A0BC69C51F7BF6C26755452CDDB4F1F101EA2224F61BCDBA8E97067DA55F4BF59A5D7CF12ABCF4DF18B92E4B6921569051F5E70F25698FE0D6C19B891B48A3E03EBD7FE4A79A250A8B5FE6662D4430725AC447B55BBDAFB259B323872B4EFBB452FB968E979006EA49A789F4C3743DBC1306AFBF5A4B1F421C99A3AA07A2E98A47B4DAF2204CECB2AA86FB9AB60125AD0CD94C799CF3EBEC65C6F4F2B864C11F513CEA9D6280CDF16B1F0E1F943A444786E1DCB1851681572ACA9571699B82CE9E5275E6999A1EEB599CC8A0583D11D47938324E95B67407A0D68 - -Key = C722C9F2A15369264DB7F54FEB0207B8 -In = AFC793265B90D53B647275124998999B3D8C91440541DB7E8CB0E8837AEB4653FC35361B55D659148D9F25E3C109B1BB92C037397DA8F91CD5AF0B6EDE7667BFCF1DDCEE76AE83F167D937EB67005D48A9503315476A43A45001F621444C562563DE6901E969F6662249A6BDAB7A638405EA3AC01304FD2DB772CC7AC122CD3D65B749A3F31704910950B642C8E5654DC10B07C614C65A07BDE2AB52196999066284CF0F6EB66CD1A62C29B683A436C5BBC15704688BAB92972421903D53F2072F7B8D53B02B70F63E7A7503207360A4872E04CBADBFEB321BCDDEA5E89419FEDED04000065DF73BE58A79AB5BDF885E -Out = 6CAE06C13E54BB2375E3D3C741E9C61D3813AB63CB157E54FAFD28E9A4D935E57D74032E5E669844D277F211B480F0E54E4F0B09C2242FE1D5EEFF32E1313759A47E7450B55E09C437D1EF3F60A0572134C2D9B5258414BA5D84774D65FE545F1B80E7FC06BD7669D05AFAA2271AEE74F8E0C247070CBA2FFCA62B6CE5BFB0B6E75055F099939AC44FEC6E9A3615FD57B3723119FF14C927BA06DFFA36E91744E035AE7A9F21625D74BB62C41802782201D1043E5B9AE266997FABBB42ED800EA1E2F2A4E78C265E3CBAA9979ED89A8FC6C9F16BC6802A5E7D2D819A7D8357B9C40B5BCC50726EBA3DD0791E11489771 - -Key = BEF7E425E917D067300D40D19AE12ADE -In = 936C9695CF82D4241CAEDA1E8C80DA52CA4837BBDD2158E2CCDAA99EFEC6F1FA29D6ADDD6FE3A660F50FC6C2AE456BF742081FB471A317707C523638AA27DD85621CDED72631C4690A857512265A11C283193BE33BBA6E77EACD56E9DF9541BDC3567814E98F0E6D57D9B25440FB7AB62AD9375B2A96F60C4E4B57AD02F62EAA06793D0C5761369447B9A0621EC2F9AFBE8F52E8720CCF67E4A1BC7285463E8DEAADC248CD8207739F04FD13F72E0A7A0CDDD5EA0B7111582A389C21F499BB4349E8BDFAB0925E4C299773A9A546913D37B7951C9052EE9455391880A77CC66F133FB8AF5CBDDB2433F3F9D52F94A15D8A9143D0729F6D60 -Out = 8144D92331D338C920C0BA0C6B32C6EE28BBCE148F6B56B5D2A12D029734A41B8B4071E4A7601A88E8CEB031DDD38E4588CCAA900E8E23AA1C3D4AAD39FB75B90A8C47ABE3641FC6B04EA1E74FD4B4B9E72310F79D25509B3DCA63BEB093A08F7149A23E0D548DD5C20449C90FB41C88CBB6D1D51D35DE46D4112090926A7948563487E34E7507CCBA9825BB48EA8709239CB49CBC0FC09447570E1FDE99E1316BC24A5CD38E53F613152BA9BAFEB065AE30CD73DADEF90E4E907C0E55EA0488B9CDD20926B3893D8429E4C9FCEA17087B6933064976F2503ACD2D8D0DF4CF6F10BFEC0C914B0C46E6FF575464FCEB1EDC01AFBE446F77AC - -Key = 19796BDCABF22920277106075D0E0EB0 -In = 23D35E037CBBA0A76A46DD433B547E17B54A81782A51D13829BA301250ECBEB0EB598F76BE470D8411E7E58516873B4C9BB87E4B41C4DA3BB941C3F8A9EEFAA507D30948692ADD5E53AF8EF3CE42D6944D8E2994F45F4090B8934BCB09B94B3BF04726F42B00ECF9D9893BAAABFAF712E022F82317CFEC8AAEB7242BAADEF7526833C2EA481816856BD423CC652CC04301C7212BBE69F251BEBFCACAF0F12A19F99EC4A88E4381403B24322133373ABE881C0F97D706EE4CBF3F5F7E69B8624F50270E508ED0487B0B8116BE1AF904C23B4F704BCB8AF92B118A912B5CD0D759C3F73A6331E1337B693B7EA65A017CB62C51A4E4AC7C6AB9530DE747FFCEF27C -Out = D968A79959F5DCB6486FE846504AC0E8753E56410795AB9637BA84EDD9AFD692DA253ACFDE1FCEF40280D30BAD93AF2386B755835AD1CB18D472DAF37D7C69109DE9898E09C69DD8D5DAD6D6640246B28F905FC0B1329D44E9AD2DD4D5D467862AE364CE7A81D5433B00CAF11B9A1D7D54910CB2B01888348ED423A2BB40CE0CC23210CE10CB9B123AAA8F41A3B25114398160C0E9241CEF67F52CC419AD31E5E04C4CE91716ED99702AE69E7A1D501C47A53F81E611827C7694E9B4B9446F263FF1170F4CD70B432EFEF97F0916CC6BA81A8E11EC996526E9202F6910FE8A427CD0BC8C7BFA23D0DCE30FDD6C2F36B582A3C9B698BC5CC6CEB3F951B26D586B diff --git a/src/tests/data/hash/tiger.vec b/src/tests/data/hash/tiger.vec deleted file mode 100644 index 7fbdbd38a..000000000 --- a/src/tests/data/hash/tiger.vec +++ /dev/null @@ -1,1989 +0,0 @@ -[Tiger(16,3)] -In = -Out = 3293AC630C13F0245F92BBB1766E1616 - -In = 4142434445464748494A4B4C4D4E4F505152535455565758595A3D6162636465666768696A6B6C6D6E6F707172737475767778797A2B30313233343536373839 -Out = 48CEEB6308B87D46E95D656112CDF18D - -[Tiger(20,3)] -In = -Out = 3293AC630C13F0245F92BBB1766E16167A4E5849 - -In = 4142434445464748494A4B4C4D4E4F505152535455565758595A3D6162636465666768696A6B6C6D6E6F707172737475767778797A2B30313233343536373839 -Out = 48CEEB6308B87D46E95D656112CDF18D97915F97 - -[Tiger(24,3)] -# From http://www.cs.technion.ac.il/~biham/Reports/Tiger/test-vectors-nessie-format.dat - -In = -Out = 3293AC630C13F0245F92BBB1766E16167A4E58492DDE73F3 - -In = 61 -Out = 77BEFBEF2E7EF8AB2EC8F93BF587A7FC613E247F5F247809 - -In = 616263 -Out = 2AAB1484E8C158F2BFB8C5FF41B57A525129131C957B5F93 - -In = 6D65737361676520646967657374 -Out = D981F8CB78201A950DCF3048751E441C517FCA1AA55A29F6 - -In = 6162636465666768696A6B6C6D6E6F707172737475767778797A -Out = 1714A472EEE57D30040412BFCC55032A0B11602FF37BEEE9 - -In = 6162636462636465636465666465666765666768666768696768696A68696A6B696A6B6C6A6B6C6D6B6C6D6E6C6D6E6F6D6E6F706E6F7071 -Out = 0F7BF9A19B9C58F2B7610DF7E84F0AC3A71C631E7B53F78E - -In = 4142434445464748494A4B4C4D4E4F505152535455565758595A6162636465666768696A6B6C6D6E6F707172737475767778797A30313233343536373839 -Out = 8DCEA680A17583EE502BA38A3C368651890FFBCCDC49A8CC - -In = 3132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930 -Out = 1C14795529FD9F207A958F84C52F11E887FA0CABDFD91BFD - -In = 00 -Out = 5D9ED00A030E638BDB753A6A24FB900E5A63B8E73E6C25B6 - -In = 0000 -Out = AABBCCA084ACECD0511D1F6232A17BFAEFA441B2982E5548 - -In = 000000 -Out = 7F7A8CE9580077EB6FD53BE8BB3E70650E2FDD8DBB44F5C7 - -In = 00000000 -Out = 605D1B8C132BF5D16F1A8BC2451733F7F0FF57FD5F49E298 - -In = 0000000000 -Out = 7F3A0954A5C374566C72370D1D97C2AC8FA9B1E3CB216E31 - -In = 000000000000 -Out = B333735AFDAB30B4B597CCD137AC1AD2B30D4A047BAD0127 - -In = 00000000000000 -Out = 1F27BB5926F35CF5D52A24817BF56CD17D79BB65ABE85785 - -In = 0000000000000000 -Out = 5229DC51A494B913F8E04C4C729C93CB8B260CA4EE8EA9D7 - -In = 000000000000000000 -Out = 5DFE02959A64534E0E679937B712F7DDE2C7B982597D315D - -In = 00000000000000000000 -Out = 654D00C774FBE74CFE4C0A6DEA5917823A6B20070CD0CCCB - -In = 0000000000000000000000 -Out = C82A6419844FC7028B52CAC8186D63B85121AAACBA622A87 - -In = 000000000000000000000000 -Out = 06F6D65EF081AFE892AC0946F275DBAB9D3B6D9C55E517C9 - -In = 00000000000000000000000000 -Out = 42C40537A876D69DF84FF36FBA3127901B112B9E96688012 - -In = 0000000000000000000000000000 -Out = 6FA00EB82505EBC4707F675B0A72A9F9795F647B550F155D - -In = 000000000000000000000000000000 -Out = 239549439CCE539F304CB7A95160A033529B228CA406EFF9 - -In = 00000000000000000000000000000000 -Out = 464B87921CCDAEDBC0D6941610D1EB19E536036096403F32 - -In = 0000000000000000000000000000000000 -Out = F29CF9B53DA4F9955E7BB766EDBAD59EA914E5354DDF9ACF - -In = 000000000000000000000000000000000000 -Out = E9B6BAA124BA93A4501DB9A92F212A14C538CF82C17E89B4 - -In = 00000000000000000000000000000000000000 -Out = 03EB6D4703EFCF2E088515D3B902A1CF78711B7E7CE3AF74 - -In = 0000000000000000000000000000000000000000 -Out = 53BFCB1EB5CA9B2E8A4225E6C00584023FF8AA0017AD3A0D - -In = 000000000000000000000000000000000000000000 -Out = 67F6D2B74B13251432469B9CE6A7C91EAD6E72B9CB51CEF8 - -In = 00000000000000000000000000000000000000000000 -Out = 81A68B237DDC60C9C31B34B52A754A8A7B1F51D40781B988 - -In = 0000000000000000000000000000000000000000000000 -Out = E99E18449AEB4421CEC31D1521C23445BC2598EA5DA14A09 - -In = 000000000000000000000000000000000000000000000000 -Out = CDDDCACFEA7B70B485655BA3DC3F60DEE4F6B8F861069E33 - -In = 00000000000000000000000000000000000000000000000000 -Out = 424CDDE2E5478A29A71352AAE538EAFE9F1B6F07AE05137B - -In = 0000000000000000000000000000000000000000000000000000 -Out = 996B4DD292782A19D742B534916870023F32E72F1C197625 - -In = 000000000000000000000000000000000000000000000000000000 -Out = 2C4B719E5E0BFBBA616FB8AB35470D84B676C7D3A6395262 - -In = 00000000000000000000000000000000000000000000000000000000 -Out = F178E06FC3319BA18F2EAC3DCC5240D06BAC062BCD5CA1CE - -In = 0000000000000000000000000000000000000000000000000000000000 -Out = E899374C34AED37FBC9E0E4A0D37A13045639D5CAF24095A - -In = 000000000000000000000000000000000000000000000000000000000000 -Out = 3D8E74F26682750FEEDE30A305C9CA162C6BDD9B790BCC5D - -In = 00000000000000000000000000000000000000000000000000000000000000 -Out = 3EFCD915BB46020B8999C9AD56356FB91F93C4907C4012D5 - -In = 0000000000000000000000000000000000000000000000000000000000000000 -Out = 739414BD4CD6AB967CD46A1D943412757D858B24D1C4ECF7 - -In = 000000000000000000000000000000000000000000000000000000000000000000 -Out = 3615FE2BB3B94A00245A1B3DF68B9D43BBAD82B16BFCD6A5 - -In = 00000000000000000000000000000000000000000000000000000000000000000000 -Out = 9E9AD6783D3775885E65D05EDA4262E179836ACBB9867CE2 - -In = 0000000000000000000000000000000000000000000000000000000000000000000000 -Out = 5D91C8314556534FF3DEE0515334F09E16935538E347C029 - -In = 000000000000000000000000000000000000000000000000000000000000000000000000 -Out = E48325D26CBEA5C14AF5D2BC043242DE2A5DC17EF5798BA0 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 0DE25B928CF3E4FE85F46C18334D9C9DAE995E4889068C4E - -In = 0000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 1BD4360038C1282E66538B156E9F604AA0262D4608184A5C - -In = 000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = FCC72686AD012FF48D1471CD0EAD606EC21A5E496DB66103 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = F11D39950658DBDF786703E3EDAAA3A654B4428AD419DF11 - -In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 2AFACE18DA68984D907D1C0F647E9244D6976F4F471064B9 - -In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = E2056969720C08B5C9C8F903416668A7F5B2D6F95046C5FF - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = D95BC879A68D549A5296BD34344C5ACC4D826E54ECEC346C - -In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = D33A7246729743643BF4B438FBB9BC2374F9E346A0868DC6 - -In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 1201A8247225F31B928390B35787C046653249D0441F0AAD - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 1E63B6124EF57A92B36C8FF837C38CC9072048ED98EE853F - -In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = F2E4B6637FDFF18F785894EECEA514E7B96B2409E62DF3FB - -In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 10DD94B66BA6AE0498C9C7754844662E5D8B62E27D2C4D26 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 8BD37E3CF05E59537389672DF921392A45CB57ACFE9247A1 - -In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 41621DF28B038C0032508592F986C7C4832927CD1134B2B4 - -In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 978365EDBC762C10187F212BF9115D79FCBD489EC135AC9A - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 8C4A9C341016B2D74E1DC75478A20A57EC934C38E6D60DF3 - -In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = FD5A1DDED7D38B987B582FD91E95FF8ED84DDF5D486A00EB - -In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = F5845CBBA386319361D4042658606947FB96D72934378AA3 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = A4EE394B2A208E9B0A74C6D57568E470F6E658C44689FC63 - -In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 19208AEF976EEA1A1296AB46BB8519E4E35CC3D26D2B574F - -In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = A0D74C6090806AE1B4A9A676950B940DC37D28F762AF66DC - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = DA1DCA0F6E414B6634ECF34DE132F3320BE35AC8D6AB0BBB - -In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 49D948E0A5149A7B41F73C30B62FEEDBABA7DD9FFA9DB383 - -In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 95475FE7F5016A6FBB175EBF3B13EFE41FCFE9249586BB2A - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 8AEEF6FEB5BF02F8ACC6430FEC5CC7858EEDF9C1DBBE8F09 - -In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 0E425380B928052574D82A3F604162F3021361517560271F - -In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = A857DD168B22B65A6DD2EA8035C4EDC4B890453D14BA6052 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 33FF9966DDD692427A9BC4D611F3C74CF629A0544A1A7ED7 - -In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 759D79778FA748F8E828A568C45B7E2774A6052E0A4A06A7 - -In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 93E4986EC1BAE0334662495E3261769214DFAB96C6567A12 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = D50D44D48A7519B21C7ACF59DCD56066C7C328F680F2FB7C - -In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 6C240CDCC41A5DB56F7A88E25A04A2F3D10D33B6908D0F4C - -In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = D8581CF122C23E06A9A8781E6635113F76CBF21ECC520BE7 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 1E763325671BEE3E17FD894D7A4E1405315004563BFAA368 - -In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 57B581CBF0EF91E38F4A306FFB3791A0BE6E1FA96BDE0703 - -In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 0870537F7FD0A5F600E2B02B31878C2244F2E76C8D0AB421 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 6F1D28AA4EEF347CAE41FABBC528AE71345BAC83D6572BAF - -In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 704CE7D9895218DAABAF9BDF944F7901571D0C24873984BF - -In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 1574D6AD7CABC7DFAEE1520289E0ED8B26DC6195C5F588BD - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 257196F102E891E04ACD046CF099A2191ACE7F878B1C5CE2 - -In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 359F480A3475F89093F33289C3EDD28867C0E0F11AF79939 - -In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 8CA6EF62DD4E1445C729E3FAFF0B57DF5ADA90D714B906F6 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = D917B8C5CF18FBD88482F6754EFC9D308EBCAB912A609D5E - -In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = B3950A9D299A5A732CC0841F1EFAE62F3DB20A707B98F3F5 - -In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 4112B496A4BA7C67F040A48A30C3F48496FDD3AD2A4A9E6B - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = D663C288232D8512986F0C2F37F20A764AFABF068F44CE62 - -In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 4B0292082184E5727B98ABCFD57197EE14AB5893E2CDD370 - -In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 9EAF05D45A302F909E6850E28AF8A88E51799E20EF75D0E3 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = AB8FBE9C09E9906200201F3AFCEF79AFF29267BA19C63A82 - -In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = DB76DF9A0D2E9D21B57EC44C99653F59348981467EC2476D - -In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 0C2CCBAEB70C5C1F85FAFA01B1719F363D902716810F582E - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = FCED365E31C7E4F3B06CB6720875A33E1AC45D047D071342 - -In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 2FEDFD926783A5C91D51BCC3228F2846243B95E5D858AF07 - -In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = C1789746C0E04E42F2CEAA374FBCEDCFCB17AFB816D3D9B5 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = C055A3A9EF84BD96AEBAE31C08B74BA22BD2489C70D25672 - -In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = AE1AEECA1373D4348E4EDC2B7F393A8F44A351AA952AD7F7 - -In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 60CA04458514989969B5D3A1537F226CB54E3FCE9CC9B134 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 20E29A4A4C36D7C2BADE368564765EE0353709CE47D0E36A - -In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 8CE7840450B26DE74B798056D30584DCC436AD79B061729D - -In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 05D2A28308C44536C591DF21B02AB542AF982B81A4C5E129 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 196ACD3484E2F5FD51AC0CC667596AB0E764936C37A345B7 - -In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = C4F29A86A5415A0086FEC47CB3D46A71E8D224880657789A - -In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = C5AD956C7D06EC8651665176733FB2EF0D01BE7E81E0F775 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = A5A54E12A9538A158E78AE09896DCB2CE31F14150625E615 - -In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 239045220EF064D13637D503A6079EF21B5F2D02CF98FA5A - -In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = AAEA04D2B11931D58016A9B68B3FF543C7BFD87823EA6ABA - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 37838610BB3944FB3DFBB14B95A4007705B3773148E58AC3 - -In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 3DE1ECB5FEC022C7CF8B4CF4AFFEE41D85648EAEF6B0F5A7 - -In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 40224B9C7ECBBB69D1A5E0A3A0F249315AE1E7DE859FD763 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 7EF8F229B824EA82F8E8834E799A67A0B946086BD9AA582B - -In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 2543ECA4058C02EFE62E2131E9A7627D6DCAA6C51A13A517 - -In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 51E2B3A3D56D88BDB4F77CEAC0D146B08C269EB50D7914D4 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 9A3A264F48D2BC4B08671B0D6EE58B4E0E87D19CFC561738 - -In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = F8F8F7095F7FF1111811FB2B63F431B529CA740EFA9A3350 - -In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = E0BF4F81FB633EBF0092E6AD4EC8B6834A85DF4F639F94D0 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 114BD7F8FCA026BA9874DD79174EA1FB7275B8C7F2042871 - -In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = BDE5124EBA58CD1929DD63E9A4A987296D93E78378BA7E21 - -In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = FAA1FA47DEDC888043BC35BD97288C3E3E8702E3790A5ED4 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 4D0016CD63CCB3C917A9CAC0A656ABF1BF1F79A42D9FB4E5 - -In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 1D9C9AA4BD15F3B6DDDE9771259AA550F17CE01383DFC3E7 - -In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = D70BCAA1810D6213A77935D751F52C8743C809C37DCB02CE - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 9759AE86B5CC71DB9406A2ABDD0537940D717E2953E4573F - -In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = A6452EF736D5CFF79BC3C3DBAA7FC7B4B992AE7DBD87650B - -In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = FB7177FFE0E718C91348A8302C57129596149F042FCC99A6 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = A6FABD413D9FAF90AC0A8D97F82B1D28761D9B3A7A3A2E2C - -In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 93E56AE559EC7BF41251B6C84700465BF78E0757576679B3 - -In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 24F342F67741BFD5CCA5E9C5C0D902CB6F93DF12203E891A - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = BE7803AE8A8C84B7567352C2E3A78BE424784406D33F6930 - -In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 43A59ECAB48D3784CD83B0887E92D208A0E7CEC6DA3A7146 - -In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 7D16DC5E00379CA0F13FA261AD5FDB56449ADF9DAD3810E1 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 00A569CCADB17662483CA36230BCC6956BA5C1D5595C044A - -In = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = B99F2BEFF1E64861ECB3D91B04C9BA4BE6FC0FE7CE9653F3 - -In = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = FBDD470EE15111676B477532D293019EB182CE9EF17C0B59 - -In = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = D68BC840B64746A212810784CAB2BBDFCC49FDC743AFF5D4 - -In = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = D6B280F151C286E2B8A78B3C80F181E192BEEC0A339F0453 - -In = 08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 02FDBD79A641FDB807DD80699019BC97DA69D692104FBFCB - -In = 04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = E30F39FBB7BB8C191E2CD9A970EC806EA64825E4CCE782D7 - -In = 02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 0521BC64D5C188320CB9AE9D2A89BE291352F77C3E44772B - -In = 01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 60224F0B05145D00FB3C09E78522FE17FB7C64AC90AF4BE0 - -In = 00800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 3104BE53E8A19ED90BB03DA1FC5FBD052EE7D80B4AB31AF2 - -In = 00400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = ECE34E9D1BBA44EBAAF18254812DA74E1B250D874049471F - -In = 00200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 7FBEF692D8F3DB59912960E1C4F255D65CFA93E64CDA00B3 - -In = 00100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 180C2B906440036CB48ED7DBD670CDD06054734CA9E3E531 - -In = 00080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = EC1C85F1C4361CCC979FA94565CE47BA766B26C03E0155ED - -In = 00040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 0CB103FE2F16046BCF473C0EF5F30510094B327A811303AC - -In = 00020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 35E499F9FCCE1B0CFE442FE493333763C8E5F956A255DDBE - -In = 00010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = E8CFB0B7651DCF73891553FE1AD3DC0F1BF5CA89E2243771 - -In = 00008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 9F375EFC406EDB4DC7008C6ADF57CE7BC6072BD39593651A - -In = 00004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = C40960EE520A3F6E38938C4D774695FAB9AA99ED98724686 - -In = 00002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = C925142A228B90DC4EEE8D740480095B72EEF71717AF230D - -In = 00001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 49F67D2EE9E5E07754EB3FB587A5DFC9A5A5F1AF952ABB90 - -In = 00000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 8EA4A53FB597B8612B751B25B4D67A3211BD9B55810830FB - -In = 00000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 7F8A9779678C20D7B26126CE54CF40D586D639038E0D898A - -In = 00000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 45B2D2247DF2BE8762F7C2BFB1D282DB99686B8C61F12DC2 - -In = 00000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 5AF3F43A65A123F25318B108322F1422FBDD4E2088B3FCC5 - -In = 00000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 255BA44E43BB186AC95A8BA873F27C17D4209A7CDA0743E8 - -In = 00000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 6CC1C5FE50A6A3E1A8C9151E529627B7825E797CA2996763 - -In = 00000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 4C8E2574514F1908500775D706E66CB5E098A07763CB29A8 - -In = 00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 80E15B5D7DD082786B73BFA7C11ABE846CC08992D82082EF - -In = 00000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 9AAEDC20A2B5C9B3AC1FEAB011E0BC63C3F14A77716745B4 - -In = 00000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 20FDDFC28496F4B7C474D1DC0D2556B71A0BBE0008FBCA74 - -In = 00000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 6C5437A6A7ACD3882300183FBE7B474CB7C0E45DF4BF126E - -In = 00000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 3220E4DE2B99FD792057CA379EC8E0FB9277B2B0AFCAF7E1 - -In = 00000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 5605262344AED0F46F6AA94AAE288A936B3783D7B0C96EBB - -In = 00000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 79FE05ED00EA9FBE5C5A411B7BE9D0AB7E95FCAC4944FB5A - -In = 00000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 5632B77A86B06F60FB38F6F8D7B8ACB076610CDB17C45F3B - -In = 00000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 6F1C90B7CE7D352A1EAF908EAAEB69DE70CFEA924FA1F322 - -In = 00000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = B0582D1882AC0B5C534293ABB751072EACFCBCCD7760B739 - -In = 00000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = D56CC1F5522E00EF7F25DA7C524CFBEF639E04ED232FDA74 - -In = 00000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = FDD3E72BD41951FF6CA729207F9EE320F277C240C5ABA6CE - -In = 00000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 25C341EFBF8E0197DD7AA0D098BE9C262EA24A5ABF1956DC - -In = 00000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 3D8E11219C1F4A655DE818DD5BAE94724292D1FC1F2C0451 - -In = 00000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 78D0C2AEAAB13E6957111303BCE092987F38B125654AEB06 - -In = 00000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 76CE1A38D5408FCF5C60F231F8624D22EBE4F3C2A77833CA - -In = 00000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = A1478F92ACD8AFBF1383F566E8074249C576C6C01573C816 - -In = 00000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = EEF978C6730A5A51E0C67CA0CD591718F48E586924DACAC3 - -In = 00000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = D244E12581769DF1260AD3B9BADFEAACAEC10F08D0BC20B8 - -In = 00000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 6C88A229FF9769C257AE208427684E2BD2F2616FB11DC61E - -In = 00000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = F9AA7D877F5B192A751D6956225FBB166E70BB5373EA03B5 - -In = 00000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 8E5FC1110E41E417B771F4860BD7180A8771EC8BE3F51371 - -In = 00000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 16A04075744A70693EDC2823E6D3F53F8BD7DA82F61C988A - -In = 00000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = DAA5DCE2246AA0B16DFCB5A6DE1148A4667CF130CB0FE57A - -In = 00000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 7935C3EAC77062032E4DA41CFE266DB7B1CEAD6A92F36531 - -In = 00000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 12FAFE2DD9FE0F928585DBFFDF2FC940329F4CA2C428FFA2 - -In = 00000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = B5AF46B22173E04EC7C73D201D230E76AFF7E25E7C64C9A1 - -In = 00000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 04A39346609CC870A34BFE4BC381391E5096EECC0420CBE0 - -In = 00000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 8E30346B3CF6A33A5DF960349E79E318A559177A10132AE5 - -In = 00000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = E010FE9A2A139AF552D7A22D5D04D59ABE9F26099565B139 - -In = 00000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 7E3A17F0489C5D1CF249BDFD6D839D17797E5F91655061DF - -In = 00000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = DB0EDCB6F326FFC5EC6C23A9B23630110BCF3EF1623090C7 - -In = 00000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 0E878D8D2984F9A638DFF1A309EA4B436D24FA40B3BC5F4D - -In = 00000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = AE09F204A5E6EEA22BADD0042D00D48E60643343C951C79D - -In = 00000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 5411134E8112EBD21A89CA726D6C3293BAF1522031BFED57 - -In = 00000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 1CC1D5B8489F213F6A0519811867CA70AAB68B93768B2EAB - -In = 00000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = A16D7299661CC6978AE949CF9F607E286913CA0615E12CEB - -In = 00000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 9A2A8EE8963BE88DF83D5761D490FFB0450E9C450542CB08 - -In = 00000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = FAC9C5FB38BF7CE0902DC3E447D3D4D6DD369DBE94A8AB67 - -In = 00000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = C430CAA3FD05B674624BB549B3A565C9F1A93D8E4AE429E0 - -In = 00000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = D03C16013ACB204439B0B84C5EC0507C07EAD360114BB6D7 - -In = 00000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 44F6F5EFA89F2302B9E4B6710EFA1BD79F2589575F57B7A0 - -In = 00000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = C392AF0E93D619A0FAAC3FC2EE960DE9464DF3F3B87728D6 - -In = 00000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = BF1C5CF1B59A39C9EFD3D46F9144E7E7CC75F53C83BE87AB - -In = 00000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = F4DEAFA84B6859F0B32D04DA3CF8DED931870EB8EBA086B6 - -In = 00000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 68B3511E9A930CC1E465DDADD3813E79E5235690E279A53A - -In = 00000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = D98B1C76BF4216804783DD2A082F5722AE7049717AC6BEE4 - -In = 00000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 8FE146611B75E5E6527F0E2516F09090FABE1AE0F51D9965 - -In = 00000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = B6F4518C9B5A082BA4951EEFEE8991D2605395D04FFD9784 - -In = 00000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 0C4C268E0243354A31C576B053FCECCD320D864892DD4452 - -In = 00000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 4FCBCA86DAAD5EE31427339F45DB698C56F4EF5977C62346 - -In = 00000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = D63400C91F46CEB1F73427A1DD61920E5D98250CD7B21D61 - -In = 00000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 2002BE33AA6783F40109E747E27231C652FC90B304F91218 - -In = 00000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = A8FEDBD8A393C41857EA09B457FDB42078049B3F269C1431 - -In = 00000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = D2C06B7D56774863AB6F3A9F8FFD79FB56FF130906B16596 - -In = 00000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 5D8339715D342E8DDCB7CF18F4878D2221BB05FC4B2563BD - -In = 00000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 06DEF00E4151BBFA011D87096B16C09A955B1059EBA03393 - -In = 00000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 36386BE0645E7577BFF63BAAC50532912EBB7026B120E472 - -In = 00000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 8E4CAC8FE8C09463A5726B0FD3335A09E8971B498CCFC14E - -In = 00000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 45EA2AE4AD4B1E0C6958FABC69939E1A19300E28946638E8 - -In = 00000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 7C97246A7834ECF7074DCAD08A8B4BF3E8A68157889B97E4 - -In = 00000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 0F040C8CB0C777EE04086DDEAC53751D037FC41A62DF3D64 - -In = 00000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 011A9D0417A070DA0D425E835F03C68D0BD8762A7174C0A6 - -In = 00000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 76B90E3049F98281369B0ACD1D2193EF2F63A25F75D9FEA1 - -In = 00000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 733DBC18BB0821CD1B33210BD9018F2EAF405E0A281328B4 - -In = 00000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 4C3B42FEA3DA2B23AE3C723B22522AECC84BB1D5CD2F9E51 - -In = 00000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 77396616E87FDEEBDB6276B30422B04C2098F85F0085371D - -In = 00000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 6BD882666B2089F5A3904F91E26B34263BEF463456486ECA - -In = 00000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 1AA8BC49C40EEADA030EE802C336D83D75C3EEECDF365AB2 - -In = 00000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 6E9615A0291AEB33D37FFF3BDDAF628178009820457F0737 - -In = 00000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = F78CB6642756E3253A46FC55E5C852B5D209CB886F1953D4 - -In = 00000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 3D900B55C9CD9E821512415B734B06A28B8EFB0488F9EB4E - -In = 00000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 1D534936BE6E2831E83661E0568B170EF52712899E2F8A8C - -In = 00000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 68D08DCA280F71F6E33FE81F56BF5D98BB498B720F8294F4 - -In = 00000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = D4D1339C8797918AEB4000CE0B75EB741EEA852B7E5FEF35 - -In = 00000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = F6204099D4C1B7F82BF0A1364A6322C3578A46F354A68622 - -In = 00000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = FC94F4DFB37B4674843E0CD9DAFDE149D89667915DEFAEFA - -In = 00000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = F64C25ED176B388E022A3AA4622975F1CEC7A9A359D1D28A - -In = 00000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = CE3230D5A7B57E82F92D8A36485B0EF70B3A8430391907F8 - -In = 00000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = D9AC7B94226A60FC7D99CD796FD5B6EA36AE798047E1B53D - -In = 00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 8A9F12D8D9DF81E43E9DC038FBA927A3A0A0D6FA43749D2D - -In = 00000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = CCAE282196A07B02E896FDDBC71616298BBBC436BED3D424 - -In = 00000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 09503A7A95B31206D16FC3A3A6730CB379F413C255B0916A - -In = 00000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 0D799B12AF89A92E0E91237F37236BA484B5192B468F92B4 - -In = 00000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 04A3597758A82EE3EAA34F5B0FB1198A1177B3B3B8DD583C - -In = 00000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = BAC0B8BE5A41BB8186CABAD7A32F17559DB8579D2A32ED35 - -In = 00000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 96B5AD3931A54DF4C0754FFD17E2ED27EEDBA480D7DEC700 - -In = 00000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 4A3E600FE13F444B31E03CFA0863F9E316F83F68F16D509D - -In = 00000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = B5DA026AE3BFBFAC6D2AB00A16ECFBA40130E1817E26E6FD - -In = 00000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 635799A28E0E31EF6DA157BE71327548E1EBBE93D39A40CE - -In = 00000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 00A7C94AC7D6DA73AF3537816D7535F6501C81E9D0B70C30 - -In = 00000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = CEA02CEB43D209ABA6217234278931ECB509813A516C8770 - -In = 00000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 460F8608C1CE8A7ED701C8D46D800E5097DD421321A595BF - -In = 00000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 595B7A837EA74AE2A9C2A4DD9915C684E4003A78C908EB34 - -In = 00000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 40A34377B74D9C7404E69898DA030F47C7B4F5125379799C - -In = 00000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 011A1626ACDE5490D40D6D3B212E4296DBCFAA310C0D0A7D - -In = 00000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 0C38A676E739B11BF2B5F305DFC38C1194B67D5BD9ABDD3B - -In = 00000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = B2BDB49CBB6A27D90DC43CAEF626531E3794B02A4B557363 - -In = 00000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 925F73F9BF011425B3C855EB93FF2B3702994957C90A6E71 - -In = 00000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = C5438E4F6F20FA52579EA70DBE976E8ED0CD0CA79F0FF667 - -In = 00000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 9C19CE6E144C81EDBEFA42762CCE7687D82D90C80E6E4DD7 - -In = 00000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = F6F514983734179B56A2DB5810D2FEF9FBAAE792DF757EE6 - -In = 00000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 47EA4D78437E145E56490DD5C47788BEC899AB249A782AF1 - -In = 00000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 751FCB36A8B567673E9571B4F359CB7452913DE68458233B - -In = 00000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 6B86FAA0426879F9C1A6F4A9F26FF19DADCD0BA2C34273F2 - -In = 00000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 8ABD32BED2814C6428812B67CB7228BF02AC80EC80C5771C - -In = 00000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 026EE4B31888E474E20F1627B30475FFEE90BAFA2E214CE2 - -In = 00000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 6EA00649517124D6598C2CBB109B8F8AC445771A9550263D - -In = 00000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 9029BD1306510D7BFCEF39B7E3E6F3A62993A810141919A4 - -In = 00000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 802BE35C1D0356AA8D7E7830C1426AA9789CF9B1B75C7145 - -In = 00000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 78D1FE031819E727172B1FB5A0EC87AC33C494C1E37C222E - -In = 00000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = E87A76683F7B6D8CA2B47C8C41F346764053D8841FBE610E - -In = 00000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = E3E18819D97CD24E6C82AF5212876375134D9401E1CFB25B - -In = 00000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 528D81D4D77B3C9360D1CCB3D8D906FAD4BAEEB8C417AF8E - -In = 00000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 940509DDE91065297F51C95D6D61196BCADDFFBFE43A0490 - -In = 00000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 1F745AD4161EE006A4260D7249E0B68B0453B01819EB2A14 - -In = 00000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = B1AA443FAA0B47E51A307ECAC7FAF07CA8732E715513C738 - -In = 00000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = CB30A43A2DE29002ECE22BD0CA7FA5C40E0F1EE3C9784249 - -In = 00000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = A5B6D8400303E5118489CE082241808027945C143D1200AC - -In = 00000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = FFB82281B7B2CDFF2E83440CFEC036D03C26BD5133AA56C8 - -In = 00000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 08F21816D77A3D5F7DFFFC5477C4EB78AF660D7C32B1B6F0 - -In = 00000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 286FC4EA0BA3EE25CA28CD635DA1077BA00B7BBE1D319C9C - -In = 00000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = ABD221DECE666C1E0ADE89ED127001B1AE8B37A3249BC237 - -In = 00000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = EFD037EAD7168C5B48E18DBB0BFE94E7A7337ED9F9DC0B60 - -In = 00000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 17A915BB90D878000A07BBF2F7C29605541CCBB2BA33BA9B - -In = 00000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = EDBA011909174DACC7276FB748DA3D72037688E09B471CDB - -In = 00000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 18646AB2DFAC64E3D1B8298F9DA48F8ACD3EC8E9B6C091D2 - -In = 00000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 5BB55C940C48C5F173356ED2F76F135BB33C49C6FF401CE8 - -In = 00000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 444CCFDECBBCAAC55FD538C84FECE4AD05E1F86CA2183046 - -In = 00000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 0DD2986EBE58B62051C5F8558B33B2150E2162273A21D2D6 - -In = 00000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = BBD0BE785D950FEE7272A6A42E20EEF9FCC96DA0862A9D4F - -In = 00000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = C6EE3736BED22F09A3082957D5D2D9939E926DE56B23E540 - -In = 00000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = F272AA5CC30126CA15ACF94904EA44A28068BD3B3ED74BDB - -In = 00000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 24713F450026D6D9717475558F33A84CEC5B8EC74367A1F4 - -In = 00000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 021A9ECFC35A18BC91568F76A06EA7B6F068B1B45E725F2C - -In = 00000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 54027E9B61191C3ADE350615D809EC6A4BF7FE926946F93B - -In = 00000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 27C362B26734609E760ED30E492273A2EC0786CECE1B62F7 - -In = 00000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = C56A7C83A9F780DBFC564564D60B110894B3462BF202B31B - -In = 00000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = E46DAE97BF1D1433B91E7C4B30A3D11189BD1959F363C8AA - -In = 00000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = DFFFD3EE84CE33EDBD6CCBDF9FDBC4C6CD9F6C3663AB3124 - -In = 00000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = CA9D313C0A9D62198C2528B856627BC9C70DD1C6523AA09D - -In = 00000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = DAB676CBA9ABC9799E4416E703CD4C89348F3513D93BCE58 - -In = 00000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 383C379EE484CB248AF0008F339F2B76C25DB122ABE46C2B - -In = 00000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 466C5466009BFF5B4D9639CC2DDFFBEC31663189A11A3F06 - -In = 00000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 5C2457FB54624D291D0223FDCA7CE3EAFB85B6D492408A9D - -In = 00000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = FE593DC31045C782EC6B52216FC64B35FD33EE3904BA9966 - -In = 00000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = D7174534437E6168C2EF60B0EA9DC61ADD8098C0694539EF - -In = 00000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 75FDFFFAF4F1D44DD610CEDDB215E16593340EDE583C875A - -In = 00000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 36EAA91B577FB20178B0F06FBF369D07FBCE8445BB36774D - -In = 00000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 9068E188528160BC3B2C2036B4B6140BFCBC98A031847132 - -In = 00000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 42E86596DB6EA0724CE131CC379F5A3F37646C87026DFB87 - -In = 00000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 733642DD7D4F08A2303B7517974AC6D9E6EC65FBED56CB05 - -In = 00000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 92ABCE48F750C364C5FC649E3E2168E5BE83F6176A2DC552 - -In = 00000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = BB841126EBD38F36A63FDA47FD5971DFF6D9CF0432811535 - -In = 00000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 1A5F8B7F34376121B1BA35FB19DD2DE6A1FFE55D22703940 - -In = 00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = A4705AA774708F6D6AEABD6B527C973DD3B955E144812BC5 - -In = 00000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = ADA04C7993477041403A144C15BBFEE889A6F835B9F968DF - -In = 00000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 2F4179071804EC9280CD2EA6E265AD77633F5196CF8EDB32 - -In = 00000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 4378BD6082B465ADB4007CBDC5F764C402ADCBEE4347C08F - -In = 00000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = F75B2A3267B96CA1EE4191B99CE78B079333F10EF184D91A - -In = 00000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = C3891913D02202A3DFD2BFE70EDB992275744136452C566F - -In = 00000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 07B465A5110B6F1D8CC50B4716A5B5CE9985CD0A7A857EAE - -In = 00000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = AA3E818EDB7190F12AD58D9A4A9DAB53209AEE83F5B3C554 - -In = 00000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = C570CAD73E05B2F8283A26726F07BAA339EE78ED7CA42F62 - -In = 00000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = B48EC775851C9AE303F05AC8E51E62FF169C175792C2627A - -In = 00000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 1E3047A18CCBA9F21D1E58F90FC2F8100D94227E29DF84A0 - -In = 00000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 5CA88D9C7D388BCF7877FE0F8CDD5EC767DEC73783B60195 - -In = 00000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = F0AFF7784660E13949EEBC8A817DB227D7DC2248EB0F659B - -In = 00000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 9B5D9AB548CE2CB1B4F121B5BCACB724A02A655E56650014 - -In = 00000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = DA5D70AC87DB9AB9A19D7E79FA3820B9A6855F148A662E9E - -In = 00000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 0DA0AA0A4187C2AC05B220AB88498FC244FCEF7FCC59692A - -In = 00000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = DEFC6E4E0FF252A652CAD76C06429D7D902F80D0C132EC2C - -In = 00000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = FB8EA1191F9272038017D3D10B0F901514490B119C3C086F - -In = 00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = A0F433C8EF9F86EC52989CC77B999EA02827EA0D57F00766 - -In = 00000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 73C51E27F033BDCF09E29C19740AC05676C7DA219C83F019 - -In = 00000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = C1A41E1999A6E7ED8D2407005608A44999C0918F009F12BB - -In = 00000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = C1DE2FB59A6A6CC45D3E1A9A502F0327E4E0582692882E01 - -In = 00000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = FA371922F657875B03268090C91EF8A7D968486EFCBE853D - -In = 00000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = D7786FFE8F9411E982D591C63A364483A733A005D8DD4F52 - -In = 00000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = EA71A84A2AE43700E2D6CBF9705809F38EB01E3AA3500981 - -In = 00000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = AEE84693BEA5105467DFFF30E694772F31148CCECA362D0B - -In = 00000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 02C9565A480DFE315479D62BFFFF915768411199596D0067 - -In = 00000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 0EA5DA49521F8C298EB3A65B157D3B0E42E0BDA0EED10EB3 - -In = 00000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = A8F8E5533E0025DDF4421EA099D9C553736B86626649BFAC - -In = 00000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 76D357BCB224F3B59DD6286A3EA0D4C2D09699E68ED7D4E3 - -In = 00000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 202794850A8B2A8D611473C84F18835F322D32E04214502F - -In = 00000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 1BED2B5DAA818E27EACA9EA5BC6B5D88FF7605CBC529C423 - -In = 00000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 6FCEF79BBB8B556D597071E6E86815575C36955DB95FF0C9 - -In = 00000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 5C76AF9054B56A78EE4BAE2F69E54EB4A4DCCA9251EC323F - -In = 00000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 8645904A860B9227CC2EBE31269BCB033D12626D4E7B1E07 - -In = 00000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 5CCAA2D96A4B90DD33CA1A8F63D9A32785FCE91FE9D261FE - -In = 00000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 644AEF13CA34442715AF3B71F6F40863B9FE5B68D9AEA69D - -In = 00000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000 -Out = BB8F2FCECA6DBE2233D94CC9617C0C924251503E15ECBEFD - -In = 00000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000 -Out = C0CE5B9858DCAC7C2A7FD41EAD46C1D1F4A55C612EB87095 - -In = 00000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000 -Out = C3209B535B1893D292F24AA705A54AC6893F5C34DFC0B89B - -In = 00000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 4A9362D913330BE01F8AA9A40621CF2BAE0AEE998182BFD8 - -In = 00000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000 -Out = 6757B6725238FDF3AA6E92CE05242DC7A138F55A8A2B8CDF - -In = 00000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000 -Out = 9C1EFCC39E943DB17478F55C2E8F5AABE665A257A74E7CC7 - -In = 00000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000 -Out = 9E48EA08AF2BC00367D950D2A0BE14D0F26B71FBF3997B10 - -In = 00000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000 -Out = A6BBD6177AF40DDDCCF8CC8B8218833B8A89D6BE122E12AA - -In = 00000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000 -Out = F7BAE51827F6C16F31508A28D362DE9BA4984E47C88DC037 - -In = 00000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000 -Out = 65DD7FF5BB8CE8D5F84480BF5A0E35127CD736A1CDE7BC12 - -In = 00000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000 -Out = E8531E2C7329ED60B7246E6246B1FEE13B1B70F1A119CE54 - -In = 00000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000 -Out = 7B26F57EF6D56F8966AFB3AF6C9BCE1C1948396CE4FFB1F2 - -In = 00000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000 -Out = D6EFC3AD5E62E9055C414D01E11E0EC9374B5F4486AF92D9 - -In = 00000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000 -Out = B4000A22B7ECE2B3BC2695A2E98A9F4FC981DE2F44A80CA3 - -In = 00000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000 -Out = 30F506642345E45D1116318D8F9849A640B13C27291F5B83 - -In = 00000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000 -Out = E02C8DBAAA96F301081E0F6F6FF3163D11B0340C5154E06D - -In = 00000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000 -Out = 4D176A285408CA3E69FAA2F90B980CD10BED31F3B7C31F15 - -In = 00000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000 -Out = 8BBECF1AAD25FDC805039E0B0AE53C72B2D598400FAD8A0F - -In = 00000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000 -Out = 68213C2CB2C200AE8E130125F0DA1A81AF46DEA7A32564B0 - -In = 00000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000 -Out = B65CAE529F4F5640EC8E61D7B18DCABF5C42D09D16638E02 - -In = 00000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000 -Out = 6D9BDF35483F61B8B41DF2BB3DAB479CE960916A91768BA9 - -In = 00000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000 -Out = C7065FCFBD627402B557D08EE245E4B792079CBA32E7E956 - -In = 00000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000 -Out = FA7CAC5FC22F2AF0FF1E052D28817A65966B2B0C1C2F8792 - -In = 00000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000 -Out = 204A233E044B2C07EBBD2C529A8D578A07B21BB674EE4D64 - -In = 00000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000 -Out = 5D64C8D0554606505D54BDF395D6608AE15D23144284C05F - -In = 00000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -Out = C90A9B1D92220CA0F3F4A8E65155FE0E1D152C89213E96D9 - -In = 00000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000 -Out = 3C8673A6ED62C5FFC880D24A000053ED7042329424181DFF - -In = 00000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000 -Out = 732D68C9AAEF89D27676A87AEA0F975BC31E9B7184AABE49 - -In = 00000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000 -Out = 61D3540EF01107CBEDCA147F615B0DA929474344FA8DAB0D - -In = 00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000 -Out = FBF56E336FF510ADA9A801F84E4792FD8E9B1C3B44B4D666 - -In = 00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000 -Out = FD5EB3F4BF2E475CA451C856B2F576FCE1CAC3B700348176 - -In = 00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000 -Out = E5D6F6AF3BB3D2D22975AB500DA24B5783E651C1AFADBCC1 - -In = 00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000 -Out = 22C7EFD25977630807C1D0FD7DC220FF426D589BEBF3F818 - -In = 00000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000 -Out = 38C0B8ED87706F4A7C2DC5EADCD01C72193261CF37C196EF - -In = 00000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000 -Out = CAA17EB9893A85EBE650736A0B56FDCC9DDF6916707D1B99 - -In = 00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000 -Out = 1FC43409C387A59F2702D1120CA69AE1EB8BCC072AEBCC89 - -In = 00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000 -Out = 9D5CAD387705F97F784279C85B5C09D3A8216C3151BB8BB5 - -In = 00000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000 -Out = DC1EBB94F3E0E6703DAA5715A7E826554DB9EDE756B2EED2 - -In = 00000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000 -Out = 5E626E0FBB4CAE926AC717EC009CAEE23B5CD3062359E20A - -In = 00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000 -Out = F348BF048DB8D98D0BD0666B520AB255B12CA6047B3166AF - -In = 00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000 -Out = 8F929C79DDE5DE2794998170EFCABCE511637A29810ABF47 - -In = 00000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000 -Out = FE4661EE9DD9FD928D2AF9B5898EAEAB617E88369457DD67 - -In = 00000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000 -Out = 6E0C9BCE677EA50439E02731B301300511643AC1FE00125D - -In = 00000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000 -Out = 4589434D3BE9D44EF45DF1ED91AA97D812ED55DD869B9067 - -In = 00000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000 -Out = 0C0DC9DAAD3351B7CE17F8D1F6DBDA62F91FCF6C93019C45 - -In = 00000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000 -Out = 07FD597941C0A30A137256D65E5D2430EBA2C6EF24979E00 - -In = 00000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000 -Out = EEFC74ECC53C334768D59EEB02B49A462A976CAD32FA9F4C - -In = 00000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000 -Out = 292EE351E25622EF85A07C0C161FC0FBC09229C176998D35 - -In = 00000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000 -Out = 7ED81D7B5AD71E60F04E388D2E29E044EE253D701D213ED1 - -In = 00000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000 -Out = 56A2F7E6F85975BFCE0705A124AE4CBF7C3015690304521D - -In = 00000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000 -Out = B07EA50183596A2430F3DEC13F96845D1070A3D32F5EC066 - -In = 00000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000 -Out = 526F6BBF1EBE525ECF7EFBE693A06B746307726F2011529C - -In = 00000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000 -Out = 89EBE9219A9AC412BEC88BA321030B4AAA257B6410F7719B - -In = 00000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000 -Out = ABD5FE2E6DA870D5B894B35E72E41D590A01E40303524335 - -In = 00000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000 -Out = 1E3D537D9580A74F2D7FC71EE241923AB3848D11A1A5644C - -In = 00000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000 -Out = F580664AB99A6B50BFA21019261D91B3A1238FB129B0797A - -In = 00000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000 -Out = 2DB79D2513802F939D4608E4FFE38D1CD5FFE7B667CE3EEC - -In = 00000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000 -Out = 13B1F534DACAC2836C67B4B410151AE550AFF9C977B6A3D5 - -In = 00000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000 -Out = 86ABFE6988DFE9D6C9A884942946BE74115987EA3C6AF477 - -In = 00000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000 -Out = 9FB58A6C6822D1F7BF3AC52BD210132FD6DD1E823D3CE95C - -In = 00000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000 -Out = 1F5E0C29EBE8A28B934E7932C0D120F2F01CFA87DC089E0C - -In = 00000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000 -Out = BEA84869592DF1FD12127F891CA9DAFEE767226868F878DB - -In = 00000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000 -Out = 6FC0DF95D191F492399AFC32C4F536F43C14E189DA93396C - -In = 00000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000 -Out = 33E9415EA0EDB2BAC1DD210B9CC2F5D7F46B5B07C5EFCC3F - -In = 00000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000 -Out = CD933BE80058AFBBC9FFD6590CA2F53B3696E7F86CBDE8CD - -In = 00000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000 -Out = 15F89B44FF00A4CB930233FADB49A824F0AB540636A0E8A5 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000 -Out = 33C345BFFA20C8F0B92AC6F3F063E477F1CDA525C35E68AB - -In = 00000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000 -Out = 617EE74C600A5B9D5C591984222DC000642FA97ECAF6948F - -In = 00000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000 -Out = E50FF576A78A5FF73038F307740FFB190F405AAF65909C7B - -In = 00000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000 -Out = 10F16B3B9BE9762F603DC156A2626D0A92C49D6788433292 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000 -Out = 65C75607C3085EE0DF99AC88FCB71FEEA3E95D1995027B90 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000 -Out = A95A236CEAA6FE6A33DBD6B2FF2CC61DCD06B576D34D8BF9 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000 -Out = 94701D90637F543B83AC736D448D915AB56ACF688AA2A9BF - -In = 00000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000 -Out = C005D8C2069CB7F291C7214165383ECC418999FADF197ED3 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000 -Out = F02715BA20879FE16CA382F3F33B35DA09273F524A832CE0 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000 -Out = 925F4C6B45F07D01F1033AE426E554FE30AD5664F89EB521 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000 -Out = DA89E876647B2B17B726DABF0620B5791B8D910CB9E7323D - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000 -Out = A3817AEC34558CE5C4554B4BB652D52E0FB834D66173B40A - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000 -Out = EC4599DB388F66C10AF7C24987AAAB6D02CF431602C321D3 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000 -Out = D7BBCCC448440CD6BFF93D8CA1DC309BE47E51C823B85EBB - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000 -Out = 2CAB4F11BE0BB64B4F16F707DF30F465A279C6972FBCD7D9 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000 -Out = 12E4D1EF75CBCA5369EB440776F117EDA8B536A35C26F139 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000 -Out = 17444B27596CBC519FBC8F2B90D68D05BCF51608ACC3D304 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000 -Out = D76A8B2E986EB16CD6121CED58295F0CF5EB02DEB60F98CC - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000 -Out = 164E3829B70E59570D2A5B24A0F1C67A974DFFF1EF5BF2EA - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000 -Out = 0EE8B5DD7E5A285EBE11965B574517B949C3487937453B2B - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000 -Out = E3639D864D20ECB48D8C2B8F892D97A7FECF83937C48C2DC - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000 -Out = 4434C996B25FE43CA24746396E50C157139C57787675CE17 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000 -Out = 6D1693269BBA7630B6C083EA6D8AA16F0512F07C214251A9 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000 -Out = A1D5C7ABDDF9FA51FB5C9AE0008FA953EA83063C93E49319 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000 -Out = 9BAC4A7FFF14B34F32F10EB2B6A3A61A13C255DB176D6FCB - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000 -Out = C6BD779EE2F9FF6A4ACCDA2E33FD0C62D641733E414D5B36 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000 -Out = F0D656506DE265EC28F1781DACB76D1C7575DC55C15A40DC - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000 -Out = 0E95FD14633037441CD9AFE78391FFE73AAFEFE532B8F7D6 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000 -Out = AFA01B52D549FF4C8B6DC71BBA6CFA27E8EA03046B95F6EF - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000 -Out = 9E63417D3DF651A3353FB6573FFAED9DF4ABD7F68AAAA051 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000 -Out = CE51254F812107B91727838B619D5C4F17FC2C3C9A95233A - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000 -Out = 89F63C422BB85635F432D4A6DC9F940D79E0B5E111A24F4E - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000 -Out = 999534C4B3B25F32FFF05B893F4E26CF8F1819FCB5B908C1 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000 -Out = 7FAACB92FEFD12045C77B4180EA95EE7E1775703E7BB4C3E - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000 -Out = 2BFEAD2B7E1C6BB0F47AEFB9909E3ED961EFB39A29794515 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000 -Out = A52AE6D0221773E42FB042B7830D28A73A590562C38C802B - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000 -Out = 5B3007DFB62B78955620A0F17F58B6FE55B360C0F7A9F4C3 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000 -Out = 77883951F130BA75FED13621DC61BB766E475DB7751B0D3B - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000 -Out = 297DEB90367720058318C994C0382B83D182110797A29A53 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000 -Out = 0BA968080D4608C3BFBE43682CBBD63F246F866AB0A0070C - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000 -Out = 328F20CDFFD905862A11F70B6FDB4803133CCE8ABB8D2B73 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000 -Out = 74AC023139CF3557F49E2F8A674AD0857AEEB9EBA3C1985C - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000 -Out = BD588F19DC358DC37450A6689E4D7DA413206159F3DD2A4D - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000 -Out = DB626F5040AF44803156FF86860A1367B1B644B021C15460 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000 -Out = ADE8785F2F65B67ED1740F8693C5A1CB3BFEE9E3B211B83D - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000 -Out = D08599E7444393A3C5FF2493E1B6647B297708919163E05B - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000 -Out = 8AA57D3CCCB899CC92A44ACE801F54A13E60A45BFDFE7D30 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000 -Out = 3415A0699A0D14DBBBB2280A9C8E3C91B954B769CE606362 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000 -Out = EAD03B5ACC5C86FC8672AE14330BF93A9489A5017D3B9354 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000 -Out = 7ABE3B7FD5804A23B937C0EF5ADD8869188BF842F68D21F5 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000 -Out = 739004F8FC7577D0BA954187F300E441F4A99F62E0F3C367 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000 -Out = 30D99CB386570F45B8F0EB75868E8EA9EC7DBB04C26D8FEA - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000 -Out = 7278F6E780965FB5C02AC4AC24BD2020D2439623EEB901C8 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000 -Out = 93E7E84B803152CE17491B9B9DC6502041DA4D56C636B4A7 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000 -Out = 32D63F3C642173BDE55C2A7E8BB6C942420C309DB2E7210A - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000 -Out = CECC92727AAEE2FA74B90AA728F0D3F0FC5E8A42DF283713 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000 -Out = 51437CED5761BC3FCF29FDE5877675B5DCCABC85BC2279B8 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000 -Out = F6A494D7241543CBFE2BB3C68F2DA9FD9915BF0A14BF82F4 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000 -Out = DD8BE4ED5FFCF836C977352ECD2CF689BD94F9CF0EB66EB4 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000 -Out = 1EF1B22652B07E0039DC257B30E88A2FA5D3FC64C79C741C - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000 -Out = 775E4B0447AFD1C960320C042EF2AB6C879088956435872E - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000 -Out = A40FB52C188AAC639CF9ECE72B978C812CA7991997CCC3D0 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000 -Out = F6F305D3ACA46CEFDA5FCF420B49C9C13F14C3247E4214AB - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000 -Out = 2A5611447591A609BEDB9B99AF030D1548C25C1090FB7252 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000 -Out = 6BB8BF7CF510DF644EA1771146EC6E943E26598734BB2022 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000 -Out = 8508F80824415D97E468B19EA305B0473A915B996DC83A31 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000 -Out = 8814EE7A02164290EB431E70D50490DC2313BD30EB479857 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000 -Out = EFD4A311C5F5093AB23F2C775577EEEE230643A75F7938C6 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000 -Out = 6FA980DE170E4708F4F59BA46DE0EA340BC61C540B0D12BD - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000 -Out = C699821C7E342804278CA77879FFB9332F274530C673385F - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000 -Out = FCFA7BA4FE1736CA672914AC98905FCF235CB82F10BE9981 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000 -Out = BB1DC4CAA892B46D15C44125DEDF64C63EC4DE5B807F93DF - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000 -Out = 520F25FEEC8D698D31C164D291A54B906564A75B7B693239 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000 -Out = 772CB58B4086454862B813AB25EA5E33BE530D3DF48F8BD5 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000 -Out = CBDBBF709ADE1701ABDA7A258528D675B505678E6B643FDD - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000 -Out = A16CEC411677F88C1F751442BCDBC9F013AA1F4E829CFCA8 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000 -Out = 9DA04A1EF52DDF86660B9EA7D8AF385BBE6369B10AF2F3B3 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000 -Out = 049F7036F40FB51260E4B8CB0696EA03D375B401CED3E2C7 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000 -Out = EEB8208784C4C65DA497729C948063BD9F51FE5C026CBC8B - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000 -Out = F39BA71DFAD235C2E0CC8BBAE4CD8D5D1EEE9247086ECAEE - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000 -Out = 8372D7953F7697BE48661E3718196082B06EB448EDF3D839 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000 -Out = D41785ADE9E2FFCAA5B9D44613CD23CD9C3A519CD9C89BED - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000 -Out = 620D6396A467CB957740B85D5D51E53279DF78D56D6CE8B6 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000 -Out = 89905029EF0112631ED9DFDEB63BA26235B822022B686D59 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000 -Out = 51AD7F7D9611ED7C24A84525832A2F8CFAB80F907C02533E - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000 -Out = C645E4CF66DA4B343FC0E9221B4616E8CAE1E65E50195E64 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000 -Out = 38EB1AAA6CEBBE8A21EBBB9C0976D29F4089EE47ED1D1F4E - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000 -Out = EDF66F50CD0F54FB3094E3412E28177A53B1CE56D0FDE4E8 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000 -Out = 11CD219A1E03532D2D4D61F1563C2AAA8A1586736FEB5CA0 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000 -Out = 01D50B226A3517A3DCE79495FE1410E7AB6FEEAF8FA24BB7 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000 -Out = F981D517F259B363A945D2D19447378649E597A37641B911 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000 -Out = B36A8BB7E4018ADB5DC72B4961501F9A5AD5931F5E97A6D6 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000 -Out = D78D1E9D4682A0777A6EC0D8C2F165CAB925966650937F89 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000 -Out = 2F6D9783D5BF5976DCC31C7F00B9FCD04B6C16BE92417C9B - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000 -Out = 22B9F7C41FCE5A4638D6E6C61265B58D18C2D5FBBE33E9F4 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000 -Out = 37B7BA6658F835D817CB114D06C197D23C47708352EAC551 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000 -Out = D8E97C4A5F14A1F595C041D0ED59C4D4631E7AB673484824 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000 -Out = AC782146178A613B3FEA97DBF2018A6C7E1EE3789BBE2A51 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000 -Out = 11FD098F69CA3BE809474769C7DC6664A37AA26358A1EF08 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000 -Out = 93856CBBE6404B2EF9D4240556810833C73D6D049FCA47BB - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000 -Out = C8466665EA45CE4CFD88F819D5C639777640B84D3D60C4BF - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000 -Out = 9B4834F18ED69D519D497AD84204BCB9D749F122A86206F1 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000 -Out = 7571A4B267EB04E445803700DB6A72242E1DE16B1677C410 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000 -Out = 2A6518AF7D1C26F81852CABD90366371783BE49E94BEA42F - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000 -Out = AEBDEE389CEE275743FD1DFE10716DA734049874700D55C1 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000 -Out = 8EF1808D19882CCB413F4B432918984BFE61D3419999642E - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000 -Out = 26B8CC222AA5C53969D3DB6DA64743B71063AE978E1F5899 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000 -Out = 2B8FA32B543ED0E1A8EED1165806602675D21D4A330AACD5 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000 -Out = 7BBD8EB068F2EFB116AC6EF6FE80BFB0E8023702D17EFA6E - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000 -Out = 344265DD1FEEE145A37F268EF0877581998CF323CFECECCA - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000 -Out = 9B606437205BD1DB249D3566D7AEE9D289C9CFD0D57FD058 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000 -Out = C28D239C59BD76719345840E7C491748FAE7FCBC5EEA6C51 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000 -Out = BD1EFD0CFD6283ACD2A95B1DAE33ACC47A14D21AE3A74DF1 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000 -Out = B0EEE8E5A9256A73A98B641F3D29092D2F1F1B75509F5455 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000 -Out = C46B3EB0F3B3C6D61CF0E5A263D4499A91D68055B1EB4996 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000 -Out = C14215E03D57E2D109D88F48500F0D2332A819F1716D8885 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000 -Out = DD38ABA719EEB2B7B78DD4455AB2DF07A5DA8608BC8250EC - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000 -Out = 1175351A36F8F2769BA8A206185C10B241189FA4D6220C83 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000 -Out = 208DC327BC1BE3B55EFDEFEF89776DA5EA979CA479CC970C - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000 -Out = AD80043313C929A421495430561C49F0613C195D3578B518 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000 -Out = 8384691A0DCADD919AB610D69A4C478A582525D5C48B7F17 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000 -Out = 2FF93D872E9E6AE1783C0EF5B1AB9510050F0276563BA02F - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000 -Out = D3C7B2D23986E191D95B19810843B63360578024F3272DA9 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000 -Out = 29F56FA57392FF312289DF4A88C718FA56D2C3357FE6D0D8 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000 -Out = 175884C528D5584EF0E0AAB61660EB9684242F00F6911A24 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000 -Out = F5D5EE0BFBF2186BD6CE3C63A9E19852EFF62D39E8215068 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000 -Out = 6712197F2D9E424139C93292E9B684A11579BAD5546A9F99 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000 -Out = EDAFE550B5634A040E23A008DD3B15C476907B3CD596725B - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000 -Out = 230EC8B2DDCE48BB1ED8928509CE6659981DB303813C7031 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000 -Out = 02371A2CA23F8781DCCBA0672C979EBF0EA8F17F4CAAB443 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000 -Out = E0EFB4CE4025CD25C760F9E822F954D6B38319E71ABED25E - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000 -Out = 2030785CC6D18999182F7B6A9BCA9F72F86829F89B306C37 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000 -Out = 3490EBCD433D9FDA74EAAD97469345846E190540C6D82642 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000 -Out = A9C3E5AB60F1666619A899B8F3AC2370A5BF2298B99BADBB - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000 -Out = 804320365682196340806665DC55299041D3BD85728BA0F2 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000 -Out = 53A2DF8B0C83C7120BE2A9608F1B5A4528BEFEC9D7970487 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000 -Out = 2BCD607D529B39E1429F0C54B94ED78F826389086C7739C8 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000 -Out = 0C466A6ACFA584D239367547536323A32715D0DBB5867B0E - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000 -Out = 2FC3EA605A33AC26E78D8CA19F98CE7B5827E62961D89212 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000 -Out = 8761107DC3785DBF710BBBEDE5FEABAB6F175A5ECFA961B3 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000 -Out = F123F30881EC794674403328E3CE7C80BC95DAC12D7B360B - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000 -Out = 341C9DADB601F2781F6ABEB933B73AAD103A81E8D96F6730 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000 -Out = 38E53597534CCF0E60DA817C62924453E193D61861043244 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000 -Out = 3DF84CC5EDC3D732948BE841302B9AB708F5AF33DC537A31 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000 -Out = B546891818224B14E90827757DE18BABD71449E57F8FCFF1 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000 -Out = A7D6E7A48C1C14CD8DC58D7EFCD4FC8D407F15A1D4AA41D5 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 -Out = 0B178B35A97C06D9D4D2A5838AA867BFDBDB36D674AF33D0 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000 -Out = 8C22DFD72E5ECBA3D0E0B54985D01223032939E7B7B33697 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000 -Out = A52E67BE70E116BDF6EB61EF225DB94DF06966203DFA2E31 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000 -Out = 4AB1B7BAD46AF64C8B6203A8889CF56A079F18F688790896 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000 -Out = 65D1A4BF8DBA94C9752913A4C15FCFB7F18CCF257D48DED6 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000 -Out = 090CFB92322D482D9D8AAFF716F10FDB491BE0FAF50C784F - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000 -Out = 94F1F66FB01D719F04D36CA30287F7E534DC31B0D91CE1FE - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000 -Out = D8689D811424A59B870F84D11BFA1D202BF57896154405B6 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000 -Out = D7F2171F5B7523C54B4D1A81BB6048C99CED1E15087A9C49 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000 -Out = 94DC8F6AAAD2A07CA81191B613291EB06EEC66A1B628F9CC - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -Out = 534D75114EB28DFE082BBA4285ED30E55CBE4864278FF182 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000 -Out = F5971C8523421B68BC3D9FCA5ADC5D2C76CD0C3797232950 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000 -Out = D274B834360952A27265C12C2B70623CDCB69C4815B8AD9E - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000 -Out = D25074898E465F024B7D5AA542575176B885998694BFF162 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000 -Out = 100B09B1A2778E07F0DEE2E6DFB28D032FA35D7EBAB2E87A - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000 -Out = 96FE586BD7D472FFA884C5724561D517C1126957FB190096 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000 -Out = 45EE36AF320341688173D7C41A7615BCCD0A431F834EFD18 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -Out = F73847AEB45D714CC5756DBDEE00A9E580EF91101AC8FE64 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000 -Out = 30A56E8B8CDAD753A854A1BE4B61DB04F303B6CFD0D76522 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000 -Out = 1BADACF65A1F790B448DF08A100E66CDB8B404DDC7865016 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000 -Out = D0DA13AA2AFC006A97C537541B505B96CE798BDDC07B9D6D - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000 -Out = FB4170AA2DBAA3844FD8485D4325BE987E2E589B58AB3B80 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000 -Out = 50A0FE8090A0AA2EA503CD40DBE894004852584FDE11E3E2 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000 -Out = F6311445087C56C3CA179EF211FD32762134EDC910D9270B - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000 -Out = A292F008A7BDF88E61FF866269A6D6F6AC9A81F706D57C27 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000 -Out = 700C29CF917F3634215C58B9B3B9C147FC0AEA52C05B2841 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000 -Out = 2071C5313B0EA39ECC258AC29ED6E6CA8E0511C726A528A9 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000 -Out = AC6F08712123FF72E9C04D1C5C343BC2A356DBEE9223B8E8 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000 -Out = 01F46A7935579B7A7F5CDD00B5E7F1D62C37726F4216DC1D - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000 -Out = 820320BBB243E30FE35395FBFAF46A5C8C0CA41E4B48A80B - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000 -Out = 4B3365B4AF9E0C1AB703F297ECB82F9DB6ED44819DBC72F8 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000 -Out = DF69D9A819C4E27ED1B7D66678FDEBD8BBD1747F892D2B55 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000 -Out = C0F17FAF958767C65EBA2F68EE245205CB1BB73290AACAB6 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000 -Out = D62C3EBC661115CDE4F4BD646D745ADB7225304D2712837D - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000 -Out = 37E9A837E07B12281F4740D8353DD6008A077F6EF51978B9 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000 -Out = 9826470A5ABEE6EE66BB799C9A9206703174AB77AA6223A4 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000 -Out = 506C60EAC24C18D955364759BD8CD522157AD658C7B1652E - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000 -Out = 110923F8A4E154057211F273FDAF0F565AAD0A0962C4E08D - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000 -Out = 30CE0B97A6578CE2398BF04E63F78B2CAB5DC97A140426CE - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000 -Out = 3AE75A6039177B44B18B2C02EE148388F93E6EB96A989D3D - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000 -Out = 0DE8D7C180C5FB4E90ECF4165EECEDE97316170B7B00D681 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000 -Out = A1BA31195FF34A411C5D9A72A84C83C7BD7C6C777FC7DA4A - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000 -Out = 1D7295FE7B297D4B752159B7DD71483D53C7799FF82054E4 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000 -Out = F0210F4416BE56B157EDC9A76684D1F1653EFA6B7D06079B - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000 -Out = 311229D7C5AADF9CAA0DF39E441D4E119D0B3887194B9751 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000 -Out = 7E5E875547284EE4952C250DA3BB4E3BBE59086FA638CAAE - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000 -Out = 890371D12AF03062698C2F4F5F2D7272DF652EE99C4233B3 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000 -Out = BD3F48F09AB50132242F762A61904E945CD3628A925A8B82 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000 -Out = 6401C4DDCDD7441581AFF57D13C1198FC2347D886D319FDA - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000 -Out = 2446A367AABBDEBA9EFD1F8CAA9805EC1A9B45200A90E2C1 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000 -Out = 37C1C64324D78E1F7549E6169FA66D492184F3A5A524810F - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000 -Out = 91A620E120AB9C4949C6D3E27A856F079F76DA00D56C3A22 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000 -Out = 575C19C550408D8454650AF1739812870E371BA8F34B6861 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000 -Out = 5AB6FF5B263ACFAB2013C3068C03A82979EA6DB287A3ECDD - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000 -Out = BB40E88E5DA7D4B12356124D9ED74BA5283C502FC68B5A1B - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000 -Out = CFEC678B1CD75F4249D536C9399F11C12CE9938EE8CADCFF - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000 -Out = 8A26E3715E0471DD3616A9E505F4C73722BB42FB233BF641 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000 -Out = ED38E1AA4B73AF6024471252F8102E77ECBF4BC315DB1C31 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000 -Out = 4D5E37A37AFC8C7DBBC25AF2C6670ED2DAFB56B5376E2550 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000 -Out = 958603BDA98C29A87AEDB0C1C8F559D161EA4FCBE9EED392 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000 -Out = A7F58251627E2C4C82ED1AFADB2FFF3B3483CDC279117E1E - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000 -Out = 4B003F86DA13C24E10041F934DC02EAA9E86C4200550DE8F - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000 -Out = 6139AB107BCD192E8419E869F77738D2624BA81FD774828F - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000 -Out = 15E286064681AB50343CDFD1E178F6DAD9071E3727997DA1 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000 -Out = 95A26E99BFFBB5D0027B380688D3E5C567454F4F2F283C41 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000 -Out = 45326511C3070AD878172A7DA38D17ED65D17BFFB0298058 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000 -Out = C127E412181EF4734360466A38245409E44B2B208FFF4D67 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000 -Out = 4C9A55B7BC50B8D7343F1FF351F13A89CA53E8AD2F056559 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 -Out = 9B93DF18074112C26FBEB1EA277070EF4D5A1778376DC12C - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800 -Out = 79CE5EFD59A9A0ADBC3661F278B3C540A0332A9E8FA30E07 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400 -Out = 886F0AD49176EAF30EA422CDA7D1061AF2D62DA67C672407 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200 -Out = 54C7674DC49D49E63DD7296241C3F2F0B022BCC0451400F0 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Out = 9DFC07C61179B9DEEA1D452D3073C2A12CB0342EC8FA25C1 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080 -Out = E9C6E911956A0D7C3958F4E0252A4DF98FAE33AFC834EA10 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040 -Out = 9DB1556485B4C5C67FC532C4C6937AFA3A889FDB09B055A7 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020 -Out = 5875A1A391DEDD84155F3805A81EF68AD288A9E77DEB4324 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 -Out = 5DA3FCD577895036D0AB8D6BC654C59E76C0312C81F3A374 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008 -Out = 3DB3B9731E66FEF6039A2723C7CD7814F2A5F8ED20807361 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004 -Out = C784C70B8F431D8AEA3F5ADF2BA55AB4BEC9C580558CD0BD - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002 -Out = B256AA37A7DA84F3599B338E2B853B92ECBA5FDE6901B620 - -In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 -Out = 1CDEC1D10BD749090B1F491A4FC8E2F8B150D64F3215CE8F - -# Unknown source: -In = 4142434445464748494A4B4C4D4E4F505152535455565758595A3D6162636465666768696A6B6C6D6E6F707172737475767778797A2B30313233343536373839 -Out = 48CEEB6308B87D46E95D656112CDF18D97915F9765658957 - -In = 4142434445464748494A4B4C4D4E4F505152535455565758595A6162636465666768696A6B6C6D6E6F707172737475767778797A303132333435363738392B2D -Out = F71C8583902AFB879EDFE610F82C0D4786A3A534504486B5 - -In = 4142434445464748494A4B4C4D4E4F505152535455565758595A6162636465666768696A6B6C6D6E6F707172737475767778797A303132333435363738392B2D4142434445464748494A4B4C4D4E4F505152535455565758595A6162636465666768696A6B6C6D6E6F707172737475767778797A303132333435363738392B2D -Out = C54034E5B43EB8005848A7E0AE6AAC76E4FF590AE715FD25 - -In = 5469676572202D20412046617374204E657720486173682046756E6374696F6E2C20627920526F737320416E646572736F6E20616E6420456C6920426968616D -Out = 8A866829040A410C729AD23F5ADA711603B3CDD357E4C15E - -In = 5469676572202D20412046617374204E657720486173682046756E6374696F6E2C20627920526F737320416E646572736F6E20616E6420456C6920426968616D2C2070726F63656564696E6773206F66204661737420536F66747761726520456E6372797074696F6E20332C2043616D6272696467652E -Out = CE55A6AFD591F5EBAC547FF84F89227F9331DAB0B611C889 - -In = 5469676572202D20412046617374204E657720486173682046756E6374696F6E2C20627920526F737320416E646572736F6E20616E6420456C6920426968616D2C2070726F63656564696E6773206F66204661737420536F66747761726520456E6372797074696F6E20332C2043616D6272696467652C20313939362E -Out = 631ABDD103EB9A3D245B6DFD4D77B257FC7439501D1568DD - -# 4-pass Tiger outputs generated by http://www.hashemall.com/ -[Tiger(16,4)] -In = 3420706173732054696765722031323820626974206F7574707574 -Out = D784FD3A91D22FEE99FF8E7E2ECBA079 - -[Tiger(20,4)] -In = 3420706173732054696765722031363020626974206F7574707574 -Out = A104348FA6F4F026AF81E4F46BBBE27BED70201A - -[Tiger(24,4)] -In = 342070617373205469676572 -Out = 4BC93EC0E1188DE695617907BDF4E4BE7F27C005D3DF9AB0 diff --git a/src/tests/data/hash_rep.vec b/src/tests/data/hash_rep.vec index 12467b2b6..7dfa57366 100644 --- a/src/tests/data/hash_rep.vec +++ b/src/tests/data/hash_rep.vec @@ -1,10 +1,4 @@ -[Tiger] -# From NESSIE submission -Input = 61 -TotalLength = 1000000 -Digest = 6DB0E2729CBEAD93D715C6A7D36302E9B3CEE0D2BC314B41 - # Long SHA-1/2/3 from https://www.di-mgt.com.au/sha_testvectors.html [SHA-1] diff --git a/src/tests/data/mac/cbcmac.vec b/src/tests/data/mac/cbcmac.vec deleted file mode 100644 index 688cac1a5..000000000 --- a/src/tests/data/mac/cbcmac.vec +++ /dev/null @@ -1,326 +0,0 @@ - -[CBC-MAC(DES)] -Key = 0123456789ABCDEF -In = 37363534333231204E6F77206973207468652074696D6520666F7220 -Out = F1D30F6849312CA4 - -Key = 67C6697351FF4AEC -In = -Out = 0000000000000000 - -Key = CDBAABF2FBE3467C -In = 29 -Out = 616FE88F809D55FE - -Key = F81BE8E78D765A2E -In = C254 -Out = AED0202A4D19E0E1 - -Key = C99A66320DB73158 -In = 63339F -Out = 69E2BBE362FFA373 - -Key = 051758E95ED4ABB2 -In = A35A255D -Out = 99AF085AE0872883 - -Key = 110E827441213DDC -In = CDC69BB454 -Out = 346750C009F85AE7 - -Key = E1FC673E017E97EA -In = 8770E93EA141 -Out = 457FA6D39A704CDB - -Key = ECB03BFB32AF3C54 -In = DC6B968F385C2A -Out = 725FFF0F41477E42 - -Key = FBFAAA3AFB29D1E6 -In = EC18DB5C021AFE43 -Out = 1D119FAEB0BB44C3 - -Key = F95CBBA8990F95B1 -In = 053C7C9475D8BE6189 -Out = E4DD5474534FE9DA - -Key = E5CA0BCBD0484764 -In = EBF1B305EFF700E9A13A -Out = BEE63E65CAEFA450 - -Key = 5AC55E4B79633B70 -In = BD1F231EA81C7B64C51473 -Out = 495FF947F6665F45 - -Key = AF3B33CDE3504847 -In = 6424119E09DCAAD4ACF21B10 -Out = 53C806C8B69CF03C - -Key = 1C7F23F829F8A41B -In = 155CBB6F2219BA9B7DF50BE11A -Out = 2CFD97F2BD38C7A0 - -Key = 5F4E77FACB6C05AC -In = 13B5CA4EE8983238E0794D3D34BC -Out = A83C88744DF51267 - -Key = 3694B3AFE2F0E49E -In = 86212BAA1A55A2BE70B5733B045CD3 -Out = 112C46B74BD7D1EC - -Key = 9A0ABCD50E18A844 -In = 4F321549FD824EA90870D4B28A295448 -Out = F12831C24A551F5C - -Key = 847F2DADD47647DE -In = AC5BF38E4CD72D9B0942E506C433AFCDA3 -Out = 0AB4EC81A81F5C6C - -Key = B920BA86C33E05F1 -In = 321CEC4AC430F62023856CFBB20704F4EC0B -Out = B2D3297BE75E9505 - -Key = F6059401BEB4BC44 -In = ECD96733B79950A3E314D3D934F75EA0F210A8 -Out = 0AA5F1B82E138AB3 - -Key = 3A94FB3199903257 -In = 78FA4969E623D01ADA696A7E4C7E5125B3488453 -Out = 7143592230891CC9 - -Key = 54D835E8D4668264 -In = 44EE9BBCE9E525CF08F5E9E25E5360AAD2B2D085FA -Out = 90E6F543EDA1AC82 - -Key = 51ADAC869580EC17 -In = 98D9A8877565705A8A3F62802944DE7CA5894E5759D3 -Out = 491310A9E2B8B18C - -Key = B4692F3AFFAF2716 -In = E485F18C0C66F17CC07CBB22FCE466DA610B63AF62BC83 -Out = 302E436ABB2B6193 - -Key = ED9612EC453902D8 -In = 93AC071FB86D11342D8DEF4F89D4B66335C1C7E4248367D8 -Out = 1ED636A10A187609 - -Key = 7AA6F2B4A8CA99B2 -In = E50AF89D7709D1A596C1F41F95AA82CA6C49AE90CD1668BAAC -Out = 2A02740B45449296 - -Key = 0022569AD418D1FE -In = C2372ACB08CF61C9C3805E6E0328DA4CD76A19EDD2D3994C798B -Out = CEA8016EAE33A92B - -Key = 7281CD7165A63EAB -In = E4D9CD45A391C601FFC92AD91501432FEE150287617C13629E69FC -Out = E584507E7606DD42 - -Key = 32BDF97C8C6AC75B -In = 49CF714BCE3A75A74F76EA7E64FF81EB61FDFEC39B67BF0DE98C7E4E -Out = 5A09D5EF7B21251E - -Key = D1BCA70DBE9BBFAB -In = A43C02F4B2ED7216ECF3014DF000108B67CF99505B179F8ED4980A6103 -Out = 3AA4E5750CA579D9 - -Key = 891A2B211B01070D -In = 0ED59801D6E5F2D6F67D3EC5168E212E2DAF02C6B963C98A1F7097DE0C56 -Out = FAC262455D9691C6 - -Key = C7E2ABDDA44D8188 -In = D8FD8B16C2A1A4E3CFD292D2984B3561D555D16C33DDC2BCF7EDDE13EFE520 -Out = 32127540A949B873 - -[CBC-MAC(AES-128)] -Key = 00000000000000000000000000000000 -In = 00000000000000000000000000000000 -Out = 66E94BD4EF8A2C3B884CFA59CA342B2E - -Key = 67C6697351FF4AEC29CDBAABF2FBE346 -In = -Out = 00000000000000000000000000000000 - -Key = C254F81BE8E78D765A2E63339FC99A66 -In = 7C -Out = A2F5C113EBEE0F124B649287C7F7986F - -Key = B73158A35A255D051758E95ED4ABB2CD -In = 320D -Out = 5C787D4CDAF3B4D106A7AA09F41BCFCA - -Key = 54110E827441213DDC8770E93EA141E1 -In = C69BB4 -Out = B32F25C34E061A972C49E4B0A0678AA5 - -Key = 7E97EADC6B968F385C2AECB03BFB32AF -In = FC673E01 -Out = B5D6A0E8F3202BFF37796DB5EB920B7E - -Key = 5C021AFE43FBFAAA3AFB29D1E6053C7C -In = 3C54EC18DB -Out = F3896484B179F90BE3B62DCE3F748C52 - -Key = F95CBBA8990F95B1EBF1B305EFF700E9 -In = 9475D8BE6189 -Out = 100D2CDA97B85428D785D9EECC8D51E2 - -Key = 484764BD1F231EA81C7B64C514735AC5 -In = A13AE5CA0BCBD0 -Out = 92A7A024C4F6D8C82C53030545C23C10 - -Key = 119E09DCAAD4ACF21B10AF3B33CDE350 -In = 5E4B79633B706424 -Out = E235CFD4C307E2B3D44199E83E5D83C6 - -Key = 9B7DF50BE11A1C7F23F829F8A41B13B5 -In = 4847155CBB6F2219BA -Out = 2379D24A48EF60E46807E92C1A602AA6 - -Key = 34BC5F4E77FACB6C05AC86212BAA1A55 -In = CA4EE8983238E0794D3D -Out = D6DA42CAE5C664F3C4D597CF6CE1DDD7 - -Key = B3AFE2F0E49E4F321549FD824EA90870 -In = A2BE70B5733B045CD33694 -Out = 93990491923BF761B3220C1E45ACD359 - -Key = A844AC5BF38E4CD72D9B0942E506C433 -In = D4B28A2954489A0ABCD50E18 -Out = 9B14531370EE1EFFCF5A3BBC2161D25C - -Key = EC4AC430F62023856CFBB20704F4EC0B -In = AFCDA3847F2DADD47647DE321C -Out = EB597AD53F1B208B4FEB5C20D78545AB - -Key = 50A3E314D3D934F75EA0F210A8F60594 -In = B920BA86C33E05F1ECD96733B799 -Out = 91C3626B64EA3B16E15C2F9B32189C68 - -Key = 6A7E4C7E5125B34884533A94FB319990 -In = 01BEB4BC4478FA4969E623D01ADA69 -Out = F6251F1A89FE388121DED78B8CA9FD7C - -Key = 60AAD2B2D085FA54D835E8D466826498 -In = 325744EE9BBCE9E525CF08F5E9E25E53 -Out = E55A004723589CAA843140BA5AC52119 - -Key = 4E5759D351ADAC869580EC17E485F18C -In = D9A8877565705A8A3F62802944DE7CA589 -Out = 53A217151AA961BBF0C7AD4AFDCB9B5F - -Key = 83B4692F3AFFAF271693AC071FB86D11 -In = 0C66F17CC07CBB22FCE466DA610B63AF62BC -Out = CE21D27F4D455511CD327D205853EE85 - -Key = 12EC453902D8E50AF89D7709D1A596C1 -In = 342D8DEF4F89D4B66335C1C7E4248367D8ED96 -Out = 4DC9B5ED541B7382F0FCC7CFAB5AAFE0 - -Key = CA99B2C2372ACB08CF61C9C3805E6E03 -In = F41F95AA82CA6C49AE90CD1668BAAC7AA6F2B4A8 -Out = 2FB0B595042C8D7AD592583D7E6C76F7 - -Key = E4D9CD45A391C601FFC92AD91501432F -In = 28DA4CD76A19EDD2D3994C798B0022569AD418D1FE -Out = AC464531064DA66A2F8591AFAB2931D0 - -Key = F466C626BC51E907F0BDAE188D092EF1 -In = D4A628D05B1663A1BABEA82646DE1005197A63C1EB5C -Out = A16EADA7B6D32D01FE75759FB6DE2E1D - -Key = C3CC5CDB5A660A4B11F2FA6401F09621 -In = ABE8AF530FF6311FFB4B995F0C84BB00EA8226A7D30FAE -Out = 7D980A5E6DA633CE4FED22E815A1C5AD - -Key = F68FB7F87F4D196B2ED3B61B12BD083C -In = ECE1BA4BED3F06ED298813D05B237F1EEFDBFA4941049452 -Out = 425497C221479FC5696D3078D062E725 - -Key = 3C48ABF950E73F6BF3E0AA7F9FD8E659 -In = 451B0CA13E8BBF2E67B977A8BD0CFBB49BB2AC1AFFC5862D98 -Out = 90029A6EE195A0665D02997A844BE499 - -Key = D88BEDBEE43C4DFB98D6C58E123C9F4C -In = 4F8E165B89CAF63B76113A3B9767D4D3AF7FCDFF660C6B59EC15 -Out = BCA39FFF3C95AB00DACF2B2A9A37C7FE - -Key = 563BD2A3B30957FE13BAC9EA1DF9CDEB -In = 7736B44B0A63CAD76330E3CE8ACFE3625AD0213F0C6E3AA444FF33 -Out = D55DC707BA4568B0642E3D70116308D1 - -Key = 1E28CDA2C49C88BA3A8FF0E5045F35BD -In = 839CCEE6F69E0735AB756F4FB96F8210AA55B35D5E0A5C71C4255BE2 -Out = 295F3F2DC91B300874147AADBF2132FE - -Key = EFF0FBA7BE74B33E4A1EC97DF918D430 -In = CEB7CD790C80D66A8A32DB4F573631765EFE18229AA0DDD52FCDBA332C -Out = 049AE1796CE825B2ABB88AA1EBE8D7D2 - -Key = 037BDD91C33F42A542D05C732BCDD8B3 -In = 494A8E4762B1E2028EB7315B7164876155820813F6BB5141D91ABED33292 -Out = AD921BBF28C028B76D9E1B4F92D36DCC - -Key = 1A945A50D4864266F30E121EACF0DB4E -In = 2E2D3536402CF2916DCBAC2B9EDEBDA15A9A331DDA75C21C461E8F71EB6724 -Out = 952D487FE1B8A1F63B26B2027217AC14 - -Key = 1569E6656010D19C57CC4A8A2F1DD727 -In = 4A76816750F6296C3C47FBAE3363D24DF72C9DCCB2E032A5EE44C39A349FE87F -Out = ED1B41F593FF135A1E6DC7C85A2F1A2B - -Key = 65D9968A7AD9F3DFB790E37DADFCACB0 -In = 4975F3FC5525A1436965DD9D04C61C192F037E8F134F2C6A1B76F54B93CC72DD41 -Out = 29326E91479F46720D9D1B067B10E617 - -Key = A625628B0384BB75735DC4A464EC6BF5 -In = 7A3CC3C9682DE5DE223072EFA24F300728C791A2A08482571465D4C1628171DCBD34 -Out = 440A055C9D93DE336B725E0FAE8BCB3D - -Key = CC5DDB04ACB3BC6D683262C3CCB9A96A -In = 8F0B7911638D76374FD8B8C0B575F55B9A57E69EDBA1134FFED8F362C45E575369D064 -Out = 345B392931218A9395F08BD1A45A9B43 - -Key = 68B27482E675F08447C3EF76705D51D1 -In = 944A7EE34856D6AA1A34016E9ED1D26A2FAD6EDB612B48C95DAA8D29633694F88112DBC9 -Out = 2D49E335B07A2519287CDA50D482FC48 - -Key = 6227B605C796BA433FD7705C7684EE06 -In = 889A9BE544280FA85EA3A0DFB57BA91D2D1D9F14929098D953874FC3E5A1956D3B30537F58 -Out = 900A6FB8FD5661FF12B7F391279DB085 - -Key = A8E7DC9BC9260E03D2A9F4830B7AEEB0 -In = 1DC859A4171D89B8B2F7F3E24A733AAC9AF0B162866BA5C5421521B89A10BFB7D8185BEF35E5 -Out = 096DCD92F3919145B298201BC3820612 - -Key = 2A751C9CAE11F38FEE260B957F963FAA -In = 4030C561E85F71A71649C07239F557E1DD337CA6598BAA2B349EAE3F189CEF58CCB4BAB4142B5C -Out = 2E8B2AF6CFF3FD6AF55898BC1374609D - -Key = 01E94EC21D1FADC50C351C0BB101F853 -In = CADD5809F5F4F84EC0AD0875C133D1EBA8ED8856FE7BE5EDA2F1822187C1CC529E245B931954E1D9 -Out = 351E0741D63B5CCED0131A483C3B89F0 - -Key = CFBD131D158F55BBCEA980BAC352DBF9 -In = F27A747A3B40CCD965276C7E7B4E577C37A63E54C5EC1AD22136DDD237D5252A4F9AA48ADA70633F97 -Out = 5F144222C4B8C33CA82A85CCC177A0AF - -Key = E38DCBE99D1003CB6AAC4D7F23791454 -In = 2FAE3104D35B536DFFDD486F4087061045192D5AA98215772C9531EFE80CE917BA1A1C8E756FFB744D43 -Out = 5FD061418DDE0BB0A8A3E6A4FD5BD2A8 - -Key = 068DF83E07AB601E6E84019B55314748 -In = 69FC6052141B6C30A9E19FA455ECE8387AB32117C324E22DD030ACF3A9C04712BDA864D1C3D0016CB1A010 -Out = 73E376B5D0B9466453438B5CEFB27EEF - -Key = 9E3C0463AC1D2EC7951851920377E41F -In = DA0890EDC5385196FB229767D33777DAC47018CB1B78EA8AFDEB25521C6D9AF6752AE33A6235D05D5767C42A -Out = 03F54C4F6B9E5E214BE93289CB2F2D4B - -Key = A90B145DD72A2FD10796E3368FF9DC6D -In = E47F1659A9F9930C2E636985CA2EB0686AB4CB16D1FADD67122FF916A6DE358A5D4BE30645761273D97CF9A3AA -Out = 9FA99D925751C9613D3A8D42E3B604B0 - -Key = 69ECFA9B0A41FDF990F4CC167B987870 -In = 2F66CA7A49D1BFBFE333985F2C3B09D5471D321E4761EF4FF7D28587CC62F4FBC8BF75129035D173686AD394A5DC -Out = BF0557B787C01A589BBD6EBB83F3A330 diff --git a/src/tests/data/pbkdf/pbkdf1.vec b/src/tests/data/pbkdf/pbkdf1.vec deleted file mode 100644 index ca5e70605..000000000 --- a/src/tests/data/pbkdf/pbkdf1.vec +++ /dev/null @@ -1,26 +0,0 @@ -[PBKDF1(SHA-160)] -Salt = 40AC5837560251C275AF5E30A6A3074E57CED38E -Iterations = 6 -Passphrase = ftlkfbxdtbjbvllvbwiw -Output = 768B277DC970F912DBDD3EDAD48AD2F065D25D - -Salt = 7008A9DC1B9A81470A2360275C19DAB77F716824 -Iterations = 6 -Passphrase = xnsosmkvhggzspcncpoc -Output = 4D90E846A4B6AAA02AC548014A00E97E506B2AFB - -Salt = CCFC44C09339040E55D3F7F76CA6EF838FDE928717241DEB9AC1A4EF45A27711 -Iterations = 2001 -Passphrase = otilqwlukqts -Output = 71ED1A995E693EFCD33155935E800037DA74EA28 - -Salt = 8108883FC04A01FEB10661651516425DAD1C93E0 -Iterations = 10000 -Passphrase = kzneqfflbtvsthnfctaf -Output = F345FB8FBD880206B650266661F6 - -Salt = BC8BC53D4604977C3ADB1D19C15E87B77A84C2F6 -Iterations = 10000 -Passphrase = qkxhlqpemxhykmyucjbo -Output = 2D54DFED0C7EF7D20B0945BA414A - diff --git a/src/tests/data/pubkey/rsa_sig.vec b/src/tests/data/pubkey/rsa_sig.vec index c9a84252b..246360fa0 100644 --- a/src/tests/data/pubkey/rsa_sig.vec +++ b/src/tests/data/pubkey/rsa_sig.vec @@ -471,31 +471,6 @@ Q = 1314795837618713069258674746380422189419344375600466758282785046440835994844 Msg = 56897071727374FF0001 Signature = 7ACE3D8BF8C940BEF17B76A53DEF9EA42E63D3576A7A3CE873FC46B584592C082C2D242DCE37A8065E623556004140A2D403B424415ABB6850F950C121051DA747934444C5AC065D457740D6DBC984FB0D1660F3C8E43DBCB19A09675C14788B3847159E92A19C9C60E1727B159D386E75DF3EFFF853C94E4826CEB185071A2B16C6047B21DE8E0A0394B934435C96548644FA0514390B7EE6C61244789B52FC0FBFFBCA8BE54B6C3D01EA14F2E0E086DE8657F02A4F3513F21930A5A5F53C47 -[EMSA3(Tiger)] -E = 65537 -P = 32631492140153322637585648564563279120918521201288665579705656902595827172687842562885397479939005094102333506611817 -Q = 39162724656922322351082077025123484322639781910080179352369911199916517553165320253263971785803972536077240149541431 -Msg = 56897071727374FF0001 -Signature = 3F0C903F6AC0AF457FB343220D55C7DC8F365D3BAEDE8710E17142F0FB3706017CFA31EB0139A2A83F9F9A4EAB10471511AEBB2950EE163F86A9B28EC43B0883D2B9DBF13837DF288DDFB3845B143532B84BF275C356FC05D9EBD77749C960BE - -E = 65537 -P = 12158654678169091650490415669116684328906635803580218958206112297098327411035340897063717752690747310459184926298636024603487949254717361395603397645587051 -Q = 10249092300045023519002601220673737919279626089680327379914024204585346713441242098019215182953625015242094757934588033693064852013617202932837905787954459 -Msg = 56897071727374FF0001 -Signature = 62078993638B876ED29AB7F0B8649D23EA17C96A1F595BC1F3CBD82E49A65EC58A502B4669B14C838CE9DF16C0931D797CAD9C7F03518DC48E7D0F7FFF383CADBED76AB47137CE134788E2A2F6A64B84C69036C26D767B58D54E1430CEF5F9462719491C57DF4EAFA6D1644C040B9D5F25EC794625D3FED8977FE3F4FD23F5F0 - -E = 65537 -P = 11971544123366343666684354853406327812514675062345667572164032146593763260364820773415289066744017135855986720089591529330424839669640161061809626823413973 -Q = 9720074001403023247443092491064384798772672002666476838855362128057218690708080905133082220041439945136451759042300373227795429236658029401312890694089287 -Msg = 56897071727374FF0001 -Signature = A1B330515B11D08A3B35FD60C48C07A524AC4230D7AE83FA8ED838590AEC2AE80C44D099D665C14BDF5984003C102555B82F6E65C68B304D22847E74C3676391E91BC7194742109237376448E72CCAEE1686E2F12A0D46E81DA7C1AC8E401835D19345ECDE4886F427A93B447916DE746D9988D5B0EB54C49F2F6647E77BDCA2 - -E = 65537 -P = 1167421701870821515413433195830529422760643355648210574275955577563504995018282395144285922008056560280441363824762060206459194962811346217758801875469823173373950550783029605967491860108483744807232730730782621906868510926852332267 -Q = 1317361364859314272965882511506015740905998703892518529440770677694975987162437790709368319674657443319522624967086315303391931706721950737251287996496863199426001799963290391769674180019130691453745657498922402120734449103407001553 -Msg = 56897071727374FF0001 -Signature = 99B2E121ED6D820EB555EBB5A6C2A928184EAE6D7AA0132E036414D5C2B041B7C0F44D9AF89556050CE96B077CD3C11165C0B55E5B5A345212E2A3A6DDA1E04391054C9EAD2397586254A0323DE007E6280780A9888B8BA698462C468B6D2FD345D8755898A1C82AC326D91602759166344D24590FD8D8D8C76F2AABBEFBCDE24B047178F610F5520862FA5F4D0C7CEE698C207E88B219A553DBE1C68D270BA2D4B1E3353E88BE249A3A1D4593153976B0A0E09AF561711600D616BF1BE8AD57 - [EMSA4(SHA-1)] E = 0x010001 P = 0xE7E8942720A877517273A356053EA2A1BC0C94AA72D55C6E86296B2DFC967948C0A72CBCCCA7EACB35706E09A1DF55A1535BD9B3CC34160B3B6DCD3EDA8E6443 diff --git a/src/tests/data/stream/ctr.vec b/src/tests/data/stream/ctr.vec index 41d262181..5a6ce536f 100644 --- a/src/tests/data/stream/ctr.vec +++ b/src/tests/data/stream/ctr.vec @@ -4517,673 +4517,3 @@ Out = ac5d7de805a0bf1c57c854501af60fa11497e2a34519dea1569e91e5b5ccae2ff3bfa1bf97 Key = 6162636465666768696a6b6c6d6e6f70 Nonce = 0000000000000000 Out = 070976f150a29a6c0cbf12434d974ade50444dd898c1a21189e1e3a03638ff59ca88b4bc4b7cce5d042d3fd6c471d809ace726cb94083c15edff03afe80a301e - -[CTR-BE(XTEA)] -Key = EC1147D3A4CB70A20AA8664E88E60985 -Nonce = 7A38520947DD623F -In = ABA78D16A7A85065A61F31B9C9CD4053444BA2A36C80E97C4C7BD0956676FA39 -Out = 4B33050781F6003A1A4CAD8B188DA93FAB60C28BBC1E5D822CF7551986E2A5C2 - -Key = 2FEBE8549A5DDDA945398955CBD4D3E9 -Nonce = 2A95AD603EC4B59D -In = 14E75459D23667074E7A7373034443BB4B2C7CBF90EA1A18D59A93598090D92CAB4F8F15 -Out = 7C2E05A9570504B7751E4614FECEC7F7449FA1B25895C4435A29AD9DA8AB41A8CF06048A - -Key = 62F04E49D6CC94750FA5CFC871DBDCCD -Nonce = 25723E1410D2EABC -In = 9388E427E80A52FE5EB761560A2494526DDD7B4729FAD683E6C8B57FB46782B9D016AA0DDFC9C313 -Out = 8020D203BE99C6EA448C64EC4CFC2F02AA220CC6194EAF81D938467E8BB69200B2F67AB6D6CFF596 - -Key = F7E815767C7D7542BD8F0DB41C8C0E95 -Nonce = 8FE94927EEB3ED8F -In = AE15285DF8745CF588C3D075C545591CE8C87E0840CD8EDC9336ED08E42D2A4A6BA0B7D6045AAB25645208BB -Out = 82777E8462001C6BE7990AD149ED8AA462CEF8FAA7F3377CDDF07BC89F0A2EB39439756C31D21E932FEB672A - -Key = B64DCBD21A7CB07620DEE39C74BD598F -Nonce = 74DFAD2D6C7375BB -In = 94E0F6198EC8C7C7DF35262ED38CDFF2D5BC48A1FCA450D250345996EB01BFF3965F221AF4EC43D8CB7FB89ACEB01B1A -Out = 8468BE0862149C3CA03983C7AFFF1D61C33FAD83477714CC51D40C6F1F045530E9651757DFFA70BB1C4780D6F44A0E9C - -Key = 728984B99C7E92CDEB49DE0B3FE42AA8 -Nonce = 888F01082B9D2103 -In = FDEBCC1AC9107EDAF4AF10F34B6E1C8EE15797901F35840504754EAB53BE680F30BDD571E9B50289987C6292BF2CA838D932DE34 -Out = 76F9EC52A2E6C5EB209E7CFB4BD40EA0CAB974068A0CB4C3490349D3024CDC522D11FED4D91D32223FFA8916B39D458999FFF43D - -Key = E55ED01805B70BA13D785D8D859F15D8 -Nonce = 5C8907CD33AFF98B -In = 9B0E0711E375D8EA9735F98F38C58E9184E66EE71DD12B9E14F80095FFE53C6461A3A362650D150C2FBB6F84DCB0789D6E7CF63D8DA9CD6F -Out = EC83CD5B6D2DD5B438CCFDE65580F1A45053D01E15370119219B39C124A4D99F8EFA44F5001BE7F18C7E0033CB1411AAB97E104196434346 - -Key = 1D22726357C301EDA933D7910D3135B4 -Nonce = E046855FFD91DF19 -In = 22E53F89A5E86CD4A874D5CF372E51362E8F71728FD855730CC87BE1F57EF26577689C1F5390C158B6E1ACDBFF1B5BA5D90D6B4F0C2D484D9F0F513E -Out = 33F1FC8F0B7B13EA9F2676597870D55E285F7692B5F89CFCAC80127E5E85D1D3C5D624E22A4C36066F7EB9AF665AA1C7799863FF3F5EFA3FF027CB9D - -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = C1EAE81700F699ABD728F04E671BC2623B70BE954A9CEF23CE43D492197DC55713406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 25226E84529A261AF51E429148A35B389A88809B75D983720084586AD0A02F2851CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Key = 6AA995999C4EA6C83070988AC0A795F7 -Nonce = 01B5B1C6E92BBEE6 -In = 325748DA5C629AFC738D34BF32C84DEB40543C276A3A2C13C6A4BF23B885B6AC348D27467BA3714BE4FB1B764B81FAD7EE2D062277B4EC428F0A6E6CADAF5EA55860F8AE -Out = A0FD6A60A1B8A729CC52D41FBDB2E5E7896EE8C9944E6E63CD1A769BF278AE2E8CF48115ADEA864B00DC65B950C68D09079CD81D35459F5F483F9040FC38AD50778B4217 - -Key = E6D35BBAC75EFAB74AB954C8C2D0D1C7 -Nonce = 6582E6C1B4A47B2E -In = 23019A5A7C61262EA124DAB215A517423781B9C1BE56B63E794BE6836026F7CD55531BFC08665896FCC7CCDFDCEA09207A8785C8DCE932A00A5D105A2D6682A32604D1292207F195 -Out = 47CDB6D6BC25AEBAD70E99524CB0EBCDEB48E0531A35E505FFDA421A1F27ADD6BB9ADC57C3525B989C0C1DCE37577877CE328E6D317D0655DFA80AA8B62273C7AE8DDDE05EECD178 - -Key = 3145D3926C22A5AB4BBDCC163CE93E0B -Nonce = CB8BEA9267176935 -In = 9F8B703434DA473871B05A0D83EC424FFBB0DA17224C95D33178FD28641C1ADE87559E7DACD11F819CAED832B095F6F804FF63D4E239D620B8E6CE8DF1799D028926A3FFE28BF433664B166A -Out = 8E1F3C026E4885E3693FEEFAD56DB8A898269D61CC92CBFA0DE1DA833586619AE9D0B98E54028A2AED24BF2878B1894F4BFE090CF0A7F2627106DC0700F43D31914586DD1A1CD7A1A7F5D82A - -Key = 353358DD5493234F6BE6E3AA3AA4D393 -Nonce = A17467FA740E2541 -In = 4592FFC1D25A2ADCC9FD5DE77DB143AA6E17934FF882E2F8E2BF0D8BFE6DFE10AA33D124199BFAE8D3C2BC2B4B9EB37FC6289C0ED2A6CDDE407F78C035CAAB36653FF686FAC37E5176B3A821E21CF7B1 -Out = ADE67B169947C994E246676FB301C44204D8817BC3291DE6F35552E1E8BEFA5763F1C605E2CA7442847030793EF1CD830F7103ECC9928FC98EE4B346872ADADF439464BA40CA0D7863C4C9946E723E71 - -Key = C313724761DEC636790E38D93F299530 -Nonce = 90C5A696C66726F2 -In = E3100B239057B16CE51A754047F20D6537DE016ADA61056761C1D9DF3939AC8C0AB155B42C9C3BCFF3B63BDADD21954C328B4CCA4F1EA6A57EA8B7A99BFCE72E57CA2C87C4ADF0C844CB76A4B8DA35BD0A3952AA -Out = AEBEC1E382AD5129278CB4C5A67EF92E64BAE93C1F4266FBD40AEEE0E28D5048E81B0CDD2EB7851B7A3CA43BFAB751C54217DE5315D9EBCF94238FBA5A8114C28F1AF6B9110DBC84EF13F621B8690AD7480E9E90 - -Key = 3ED02192D605AB5AAE56CC630BE39141 -Nonce = 09808B88D15118CD -In = 6FEEE7F77DAE629397B0EEBCE6A4E7CD4FCB4F14EBC408A6798475F3EE5C560F0C38FB0F9D2334E85B75C36632EB4C9ECF80F02B47EC1D589720C104B111197E5CCE4D08441FD98B9D67E108BD5AE4313B5725F7B86BA4E6 -Out = F73ED0FABED7812409A04F100F1523DA22E013055537803A3F6B2ABE9479A199B2DF80F3F379640228C47C0475A68A86A455B4E53D2CC078A9EBB04F37764714EE9F0202BF15C393CE87A6E339CD0EA52DA997091383D151 - -Key = E53B03BD00F9E5817BBE38EB1760F950 -Nonce = D559750E3DC7CC19 -In = CC1B18F695290A169D5DAF220622250E4C3383C871CED8648365EC2DEC9A14D5A522441B35B8AAA51FD6D06EF8E5C8F6A12F8EF068882B826E1B97844F0F088C1214DD1769E6F1B329CC62FEAE91D1AE9CA752AF80A966AFF9495BD6 -Out = D86A1A79CE209972F3F5DCAB0389DBA578CB0EA6FF657E889CF6CF7C30C746131E71927A3CB2DA42A823A19E176510CEFD9AEC30D7F648097AAB847840ED396FDFE4CD1EE0C131C763C17F551457E5D0D933EC1CD30ADABE4E69298F - -Key = 48E7EF6FED168BCEC4069E3E622530BF -Nonce = 7C8A47B36E7EC263 -In = D150BC8369DC06BA57F7CC241766549A52F2D49D7AAF9CF7D6BE0334FAE2327FCC76104DE5EDF782E32B8CCF92669B62B25FC619DDAB77BF9AEBB2D175530AE97B56BE01065B95324EAF86AFDDED0C93DE01F139E6B0302DE8F59954F0B20793 -Out = 16DCB3F6A247FCECB4B5C7790796166540892230E00AACEF9EACE255ADF579F6BBAB2F2C92E8389EC54A6F039963E980550B073C0CEC4FE554B2A23C69776D35AFCD1285591041415CC9A15BD1A4A89AF43F702B06F1807FEA53490B80686A52 - -Key = F931CF1396F15FE1FBED7A230961C729 -Nonce = 5DC1DA62482AA6EC -In = 1B1508A165845B4EA7692CD8BE5A38B42AB114B9A63E3243D3DC1AEA8D279E2A12BFFED888B7E4702CD51CE577E04B9E401C1D6ADAC4222FB87A5BC81CA331DE77BE79D3C92878398752DC9678D5ED422E40B469515A64D1E561DEC0D3599CBB88AD71FB -Out = AD25FC4AACEB3BF13B5620DD0437C0E5EC62869F5C0296C7A0666CFE974603D9509E29804075560D1674EC8DF26BB7FD8F9438731927DF583D8DEFC45E960F0F03CC71539E56F6F33FF324F265D4E3596F97630FEA0521C29210830BD5514E8DC390573D - -Key = 238F54FD6D70A8E8E03F305A8136A4C2 -Nonce = 9C764FCE696A60F5 -In = 969875002E0CF955F29EC9651D8AC98B667A8700E96EAFB42AFEC3EFFC9A219B614BCBF0C32028EA2ADBDDA5D0E3444E1658C7E0CE20362E00EA73B2428027FCA2061CF6B492DECCFCBF06E519D05BCA2282342DED05B0CF2E1E25639F58DCD220922B690C5B5E23 -Out = 4A1A307B23136A6C15065ABE453209D1B87413260BE453F7231629F99709CC9F56D25FE6D2976B2EB968B83C4F58DD21DDCC0DDB4434633181E4384EFB89EA93B679AFE93C77E4776B28F504514DA0471C49F6E5E40BA90BF167B3849AC6D7D1C05460EB0D262936 - -Key = 84BFCFD08B09C9515D703EE5F629242E -Nonce = 8B22EEDB409EBD8D -In = 0116DE193FF6B1F703B18EDF87610137D14EBC3119A979CECDD460C38A38817CC12FE56D2110442A56A1BFBBBF4A1CF701B502C6D37AD1A6269546E07539FB4EE8612216FD3E69CE47513CDE9AEEA674D6DC1719EB4A08A513DA5CF063CC9C6C037425DF4A44766516E41FAD -Out = 05CB3542A26697484D30EE15EAD8DDF8B5D940F5BEC00878DB6FA73D1015B758DA221815AA1FE5F237AC3F9D6A24E946097A9B1F8DB04D5AC68B0B6F164596FD087E06649F05E7503617BBDE7868085FA3053C79A1C878C8FB46CFFF98F782FEECCAADBD93A087497A9355AE - -Key = EA279EDFB80A909C95158D9107E7BAB4 -Nonce = 3D899C4A9C64C494 -In = F8810BD894C82BA767986F98DE5CD7E7F9ABF6E82D88AFE84A6735547CBF1E13F285C35F8C5B3DBDCD89D9DDA3AA4CC4C153426E573A585C9A21A77CDC1EC886F64874ECC2482458706366950A1650A30BDDB73F9A619CEDA1B806CED6E1ED00F63650C09490CE87112F1319431FA016 -Out = 8D2769AC11176C15B77F0CB8A72B34160A1E3939EFFA43E098B50271D9B031FB9F52E6D949B150AC630B2CFA85072F797C9AEAD9F15735C69274A9BFBFA4BE9E759552B8E02CDF6BF07DDCBD6C5BEE9C01568D6129676D20DE0762C5D466252CB286E0A1B7C1CE6E4BB3FA4D9B56761A - -Key = 09EBFB4079E906C5F8BE9B2041A32305 -Nonce = 998215883ADB9F54 -In = E1959869B615E838C4362ABDEB51A3D0BFF2CAC32AF78E27106B1161C5D6A893A5A31B78FA92AC70DC3A9CF68DC62280D963BEE9C04CEA5F1FB32B15582B37FCDAEBA18DA3B222783D2E7484256508F26BA549AD56AFBA3F5B0161AB6A4A6EFEC326477E92B025FBFD29498DDCE8B9D274DDE71C -Out = 95936503497BB10E8C110CF1A819FBB13DB05DA88723055D8CBCFF2B15C8DCDF12BC7810ADD4A82AE8A85DFD6D906B5936189B6F0B18B9979A0C55C08E53BDF37BE251AB364D85D9E94F6AE957131AF7CA475BE7F19954B45CC3C00867B9EB574B614CAD4A66BB505EC9996B7DF9467A39096CC3 - -Key = 809C0B33709493BA086F146697A9DCD5 -Nonce = F263A312E9A219B9 -In = 8B2999AACD2CA034908EF05C394CCEF00F816E57FCA840C6010760EFCD6E3F3AA088784D530AF024FD9E3BB2B4EBC5223FD3DB3493EB6E2E1876EBBFD4BD0090004ACCEFBF3756BB82CD18EE4CEEF6FBBF09AB0DB0465134E848672FBCA3BBD6CF8AEB684C4A82244D7A5D44468E0F31C41B908989B7EC26 -Out = 51BF0E20F1FDE6F5B7FD1B72749709999147D80866C7D12E8D37CA2896D67F889FD5510C8F74C62B8D044F552EE7B009F943110CD3EEDACF20DB04F3522434D5BA4E0CCAA29DAE39F18CCA49EE1CBB9515C13FBC38142775ECECD778BE72497487D5A0763F20A6F84BFEA19D4674066E934D8D73ECA96C28 - -Key = A794395BE934B5BF5FB38EBA5E0D5406 -Nonce = 4ADDE2D9335FFEEB -In = 60C66BE7E8951C3E406F5635AA22FA1869BFC560F337DEB230EC6FBEAF805A778421CFBA07166136F1C1F3AE674F895CE24BEED79C81BED23C320B12C45894AF037CDF91BD5405637772D4BE4B06E72181286194BDA09BA7FE682972E1D8972A09096612114DAA9CABD80816B5C50B2C1644FD6ED8521E7F82540F15 -Out = 64A20C4BD5F7949AD3583B00651404AAD4496D5C3C39A7D463CE22238A741DE32083AAA238E3320DE7FE007968BA55B1F14AB1E88064F2C112A0E97C37CDFA9D97355692E0E9552E2A71D22DC2B5866902221B7AF4BA94810E74CD4D6FAA8E57263EA721C2959A240FB336346C602C177F95B40B11E0DE004CCDF6E8 - -Key = D9653B71A3003270F83DFC49AA48C8EA -Nonce = 40E4D61971A2D857 -In = C37A738A4E6144F1E5EC5B8E1E61C71AA0449D83E3D207136CD63D1A8F978D8D0B00462F3A10B193B2F5445D2BB8F0C71605F277388A23677CCAEF508041C406219D8FFF569E44F24D4DFD9216D261E244DB588FEDA33EC4B87A5114378984559004ACEE5DDC6C16C2A25D5AFE42C961CD5C418B44E218A749A357351131CCE4 -Out = 64646829143CB4A25661723F772932F14BF4898344F70EEF3186889849AD9D1D98CB480526FFE8E7B6AA15F3A9346D10111E79C809FF435EB8851907A90530F2B96A2C0E1E1A2587C8AE735222967BC82A8106C604C9F2FB15E4D7EF3D8F9806455ECA090A0027BA5D2D52287E0831422377336450F45D268A6D2BDDD474FD84 - -Key = F546A2AD3A1F291A995F4C058D9C9F78 -Nonce = 7F993DF4D373BA6F -In = 2E3ACE745E2D36728751E0A18448971BEDA6F21A742E21DEEE68922E89E85747EA4BCA5ABD903FDD7EF705359E847687C5C132BB2556634DE165F00BA0E4693CF364CB1DC100A073253732050AAF7AD77C2983532908E888A8DAD84E43A4ED29335A5515940177F8325E5D36C6892E42665EEB814E6689F0E06A3C5A69D042F50EAAC4DD -Out = 287F31451FB5E6769B3EAAA58506EA403BC6F47DE662BC5BDB558523706DAA72B16174CBF0DAA28C5ECA6EAF37EA0866467A8860ECE342104E63687A2191F2927A0FAA1624BAFFDB8660DB0FA50627509D9AB5AC422ACD521436355FCE9DA020C11D402A02EBB46DA363A7999F348DD815CF60B115166BA82581CC01358B5C7F52401E98 - -Key = B8A2DACE13F418A8C576AF7F5DC03E79 -Nonce = 00C100EEA0489AE9 -In = F51E1F304ACBAA9CA94555934652761CEC135E591492912468C7FBDA2807A61EDABF838F0EB47B99DD441C54A03C65AE73B2343A9E12C6B1B7474BA6E88755C90333110861AECF6EEFE5CBEE18ECF2631FEDDABB3AC0FE36DC66B1E78D8FF5162BC5323F85932B215408997501E3FC0DAAD12A51AE1F1387C8ED8B132DEF421D0727AFE59788F4D3 -Out = BED9B697D1DC34037DFD5245FB74D684103E9F6B649024911976336DF5451443FD4B32A9AD91B2679BC138066DC9BA6C367277EB7A7AC67C505CDDEC6300D26FF5C9E5825420F356532D78080459362399FB9F08684EC2693AACB90382E326431B1AE0822BC6E3C4D67DC93C301951E8635E3A19A71F0EDB63D44E53951B097B5A0FE3681E2A472A - -Key = 3EC3D092356A5B6874DEE6031785E19C -Nonce = 96F16B8BBCECE7FA -In = DD2B20530B72F4E675F1FD7AE4FA8B0EA84B2946F1ADAEBAC8DAE5D1168C4084744F879EEB9507B340EACF728D0D10786A6E8A4408908A6ED0E6198D8D1675C918462B82EA0F544BDB3E194ABDFC9B40E2AC4BE61E907A70352532648C1EB6D72FC114544DB439516DF681F642D487924ABF0524C068EE4B9E45009BB8E99DE5CA73372A2F7DE78439150ACD -Out = 4A4EF7F6C0933D12A4825EF1C293FEE5F95DBC69521323B6BCF527437513B878D0DCC0390708B64CCBB8C3D7D1D1FC574DE35C45C2D48770DA757A65A177F8AC25C3F1F59A848E5FDEDC9ED2801300F1A3ED44EE8A9F5A79924BE7E9FEFBAF6836CF18E6F28DA81F87DD2ECDB48CB009A448172B556D977315F798218EFA44A794F257D250CE73AF151F74B5 - -Key = 11132C6E22979CB5C213191045E750FD -Nonce = ABDC21EA87125B00 -In = 5BC87836612D3D7FCBAF662B16924062C237658471CEECC0F1300C84531215406420D7C202922DF63F6864345581EB8C3345BF47D5FD9769563EAABA49A042A21E1CB39F51165BC8AF5418169C8A0A9222C4A333559CA6F3DAB374D6A342D8AE24E41C51424585520415590D2874F93A7919F2BE0F25438F0953FD3F8FD2804435DBE1190660227330D5B0FB3BBBDDC8 -Out = 077DFDB7F6E7EDD024C475FD57BFAD68BEDDF0737C1A460A589A8647212A61B33827D953A2FEFC7F48E2979C4DFBD4285D747C52E3CE232FBF2307FF9F04E39C3D817B7402FCE65608E599E37F208BA8684611C8859B2DA1F7F6797DBE58132E0BB143BF990D1D3D8226C2B9F6BC50E8A03DB6C6560582C03A3D68F48E781B054DD69615B5A63B6136F2AB75BB9585F7 - -Key = 6A0DA91DBCA54101F99ACB1362CB882E -Nonce = 7ECFD1F603D67C77 -In = 673436400DC4FB49950303A83E0BDF18E477F638B5E768172D86C2223861A86E73A5C4239FF593B84BC3B98B67C56897B6417C9E5BE8ABA361E4EDBFD95DC3B15FE96E51BA717742C449F635C645CC3830CC7EDD36D1D34A1F09C46C33700BBABA29EE856A86BF6D146166CA975B2BCAF3C7E3C6614A03FF47BDB498BF3BDFC328C79228303AFE01BD80FAB8D54A0F2BE38FE911 -Out = 34723A46EED388E0A273E9DE120946892EEC04EA668325C654F43800D300970DB9009E299963EB08BDE37E4AAE1B3E540EA2BABE50534B93D3988DD1F93F0E49761D83C3F95EEA979241A22A80D969ED22D826686BEFF174896D74A1F7000CBD164DFC07B92EB66EDDAD1194309CA143605094BB8C330F31F5232A0A24936594DD4E7BA41E6039A3CAA6205074656CD4ACBEEFBB - -Key = 08AFB509E7385CE045789878C4B13D46 -Nonce = A3E66AF196BDBAE9 -In = B5FDD61F8E6110D7AF03DBA5AC5342F9119F2CC317F1985CB3305E7DECD07A1787EDBA37BC47AD1329D0752F4400E506A098CC71B83ED798CA67A01863FDDB8BC2952C951B46BE9F8D9F83B7E0FE32F8FF69FAEECD49D2ADFD62C405104DEC61B4C3AFB6088B5369E88D11C49E7B5F4DBA284CA2BF5846275C5C2DBDFF8EFCB4AEEF12E215AD6423E9D5E6213382D75C27D0E6D14C78FC36 -Out = E42423B8CE44B0C3F7BADCC2E0EC469969E9531CDD4A0B7DB8646014A5D4BDAAAE1096198860270A1283724DCE0E886AC9489593FFDB00B478E8D6BEF839DE633D678BA945F26D5EFADD08297AEF5D3618645D200C627D6B6097BE81248B23F825FA4442C34C2F25A1E41D445E283CA3BB723681E654DCD7932A637834958D0C80DE6AE92D298B72396BBA5119DCD873A403358ED479D453 - -Key = 178178B147A4454EBC944527EB05FE22 -Nonce = B3C0BCCC0FC8C398 -In = CDD81737DA50063D7581BC6FC8918B542E0F161D0D4BA408B5890196320C71DA508651AB850C565105C854872ECD8A336CDDB5511399219D1E15387F21ECE4CE0FD896508D041C3FAAFA75EE42E24B6C5FB45BC7B98FBF17E734FFD7C9E7160571FED42DA5CCE42750D46989CEBC803002B72C14390087AAD352BDA885B771AFF5EAE3E6CF1428AB628F2E792A92DE72C5E0234BF0AE05599A15F829 -Out = B492AA4DC9B8C4CB3CE1AE1FB256D0455444D5BA7495BA36D8EA9B6BDC89881C9AE6044EFE078AA9525B71FA983D3DADC6A03B5B1E327262B21718CB7EC11F46E9CD18DD6D94A9C9EA923A459DBC518578D17184C6B19647C6F6FD3A99CD1EA09B97508DDB6B7439FD6308FFE609A7B1660B1399B07F637D7C20B8990A652177A3E634092784A6499A994F7B2644FC1EA597EFB4A4E15F08749E5186 - -Key = 0A0035EE3EC39ABDD835B30D054E63CE -Nonce = 6345FFDCAEC79C12 -In = 45A13F4D44F679618C049E0F6451C1DF764CD6975A08ED9FC21B7F60938FAE7EFB90D9C1FC9F6EE0653319532D6E5EF4C91415360C42B13F3E9C4467FB910D617AC9A73EF44AF24375B1E8A7F5A5275E18024276DB173D723B9A834E4549980CCC09D5DC7D9AC3B6967C11279C3E3847C3D1E9BA98E7F9F577E322C1985E06ABF75557540E676ADC9741DB1C4B078814A62E001C3F98B116E91A6E4601CA5F90 -Out = 59A7C4B96EE561294D33E83DBBD876250CFDFB91AD6A1F76E112DB95D9F0A2DC1C5BB58C01F650C933C9948A18C879E2115DDCF59499DA33169481A521576695AE9A248A8078F5ADD5DC1E63AD39A001346BA3E3B541A9FB101B327B0DE2363BF17FFDA8CBB33142B58484C9C7D888E0CD7B4482CA3A883930E35D581C755537AD4A7876E1F028C8344BC76ECBBE2AD25BDE23FE9F5293C414D2FEB1FE94DC1F - -Key = EAD6297D0A3A3A8612A17C4C336E19D6 -Nonce = 66B556952B67E560 -In = 36144BE61EC490E90F95D38A8FA17A2A9C00B4843AA12D8030D01536C349585814E7D280F292BF5C8CF2F4F2E68CB991AB0253045626AF958C5F591FE34515B29694AF39899DC4EAA1B526C3AB2BDFAF51378D0ABE33EC6892EF01D281CD2817112D1FC685C86693A2734C5B5CFCF6C8145C990CAECC9B318EF7F5BE8B6740B280A39FBD8B9ABEC947277779ED62229D2E67EDB26F34A9A72806FE1E93A4E2E2E5D119E1 -Out = FFC4706302E667EC36B915B4298BB11B0D2D1FBCB0DA35A12D1255AD4048FF593B880E96C2F9451C8AD38D304148E2DC920E9B26ABA72CC05603C6DFC21CBF7B528142422537CD564E0877FBABAFDA326B196814DDF9FA8515C91CBA0D45EA8D9550C6B95D8FF35DA3F3A1B3CCA42FEFC562177FAC15DB5279CA50D6A7D342EBA98A426BC7943133F71A97E074AB87F5B30F8F23CD26A8309D78F69D8B39FF2DCC3152F8 - -Key = 4E7FC8BD2DCF8D0A6ED122C394D6464F -Nonce = CE96ED105D3C7931 -In = 9B46EF1D1046A03836BA53F6EC68FA57B382FAF02606B4F272404C754F368DFFB1225CA6F9A26F22B0554818BB9F784F2AA5368B42E82A4C2C1052F656BD2C0272EDF95D997833EF7D1547E08E407CFBE1C996E9DE05EA5166E1236FD6FBC70A494FCA1A6A17BF4B3AB12E92A78939BDD5A538E55D39E789DCF2F4DF7A8F79452FB4ACEEC4FE364B973357518A79D76110353CE90D48BAB713D7B7D63AE14AFD7913F4EE74F02B51 -Out = 6E9151C9F82CF529E7A2B63C97E451ACF59CF00971B9789FEA5E8B1FD3071A64B312FA6565A89E42DAD21C9D6BB5197C7C944C69AD6071809316E8BE5B67A775916A7E8B633BE18900DD59D26612FA4624D12AFEC3C1BC39D1C9146761E0B3815889D0B3C37B860D4D56DE042D163D9F7236D1293B42822870E4797EF63FC00D3A8900E85F5BE156EBF2D97A5B71B56FB0AB95FBA03C4671CBF97B300D4E90569EE9D586A4305533 - -Key = 911E1A315CD2C8126019607442FD4279 -Nonce = CE1FB0B32F6FB617 -In = DD3C2F94FCFD7C101022B328D3F11A81E8A47A9CF36AB9C03AE81433B18581E5B1512417BCE9AE91DFCFDDBC5BD6957FA2602E12223E98122BDF22F0DBBCBBDD4E88CD2A87C0334AB108845CB44ED56BF25FE3C8AF0C1463D2A0C6E149C218B9942C20C4FA5F42CAAE9E0FE136B238B495FE1BB33EE712CD11FC78E2536D7DA293D5E624BFF86EFFDCBDEB7CCE8B05D7FD4D6D4B926C6234E602D84B3E93FA5078EEA598C3E8CE3CD9BA61C8 -Out = C749DB2D42DE856439612BFB902897122B6B57B6E5B3DBE2844312CF131DB3B7B65B4096D1ADA9C665C95ABA1AF299385E8401310FE9A43DCF1D0239F4C88493827F7EAE7FF5B8AA2F7A1F8E42F9D3B90EE84E92B4F136ADFB4D459B22195562AD525F0FF12E64C9072DEFEB31CC0331B7AD8A78DAD43E18BF84A1AC2CEFA4858BA1895A15CD29F4AA29CED0B5D5590BD1AE2DE335E795CF5645FE9F9253077144F30EDEDFBFD93F47DCA24C - -Key = 5283BDDEC2CFCE31E61A003516C9D151 -Nonce = 7A2E404FB6C3B6BB -In = FBE74B418AB2B39F83383824C6909FBF0750738CF218EBFE913492E6B458CD25BC79CF2D1BBA62CD4EA9924F13E9BE3CAAE81F9393E1B01C213D13EC7B32D42C4B896614397EBD25960F2543AEB59DAF8E061F80B2D34212202A91D35AB9E9E15F26A8BB1E20E9C8645EF0A40727C705EA03600CF88F58E2065E920DAAF41779281D02BA70DF465DEC7D34669F6D0D8C527AC7BD9A0EC3519C8DF317A697D4745ED94B13FED3FC8ABCA76D6B4FFC1390 -Out = 79E20320F675AEDA7E1D50A32C6B6C17F1BE8FE14CA9818C30AE46830A41569059926D7A1C238F7AF469C19705C5EDC127EAFFA45026A39F49A5E71E3034CF4EB738775CCE69ECAF62CE39CEB45D1204709B26F809B53255D1513F3F8100DCE3EC915E162AB17C62EF70D8048C24E2CA11D3958CA9D06A1F16E571CB5BB39B0F28478A68BA51AB7A5C14611DB5781C2F3302A15A7635B60A849D9C0080C62D244FB03670EEC92A4FB403A7BD089027B3 - -Key = D2EE5AD0C6B1277836223D2B8999EF6C -Nonce = CE3B759B6881D0F0 -In = 5D22783F9FF3BBB0BD89621E7C18E4647BABA0C76563CE14EB2AD5C4F6F51A49C513A4F9C12CEA6B8C24D27BFED626824109E9B39B7468F39FB856D6C3946AC95C1A211FAFB4F7673717EC97182CB9EA000BDE3F2905439EA5F6579FB7E6A0E8BB33D2FA3F02A5D678F1002B4F95B2FD4E1C2559BECFAAF1D712AD4E37F6EB9088F81484ABE54B3A959550A2B41F041DAF19167E394FFB9410D71C2CD90682D0AA6CD22D8244B6C025B1F5E877DE97372286C835 -Out = 811F5009DE77855B575D9BE64ACD8272699862AEAFC0B6284F4481CFC5FC1D028BA072F6A2398D1DD99A731261C5E4543A0FEB7E089DBC6FA7AE9DA555D0B92A58A4D8B16A39777D3368B6F698144B3E5773EF0501A41EFBFB30A1FFED14E11CAF106AAA515AB9FFF8AD9AD4917155083754A44FAAFE449205D47F5D7296CA3917C575FD3ED10B26FA6A218B00374DFE8EB43AACFC5E7DA3B514CE47AD69016EEBEE87CA8AAD668CA270D6328F7BAF60B0647CAB - -Key = B793A8EB1336E6F82E4CCBC6A2BABE79 -Nonce = B573079D57C8FEAD -In = 87719A3ED11A24F7EB0AFCF7743456648E1E6F170A4C98AD8296CCE7DBC9C59F761CF8AE0B7719E42798C45DB57477F8D6640B5BB5A07352DDCF46FAD9CC19FE8304C1000E2B177EA8BB610BDCC989D34BE946F9F37C71BEC8922BB1B067EB8F6FC6295392DAFDCE5CA3941987CF2072853297020A2397A0E1F71FDA7FA381196C942B01A8A3F82874AB7D6AA1BE59A5B9B1FFA357F17302A8E717E0A664400505A183F5D1D89C1E7EDF87713C5C114E10D17412C28AB68E -Out = 1E52C0BE4B78C8B45805586FFD14DF7740DE330877913156D11D9185A2414BC5E1317CFF85B416F2882E769B74F974F0161BF7D582D25FAD24820A08A4E1D43D214E8AE6B4EE382D52C4754430628B26A4E5EC17FFD939A45C7C1EDB55329A20B3BDBDE7B62746D04A07CE7E2F28BE210B6B188492719B6044ACDD221A12FE6977369FF0FA5D12E2A5F492A594992BDCE86A62FF3CE6E5A42897830CA156E630EF707705D6BF171C250C965F5563E235E898BA0DB9A30FAF - -Key = 639366B19DF1C6C56B84341ECF8DC970 -Nonce = 874E59C9D25196C8 -In = BC5477DFF13EC99549F3DBA37E83231F9182CEC72D1314BD587383E6585BF97CA9FC86BBA7797EA49CEC4C09433946B82962FEEBFBA4DFDEC0BC60B38A9E142C92C0B3906B461D2AAB94321860DF947F584E810D502F84097ACFF6223CF77801C59495ABB52EE88CB775DB7D39D566B9C13DC47127A64A325D7AA12D9B7D63A272B92D2FCA91DF310CC58FFB5CB8B80CF44B5F376AD8D06EB87C262456C10E3091ED47F85F6336F3FCE3BF04C2DB9DC0F622C1580DFB14C9040DE592 -Out = F2A1C03F2728F33CC8745FD021011F74D89F8EA351101CDCC26D5B164032E83BC793656288E124D597BADB78E0A1EE1DA1F2805ACEC4C6F5C45616465735362045C72650E48FE70D8685A2B1F982C059FA7FA04E6FF22AE885BECC2D14F8540884AB6E0C438459E89AC8D4EAC698FC0C516E59ADFE79800C3F49DE880C43E3745F9F3892E9808E24CC65DF92BCFB04EAA60B37D752B73C5DF02EDD4805E5CB14398F2BFC0F15ED5556E653A4FE7643CB609AA7AF839DDBB2772CB327 - -Key = AF36BB2B821552C3949B694C33A04716 -Nonce = BCBD3B723C5FAF64 -In = C55BA1C5035F6D543A356D3FAAE8E8227D29F3D5EE065592F980B8424CED3DEE767495708C0C720FE6EAC681146ADE443AF03055294294F138275D519E3466D698D8B48AC20164D39587DD97B26C1B6853B5B274183FC73A810F00F3D748B1E96E0E7B10DA3147DD917B314B8DB75EAE7DAE87210D320BF5BB3E1A44A66761F91235BEED601C87EF419A4F18EBA54CD6634454A5BA0675EF68F22A7DE5592D396A9BCC181AE411E9452F9973E4CC612F72F38CC10659E477E4293A46A4FD65D6 -Out = 66F3195F85BB50C69719AB217566E65C682D5571AA5A6A964FC013FCD12C0462124980D7C8E423A9848BC784261924A4B76B8D3D56F2B0E5EA6BABED53C45FC11BD34B32C0AD721977FA61D896275584EA4AE3587101A5CE90DA4B9E874C1EB239FAFC0DA27487ADD04735915FAD188519B7C0451BE0CD042944F3E1BDA69C4617A6CA98D22A62DC6F1581983EC1A124E76CF2AD611D7697C8EB76259C679917BF3535A1C04F53082003634F09111FA8467512D1D69840BDA1A1A808B8664A85 - -Key = 1CC4ADA25984BFF53CC86C7364278440 -Nonce = C9CB2BDB19911DBD -In = F8F640858D8A5169CFFE6F222302138E35DADF658FA53F9610C4A115F0460E9F44CF0259AAF63714277B493E94FABD920F22E2585D0A3AE55812751A54D3E194E733FB14C6260677E1D8B46F94B69E31B83F6826A93B6821C3F3CC6B64138650CAC4500447083D66422EA3462D978FAA70A5D6369DE9FF066FCCC8AEAAF7C39705A3432C8F69D67179D92893CA230E8CB0FC559E0CBDFF0AFB3108603C2A9786E2E7F6BD965F1098236D9910BF228FC8733F168727A209F57E7E4C6AF7EF620BB158C864 -Out = 4CB818690D084522ADD573C3ADCE75D50A65342D16C2BAB23153503E1D163B17E085EE9280DC5C1D19B041B1D9ADC43D2426FDAD9B11B21CAB5E3AFE0FEC9CF3A9117C47F39066D0041A1B7282E10F2F1791E7EEAC1DE2AC70A1A12BE2C646B2113F41216B5DCF6474B9ED8C3AB2D1BE23A5AB533699D876DFD512661D6B18E9F29376AC0A0B12D7B6B2231EAB5D61E7F7ACDA7503FF8E58E320980E83E877738B749C89C626FE24DF12089B973E50815EDB143F21DFBA48C0B70DA7C1DDC43233AEEE35 - -Key = 37910B573950EFE3AD2AC0F3229F34B8 -Nonce = 6DC3FCC797E8B292 -In = BB97677E03C9259E9096A6B03EDFF049EF942C5FFEADD4C59B8FCC713E2F42BB547D58D9487FACA73248BE2C38DCEDE9310B7844D68F3D0EFE4E1925433476D1618769306A571E2D4768715398CD560B52CC492213F8BE3DBFFFBF35877061BEE5CEF46A8B8D43FAE2E41623F0DED34DFB8DDE42D7492E75F2329CD4C17A8B86D60AEA10A8C68078955004B8CBE4BD80E61FE9B01B9CA83EB5D902819D4A6D8997B75A7F1E86CABF7A5D7C8C44B93B66F8C80D32A7438900740BDC2F7DEDF4B6E729FD5B8A1C8D5F -Out = B20E712CC5B0041E191ADDC5083A6014104E8DC5021B477CAA5AFA6395B7606E68640FB9EF5E208FCF0515575BEA9C49FEB32749FEF89EB579A869DA3213F5DC86A4AE12CB02BAE9D2F45AAD2B5FDFF1FAFC57AF290B70E47CD00648ADA75BC476D7E048DDE9D138133F081EAA0C1475E0D1260AC0184CEAF6F99CDF5140CBBC282009F72272374E946A26BB2F0214C8D7DB0BF7676CC582C8DB8D14048B99F7C99F550A4B6EC89D1B1D4A067591FD411D206878A5F413F0A3E67671F0FE340811D6A77D55B6096D - -Key = 31AB675C93F77A7F5FE7A829DACD46E4 -Nonce = 9200A442F4CFEA07 -In = 0BDF3471B6A535F918863F7C902519F33BF9A613CD5B265C20A4DA957AE43DABA8185A512C7215D58CE22B24567A986455AF60FF075232B9E540C6ECBFA71BEF3CBA65B275AA1A74C91396CFEDDB7E39D2EB07C407C070CEB3486AD025295BE09FF74DDE2F1DD062EDBC294CCFF0B0B3DA798E435EC727AA17E1088B6F9E2AE415A19F88A87F38B366EA6F3DD01BB05FD65F73F8F97474EE5985400C25CECCBEA9D4F0118F81264933F6A61C307D148C43853C0A5D93DF6EEF2A2206079850A05E08EA9876BA4F6B202E810A -Out = 5D5C57860E0F0AF71142FED28B1FC0CEC703D8746AFDF5F93BC9B80F4D0A358A3B74EAF0E128BD14A14A4F85BCF2FB40ECA5083D60473FFF6396C8C718EA44C5E64091F6C268CEE433D81B139E0532E7684CE4D2392B32383731C04829916A2B73F9FFB7D4BA1B9BC95E9D5BBA4112FD0ABBF2BB0A3C5CD06FBF52CA87E91EF399E051309230BF61F84CAF9476787B5910EC491855020A2838D19313FCCE4893030988162A8873A559522F1D4FA7BCC82183350F31D0BD8CB4C846C72AACDA246330FD4E869D900004A5D655 - -Key = EB2BC3806990CEC6A01D863E1AA28056 -Nonce = 7056216A1187E1C8 -In = 04DF7F049025BCBD7206B4A12F7E8B599C74A616A91A7B7A10F148DFA5DE56AAD4DA35DC9F7580151EEF0F87FC3E630136AF059FC49AE77AA9809F7019ABC9A409E8EA5801F50671672FB20D5CFB2ACF5B86C7FCA4805AD6864FA0062DBA39CCDB369FC7FC5F19047206A4E0CBA96D0202AEDBBCADF69DFDAB7328FC40DA82491F429AA770E177D775F728FA32AD548E4614162F84FD2EE5B8BEDA5BE1EF85460C4665782F44939DEB7571B6E2598EF78BF0661E5D4E6DA2F493C1D0F2E6073302A19C26F2707BDE2D5A6936CB4F9F6B -Out = 1111C0D8F2C9577D3707BC247D460104ADA84F30DFD8A8EDF6478092832F2E35200445B013BF16A419C6D231A66F34C76C4037C62C377654CACCF9B770F7339CCEA0DACAFF7DFC393535293E8B347DA29FB207C369853A9E3CD444C67CAECB7AE4DC42B60F3BF0EB2ECEC7A6482F1BB767300C539E8FB9046B31A267D1C9ECBE997EDFEF4B46A0DB501F4FED4F81C99DC15FEF56D4A7ADCAD808F8C6B16A4F62CC0A4C39F57BAEB0914F829E1D4E4B72D93D8167BC3CAC068C327AF3D7C887B65B3400FC4C6E6400326945F7079C6EF5 - -Key = 7FD1AB8DDB8343643C4DB7D90BE1F9C1 -Nonce = F6CD6CE2D5F1DB56 -In = 963524B3D92412DF49F8DF7CA10032FE6C56ABD03866ACCAFA9E45FDBA070FF683A529606900F1C7ECD437B56A74390858E4D3276DC8DCD04215470C0AC21611D8EC1EA9EF8E512006D876420F139007ABEE1397247BEB37DC37CD237E3909C75D576D8D37B5FF9F7B078D6279A3B0500F308F991256394F78B7616B28CC6A622A98B43A9531BA25917F6D7BDFCA5FA19DA4F372AA871C7F253C065A4F923E734740A5534474B5B661164B00605430FD112B197B8570D27A3B44A4C367471FC58F533146305CAE20D15DFD9539FA4C6920F09F73 -Out = 36FA83EAE79BCF08ED631AFA6C0619ABBC6731051763B61D2EA51B5D859E5069B0FFB4801EFE8DC3EA79D9AAB849B98F0DC180C3A7BE4237A0283372B235553692A926F8C20B9466935B5CF7254496FEE811BE2406563345C16ED4D37A1609683B3216DA5D01CEF1E2C0CC30537AC8A9ADB668C0A8D7DE1EA14AD9619A064B1D9C11B8A224D76ED68838EBCA0D323D801E293EB2AB9D2F64F3C1B4588CBE074446A0EFE77C5E58F3715691FF50056B047444784C154E230AB3C27A36DA7E61DB7774C9B402536013DF4DA7895E51AF1933A458E1 - -Key = F674FCB74F8175532C3B888AA1F685A1 -Nonce = FD402E1071C463B0 -In = C1EA094DE4B8DF3E530F4E75E08DC4793EB744FADB50E94D0C360CA08FD184E5B6E8B685489335C6173CA117F2CF638CDCFF0F0E3329C36125D8780F4589EB76EF76AD722A359C84632865A5ABC386F838EE6DA8E6DD96B6DD53C3AF3EF08315B71E53E442893EAEEF6D0022AFC7D08DAD0DB051CD709608ADF4CE94988476CA95EEDF3CA63328B0EAB12110826554172E3F2ECE07C25C62992E81985B9B1D9E3186AC83B167D206EA7B180A656BB4A8C5F09DE39B2ECDBA96E1354706449717BF720E9F756FDF4074FA9F5B3C0016E32B94AAAB9484295E -Out = E66888E7F4A179F83B178AB7409D2C82E014922644F2276D4C308EAEB9A9F42F4062EB1BDB77EDA72C4EE499CD970F1583F284523D375C33D5AFE5264220339604B46FEC19BF61C0E7B07F7B710815801B02A4CAE2BF77F28A0EAAA026D1136580FE1B8AD1B1C40DB1A23FF7878531DFE96B18EFB5CDC34198D23A22F005DD7DFEB91359DBC3BCB1E840A71EBF85DD94663A906C315A1EAEA2E5FD673BB56B23B98D2F54AAF3E82370D75417DAA68C05CDFD15C9592FB9BE87B5C37476A2559E56C4D95834C48ED6B6B0E4661A6F8017A358D0DDC9FF3080 - -Key = 68101E5C1C4C16FBD08F90DD040E222A -Nonce = F2B05714F3B87180 -In = 47F823E98A8F3DC6E872A177EEEF167E82D23862AD0C28E8C2172EE541F28863A5530EC42EE5E6462A467BAB8372BE75990369F8FC299C13729CB508332906671E0F8BF40A82E86551E9CA7FEB3E0FCF8BDD5EA5539756802A450D09637978E91A2DD4843DDCCA8C63EDCAD02B3AA18744FEF1C78D9618686E4B5A84E00069328F1988CE852AC7B17E2DC24280502154D9B1604654CB54EA5E4D069643D6A43D988555AE9CCDF057F896CDB600ECA135406B51158694ED6C8BCC898E2E4335A9432157D306E12C77059CD3B296FD9C9A225719861D042ED726BE7302 -Out = 42300596CBD9EC098AAC697D227058DF9A88051904604063E95C509F9F03869C68AAEC1063701259BD652E9AB275F07BFE164057367A74EED02C72A96B3673ED0510B782E6F4603BADA717221EDF098D13EFC76A41CF6261D36C64D7B747303B601B3114EA603F9BA42C12C3B89642DF4AE2797569B8798604FCE8BC7906F09310858209A4F678748610DB9DFF24BE79D3D5D41A4F0A449A7EA03628959E5D44B801048BD685A7541D57E9AEFD215D45227276BA6B737908C2AB5066CD3FD555A69729B711ABC683E7236B3D0D82F112888006D30CB1DDC9FD680FDC - -Key = CE1972241FA1F27CF1AEE36A51432732 -Nonce = 4DEDE955E0196744 -In = 1D4C4CF8F819F57243A3CED7F2D8A284AF2588B0C808141A698C1C2C6B7470659344245AD162D527A3E221AC8822668541D10A536B015E8AA35268321144D6D84A199FC147E12028A3DA9171E8705CD65A54210ED4EAE211AB1F864383A2A9AA014E62ED69C60DC32B54012671313B45319CAD64B0B26DDF9AA48E5D0AFBEA3EE2821459CBA5F4FCD798A8647526CF3655E0421EAB46B558B57646C56DF3F6C62B92E8BA3D818811CE7BFF4975AE434B23E095F5942827ECFDE9954C6823FD5198E0002E189C63006914672B08A61012FA7A37A800BCFB3EC845D179DC210044 -Out = 1B98BAFD01369C2CDB5004819CA0E2075860A4543B1A6564B32F097C382F9444360658599A71C29CE4791683E436DB052DAB361A68D6DBBE3587AB2F6AF60A102B59FB62DE152DCE0737B968750174D95854AF51C95473D17060082051DCEC1766DCEFAEB2B0754D9B95980F143DE1D6676DEB9FD6EEBD01652B4166072974DEB8F26CEE33D918CCCCFB9152537979845E86428145E9225F69BFA8FDFCFFC80CDB0274B48522195CFA77F33328E472FD767B6C3FF39B66CC42363018E38CFE221039EE5065B7A64FEFFAA441B6E87003DF7C60790B9CC46BA6ACC7557609BD9D - -Key = 17192110F1F1B1279CD586D5FAE45F4A -Nonce = A01800F5D6B63103 -In = 2089A7FDB2728AEE9D176E603055E77ADBF6861C98A185B642BF02C04DAB8226570F746B66C1AB8271FF590CC51A89E93F9C6108EA593F9135AE64CA62C11E165924C4734332BC34C090E7383E7E1108392CBDC103C4BB847C443F7951F17AF7C610CA07889FFCB27B40AC17F8E0594D6DEB391E3D6132C3998CF6F707CDABC13CB702F7F0E97F266175F0C1282682ECFAC95C8A709CC3092010D48F58DF41DB72E04013C5B5323155CD2D9720E0D40B13BEBB081F97310FDEE5D00FCD7B5E5C7FEAA2A4FB756916FEFE38DC0025CE7381D83E52DE05B09B1273FE3B16BE372DF94FDA35 -Out = 7DEC8416E69DCED8D5B6CC3B831307AFC33FECE9A0567DEE0A5999C804CF01FBC19AC1B8555223D3DBE6CA50BB096A7A87ACAB5A5F0ABEB3111E98FBC09897708A18481B51EA78BFE3CCB5AFFBA10F4B980E313E3ABE98EA7E13E38282778514F70D16F7940B6E382AA77BFB4044D6F8EB9D95DA97A142DFC876746FB8338200787D3FA27905E57FCF861BFC8478745C7C2DACC162115E5AFBC80917ABC5358957ECBB65B593010177CB1CE947235A94721541F90349011188A860D1D23CDD64C3B8D101A87114803690788337CC075B1D37DD21097FC730E528D94FCDD4BE1E9D8FF00F - -Key = 190834E408E085E8CC3793E57146FEC8 -Nonce = 1DD4835D46E42E15 -In = 6AB1E72EE86035D1E1E92B3E79DCE8E72C77E3AE2C4C17A345CE25C373C5B95833DF02C1F34ED2FAC60F6EA77762C8F01AB976DCD2F24BD46136314AFC6F1336032ADCBEB1642A7B46C8CC6B122D67C1EF3E578B6B4AADD9CC655FF37C2D7B5CD3878C32C3D5B0455A2C1DC9FF743EF2ABBEFE2D8214D48413032133D821AB161F300CBEFFF376EEC0051D4A769F5203E87B99DE52EB687EC12D747F2E55B84FF377F88E3F9B72900BD7A8B18E970FFD41BEECE4D1978F25411B7EF8991122C4B4444F1FEB3E88A89E48B3CB721A62EAF0784CA54944585210A91A593E2E3A02063D1F76BA62B997 -Out = 0D6121F6EC196C1AC20C818918A2F2683877EEE0189D94511CDEB2755D203F75851FBE498818C6013098FF6200E2262328B8084144CD2782DB5BD5C51E64B3FCC2F2D789B9CE389929E72BB65A264EB554213AB772140D7BBDAFFC818B2D6D0BF4ECBAD5E984BC17C1E7EB6B1D435B92B2E1C5A8867233DD9534F3898C7F64E1DF8828BB765E382F9E2A46B5FC9C38022E1E5C7D09E791E187073DDB688921D22172AE4C972B1B6F802D4FD75A997803B9B87E9DF2CBAE978C3E6E1FF18AC8D56CDEA3B9B1E9DAA74EF3FEFB018EBD9902AD4ADDC67BF0100D9335569D6499563010DD12DD3E23C6 - -Key = B7029C1C72337170854CAEE83C38A031 -Nonce = DF167881D0D693C5 -In = 12025BA46EB9326EB77DD3729B51E1A2E845C031B89DA66B8D73C02AD33263522AF4B92CB5CB4BB254057012033B4D8A147AF3DDE90B7951DC0FBAF0C98D4530A367E945D6BA4C54F57E9986A2452AFDDC8D64550823487168529B5D970A6CA0FB5A8B73D4E9576EA334E41875DDB2955C1E81A8DBCFEAFE660C9A594AA169FDC78AB03783738175B4C974E28F8DC593782C9AB44DBD49934C3AFA35E12A8ACE7F02A469B1A7847461D00B85D34BA01858B624B2A50F192DBF4B7ACE9082FB2BD4B9E4C39CA49300FA69D3C1755B839C90184F7BFD322CEC78F8221B0A9BAF3845AFE7447477EE4B1623B384 -Out = 6BF880E9AC252DA1FD73270B64018ECCEB005CCC89AC7D48B48A5E61F15D21F5524B0057136BB21FBF084BB16B1E5D09C8BF6082AC285120945B63522255C943D137F76804F5B6B526459E9FA64B3B5CE1B2AEE7BBF621B864F42556E0251FC8829B536F565E929B5C61CB72EEE11961B52A956E4B2D3BA81124952F6FD8B4EAB170544D0ACDD2D97977328549F851E89EFFDA3057D193189EFA71B60100C4719CF0D83132327828C48E452ED59EF0709F295349E1141B003BC688800C86F3B778A18678403BA35309373967AD8B6F5B225B85D2F0C16C1D5A155023A0010BD0FE1EF31139F18FF8CD9606C5 - -Key = F7430DF9CCACB9230AD4BC7AC46B52F0 -Nonce = F9059FC6D69FE7A7 -In = 79E97D129AD18FC0B12C3CB00C872794D8AA7647BD743E507E0A67C0434BC32E58AF6F720668DC6FBB1CA58A0774F01AD16AD46A83A6A493719DE8D88B709632DD1BE56238F6C95A599CC92B9B84EC18C43E2598C752BB9E2DD1AC58395A8278876AFE7F152F72934B903FD23BC1F76718A3518DB74DD8CE3E41918E62133B99742A5869450B09854ABA3E9466B7C44CADF80E126CBA30CD6117755701F6F5FAD161159425B197C4B9804B5A7940627D2A2257CCD7645512002C4C5B09BC0DD4919AE3C96F70FAEEDD4E48CBBFAA2791109F2288B641F3AD145B37EE68EA0CDE249F1669604E8B717A5D247A8BB25AEE -Out = 7C5B40D0A68AFF288C04331EE8EDC20CCDC98512858E54C8888DBFD550231D7463F1BC493C23C9FCB93EE65F025ED0A0F470DA7E15A97B900F64D225B71D7C8CE6511A4B74EB0A7AFE7E4EAD04517198635BEB48FE2C41D6552AD5DD48936CBDFBC9CDFC35248AF5BD85360DD8A3BBF4CA4E87D6E345094CF9AC5725E32736B2AD12C0FDB4E9382372FEB011F6F7D222175A92698D1D74B3795EA05C99DB64FD6E439B5DCF85859CB4D9398072C8843BA1D1F650D5F2E2E2BAF2F1C3A66A10BFA879FFBF6203118771CF893982AA710C67C2347A8ABFD74EB814400C306BB95458FF3EF850DA5E0300A1ED39A1B5611C - -Key = 500E05FC7472AE721E0B9DF4629EE350 -Nonce = A791B3A28B063D6D -In = 57097A044B43E7A3E111EA95D9111CB2B7440A54A834416FE02A4F34C4C8C34741CB340CF66750A9683E23DADFA23320EC4E0A0BBE692A8A2F816863BB078D7FCF6C056D5F2E8169CD639B148A779618C32901CF37B85DEEE483DC0F30B522504070602CF032EB17CC48232F86FECA67B63D06F0B25C717A62676B26DE840AEE70D39432567EA2868ABBE2EFEAED6E417BB02E0A2E9C30D7FF850503380343838E7EB155E1901547BCE29254F27DD1979C2608AF0EE05696D5F3D3F678FD457AFB048E41CA852129B5D78A619231B60DE4E19B60E2F699CF09E832CE02EB63543C02523C092B34FCFA10BF9BFD9E32766E412A27 -Out = BEDB29A971B27E7959B48857AD56DC1FF2776EC258646F26C935928D4B1F0B874F0F34B16C5E1936D6F5E2263119EA967A9C441F016431059CF8B54CB1AF52A7BBD1D5F9C378E302FB9C9910742D7E5FE8777F2F5D976A569D54CD54F37524A0FB9CB5BF5EA17763171F52D2C823C1E12A99C2196C45FCB1AE3FF170B05D5EBF8EDAD51D7FAB7B6357B84AFFA19DF67ADAE39C964CAA610889E1C79218C38762B7A4B522132D9F9235CCF8F8D810BC9D7EA44C77599DCFD1404EC6BB219D1F1916C0685B23D79E57A280A1D3FF5356F948F15889527C42358A137CBDAF7ACD8750D5D317F295B821E450C7114279FEFFAB4121A7 - -Key = 19740BD949A0AAF7A2908411B588E75D -Nonce = D0CB88F836751471 -In = AF72E9E989D375EF3D4B16E56B025B0B5E3732337894E5E5AA08D9763E905C625B782AF0530E2E3C8BF1D3F336BD13208FC0A1D7F0A8BB91E3FCD7C9E45541C29809C8F7589042CBAF994C56F5F96F10E2140AF452D376B5DBBA2C72542E1E59D63C99E08334ED6A82605737236D4AABBD45A92610AF0C2852B2A63CE0A0C8D1D281D1002C8C37942791684475B10C1BB81E8CC3E7CA9CA1BE881113AEE41857F25E5C6D404F903E93F16BF912D767ED6AD2604AC8AA5937303699168D8B034DE7B15F25DD25002E22E7DF90B636457FD62E83731675E32F6052BF1BEEADC5E65F1B2831A2702B0377816792EE9DFE04BC6410E9C597B633 -Out = 936EDF889D6629BC65F387545190C03C4AEF91B9A8A13E4E51B02A9DCAFE990CA303DD9FF81EF1C83754657D4C2CD8A89BB5345DD280376FF8996F2204BF1ECADF126D992172CF452A5999C1CAA455A0AF9EAE12D8B5B8CB4992F215707542625DACB4C460ABE2A97B804ABA14F365C4A99EBB92FE4174A59D74C0D942D75F920E46264D3FB929C60ACE11F4982F6E5CDFC8AE73DCA838021D898E22916333075268A29D8BABC2A78AE5E54BC51791679203B812C4CAC0A4251224C4E509F6677FB140B557665BD85AC3B3EF2D204129A84344654D6AEC97A27C8FBE1D5FBFA272AB20615D2B97A31AD82D92F6457BD8B7A35A98CF8D8384 - -Key = 8CBEA7813B209C17DE9441053D8CF013 -Nonce = DB8858BD18B36B06 -In = 5C679ED0A8FA89F7763427FCEABFF3640D680E74B633889AF857418D8142B83322A084AAE7521A5DFFF2C8F05A345D05359BFA873E24CE2259F98B9F40615F3CFAE9736629C988BE0949924060A5A85A59BA733FD75F53F991EA3D37D9C53C58C4999F380DE813B73342F42739B169AA3568834F3D3A8AC0912AF8E3F116B602DE32760D5F1A4DBF7F71F783E41A3AD273E54B76E4A6439C9739210F5A2B5FAE2806AB5811D22B8F5B5CF68E80B2921F2980C2858861A66619CDBE4BA9A3B2F6094C9774B5F9C07D8B99BEE0E4FE02E0082ECD24497236C8621A413E2F3DEE93F38E98DE28B95B621E8DA964C7419AB2DB4FBB5ECF3A9637697D35AF -Out = C5C9D588A11FC4EE03A6C8AC33064C73DCA48BF7C3813EDB9495FE0DEA94FE7F60B5E491E802A06CD0593FB8169230144BED6A76CB353C564DFFEEC8793F28E659127CC9F4C25D331A0718AA2A91B463A3A686DA4A037C4217EAF907B70916A70229EFF66118D932F1EDAE987CAF21EA174582ECD8CBEFE7A3CE1F2683B408F56A6855A56BB9C8CA9F8B334F1C9F03D68D69CF500C0AAA729D0E7D8C40B9199D9A8484EA45F7A483E8052DF531541DD3E354A31D7B2AC271A045A72AF306163DF714438930D6B16D15A1E0132804DF1A94C2CCE769FE37B20E84E147748653A2F4F6EB228AE7C1AD6BAEEC853F17C1AEF07756C42E2C09AD84538D26 - -Key = 281866EA198A1CEAD6E334039B2CA436 -Nonce = F8E76A4A26185CE7 -In = CBCB57CFD5F6E8E9FD5F987FB13C1ED23EDF09C2929F7C01FF6D4B0AE61E4F1B3A5CED6ACBEEDF34831C96B9CAF72C2551BF6011A432DD25540EDD5C75E1018F34846404A912F23F580BFFFFAF8CEB875E7274021B5E2B47F794ADB79699D3D1C6D26E0BF46203C3D44227546056CC2708224FF3FF9C5463733F41E10804A4F05F8DB4B2FF72B96BB4CF240A2EF2FBDA20E7C91BD7D4E1F7F322533A03F3368A88DD08C36F21EB76CD59AA5C0C3E2537F7283B6D42F6D24B8979246FB8970B6705B755D5EDEE4D7F71DF1595F9953E954D0775DAE56F184009764B5DF00C136920F887F4D78E8932E671455F98280317FAC41C0F5050E4A1CBB7CE460FE75EF9 -Out = E5F790088393EC494F34AF1B4BE73B63666874BF31D74D64C749A0DD067F6BEC681AA3396CCFFEB2E30572C7F9975727EF566827E98CBA94093499E4F666DF3BE4CECBB861AE5BBA78D67B6686690A5A5069D47B1D3757F6BFD28F734A06F9E37980C574D2975F0A9925CA9488A11926DB59F3B00639DF25C3FEC100688AA640AC67C9788103A9BB85D53E2420AB3374953F00D49217A1AB8883B71D46D361E245C6F0A5F68A6154DD94D8380FA853F6517B716278F3CE4C75ADBB27B9F774C2FB749DA9FF98E1E52FA2C0B4746502BF360E77B56E623667395A59F4FCC2EFF4D1C2476B014785404F62AC1570C464BB0DBDB3A767A2D8105BEB89551356289B - -Seek = 0 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = C1EAE81700F699ABD728F04E671BC2623B70BE954A9CEF23CE43D492197DC55713406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 25226E84529A261AF51E429148A35B389A88809B75D983720084586AD0A02F2851CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 1 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = EAE81700F699ABD728F04E671BC2623B70BE954A9CEF23CE43D492197DC55713406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 226E84529A261AF51E429148A35B389A88809B75D983720084586AD0A02F2851CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 2 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = E81700F699ABD728F04E671BC2623B70BE954A9CEF23CE43D492197DC55713406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 6E84529A261AF51E429148A35B389A88809B75D983720084586AD0A02F2851CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 3 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 1700F699ABD728F04E671BC2623B70BE954A9CEF23CE43D492197DC55713406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 84529A261AF51E429148A35B389A88809B75D983720084586AD0A02F2851CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 4 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 00F699ABD728F04E671BC2623B70BE954A9CEF23CE43D492197DC55713406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 529A261AF51E429148A35B389A88809B75D983720084586AD0A02F2851CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 5 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = F699ABD728F04E671BC2623B70BE954A9CEF23CE43D492197DC55713406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 9A261AF51E429148A35B389A88809B75D983720084586AD0A02F2851CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 6 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 99ABD728F04E671BC2623B70BE954A9CEF23CE43D492197DC55713406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 261AF51E429148A35B389A88809B75D983720084586AD0A02F2851CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 7 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = ABD728F04E671BC2623B70BE954A9CEF23CE43D492197DC55713406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 1AF51E429148A35B389A88809B75D983720084586AD0A02F2851CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 8 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = D728F04E671BC2623B70BE954A9CEF23CE43D492197DC55713406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = F51E429148A35B389A88809B75D983720084586AD0A02F2851CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 9 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 28F04E671BC2623B70BE954A9CEF23CE43D492197DC55713406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 1E429148A35B389A88809B75D983720084586AD0A02F2851CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 10 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = F04E671BC2623B70BE954A9CEF23CE43D492197DC55713406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 429148A35B389A88809B75D983720084586AD0A02F2851CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 11 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 4E671BC2623B70BE954A9CEF23CE43D492197DC55713406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 9148A35B389A88809B75D983720084586AD0A02F2851CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 12 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 671BC2623B70BE954A9CEF23CE43D492197DC55713406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 48A35B389A88809B75D983720084586AD0A02F2851CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 13 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 1BC2623B70BE954A9CEF23CE43D492197DC55713406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = A35B389A88809B75D983720084586AD0A02F2851CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 14 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = C2623B70BE954A9CEF23CE43D492197DC55713406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 5B389A88809B75D983720084586AD0A02F2851CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 15 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 623B70BE954A9CEF23CE43D492197DC55713406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 389A88809B75D983720084586AD0A02F2851CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 16 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 3B70BE954A9CEF23CE43D492197DC55713406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 9A88809B75D983720084586AD0A02F2851CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 17 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 70BE954A9CEF23CE43D492197DC55713406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 88809B75D983720084586AD0A02F2851CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 18 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = BE954A9CEF23CE43D492197DC55713406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 809B75D983720084586AD0A02F2851CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 19 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 954A9CEF23CE43D492197DC55713406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 9B75D983720084586AD0A02F2851CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 20 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 4A9CEF23CE43D492197DC55713406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 75D983720084586AD0A02F2851CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 21 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 9CEF23CE43D492197DC55713406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = D983720084586AD0A02F2851CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 22 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = EF23CE43D492197DC55713406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 83720084586AD0A02F2851CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 23 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 23CE43D492197DC55713406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 720084586AD0A02F2851CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 24 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = CE43D492197DC55713406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 0084586AD0A02F2851CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 25 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 43D492197DC55713406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 84586AD0A02F2851CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 26 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = D492197DC55713406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 586AD0A02F2851CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 27 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 92197DC55713406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 6AD0A02F2851CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 28 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 197DC55713406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = D0A02F2851CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 29 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 7DC55713406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = A02F2851CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 30 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = C55713406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 2F2851CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 31 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 5713406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 2851CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 32 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 13406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 51CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 33 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 406212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = CD92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 34 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 6212CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 92A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 35 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 12CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = A72372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 36 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = CF1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 2372FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 37 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 1E322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 72FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 38 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 322EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = FAE97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 39 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 2EBEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = E97A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 40 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = BEAE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 7A65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 41 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = AE57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 65539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 42 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 57601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 539219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 43 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 601F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 9219EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 44 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 1F2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 19EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 45 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 2B717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = EA224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 46 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 717AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 224A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 47 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 7AEF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 4A9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 48 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = EF4A3DD4EFEC18BD9FA55B226EC129DC -Out = 9B1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 49 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 4A3DD4EFEC18BD9FA55B226EC129DC -Out = 1BC6C7E8A0586CA4ED37C3D452DA4D - -Seek = 50 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 3DD4EFEC18BD9FA55B226EC129DC -Out = C6C7E8A0586CA4ED37C3D452DA4D - -Seek = 51 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = D4EFEC18BD9FA55B226EC129DC -Out = C7E8A0586CA4ED37C3D452DA4D - -Seek = 52 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = EFEC18BD9FA55B226EC129DC -Out = E8A0586CA4ED37C3D452DA4D - -Seek = 53 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = EC18BD9FA55B226EC129DC -Out = A0586CA4ED37C3D452DA4D - -Seek = 54 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 18BD9FA55B226EC129DC -Out = 586CA4ED37C3D452DA4D - -Seek = 55 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = BD9FA55B226EC129DC -Out = 6CA4ED37C3D452DA4D - -Seek = 56 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 9FA55B226EC129DC -Out = A4ED37C3D452DA4D - -Seek = 57 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = A55B226EC129DC -Out = ED37C3D452DA4D - -Seek = 58 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 5B226EC129DC -Out = 37C3D452DA4D - -Seek = 59 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 226EC129DC -Out = C3D452DA4D - -Seek = 60 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 6EC129DC -Out = D452DA4D - -Seek = 61 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = C129DC -Out = 52DA4D - -Seek = 62 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = 29DC -Out = DA4D - -Seek = 63 -Key = 065EC565D8BC713866CFF86B0ABC2BB1 -Nonce = 27100BF3F22105DA -In = DC -Out = 4D diff --git a/src/tests/test_ffi.cpp b/src/tests/test_ffi.cpp index eef8a39d7..60f307cd1 100644 --- a/src/tests/test_ffi.cpp +++ b/src/tests/test_ffi.cpp @@ -2418,35 +2418,6 @@ class FFI_Unit_Tests final : public Test // TODO test KEM -#if defined(BOTAN_HAS_MCEIES) - const uint8_t ad[8] = { 0xAD, 0xAD, 0xAD, 0xAD, 0xBE, 0xEE, 0xEE, 0xFF }; - const size_t ad_len = sizeof(ad); - - const Botan::secure_vector<uint8_t> plaintext = Test::rng().random_vec(Test::rng().next_byte()); - size_t plaintext_len = plaintext.size(); - size_t ciphertext_len = 0; - - // first calculate ciphertext length - TEST_FFI_RC(BOTAN_FFI_ERROR_INSUFFICIENT_BUFFER_SPACE, botan_mceies_encrypt, (pub, rng, "AES-256/OCB", plaintext.data(), - plaintext.size(), ad, ad_len, nullptr, &ciphertext_len)); - std::vector<uint8_t> ciphertext(ciphertext_len); - - // now encrypt - if(TEST_FFI_OK(botan_mceies_encrypt, (pub, rng, "AES-256/OCB", plaintext.data(), plaintext.size(), ad, ad_len, - ciphertext.data(), &ciphertext_len))) - { - std::vector<uint8_t> decrypted(ciphertext.size()); - size_t decrypted_len = plaintext_len; - - TEST_FFI_OK(botan_mceies_decrypt, (priv, "AES-256/OCB", ciphertext.data(), ciphertext.size(), ad, ad_len, - decrypted.data(), &decrypted_len)); - - decrypted.resize(decrypted_len); - - result.test_eq("MCIES plaintext", decrypted, plaintext); - } -#endif - TEST_FFI_OK(botan_pubkey_destroy, (pub)); TEST_FFI_OK(botan_privkey_destroy, (priv)); } diff --git a/src/tests/test_hash.cpp b/src/tests/test_hash.cpp index b978c339e..80bf5224d 100644 --- a/src/tests/test_hash.cpp +++ b/src/tests/test_hash.cpp @@ -26,8 +26,6 @@ class Invalid_Hash_Name_Tests final : public Test test_invalid_name(result, "Blake2b(9)", "Bad output bits size for BLAKE2b"); test_invalid_name(result, "Comb4P(MD5,MD5)", "Comb4P: Must use two distinct hashes"); test_invalid_name(result, "Comb4P(MD5,SHA-256)", "Comb4P: Incompatible hashes MD5 and SHA-256"); - test_invalid_name(result, "Tiger(168)", "Tiger: Illegal hash output size: 168"); - test_invalid_name(result, "Tiger(20,2)", "Tiger: Invalid number of passes: 2"); test_invalid_name(result, "Keccak-1600(160)", "Keccak_1600: Invalid output length 160"); test_invalid_name(result, "SHA-3(160)", "SHA_3: Invalid output length 160"); diff --git a/src/tests/test_hash_id.cpp b/src/tests/test_hash_id.cpp index 1d75955f3..ecb721646 100644 --- a/src/tests/test_hash_id.cpp +++ b/src/tests/test_hash_id.cpp @@ -35,7 +35,6 @@ class PKCS_HashID_Test final : public Test {"SHA-3(384)", 48}, {"SHA-3(512)", 64}, {"SM3", 32}, - {"Tiger(24,3)", 24} }; std::vector<Test::Result> results; diff --git a/src/tests/test_mceliece.cpp b/src/tests/test_mceliece.cpp index d443f47d2..4b1dc050f 100644 --- a/src/tests/test_mceliece.cpp +++ b/src/tests/test_mceliece.cpp @@ -20,10 +20,6 @@ #include <botan/hmac_drbg.h> #endif - #if defined(BOTAN_HAS_MCEIES) - #include <botan/mceies.h> - #endif - #endif namespace Botan_Tests { @@ -195,9 +191,6 @@ class McEliece_Tests final : public Test results.push_back(test_kem(sk, pk)); #endif -#if defined(BOTAN_HAS_MCEIES) - results.push_back(test_mceies(sk, pk)); -#endif } } @@ -230,53 +223,6 @@ class McEliece_Tests final : public Test return result; } -#if defined(BOTAN_HAS_MCEIES) - Test::Result test_mceies(const Botan::McEliece_PrivateKey& sk, - const Botan::McEliece_PublicKey& pk) - { - Test::Result result("McEliece IES"); - result.start_timer(); - - for(size_t i = 0; i <= 10; ++i) - { - uint8_t ad[8]; - Botan::store_be(static_cast<uint64_t>(i), ad); - const size_t ad_len = sizeof(ad); - - const Botan::secure_vector<uint8_t> pt = Test::rng().random_vec(Test::rng().next_byte()); - - const Botan::secure_vector<uint8_t> ct = mceies_encrypt(pk, pt.data(), pt.size(), ad, ad_len, Test::rng()); - const Botan::secure_vector<uint8_t> dec = mceies_decrypt(sk, ct.data(), ct.size(), ad, ad_len); - - result.test_eq("decrypted ok", dec, pt); - - Botan::secure_vector<uint8_t> bad_ct = ct; - for(size_t j = 0; j != 3; ++j) - { - bad_ct = mutate_vec(ct, true); - - try - { - mceies_decrypt(sk, bad_ct.data(), bad_ct.size(), ad, ad_len); - result.test_failure("AEAD decrypted manipulated ciphertext"); - result.test_note("Manipulated text was " + Botan::hex_encode(bad_ct)); - } - catch(Botan::Integrity_Failure&) - { - result.test_note("AEAD rejected manipulated ciphertext"); - } - catch(std::exception& e) - { - result.test_failure("AEAD rejected manipulated ciphertext with unexpected error", e.what()); - } - } - } - - result.end_timer(); - return result; - } -#endif - }; BOTAN_REGISTER_TEST("pubkey", "mceliece", McEliece_Tests); |