# # delete_file "botan/omac.h" # # patch "ChangeLog" # from [c9cfc57ae443a76e41d94fcce45bc8be04b7520e] # to [669c56bc6dcbcbd9e56354c8a43fecfd88a089b1] # # patch "botan/aes_tab.cpp" # from [559a744cd416011e4850b8e19719e56ae31b18d8] # to [475c0caff88d72d21371d3f0435634a375f1fa4b] # # patch "botan/arc4.cpp" # from [475ce257a2f738c10bf6b5858c6590d0c6618cb9] # to [3eedab177bb0c069470419686212a1fd6f1d78ee] # # patch "botan/authors.txt" # from [10798aaadca24ea4ab922825e9b796c5afde6062] # to [1fd525da451a04e2930f1e712c29064a8ad031fb] # # patch "botan/des.cpp" # from [8b763d83ca4d1febab40f06292fdbfdff2ba8142] # to [4d1e86c4b9c39e8b6bbbe48a76b1ebca9ff6d6b9] # # patch "botan/des.h" # from [769c08188bd776f17a84c887ef1aba7d19e18c63] # to [37d4e302b7efcd7abbdb1a5100350bddad8af1c9] # # patch "botan/des_tab.cpp" # from [9ce42b4de43fb7cf599b1bad7c69b0e167543656] # to [dcdc96f398b9788d6b10c5fc08e942a6cc65b87e] # # patch "botan/eax.cpp" # from [3d883a13778ce6be5beffd6ab42db67750c0765f] # to [bef7d724ecb7f46a5d47292ca28f71badb5d9d06] # # patch "botan/eax.h" # from [5d9f4d8474c9a222fb53579cbecf4e5a46558fe5] # to [616ac13b534dbba4144a76bd601259cc59187bc7] # # patch "botan/es_capi.cpp" # from [e42afd863ee6de903cbb45029d513d15abd05d1c] # to [368451d386e8cf5bde9e2326e328f8adfc650ee5] # # patch "botan/es_capi.h" # from [9a7ef5ab05ace7647772a20baa3fb803f9d97249] # to [efbba9ebddda062c38c43b84e2d7058dfe381775] # # patch "botan/es_egd.cpp" # from [df8fdcbaeb086449cc8387bb62760e7c20178c5c] # to [2bf6636a8908506776ca3f8cf6f05370d0f2b47f] # # patch "botan/es_egd.h" # from [5897aea48effee9ea35a1c21a681466db5dbef7c] # to [e5d389bab5e622f5438183f92778c314347f6565] # # patch "botan/license.txt" # from [cf2701bb0aafa9d7d4f52f8f044ad6879cdc862e] # to [8c0441f989ad0c3c9cb5a463dd4382154187e04e] # # patch "botan/mem_pool.cpp" # from [5deff590833f7d17b332f12a417a7b4e1cf91beb] # to [3b09bd3c3d6fdf3aa854529239e9d4e4d8ac18f5] # # patch "botan/policy.cpp" # from [ab5c3e85a557a472bfdbbc779a55f6deb79389c1] # to [2969e73e720b3a226776f6f8ede5d24d14bbaaff] # # patch "botan/pubkey.cpp" # from [ab5b94948a910abe6d83b35148ac6c460f790a11] # to [4565d64054eb4cda0b3abbf7022978292124d46a] # # patch "botan/pubkey.h" # from [dfcf36d1bc7eb006d8a593eb5f5a4a7e876171b8] # to [f98be2d1a95ff8e0cee18613917206aa7e1c6108] # # patch "botan/thanks.txt" # from [9971c734b99b04a2b95379e8c1b801d6857d5967] # to [02b4d75b3334c2069a8899f6f775de13b8da7498] # # patch "botan/util.cpp" # from [bffaf59d7153d3f2f8b5482031a10a4b68a2d00e] # to [2e15565b61e10420fb51c9e841807dea7fdf9f4e] # # patch "botan/util.h" # from [f79616d4efd20a9b88d57cdc3f536bc389e4b12f] # to [bc34ee6faa38faa9e3a176cf4b046cec86020ad9] # # patch "botan/x931_rng.cpp" # from [7f93d680b7e6c71a3b9fcf1f8af051062cdddb16] # to [ddea0d278bffdcc62a9a0a9cefca860fc4447c44] # # patch "botan/x931_rng.h" # from [867850aff3df63007e12886ed6d00c338496b93e] # to [7379e614f20e55ff4bd65c3f9d40ed90d990c80e] # ======================================================================== --- ChangeLog c9cfc57ae443a76e41d94fcce45bc8be04b7520e +++ ChangeLog 669c56bc6dcbcbd9e56354c8a43fecfd88a089b1 @@ -1,3 +1,7 @@ +2005-11-23 Matt Johnston + + * botan/*: import of Botan 1.4.9 + 2005-11-21 Henry Nestler * contrib/mtbrowse.sh: Version 0.1.13 ======================================================================== --- botan/aes_tab.cpp 559a744cd416011e4850b8e19719e56ae31b18d8 +++ botan/aes_tab.cpp 475c0caff88d72d21371d3f0435634a375f1fa4b @@ -8,407 +8,411 @@ namespace Botan { const byte AES::SE[256] = { -0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B, 0xFE, -0xD7, 0xAB, 0x76, 0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0, 0xAD, 0xD4, -0xA2, 0xAF, 0x9C, 0xA4, 0x72, 0xC0, 0xB7, 0xFD, 0x93, 0x26, 0x36, 0x3F, 0xF7, -0xCC, 0x34, 0xA5, 0xE5, 0xF1, 0x71, 0xD8, 0x31, 0x15, 0x04, 0xC7, 0x23, 0xC3, -0x18, 0x96, 0x05, 0x9A, 0x07, 0x12, 0x80, 0xE2, 0xEB, 0x27, 0xB2, 0x75, 0x09, -0x83, 0x2C, 0x1A, 0x1B, 0x6E, 0x5A, 0xA0, 0x52, 0x3B, 0xD6, 0xB3, 0x29, 0xE3, -0x2F, 0x84, 0x53, 0xD1, 0x00, 0xED, 0x20, 0xFC, 0xB1, 0x5B, 0x6A, 0xCB, 0xBE, -0x39, 0x4A, 0x4C, 0x58, 0xCF, 0xD0, 0xEF, 0xAA, 0xFB, 0x43, 0x4D, 0x33, 0x85, -0x45, 0xF9, 0x02, 0x7F, 0x50, 0x3C, 0x9F, 0xA8, 0x51, 0xA3, 0x40, 0x8F, 0x92, -0x9D, 0x38, 0xF5, 0xBC, 0xB6, 0xDA, 0x21, 0x10, 0xFF, 0xF3, 0xD2, 0xCD, 0x0C, -0x13, 0xEC, 0x5F, 0x97, 0x44, 0x17, 0xC4, 0xA7, 0x7E, 0x3D, 0x64, 0x5D, 0x19, -0x73, 0x60, 0x81, 0x4F, 0xDC, 0x22, 0x2A, 0x90, 0x88, 0x46, 0xEE, 0xB8, 0x14, -0xDE, 0x5E, 0x0B, 0xDB, 0xE0, 0x32, 0x3A, 0x0A, 0x49, 0x06, 0x24, 0x5C, 0xC2, -0xD3, 0xAC, 0x62, 0x91, 0x95, 0xE4, 0x79, 0xE7, 0xC8, 0x37, 0x6D, 0x8D, 0xD5, -0x4E, 0xA9, 0x6C, 0x56, 0xF4, 0xEA, 0x65, 0x7A, 0xAE, 0x08, 0xBA, 0x78, 0x25, -0x2E, 0x1C, 0xA6, 0xB4, 0xC6, 0xE8, 0xDD, 0x74, 0x1F, 0x4B, 0xBD, 0x8B, 0x8A, -0x70, 0x3E, 0xB5, 0x66, 0x48, 0x03, 0xF6, 0x0E, 0x61, 0x35, 0x57, 0xB9, 0x86, -0xC1, 0x1D, 0x9E, 0xE1, 0xF8, 0x98, 0x11, 0x69, 0xD9, 0x8E, 0x94, 0x9B, 0x1E, -0x87, 0xE9, 0xCE, 0x55, 0x28, 0xDF, 0x8C, 0xA1, 0x89, 0x0D, 0xBF, 0xE6, 0x42, -0x68, 0x41, 0x99, 0x2D, 0x0F, 0xB0, 0x54, 0xBB, 0x16 }; + 0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B, + 0xFE, 0xD7, 0xAB, 0x76, 0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0, + 0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0xA4, 0x72, 0xC0, 0xB7, 0xFD, 0x93, 0x26, + 0x36, 0x3F, 0xF7, 0xCC, 0x34, 0xA5, 0xE5, 0xF1, 0x71, 0xD8, 0x31, 0x15, + 0x04, 0xC7, 0x23, 0xC3, 0x18, 0x96, 0x05, 0x9A, 0x07, 0x12, 0x80, 0xE2, + 0xEB, 0x27, 0xB2, 0x75, 0x09, 0x83, 0x2C, 0x1A, 0x1B, 0x6E, 0x5A, 0xA0, + 0x52, 0x3B, 0xD6, 0xB3, 0x29, 0xE3, 0x2F, 0x84, 0x53, 0xD1, 0x00, 0xED, + 0x20, 0xFC, 0xB1, 0x5B, 0x6A, 0xCB, 0xBE, 0x39, 0x4A, 0x4C, 0x58, 0xCF, + 0xD0, 0xEF, 0xAA, 0xFB, 0x43, 0x4D, 0x33, 0x85, 0x45, 0xF9, 0x02, 0x7F, + 0x50, 0x3C, 0x9F, 0xA8, 0x51, 0xA3, 0x40, 0x8F, 0x92, 0x9D, 0x38, 0xF5, + 0xBC, 0xB6, 0xDA, 0x21, 0x10, 0xFF, 0xF3, 0xD2, 0xCD, 0x0C, 0x13, 0xEC, + 0x5F, 0x97, 0x44, 0x17, 0xC4, 0xA7, 0x7E, 0x3D, 0x64, 0x5D, 0x19, 0x73, + 0x60, 0x81, 0x4F, 0xDC, 0x22, 0x2A, 0x90, 0x88, 0x46, 0xEE, 0xB8, 0x14, + 0xDE, 0x5E, 0x0B, 0xDB, 0xE0, 0x32, 0x3A, 0x0A, 0x49, 0x06, 0x24, 0x5C, + 0xC2, 0xD3, 0xAC, 0x62, 0x91, 0x95, 0xE4, 0x79, 0xE7, 0xC8, 0x37, 0x6D, + 0x8D, 0xD5, 0x4E, 0xA9, 0x6C, 0x56, 0xF4, 0xEA, 0x65, 0x7A, 0xAE, 0x08, + 0xBA, 0x78, 0x25, 0x2E, 0x1C, 0xA6, 0xB4, 0xC6, 0xE8, 0xDD, 0x74, 0x1F, + 0x4B, 0xBD, 0x8B, 0x8A, 0x70, 0x3E, 0xB5, 0x66, 0x48, 0x03, 0xF6, 0x0E, + 0x61, 0x35, 0x57, 0xB9, 0x86, 0xC1, 0x1D, 0x9E, 0xE1, 0xF8, 0x98, 0x11, + 0x69, 0xD9, 0x8E, 0x94, 0x9B, 0x1E, 0x87, 0xE9, 0xCE, 0x55, 0x28, 0xDF, + 0x8C, 0xA1, 0x89, 0x0D, 0xBF, 0xE6, 0x42, 0x68, 0x41, 0x99, 0x2D, 0x0F, + 0xB0, 0x54, 0xBB, 0x16 }; const byte AES::SD[256] = { -0x52, 0x09, 0x6A, 0xD5, 0x30, 0x36, 0xA5, 0x38, 0xBF, 0x40, 0xA3, 0x9E, 0x81, -0xF3, 0xD7, 0xFB, 0x7C, 0xE3, 0x39, 0x82, 0x9B, 0x2F, 0xFF, 0x87, 0x34, 0x8E, -0x43, 0x44, 0xC4, 0xDE, 0xE9, 0xCB, 0x54, 0x7B, 0x94, 0x32, 0xA6, 0xC2, 0x23, -0x3D, 0xEE, 0x4C, 0x95, 0x0B, 0x42, 0xFA, 0xC3, 0x4E, 0x08, 0x2E, 0xA1, 0x66, -0x28, 0xD9, 0x24, 0xB2, 0x76, 0x5B, 0xA2, 0x49, 0x6D, 0x8B, 0xD1, 0x25, 0x72, -0xF8, 0xF6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xD4, 0xA4, 0x5C, 0xCC, 0x5D, 0x65, -0xB6, 0x92, 0x6C, 0x70, 0x48, 0x50, 0xFD, 0xED, 0xB9, 0xDA, 0x5E, 0x15, 0x46, -0x57, 0xA7, 0x8D, 0x9D, 0x84, 0x90, 0xD8, 0xAB, 0x00, 0x8C, 0xBC, 0xD3, 0x0A, -0xF7, 0xE4, 0x58, 0x05, 0xB8, 0xB3, 0x45, 0x06, 0xD0, 0x2C, 0x1E, 0x8F, 0xCA, -0x3F, 0x0F, 0x02, 0xC1, 0xAF, 0xBD, 0x03, 0x01, 0x13, 0x8A, 0x6B, 0x3A, 0x91, -0x11, 0x41, 0x4F, 0x67, 0xDC, 0xEA, 0x97, 0xF2, 0xCF, 0xCE, 0xF0, 0xB4, 0xE6, -0x73, 0x96, 0xAC, 0x74, 0x22, 0xE7, 0xAD, 0x35, 0x85, 0xE2, 0xF9, 0x37, 0xE8, -0x1C, 0x75, 0xDF, 0x6E, 0x47, 0xF1, 0x1A, 0x71, 0x1D, 0x29, 0xC5, 0x89, 0x6F, -0xB7, 0x62, 0x0E, 0xAA, 0x18, 0xBE, 0x1B, 0xFC, 0x56, 0x3E, 0x4B, 0xC6, 0xD2, -0x79, 0x20, 0x9A, 0xDB, 0xC0, 0xFE, 0x78, 0xCD, 0x5A, 0xF4, 0x1F, 0xDD, 0xA8, -0x33, 0x88, 0x07, 0xC7, 0x31, 0xB1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xEC, 0x5F, -0x60, 0x51, 0x7F, 0xA9, 0x19, 0xB5, 0x4A, 0x0D, 0x2D, 0xE5, 0x7A, 0x9F, 0x93, -0xC9, 0x9C, 0xEF, 0xA0, 0xE0, 0x3B, 0x4D, 0xAE, 0x2A, 0xF5, 0xB0, 0xC8, 0xEB, -0xBB, 0x3C, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2B, 0x04, 0x7E, 0xBA, 0x77, 0xD6, -0x26, 0xE1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0C, 0x7D }; + 0x52, 0x09, 0x6A, 0xD5, 0x30, 0x36, 0xA5, 0x38, 0xBF, 0x40, 0xA3, 0x9E, + 0x81, 0xF3, 0xD7, 0xFB, 0x7C, 0xE3, 0x39, 0x82, 0x9B, 0x2F, 0xFF, 0x87, + 0x34, 0x8E, 0x43, 0x44, 0xC4, 0xDE, 0xE9, 0xCB, 0x54, 0x7B, 0x94, 0x32, + 0xA6, 0xC2, 0x23, 0x3D, 0xEE, 0x4C, 0x95, 0x0B, 0x42, 0xFA, 0xC3, 0x4E, + 0x08, 0x2E, 0xA1, 0x66, 0x28, 0xD9, 0x24, 0xB2, 0x76, 0x5B, 0xA2, 0x49, + 0x6D, 0x8B, 0xD1, 0x25, 0x72, 0xF8, 0xF6, 0x64, 0x86, 0x68, 0x98, 0x16, + 0xD4, 0xA4, 0x5C, 0xCC, 0x5D, 0x65, 0xB6, 0x92, 0x6C, 0x70, 0x48, 0x50, + 0xFD, 0xED, 0xB9, 0xDA, 0x5E, 0x15, 0x46, 0x57, 0xA7, 0x8D, 0x9D, 0x84, + 0x90, 0xD8, 0xAB, 0x00, 0x8C, 0xBC, 0xD3, 0x0A, 0xF7, 0xE4, 0x58, 0x05, + 0xB8, 0xB3, 0x45, 0x06, 0xD0, 0x2C, 0x1E, 0x8F, 0xCA, 0x3F, 0x0F, 0x02, + 0xC1, 0xAF, 0xBD, 0x03, 0x01, 0x13, 0x8A, 0x6B, 0x3A, 0x91, 0x11, 0x41, + 0x4F, 0x67, 0xDC, 0xEA, 0x97, 0xF2, 0xCF, 0xCE, 0xF0, 0xB4, 0xE6, 0x73, + 0x96, 0xAC, 0x74, 0x22, 0xE7, 0xAD, 0x35, 0x85, 0xE2, 0xF9, 0x37, 0xE8, + 0x1C, 0x75, 0xDF, 0x6E, 0x47, 0xF1, 0x1A, 0x71, 0x1D, 0x29, 0xC5, 0x89, + 0x6F, 0xB7, 0x62, 0x0E, 0xAA, 0x18, 0xBE, 0x1B, 0xFC, 0x56, 0x3E, 0x4B, + 0xC6, 0xD2, 0x79, 0x20, 0x9A, 0xDB, 0xC0, 0xFE, 0x78, 0xCD, 0x5A, 0xF4, + 0x1F, 0xDD, 0xA8, 0x33, 0x88, 0x07, 0xC7, 0x31, 0xB1, 0x12, 0x10, 0x59, + 0x27, 0x80, 0xEC, 0x5F, 0x60, 0x51, 0x7F, 0xA9, 0x19, 0xB5, 0x4A, 0x0D, + 0x2D, 0xE5, 0x7A, 0x9F, 0x93, 0xC9, 0x9C, 0xEF, 0xA0, 0xE0, 0x3B, 0x4D, + 0xAE, 0x2A, 0xF5, 0xB0, 0xC8, 0xEB, 0xBB, 0x3C, 0x83, 0x53, 0x99, 0x61, + 0x17, 0x2B, 0x04, 0x7E, 0xBA, 0x77, 0xD6, 0x26, 0xE1, 0x69, 0x14, 0x63, + 0x55, 0x21, 0x0C, 0x7D }; const u32bit AES::TE0[256] = { -0xC66363A5, 0xF87C7C84, 0xEE777799, 0xF67B7B8D, 0xFFF2F20D, 0xD66B6BBD, -0xDE6F6FB1, 0x91C5C554, 0x60303050, 0x02010103, 0xCE6767A9, 0x562B2B7D, -0xE7FEFE19, 0xB5D7D762, 0x4DABABE6, 0xEC76769A, 0x8FCACA45, 0x1F82829D, -0x89C9C940, 0xFA7D7D87, 0xEFFAFA15, 0xB25959EB, 0x8E4747C9, 0xFBF0F00B, -0x41ADADEC, 0xB3D4D467, 0x5FA2A2FD, 0x45AFAFEA, 0x239C9CBF, 0x53A4A4F7, -0xE4727296, 0x9BC0C05B, 0x75B7B7C2, 0xE1FDFD1C, 0x3D9393AE, 0x4C26266A, -0x6C36365A, 0x7E3F3F41, 0xF5F7F702, 0x83CCCC4F, 0x6834345C, 0x51A5A5F4, -0xD1E5E534, 0xF9F1F108, 0xE2717193, 0xABD8D873, 0x62313153, 0x2A15153F, -0x0804040C, 0x95C7C752, 0x46232365, 0x9DC3C35E, 0x30181828, 0x379696A1, -0x0A05050F, 0x2F9A9AB5, 0x0E070709, 0x24121236, 0x1B80809B, 0xDFE2E23D, -0xCDEBEB26, 0x4E272769, 0x7FB2B2CD, 0xEA75759F, 0x1209091B, 0x1D83839E, -0x582C2C74, 0x341A1A2E, 0x361B1B2D, 0xDC6E6EB2, 0xB45A5AEE, 0x5BA0A0FB, -0xA45252F6, 0x763B3B4D, 0xB7D6D661, 0x7DB3B3CE, 0x5229297B, 0xDDE3E33E, -0x5E2F2F71, 0x13848497, 0xA65353F5, 0xB9D1D168, 0x00000000, 0xC1EDED2C, -0x40202060, 0xE3FCFC1F, 0x79B1B1C8, 0xB65B5BED, 0xD46A6ABE, 0x8DCBCB46, -0x67BEBED9, 0x7239394B, 0x944A4ADE, 0x984C4CD4, 0xB05858E8, 0x85CFCF4A, -0xBBD0D06B, 0xC5EFEF2A, 0x4FAAAAE5, 0xEDFBFB16, 0x864343C5, 0x9A4D4DD7, -0x66333355, 0x11858594, 0x8A4545CF, 0xE9F9F910, 0x04020206, 0xFE7F7F81, -0xA05050F0, 0x783C3C44, 0x259F9FBA, 0x4BA8A8E3, 0xA25151F3, 0x5DA3A3FE, -0x804040C0, 0x058F8F8A, 0x3F9292AD, 0x219D9DBC, 0x70383848, 0xF1F5F504, -0x63BCBCDF, 0x77B6B6C1, 0xAFDADA75, 0x42212163, 0x20101030, 0xE5FFFF1A, -0xFDF3F30E, 0xBFD2D26D, 0x81CDCD4C, 0x180C0C14, 0x26131335, 0xC3ECEC2F, -0xBE5F5FE1, 0x359797A2, 0x884444CC, 0x2E171739, 0x93C4C457, 0x55A7A7F2, -0xFC7E7E82, 0x7A3D3D47, 0xC86464AC, 0xBA5D5DE7, 0x3219192B, 0xE6737395, -0xC06060A0, 0x19818198, 0x9E4F4FD1, 0xA3DCDC7F, 0x44222266, 0x542A2A7E, -0x3B9090AB, 0x0B888883, 0x8C4646CA, 0xC7EEEE29, 0x6BB8B8D3, 0x2814143C, -0xA7DEDE79, 0xBC5E5EE2, 0x160B0B1D, 0xADDBDB76, 0xDBE0E03B, 0x64323256, -0x743A3A4E, 0x140A0A1E, 0x924949DB, 0x0C06060A, 0x4824246C, 0xB85C5CE4, -0x9FC2C25D, 0xBDD3D36E, 0x43ACACEF, 0xC46262A6, 0x399191A8, 0x319595A4, -0xD3E4E437, 0xF279798B, 0xD5E7E732, 0x8BC8C843, 0x6E373759, 0xDA6D6DB7, -0x018D8D8C, 0xB1D5D564, 0x9C4E4ED2, 0x49A9A9E0, 0xD86C6CB4, 0xAC5656FA, -0xF3F4F407, 0xCFEAEA25, 0xCA6565AF, 0xF47A7A8E, 0x47AEAEE9, 0x10080818, -0x6FBABAD5, 0xF0787888, 0x4A25256F, 0x5C2E2E72, 0x381C1C24, 0x57A6A6F1, -0x73B4B4C7, 0x97C6C651, 0xCBE8E823, 0xA1DDDD7C, 0xE874749C, 0x3E1F1F21, -0x964B4BDD, 0x61BDBDDC, 0x0D8B8B86, 0x0F8A8A85, 0xE0707090, 0x7C3E3E42, -0x71B5B5C4, 0xCC6666AA, 0x904848D8, 0x06030305, 0xF7F6F601, 0x1C0E0E12, -0xC26161A3, 0x6A35355F, 0xAE5757F9, 0x69B9B9D0, 0x17868691, 0x99C1C158, -0x3A1D1D27, 0x279E9EB9, 0xD9E1E138, 0xEBF8F813, 0x2B9898B3, 0x22111133, -0xD26969BB, 0xA9D9D970, 0x078E8E89, 0x339494A7, 0x2D9B9BB6, 0x3C1E1E22, -0x15878792, 0xC9E9E920, 0x87CECE49, 0xAA5555FF, 0x50282878, 0xA5DFDF7A, -0x038C8C8F, 0x59A1A1F8, 0x09898980, 0x1A0D0D17, 0x65BFBFDA, 0xD7E6E631, -0x844242C6, 0xD06868B8, 0x824141C3, 0x299999B0, 0x5A2D2D77, 0x1E0F0F11, -0x7BB0B0CB, 0xA85454FC, 0x6DBBBBD6, 0x2C16163A }; + 0xC66363A5, 0xF87C7C84, 0xEE777799, 0xF67B7B8D, 0xFFF2F20D, 0xD66B6BBD, + 0xDE6F6FB1, 0x91C5C554, 0x60303050, 0x02010103, 0xCE6767A9, 0x562B2B7D, + 0xE7FEFE19, 0xB5D7D762, 0x4DABABE6, 0xEC76769A, 0x8FCACA45, 0x1F82829D, + 0x89C9C940, 0xFA7D7D87, 0xEFFAFA15, 0xB25959EB, 0x8E4747C9, 0xFBF0F00B, + 0x41ADADEC, 0xB3D4D467, 0x5FA2A2FD, 0x45AFAFEA, 0x239C9CBF, 0x53A4A4F7, + 0xE4727296, 0x9BC0C05B, 0x75B7B7C2, 0xE1FDFD1C, 0x3D9393AE, 0x4C26266A, + 0x6C36365A, 0x7E3F3F41, 0xF5F7F702, 0x83CCCC4F, 0x6834345C, 0x51A5A5F4, + 0xD1E5E534, 0xF9F1F108, 0xE2717193, 0xABD8D873, 0x62313153, 0x2A15153F, + 0x0804040C, 0x95C7C752, 0x46232365, 0x9DC3C35E, 0x30181828, 0x379696A1, + 0x0A05050F, 0x2F9A9AB5, 0x0E070709, 0x24121236, 0x1B80809B, 0xDFE2E23D, + 0xCDEBEB26, 0x4E272769, 0x7FB2B2CD, 0xEA75759F, 0x1209091B, 0x1D83839E, + 0x582C2C74, 0x341A1A2E, 0x361B1B2D, 0xDC6E6EB2, 0xB45A5AEE, 0x5BA0A0FB, + 0xA45252F6, 0x763B3B4D, 0xB7D6D661, 0x7DB3B3CE, 0x5229297B, 0xDDE3E33E, + 0x5E2F2F71, 0x13848497, 0xA65353F5, 0xB9D1D168, 0x00000000, 0xC1EDED2C, + 0x40202060, 0xE3FCFC1F, 0x79B1B1C8, 0xB65B5BED, 0xD46A6ABE, 0x8DCBCB46, + 0x67BEBED9, 0x7239394B, 0x944A4ADE, 0x984C4CD4, 0xB05858E8, 0x85CFCF4A, + 0xBBD0D06B, 0xC5EFEF2A, 0x4FAAAAE5, 0xEDFBFB16, 0x864343C5, 0x9A4D4DD7, + 0x66333355, 0x11858594, 0x8A4545CF, 0xE9F9F910, 0x04020206, 0xFE7F7F81, + 0xA05050F0, 0x783C3C44, 0x259F9FBA, 0x4BA8A8E3, 0xA25151F3, 0x5DA3A3FE, + 0x804040C0, 0x058F8F8A, 0x3F9292AD, 0x219D9DBC, 0x70383848, 0xF1F5F504, + 0x63BCBCDF, 0x77B6B6C1, 0xAFDADA75, 0x42212163, 0x20101030, 0xE5FFFF1A, + 0xFDF3F30E, 0xBFD2D26D, 0x81CDCD4C, 0x180C0C14, 0x26131335, 0xC3ECEC2F, + 0xBE5F5FE1, 0x359797A2, 0x884444CC, 0x2E171739, 0x93C4C457, 0x55A7A7F2, + 0xFC7E7E82, 0x7A3D3D47, 0xC86464AC, 0xBA5D5DE7, 0x3219192B, 0xE6737395, + 0xC06060A0, 0x19818198, 0x9E4F4FD1, 0xA3DCDC7F, 0x44222266, 0x542A2A7E, + 0x3B9090AB, 0x0B888883, 0x8C4646CA, 0xC7EEEE29, 0x6BB8B8D3, 0x2814143C, + 0xA7DEDE79, 0xBC5E5EE2, 0x160B0B1D, 0xADDBDB76, 0xDBE0E03B, 0x64323256, + 0x743A3A4E, 0x140A0A1E, 0x924949DB, 0x0C06060A, 0x4824246C, 0xB85C5CE4, + 0x9FC2C25D, 0xBDD3D36E, 0x43ACACEF, 0xC46262A6, 0x399191A8, 0x319595A4, + 0xD3E4E437, 0xF279798B, 0xD5E7E732, 0x8BC8C843, 0x6E373759, 0xDA6D6DB7, + 0x018D8D8C, 0xB1D5D564, 0x9C4E4ED2, 0x49A9A9E0, 0xD86C6CB4, 0xAC5656FA, + 0xF3F4F407, 0xCFEAEA25, 0xCA6565AF, 0xF47A7A8E, 0x47AEAEE9, 0x10080818, + 0x6FBABAD5, 0xF0787888, 0x4A25256F, 0x5C2E2E72, 0x381C1C24, 0x57A6A6F1, + 0x73B4B4C7, 0x97C6C651, 0xCBE8E823, 0xA1DDDD7C, 0xE874749C, 0x3E1F1F21, + 0x964B4BDD, 0x61BDBDDC, 0x0D8B8B86, 0x0F8A8A85, 0xE0707090, 0x7C3E3E42, + 0x71B5B5C4, 0xCC6666AA, 0x904848D8, 0x06030305, 0xF7F6F601, 0x1C0E0E12, + 0xC26161A3, 0x6A35355F, 0xAE5757F9, 0x69B9B9D0, 0x17868691, 0x99C1C158, + 0x3A1D1D27, 0x279E9EB9, 0xD9E1E138, 0xEBF8F813, 0x2B9898B3, 0x22111133, + 0xD26969BB, 0xA9D9D970, 0x078E8E89, 0x339494A7, 0x2D9B9BB6, 0x3C1E1E22, + 0x15878792, 0xC9E9E920, 0x87CECE49, 0xAA5555FF, 0x50282878, 0xA5DFDF7A, + 0x038C8C8F, 0x59A1A1F8, 0x09898980, 0x1A0D0D17, 0x65BFBFDA, 0xD7E6E631, + 0x844242C6, 0xD06868B8, 0x824141C3, 0x299999B0, 0x5A2D2D77, 0x1E0F0F11, + 0x7BB0B0CB, 0xA85454FC, 0x6DBBBBD6, 0x2C16163A }; const u32bit AES::TE1[256] = { -0xA5C66363, 0x84F87C7C, 0x99EE7777, 0x8DF67B7B, 0x0DFFF2F2, 0xBDD66B6B, -0xB1DE6F6F, 0x5491C5C5, 0x50603030, 0x03020101, 0xA9CE6767, 0x7D562B2B, -0x19E7FEFE, 0x62B5D7D7, 0xE64DABAB, 0x9AEC7676, 0x458FCACA, 0x9D1F8282, -0x4089C9C9, 0x87FA7D7D, 0x15EFFAFA, 0xEBB25959, 0xC98E4747, 0x0BFBF0F0, -0xEC41ADAD, 0x67B3D4D4, 0xFD5FA2A2, 0xEA45AFAF, 0xBF239C9C, 0xF753A4A4, -0x96E47272, 0x5B9BC0C0, 0xC275B7B7, 0x1CE1FDFD, 0xAE3D9393, 0x6A4C2626, -0x5A6C3636, 0x417E3F3F, 0x02F5F7F7, 0x4F83CCCC, 0x5C683434, 0xF451A5A5, -0x34D1E5E5, 0x08F9F1F1, 0x93E27171, 0x73ABD8D8, 0x53623131, 0x3F2A1515, -0x0C080404, 0x5295C7C7, 0x65462323, 0x5E9DC3C3, 0x28301818, 0xA1379696, -0x0F0A0505, 0xB52F9A9A, 0x090E0707, 0x36241212, 0x9B1B8080, 0x3DDFE2E2, -0x26CDEBEB, 0x694E2727, 0xCD7FB2B2, 0x9FEA7575, 0x1B120909, 0x9E1D8383, -0x74582C2C, 0x2E341A1A, 0x2D361B1B, 0xB2DC6E6E, 0xEEB45A5A, 0xFB5BA0A0, -0xF6A45252, 0x4D763B3B, 0x61B7D6D6, 0xCE7DB3B3, 0x7B522929, 0x3EDDE3E3, -0x715E2F2F, 0x97138484, 0xF5A65353, 0x68B9D1D1, 0x00000000, 0x2CC1EDED, -0x60402020, 0x1FE3FCFC, 0xC879B1B1, 0xEDB65B5B, 0xBED46A6A, 0x468DCBCB, -0xD967BEBE, 0x4B723939, 0xDE944A4A, 0xD4984C4C, 0xE8B05858, 0x4A85CFCF, -0x6BBBD0D0, 0x2AC5EFEF, 0xE54FAAAA, 0x16EDFBFB, 0xC5864343, 0xD79A4D4D, -0x55663333, 0x94118585, 0xCF8A4545, 0x10E9F9F9, 0x06040202, 0x81FE7F7F, -0xF0A05050, 0x44783C3C, 0xBA259F9F, 0xE34BA8A8, 0xF3A25151, 0xFE5DA3A3, -0xC0804040, 0x8A058F8F, 0xAD3F9292, 0xBC219D9D, 0x48703838, 0x04F1F5F5, -0xDF63BCBC, 0xC177B6B6, 0x75AFDADA, 0x63422121, 0x30201010, 0x1AE5FFFF, -0x0EFDF3F3, 0x6DBFD2D2, 0x4C81CDCD, 0x14180C0C, 0x35261313, 0x2FC3ECEC, -0xE1BE5F5F, 0xA2359797, 0xCC884444, 0x392E1717, 0x5793C4C4, 0xF255A7A7, -0x82FC7E7E, 0x477A3D3D, 0xACC86464, 0xE7BA5D5D, 0x2B321919, 0x95E67373, -0xA0C06060, 0x98198181, 0xD19E4F4F, 0x7FA3DCDC, 0x66442222, 0x7E542A2A, -0xAB3B9090, 0x830B8888, 0xCA8C4646, 0x29C7EEEE, 0xD36BB8B8, 0x3C281414, -0x79A7DEDE, 0xE2BC5E5E, 0x1D160B0B, 0x76ADDBDB, 0x3BDBE0E0, 0x56643232, -0x4E743A3A, 0x1E140A0A, 0xDB924949, 0x0A0C0606, 0x6C482424, 0xE4B85C5C, -0x5D9FC2C2, 0x6EBDD3D3, 0xEF43ACAC, 0xA6C46262, 0xA8399191, 0xA4319595, -0x37D3E4E4, 0x8BF27979, 0x32D5E7E7, 0x438BC8C8, 0x596E3737, 0xB7DA6D6D, -0x8C018D8D, 0x64B1D5D5, 0xD29C4E4E, 0xE049A9A9, 0xB4D86C6C, 0xFAAC5656, -0x07F3F4F4, 0x25CFEAEA, 0xAFCA6565, 0x8EF47A7A, 0xE947AEAE, 0x18100808, -0xD56FBABA, 0x88F07878, 0x6F4A2525, 0x725C2E2E, 0x24381C1C, 0xF157A6A6, -0xC773B4B4, 0x5197C6C6, 0x23CBE8E8, 0x7CA1DDDD, 0x9CE87474, 0x213E1F1F, -0xDD964B4B, 0xDC61BDBD, 0x860D8B8B, 0x850F8A8A, 0x90E07070, 0x427C3E3E, -0xC471B5B5, 0xAACC6666, 0xD8904848, 0x05060303, 0x01F7F6F6, 0x121C0E0E, -0xA3C26161, 0x5F6A3535, 0xF9AE5757, 0xD069B9B9, 0x91178686, 0x5899C1C1, -0x273A1D1D, 0xB9279E9E, 0x38D9E1E1, 0x13EBF8F8, 0xB32B9898, 0x33221111, -0xBBD26969, 0x70A9D9D9, 0x89078E8E, 0xA7339494, 0xB62D9B9B, 0x223C1E1E, -0x92158787, 0x20C9E9E9, 0x4987CECE, 0xFFAA5555, 0x78502828, 0x7AA5DFDF, -0x8F038C8C, 0xF859A1A1, 0x80098989, 0x171A0D0D, 0xDA65BFBF, 0x31D7E6E6, -0xC6844242, 0xB8D06868, 0xC3824141, 0xB0299999, 0x775A2D2D, 0x111E0F0F, -0xCB7BB0B0, 0xFCA85454, 0xD66DBBBB, 0x3A2C1616 }; + 0xA5C66363, 0x84F87C7C, 0x99EE7777, 0x8DF67B7B, 0x0DFFF2F2, 0xBDD66B6B, + 0xB1DE6F6F, 0x5491C5C5, 0x50603030, 0x03020101, 0xA9CE6767, 0x7D562B2B, + 0x19E7FEFE, 0x62B5D7D7, 0xE64DABAB, 0x9AEC7676, 0x458FCACA, 0x9D1F8282, + 0x4089C9C9, 0x87FA7D7D, 0x15EFFAFA, 0xEBB25959, 0xC98E4747, 0x0BFBF0F0, + 0xEC41ADAD, 0x67B3D4D4, 0xFD5FA2A2, 0xEA45AFAF, 0xBF239C9C, 0xF753A4A4, + 0x96E47272, 0x5B9BC0C0, 0xC275B7B7, 0x1CE1FDFD, 0xAE3D9393, 0x6A4C2626, + 0x5A6C3636, 0x417E3F3F, 0x02F5F7F7, 0x4F83CCCC, 0x5C683434, 0xF451A5A5, + 0x34D1E5E5, 0x08F9F1F1, 0x93E27171, 0x73ABD8D8, 0x53623131, 0x3F2A1515, + 0x0C080404, 0x5295C7C7, 0x65462323, 0x5E9DC3C3, 0x28301818, 0xA1379696, + 0x0F0A0505, 0xB52F9A9A, 0x090E0707, 0x36241212, 0x9B1B8080, 0x3DDFE2E2, + 0x26CDEBEB, 0x694E2727, 0xCD7FB2B2, 0x9FEA7575, 0x1B120909, 0x9E1D8383, + 0x74582C2C, 0x2E341A1A, 0x2D361B1B, 0xB2DC6E6E, 0xEEB45A5A, 0xFB5BA0A0, + 0xF6A45252, 0x4D763B3B, 0x61B7D6D6, 0xCE7DB3B3, 0x7B522929, 0x3EDDE3E3, + 0x715E2F2F, 0x97138484, 0xF5A65353, 0x68B9D1D1, 0x00000000, 0x2CC1EDED, + 0x60402020, 0x1FE3FCFC, 0xC879B1B1, 0xEDB65B5B, 0xBED46A6A, 0x468DCBCB, + 0xD967BEBE, 0x4B723939, 0xDE944A4A, 0xD4984C4C, 0xE8B05858, 0x4A85CFCF, + 0x6BBBD0D0, 0x2AC5EFEF, 0xE54FAAAA, 0x16EDFBFB, 0xC5864343, 0xD79A4D4D, + 0x55663333, 0x94118585, 0xCF8A4545, 0x10E9F9F9, 0x06040202, 0x81FE7F7F, + 0xF0A05050, 0x44783C3C, 0xBA259F9F, 0xE34BA8A8, 0xF3A25151, 0xFE5DA3A3, + 0xC0804040, 0x8A058F8F, 0xAD3F9292, 0xBC219D9D, 0x48703838, 0x04F1F5F5, + 0xDF63BCBC, 0xC177B6B6, 0x75AFDADA, 0x63422121, 0x30201010, 0x1AE5FFFF, + 0x0EFDF3F3, 0x6DBFD2D2, 0x4C81CDCD, 0x14180C0C, 0x35261313, 0x2FC3ECEC, + 0xE1BE5F5F, 0xA2359797, 0xCC884444, 0x392E1717, 0x5793C4C4, 0xF255A7A7, + 0x82FC7E7E, 0x477A3D3D, 0xACC86464, 0xE7BA5D5D, 0x2B321919, 0x95E67373, + 0xA0C06060, 0x98198181, 0xD19E4F4F, 0x7FA3DCDC, 0x66442222, 0x7E542A2A, + 0xAB3B9090, 0x830B8888, 0xCA8C4646, 0x29C7EEEE, 0xD36BB8B8, 0x3C281414, + 0x79A7DEDE, 0xE2BC5E5E, 0x1D160B0B, 0x76ADDBDB, 0x3BDBE0E0, 0x56643232, + 0x4E743A3A, 0x1E140A0A, 0xDB924949, 0x0A0C0606, 0x6C482424, 0xE4B85C5C, + 0x5D9FC2C2, 0x6EBDD3D3, 0xEF43ACAC, 0xA6C46262, 0xA8399191, 0xA4319595, + 0x37D3E4E4, 0x8BF27979, 0x32D5E7E7, 0x438BC8C8, 0x596E3737, 0xB7DA6D6D, + 0x8C018D8D, 0x64B1D5D5, 0xD29C4E4E, 0xE049A9A9, 0xB4D86C6C, 0xFAAC5656, + 0x07F3F4F4, 0x25CFEAEA, 0xAFCA6565, 0x8EF47A7A, 0xE947AEAE, 0x18100808, + 0xD56FBABA, 0x88F07878, 0x6F4A2525, 0x725C2E2E, 0x24381C1C, 0xF157A6A6, + 0xC773B4B4, 0x5197C6C6, 0x23CBE8E8, 0x7CA1DDDD, 0x9CE87474, 0x213E1F1F, + 0xDD964B4B, 0xDC61BDBD, 0x860D8B8B, 0x850F8A8A, 0x90E07070, 0x427C3E3E, + 0xC471B5B5, 0xAACC6666, 0xD8904848, 0x05060303, 0x01F7F6F6, 0x121C0E0E, + 0xA3C26161, 0x5F6A3535, 0xF9AE5757, 0xD069B9B9, 0x91178686, 0x5899C1C1, + 0x273A1D1D, 0xB9279E9E, 0x38D9E1E1, 0x13EBF8F8, 0xB32B9898, 0x33221111, + 0xBBD26969, 0x70A9D9D9, 0x89078E8E, 0xA7339494, 0xB62D9B9B, 0x223C1E1E, + 0x92158787, 0x20C9E9E9, 0x4987CECE, 0xFFAA5555, 0x78502828, 0x7AA5DFDF, + 0x8F038C8C, 0xF859A1A1, 0x80098989, 0x171A0D0D, 0xDA65BFBF, 0x31D7E6E6, + 0xC6844242, 0xB8D06868, 0xC3824141, 0xB0299999, 0x775A2D2D, 0x111E0F0F, + 0xCB7BB0B0, 0xFCA85454, 0xD66DBBBB, 0x3A2C1616 }; const u32bit AES::TE2[256] = { -0x63A5C663, 0x7C84F87C, 0x7799EE77, 0x7B8DF67B, 0xF20DFFF2, 0x6BBDD66B, -0x6FB1DE6F, 0xC55491C5, 0x30506030, 0x01030201, 0x67A9CE67, 0x2B7D562B, -0xFE19E7FE, 0xD762B5D7, 0xABE64DAB, 0x769AEC76, 0xCA458FCA, 0x829D1F82, -0xC94089C9, 0x7D87FA7D, 0xFA15EFFA, 0x59EBB259, 0x47C98E47, 0xF00BFBF0, -0xADEC41AD, 0xD467B3D4, 0xA2FD5FA2, 0xAFEA45AF, 0x9CBF239C, 0xA4F753A4, -0x7296E472, 0xC05B9BC0, 0xB7C275B7, 0xFD1CE1FD, 0x93AE3D93, 0x266A4C26, -0x365A6C36, 0x3F417E3F, 0xF702F5F7, 0xCC4F83CC, 0x345C6834, 0xA5F451A5, -0xE534D1E5, 0xF108F9F1, 0x7193E271, 0xD873ABD8, 0x31536231, 0x153F2A15, -0x040C0804, 0xC75295C7, 0x23654623, 0xC35E9DC3, 0x18283018, 0x96A13796, -0x050F0A05, 0x9AB52F9A, 0x07090E07, 0x12362412, 0x809B1B80, 0xE23DDFE2, -0xEB26CDEB, 0x27694E27, 0xB2CD7FB2, 0x759FEA75, 0x091B1209, 0x839E1D83, -0x2C74582C, 0x1A2E341A, 0x1B2D361B, 0x6EB2DC6E, 0x5AEEB45A, 0xA0FB5BA0, -0x52F6A452, 0x3B4D763B, 0xD661B7D6, 0xB3CE7DB3, 0x297B5229, 0xE33EDDE3, -0x2F715E2F, 0x84971384, 0x53F5A653, 0xD168B9D1, 0x00000000, 0xED2CC1ED, -0x20604020, 0xFC1FE3FC, 0xB1C879B1, 0x5BEDB65B, 0x6ABED46A, 0xCB468DCB, -0xBED967BE, 0x394B7239, 0x4ADE944A, 0x4CD4984C, 0x58E8B058, 0xCF4A85CF, -0xD06BBBD0, 0xEF2AC5EF, 0xAAE54FAA, 0xFB16EDFB, 0x43C58643, 0x4DD79A4D, -0x33556633, 0x85941185, 0x45CF8A45, 0xF910E9F9, 0x02060402, 0x7F81FE7F, -0x50F0A050, 0x3C44783C, 0x9FBA259F, 0xA8E34BA8, 0x51F3A251, 0xA3FE5DA3, -0x40C08040, 0x8F8A058F, 0x92AD3F92, 0x9DBC219D, 0x38487038, 0xF504F1F5, -0xBCDF63BC, 0xB6C177B6, 0xDA75AFDA, 0x21634221, 0x10302010, 0xFF1AE5FF, -0xF30EFDF3, 0xD26DBFD2, 0xCD4C81CD, 0x0C14180C, 0x13352613, 0xEC2FC3EC, -0x5FE1BE5F, 0x97A23597, 0x44CC8844, 0x17392E17, 0xC45793C4, 0xA7F255A7, -0x7E82FC7E, 0x3D477A3D, 0x64ACC864, 0x5DE7BA5D, 0x192B3219, 0x7395E673, -0x60A0C060, 0x81981981, 0x4FD19E4F, 0xDC7FA3DC, 0x22664422, 0x2A7E542A, -0x90AB3B90, 0x88830B88, 0x46CA8C46, 0xEE29C7EE, 0xB8D36BB8, 0x143C2814, -0xDE79A7DE, 0x5EE2BC5E, 0x0B1D160B, 0xDB76ADDB, 0xE03BDBE0, 0x32566432, -0x3A4E743A, 0x0A1E140A, 0x49DB9249, 0x060A0C06, 0x246C4824, 0x5CE4B85C, -0xC25D9FC2, 0xD36EBDD3, 0xACEF43AC, 0x62A6C462, 0x91A83991, 0x95A43195, -0xE437D3E4, 0x798BF279, 0xE732D5E7, 0xC8438BC8, 0x37596E37, 0x6DB7DA6D, -0x8D8C018D, 0xD564B1D5, 0x4ED29C4E, 0xA9E049A9, 0x6CB4D86C, 0x56FAAC56, -0xF407F3F4, 0xEA25CFEA, 0x65AFCA65, 0x7A8EF47A, 0xAEE947AE, 0x08181008, -0xBAD56FBA, 0x7888F078, 0x256F4A25, 0x2E725C2E, 0x1C24381C, 0xA6F157A6, -0xB4C773B4, 0xC65197C6, 0xE823CBE8, 0xDD7CA1DD, 0x749CE874, 0x1F213E1F, -0x4BDD964B, 0xBDDC61BD, 0x8B860D8B, 0x8A850F8A, 0x7090E070, 0x3E427C3E, -0xB5C471B5, 0x66AACC66, 0x48D89048, 0x03050603, 0xF601F7F6, 0x0E121C0E, -0x61A3C261, 0x355F6A35, 0x57F9AE57, 0xB9D069B9, 0x86911786, 0xC15899C1, -0x1D273A1D, 0x9EB9279E, 0xE138D9E1, 0xF813EBF8, 0x98B32B98, 0x11332211, -0x69BBD269, 0xD970A9D9, 0x8E89078E, 0x94A73394, 0x9BB62D9B, 0x1E223C1E, -0x87921587, 0xE920C9E9, 0xCE4987CE, 0x55FFAA55, 0x28785028, 0xDF7AA5DF, -0x8C8F038C, 0xA1F859A1, 0x89800989, 0x0D171A0D, 0xBFDA65BF, 0xE631D7E6, -0x42C68442, 0x68B8D068, 0x41C38241, 0x99B02999, 0x2D775A2D, 0x0F111E0F, -0xB0CB7BB0, 0x54FCA854, 0xBBD66DBB, 0x163A2C16 }; + 0x63A5C663, 0x7C84F87C, 0x7799EE77, 0x7B8DF67B, 0xF20DFFF2, 0x6BBDD66B, + 0x6FB1DE6F, 0xC55491C5, 0x30506030, 0x01030201, 0x67A9CE67, 0x2B7D562B, + 0xFE19E7FE, 0xD762B5D7, 0xABE64DAB, 0x769AEC76, 0xCA458FCA, 0x829D1F82, + 0xC94089C9, 0x7D87FA7D, 0xFA15EFFA, 0x59EBB259, 0x47C98E47, 0xF00BFBF0, + 0xADEC41AD, 0xD467B3D4, 0xA2FD5FA2, 0xAFEA45AF, 0x9CBF239C, 0xA4F753A4, + 0x7296E472, 0xC05B9BC0, 0xB7C275B7, 0xFD1CE1FD, 0x93AE3D93, 0x266A4C26, + 0x365A6C36, 0x3F417E3F, 0xF702F5F7, 0xCC4F83CC, 0x345C6834, 0xA5F451A5, + 0xE534D1E5, 0xF108F9F1, 0x7193E271, 0xD873ABD8, 0x31536231, 0x153F2A15, + 0x040C0804, 0xC75295C7, 0x23654623, 0xC35E9DC3, 0x18283018, 0x96A13796, + 0x050F0A05, 0x9AB52F9A, 0x07090E07, 0x12362412, 0x809B1B80, 0xE23DDFE2, + 0xEB26CDEB, 0x27694E27, 0xB2CD7FB2, 0x759FEA75, 0x091B1209, 0x839E1D83, + 0x2C74582C, 0x1A2E341A, 0x1B2D361B, 0x6EB2DC6E, 0x5AEEB45A, 0xA0FB5BA0, + 0x52F6A452, 0x3B4D763B, 0xD661B7D6, 0xB3CE7DB3, 0x297B5229, 0xE33EDDE3, + 0x2F715E2F, 0x84971384, 0x53F5A653, 0xD168B9D1, 0x00000000, 0xED2CC1ED, + 0x20604020, 0xFC1FE3FC, 0xB1C879B1, 0x5BEDB65B, 0x6ABED46A, 0xCB468DCB, + 0xBED967BE, 0x394B7239, 0x4ADE944A, 0x4CD4984C, 0x58E8B058, 0xCF4A85CF, + 0xD06BBBD0, 0xEF2AC5EF, 0xAAE54FAA, 0xFB16EDFB, 0x43C58643, 0x4DD79A4D, + 0x33556633, 0x85941185, 0x45CF8A45, 0xF910E9F9, 0x02060402, 0x7F81FE7F, + 0x50F0A050, 0x3C44783C, 0x9FBA259F, 0xA8E34BA8, 0x51F3A251, 0xA3FE5DA3, + 0x40C08040, 0x8F8A058F, 0x92AD3F92, 0x9DBC219D, 0x38487038, 0xF504F1F5, + 0xBCDF63BC, 0xB6C177B6, 0xDA75AFDA, 0x21634221, 0x10302010, 0xFF1AE5FF, + 0xF30EFDF3, 0xD26DBFD2, 0xCD4C81CD, 0x0C14180C, 0x13352613, 0xEC2FC3EC, + 0x5FE1BE5F, 0x97A23597, 0x44CC8844, 0x17392E17, 0xC45793C4, 0xA7F255A7, + 0x7E82FC7E, 0x3D477A3D, 0x64ACC864, 0x5DE7BA5D, 0x192B3219, 0x7395E673, + 0x60A0C060, 0x81981981, 0x4FD19E4F, 0xDC7FA3DC, 0x22664422, 0x2A7E542A, + 0x90AB3B90, 0x88830B88, 0x46CA8C46, 0xEE29C7EE, 0xB8D36BB8, 0x143C2814, + 0xDE79A7DE, 0x5EE2BC5E, 0x0B1D160B, 0xDB76ADDB, 0xE03BDBE0, 0x32566432, + 0x3A4E743A, 0x0A1E140A, 0x49DB9249, 0x060A0C06, 0x246C4824, 0x5CE4B85C, + 0xC25D9FC2, 0xD36EBDD3, 0xACEF43AC, 0x62A6C462, 0x91A83991, 0x95A43195, + 0xE437D3E4, 0x798BF279, 0xE732D5E7, 0xC8438BC8, 0x37596E37, 0x6DB7DA6D, + 0x8D8C018D, 0xD564B1D5, 0x4ED29C4E, 0xA9E049A9, 0x6CB4D86C, 0x56FAAC56, + 0xF407F3F4, 0xEA25CFEA, 0x65AFCA65, 0x7A8EF47A, 0xAEE947AE, 0x08181008, + 0xBAD56FBA, 0x7888F078, 0x256F4A25, 0x2E725C2E, 0x1C24381C, 0xA6F157A6, + 0xB4C773B4, 0xC65197C6, 0xE823CBE8, 0xDD7CA1DD, 0x749CE874, 0x1F213E1F, + 0x4BDD964B, 0xBDDC61BD, 0x8B860D8B, 0x8A850F8A, 0x7090E070, 0x3E427C3E, + 0xB5C471B5, 0x66AACC66, 0x48D89048, 0x03050603, 0xF601F7F6, 0x0E121C0E, + 0x61A3C261, 0x355F6A35, 0x57F9AE57, 0xB9D069B9, 0x86911786, 0xC15899C1, + 0x1D273A1D, 0x9EB9279E, 0xE138D9E1, 0xF813EBF8, 0x98B32B98, 0x11332211, + 0x69BBD269, 0xD970A9D9, 0x8E89078E, 0x94A73394, 0x9BB62D9B, 0x1E223C1E, + 0x87921587, 0xE920C9E9, 0xCE4987CE, 0x55FFAA55, 0x28785028, 0xDF7AA5DF, + 0x8C8F038C, 0xA1F859A1, 0x89800989, 0x0D171A0D, 0xBFDA65BF, 0xE631D7E6, + 0x42C68442, 0x68B8D068, 0x41C38241, 0x99B02999, 0x2D775A2D, 0x0F111E0F, + 0xB0CB7BB0, 0x54FCA854, 0xBBD66DBB, 0x163A2C16 }; const u32bit AES::TE3[256] = { -0x6363A5C6, 0x7C7C84F8, 0x777799EE, 0x7B7B8DF6, 0xF2F20DFF, 0x6B6BBDD6, -0x6F6FB1DE, 0xC5C55491, 0x30305060, 0x01010302, 0x6767A9CE, 0x2B2B7D56, -0xFEFE19E7, 0xD7D762B5, 0xABABE64D, 0x76769AEC, 0xCACA458F, 0x82829D1F, -0xC9C94089, 0x7D7D87FA, 0xFAFA15EF, 0x5959EBB2, 0x4747C98E, 0xF0F00BFB, -0xADADEC41, 0xD4D467B3, 0xA2A2FD5F, 0xAFAFEA45, 0x9C9CBF23, 0xA4A4F753, -0x727296E4, 0xC0C05B9B, 0xB7B7C275, 0xFDFD1CE1, 0x9393AE3D, 0x26266A4C, -0x36365A6C, 0x3F3F417E, 0xF7F702F5, 0xCCCC4F83, 0x34345C68, 0xA5A5F451, -0xE5E534D1, 0xF1F108F9, 0x717193E2, 0xD8D873AB, 0x31315362, 0x15153F2A, -0x04040C08, 0xC7C75295, 0x23236546, 0xC3C35E9D, 0x18182830, 0x9696A137, -0x05050F0A, 0x9A9AB52F, 0x0707090E, 0x12123624, 0x80809B1B, 0xE2E23DDF, -0xEBEB26CD, 0x2727694E, 0xB2B2CD7F, 0x75759FEA, 0x09091B12, 0x83839E1D, -0x2C2C7458, 0x1A1A2E34, 0x1B1B2D36, 0x6E6EB2DC, 0x5A5AEEB4, 0xA0A0FB5B, -0x5252F6A4, 0x3B3B4D76, 0xD6D661B7, 0xB3B3CE7D, 0x29297B52, 0xE3E33EDD, -0x2F2F715E, 0x84849713, 0x5353F5A6, 0xD1D168B9, 0x00000000, 0xEDED2CC1, -0x20206040, 0xFCFC1FE3, 0xB1B1C879, 0x5B5BEDB6, 0x6A6ABED4, 0xCBCB468D, -0xBEBED967, 0x39394B72, 0x4A4ADE94, 0x4C4CD498, 0x5858E8B0, 0xCFCF4A85, -0xD0D06BBB, 0xEFEF2AC5, 0xAAAAE54F, 0xFBFB16ED, 0x4343C586, 0x4D4DD79A, -0x33335566, 0x85859411, 0x4545CF8A, 0xF9F910E9, 0x02020604, 0x7F7F81FE, -0x5050F0A0, 0x3C3C4478, 0x9F9FBA25, 0xA8A8E34B, 0x5151F3A2, 0xA3A3FE5D, -0x4040C080, 0x8F8F8A05, 0x9292AD3F, 0x9D9DBC21, 0x38384870, 0xF5F504F1, -0xBCBCDF63, 0xB6B6C177, 0xDADA75AF, 0x21216342, 0x10103020, 0xFFFF1AE5, -0xF3F30EFD, 0xD2D26DBF, 0xCDCD4C81, 0x0C0C1418, 0x13133526, 0xECEC2FC3, -0x5F5FE1BE, 0x9797A235, 0x4444CC88, 0x1717392E, 0xC4C45793, 0xA7A7F255, -0x7E7E82FC, 0x3D3D477A, 0x6464ACC8, 0x5D5DE7BA, 0x19192B32, 0x737395E6, -0x6060A0C0, 0x81819819, 0x4F4FD19E, 0xDCDC7FA3, 0x22226644, 0x2A2A7E54, -0x9090AB3B, 0x8888830B, 0x4646CA8C, 0xEEEE29C7, 0xB8B8D36B, 0x14143C28, -0xDEDE79A7, 0x5E5EE2BC, 0x0B0B1D16, 0xDBDB76AD, 0xE0E03BDB, 0x32325664, -0x3A3A4E74, 0x0A0A1E14, 0x4949DB92, 0x06060A0C, 0x24246C48, 0x5C5CE4B8, -0xC2C25D9F, 0xD3D36EBD, 0xACACEF43, 0x6262A6C4, 0x9191A839, 0x9595A431, -0xE4E437D3, 0x79798BF2, 0xE7E732D5, 0xC8C8438B, 0x3737596E, 0x6D6DB7DA, -0x8D8D8C01, 0xD5D564B1, 0x4E4ED29C, 0xA9A9E049, 0x6C6CB4D8, 0x5656FAAC, -0xF4F407F3, 0xEAEA25CF, 0x6565AFCA, 0x7A7A8EF4, 0xAEAEE947, 0x08081810, -0xBABAD56F, 0x787888F0, 0x25256F4A, 0x2E2E725C, 0x1C1C2438, 0xA6A6F157, -0xB4B4C773, 0xC6C65197, 0xE8E823CB, 0xDDDD7CA1, 0x74749CE8, 0x1F1F213E, -0x4B4BDD96, 0xBDBDDC61, 0x8B8B860D, 0x8A8A850F, 0x707090E0, 0x3E3E427C, -0xB5B5C471, 0x6666AACC, 0x4848D890, 0x03030506, 0xF6F601F7, 0x0E0E121C, -0x6161A3C2, 0x35355F6A, 0x5757F9AE, 0xB9B9D069, 0x86869117, 0xC1C15899, -0x1D1D273A, 0x9E9EB927, 0xE1E138D9, 0xF8F813EB, 0x9898B32B, 0x11113322, -0x6969BBD2, 0xD9D970A9, 0x8E8E8907, 0x9494A733, 0x9B9BB62D, 0x1E1E223C, -0x87879215, 0xE9E920C9, 0xCECE4987, 0x5555FFAA, 0x28287850, 0xDFDF7AA5, -0x8C8C8F03, 0xA1A1F859, 0x89898009, 0x0D0D171A, 0xBFBFDA65, 0xE6E631D7, -0x4242C684, 0x6868B8D0, 0x4141C382, 0x9999B029, 0x2D2D775A, 0x0F0F111E, -0xB0B0CB7B, 0x5454FCA8, 0xBBBBD66D, 0x16163A2C }; + 0x6363A5C6, 0x7C7C84F8, 0x777799EE, 0x7B7B8DF6, 0xF2F20DFF, 0x6B6BBDD6, + 0x6F6FB1DE, 0xC5C55491, 0x30305060, 0x01010302, 0x6767A9CE, 0x2B2B7D56, + 0xFEFE19E7, 0xD7D762B5, 0xABABE64D, 0x76769AEC, 0xCACA458F, 0x82829D1F, + 0xC9C94089, 0x7D7D87FA, 0xFAFA15EF, 0x5959EBB2, 0x4747C98E, 0xF0F00BFB, + 0xADADEC41, 0xD4D467B3, 0xA2A2FD5F, 0xAFAFEA45, 0x9C9CBF23, 0xA4A4F753, + 0x727296E4, 0xC0C05B9B, 0xB7B7C275, 0xFDFD1CE1, 0x9393AE3D, 0x26266A4C, + 0x36365A6C, 0x3F3F417E, 0xF7F702F5, 0xCCCC4F83, 0x34345C68, 0xA5A5F451, + 0xE5E534D1, 0xF1F108F9, 0x717193E2, 0xD8D873AB, 0x31315362, 0x15153F2A, + 0x04040C08, 0xC7C75295, 0x23236546, 0xC3C35E9D, 0x18182830, 0x9696A137, + 0x05050F0A, 0x9A9AB52F, 0x0707090E, 0x12123624, 0x80809B1B, 0xE2E23DDF, + 0xEBEB26CD, 0x2727694E, 0xB2B2CD7F, 0x75759FEA, 0x09091B12, 0x83839E1D, + 0x2C2C7458, 0x1A1A2E34, 0x1B1B2D36, 0x6E6EB2DC, 0x5A5AEEB4, 0xA0A0FB5B, + 0x5252F6A4, 0x3B3B4D76, 0xD6D661B7, 0xB3B3CE7D, 0x29297B52, 0xE3E33EDD, + 0x2F2F715E, 0x84849713, 0x5353F5A6, 0xD1D168B9, 0x00000000, 0xEDED2CC1, + 0x20206040, 0xFCFC1FE3, 0xB1B1C879, 0x5B5BEDB6, 0x6A6ABED4, 0xCBCB468D, + 0xBEBED967, 0x39394B72, 0x4A4ADE94, 0x4C4CD498, 0x5858E8B0, 0xCFCF4A85, + 0xD0D06BBB, 0xEFEF2AC5, 0xAAAAE54F, 0xFBFB16ED, 0x4343C586, 0x4D4DD79A, + 0x33335566, 0x85859411, 0x4545CF8A, 0xF9F910E9, 0x02020604, 0x7F7F81FE, + 0x5050F0A0, 0x3C3C4478, 0x9F9FBA25, 0xA8A8E34B, 0x5151F3A2, 0xA3A3FE5D, + 0x4040C080, 0x8F8F8A05, 0x9292AD3F, 0x9D9DBC21, 0x38384870, 0xF5F504F1, + 0xBCBCDF63, 0xB6B6C177, 0xDADA75AF, 0x21216342, 0x10103020, 0xFFFF1AE5, + 0xF3F30EFD, 0xD2D26DBF, 0xCDCD4C81, 0x0C0C1418, 0x13133526, 0xECEC2FC3, + 0x5F5FE1BE, 0x9797A235, 0x4444CC88, 0x1717392E, 0xC4C45793, 0xA7A7F255, + 0x7E7E82FC, 0x3D3D477A, 0x6464ACC8, 0x5D5DE7BA, 0x19192B32, 0x737395E6, + 0x6060A0C0, 0x81819819, 0x4F4FD19E, 0xDCDC7FA3, 0x22226644, 0x2A2A7E54, + 0x9090AB3B, 0x8888830B, 0x4646CA8C, 0xEEEE29C7, 0xB8B8D36B, 0x14143C28, + 0xDEDE79A7, 0x5E5EE2BC, 0x0B0B1D16, 0xDBDB76AD, 0xE0E03BDB, 0x32325664, + 0x3A3A4E74, 0x0A0A1E14, 0x4949DB92, 0x06060A0C, 0x24246C48, 0x5C5CE4B8, + 0xC2C25D9F, 0xD3D36EBD, 0xACACEF43, 0x6262A6C4, 0x9191A839, 0x9595A431, + 0xE4E437D3, 0x79798BF2, 0xE7E732D5, 0xC8C8438B, 0x3737596E, 0x6D6DB7DA, + 0x8D8D8C01, 0xD5D564B1, 0x4E4ED29C, 0xA9A9E049, 0x6C6CB4D8, 0x5656FAAC, + 0xF4F407F3, 0xEAEA25CF, 0x6565AFCA, 0x7A7A8EF4, 0xAEAEE947, 0x08081810, + 0xBABAD56F, 0x787888F0, 0x25256F4A, 0x2E2E725C, 0x1C1C2438, 0xA6A6F157, + 0xB4B4C773, 0xC6C65197, 0xE8E823CB, 0xDDDD7CA1, 0x74749CE8, 0x1F1F213E, + 0x4B4BDD96, 0xBDBDDC61, 0x8B8B860D, 0x8A8A850F, 0x707090E0, 0x3E3E427C, + 0xB5B5C471, 0x6666AACC, 0x4848D890, 0x03030506, 0xF6F601F7, 0x0E0E121C, + 0x6161A3C2, 0x35355F6A, 0x5757F9AE, 0xB9B9D069, 0x86869117, 0xC1C15899, + 0x1D1D273A, 0x9E9EB927, 0xE1E138D9, 0xF8F813EB, 0x9898B32B, 0x11113322, + 0x6969BBD2, 0xD9D970A9, 0x8E8E8907, 0x9494A733, 0x9B9BB62D, 0x1E1E223C, + 0x87879215, 0xE9E920C9, 0xCECE4987, 0x5555FFAA, 0x28287850, 0xDFDF7AA5, + 0x8C8C8F03, 0xA1A1F859, 0x89898009, 0x0D0D171A, 0xBFBFDA65, 0xE6E631D7, + 0x4242C684, 0x6868B8D0, 0x4141C382, 0x9999B029, 0x2D2D775A, 0x0F0F111E, + 0xB0B0CB7B, 0x5454FCA8, 0xBBBBD66D, 0x16163A2C }; const u32bit AES::TD0[256] = { -0x51F4A750, 0x7E416553, 0x1A17A4C3, 0x3A275E96, 0x3BAB6BCB, 0x1F9D45F1, -0xACFA58AB, 0x4BE30393, 0x2030FA55, 0xAD766DF6, 0x88CC7691, 0xF5024C25, -0x4FE5D7FC, 0xC52ACBD7, 0x26354480, 0xB562A38F, 0xDEB15A49, 0x25BA1B67, -0x45EA0E98, 0x5DFEC0E1, 0xC32F7502, 0x814CF012, 0x8D4697A3, 0x6BD3F9C6, -0x038F5FE7, 0x15929C95, 0xBF6D7AEB, 0x955259DA, 0xD4BE832D, 0x587421D3, -0x49E06929, 0x8EC9C844, 0x75C2896A, 0xF48E7978, 0x99583E6B, 0x27B971DD, -0xBEE14FB6, 0xF088AD17, 0xC920AC66, 0x7DCE3AB4, 0x63DF4A18, 0xE51A3182, -0x97513360, 0x62537F45, 0xB16477E0, 0xBB6BAE84, 0xFE81A01C, 0xF9082B94, -0x70486858, 0x8F45FD19, 0x94DE6C87, 0x527BF8B7, 0xAB73D323, 0x724B02E2, -0xE31F8F57, 0x6655AB2A, 0xB2EB2807, 0x2FB5C203, 0x86C57B9A, 0xD33708A5, -0x302887F2, 0x23BFA5B2, 0x02036ABA, 0xED16825C, 0x8ACF1C2B, 0xA779B492, -0xF307F2F0, 0x4E69E2A1, 0x65DAF4CD, 0x0605BED5, 0xD134621F, 0xC4A6FE8A, -0x342E539D, 0xA2F355A0, 0x058AE132, 0xA4F6EB75, 0x0B83EC39, 0x4060EFAA, -0x5E719F06, 0xBD6E1051, 0x3E218AF9, 0x96DD063D, 0xDD3E05AE, 0x4DE6BD46, -0x91548DB5, 0x71C45D05, 0x0406D46F, 0x605015FF, 0x1998FB24, 0xD6BDE997, -0x894043CC, 0x67D99E77, 0xB0E842BD, 0x07898B88, 0xE7195B38, 0x79C8EEDB, -0xA17C0A47, 0x7C420FE9, 0xF8841EC9, 0x00000000, 0x09808683, 0x322BED48, -0x1E1170AC, 0x6C5A724E, 0xFD0EFFFB, 0x0F853856, 0x3DAED51E, 0x362D3927, -0x0A0FD964, 0x685CA621, 0x9B5B54D1, 0x24362E3A, 0x0C0A67B1, 0x9357E70F, -0xB4EE96D2, 0x1B9B919E, 0x80C0C54F, 0x61DC20A2, 0x5A774B69, 0x1C121A16, -0xE293BA0A, 0xC0A02AE5, 0x3C22E043, 0x121B171D, 0x0E090D0B, 0xF28BC7AD, -0x2DB6A8B9, 0x141EA9C8, 0x57F11985, 0xAF75074C, 0xEE99DDBB, 0xA37F60FD, -0xF701269F, 0x5C72F5BC, 0x44663BC5, 0x5BFB7E34, 0x8B432976, 0xCB23C6DC, -0xB6EDFC68, 0xB8E4F163, 0xD731DCCA, 0x42638510, 0x13972240, 0x84C61120, -0x854A247D, 0xD2BB3DF8, 0xAEF93211, 0xC729A16D, 0x1D9E2F4B, 0xDCB230F3, -0x0D8652EC, 0x77C1E3D0, 0x2BB3166C, 0xA970B999, 0x119448FA, 0x47E96422, -0xA8FC8CC4, 0xA0F03F1A, 0x567D2CD8, 0x223390EF, 0x87494EC7, 0xD938D1C1, -0x8CCAA2FE, 0x98D40B36, 0xA6F581CF, 0xA57ADE28, 0xDAB78E26, 0x3FADBFA4, -0x2C3A9DE4, 0x5078920D, 0x6A5FCC9B, 0x547E4662, 0xF68D13C2, 0x90D8B8E8, -0x2E39F75E, 0x82C3AFF5, 0x9F5D80BE, 0x69D0937C, 0x6FD52DA9, 0xCF2512B3, -0xC8AC993B, 0x10187DA7, 0xE89C636E, 0xDB3BBB7B, 0xCD267809, 0x6E5918F4, -0xEC9AB701, 0x834F9AA8, 0xE6956E65, 0xAAFFE67E, 0x21BCCF08, 0xEF15E8E6, -0xBAE79BD9, 0x4A6F36CE, 0xEA9F09D4, 0x29B07CD6, 0x31A4B2AF, 0x2A3F2331, -0xC6A59430, 0x35A266C0, 0x744EBC37, 0xFC82CAA6, 0xE090D0B0, 0x33A7D815, -0xF104984A, 0x41ECDAF7, 0x7FCD500E, 0x1791F62F, 0x764DD68D, 0x43EFB04D, -0xCCAA4D54, 0xE49604DF, 0x9ED1B5E3, 0x4C6A881B, 0xC12C1FB8, 0x4665517F, -0x9D5EEA04, 0x018C355D, 0xFA877473, 0xFB0B412E, 0xB3671D5A, 0x92DBD252, -0xE9105633, 0x6DD64713, 0x9AD7618C, 0x37A10C7A, 0x59F8148E, 0xEB133C89, -0xCEA927EE, 0xB761C935, 0xE11CE5ED, 0x7A47B13C, 0x9CD2DF59, 0x55F2733F, -0x1814CE79, 0x73C737BF, 0x53F7CDEA, 0x5FFDAA5B, 0xDF3D6F14, 0x7844DB86, -0xCAAFF381, 0xB968C43E, 0x3824342C, 0xC2A3405F, 0x161DC372, 0xBCE2250C, -0x283C498B, 0xFF0D9541, 0x39A80171, 0x080CB3DE, 0xD8B4E49C, 0x6456C190, -0x7BCB8461, 0xD532B670, 0x486C5C74, 0xD0B85742 }; + 0x51F4A750, 0x7E416553, 0x1A17A4C3, 0x3A275E96, 0x3BAB6BCB, 0x1F9D45F1, + 0xACFA58AB, 0x4BE30393, 0x2030FA55, 0xAD766DF6, 0x88CC7691, 0xF5024C25, + 0x4FE5D7FC, 0xC52ACBD7, 0x26354480, 0xB562A38F, 0xDEB15A49, 0x25BA1B67, + 0x45EA0E98, 0x5DFEC0E1, 0xC32F7502, 0x814CF012, 0x8D4697A3, 0x6BD3F9C6, + 0x038F5FE7, 0x15929C95, 0xBF6D7AEB, 0x955259DA, 0xD4BE832D, 0x587421D3, + 0x49E06929, 0x8EC9C844, 0x75C2896A, 0xF48E7978, 0x99583E6B, 0x27B971DD, + 0xBEE14FB6, 0xF088AD17, 0xC920AC66, 0x7DCE3AB4, 0x63DF4A18, 0xE51A3182, + 0x97513360, 0x62537F45, 0xB16477E0, 0xBB6BAE84, 0xFE81A01C, 0xF9082B94, + 0x70486858, 0x8F45FD19, 0x94DE6C87, 0x527BF8B7, 0xAB73D323, 0x724B02E2, + 0xE31F8F57, 0x6655AB2A, 0xB2EB2807, 0x2FB5C203, 0x86C57B9A, 0xD33708A5, + 0x302887F2, 0x23BFA5B2, 0x02036ABA, 0xED16825C, 0x8ACF1C2B, 0xA779B492, + 0xF307F2F0, 0x4E69E2A1, 0x65DAF4CD, 0x0605BED5, 0xD134621F, 0xC4A6FE8A, + 0x342E539D, 0xA2F355A0, 0x058AE132, 0xA4F6EB75, 0x0B83EC39, 0x4060EFAA, + 0x5E719F06, 0xBD6E1051, 0x3E218AF9, 0x96DD063D, 0xDD3E05AE, 0x4DE6BD46, + 0x91548DB5, 0x71C45D05, 0x0406D46F, 0x605015FF, 0x1998FB24, 0xD6BDE997, + 0x894043CC, 0x67D99E77, 0xB0E842BD, 0x07898B88, 0xE7195B38, 0x79C8EEDB, + 0xA17C0A47, 0x7C420FE9, 0xF8841EC9, 0x00000000, 0x09808683, 0x322BED48, + 0x1E1170AC, 0x6C5A724E, 0xFD0EFFFB, 0x0F853856, 0x3DAED51E, 0x362D3927, + 0x0A0FD964, 0x685CA621, 0x9B5B54D1, 0x24362E3A, 0x0C0A67B1, 0x9357E70F, + 0xB4EE96D2, 0x1B9B919E, 0x80C0C54F, 0x61DC20A2, 0x5A774B69, 0x1C121A16, + 0xE293BA0A, 0xC0A02AE5, 0x3C22E043, 0x121B171D, 0x0E090D0B, 0xF28BC7AD, + 0x2DB6A8B9, 0x141EA9C8, 0x57F11985, 0xAF75074C, 0xEE99DDBB, 0xA37F60FD, + 0xF701269F, 0x5C72F5BC, 0x44663BC5, 0x5BFB7E34, 0x8B432976, 0xCB23C6DC, + 0xB6EDFC68, 0xB8E4F163, 0xD731DCCA, 0x42638510, 0x13972240, 0x84C61120, + 0x854A247D, 0xD2BB3DF8, 0xAEF93211, 0xC729A16D, 0x1D9E2F4B, 0xDCB230F3, + 0x0D8652EC, 0x77C1E3D0, 0x2BB3166C, 0xA970B999, 0x119448FA, 0x47E96422, + 0xA8FC8CC4, 0xA0F03F1A, 0x567D2CD8, 0x223390EF, 0x87494EC7, 0xD938D1C1, + 0x8CCAA2FE, 0x98D40B36, 0xA6F581CF, 0xA57ADE28, 0xDAB78E26, 0x3FADBFA4, + 0x2C3A9DE4, 0x5078920D, 0x6A5FCC9B, 0x547E4662, 0xF68D13C2, 0x90D8B8E8, + 0x2E39F75E, 0x82C3AFF5, 0x9F5D80BE, 0x69D0937C, 0x6FD52DA9, 0xCF2512B3, + 0xC8AC993B, 0x10187DA7, 0xE89C636E, 0xDB3BBB7B, 0xCD267809, 0x6E5918F4, + 0xEC9AB701, 0x834F9AA8, 0xE6956E65, 0xAAFFE67E, 0x21BCCF08, 0xEF15E8E6, + 0xBAE79BD9, 0x4A6F36CE, 0xEA9F09D4, 0x29B07CD6, 0x31A4B2AF, 0x2A3F2331, + 0xC6A59430, 0x35A266C0, 0x744EBC37, 0xFC82CAA6, 0xE090D0B0, 0x33A7D815, + 0xF104984A, 0x41ECDAF7, 0x7FCD500E, 0x1791F62F, 0x764DD68D, 0x43EFB04D, + 0xCCAA4D54, 0xE49604DF, 0x9ED1B5E3, 0x4C6A881B, 0xC12C1FB8, 0x4665517F, + 0x9D5EEA04, 0x018C355D, 0xFA877473, 0xFB0B412E, 0xB3671D5A, 0x92DBD252, + 0xE9105633, 0x6DD64713, 0x9AD7618C, 0x37A10C7A, 0x59F8148E, 0xEB133C89, + 0xCEA927EE, 0xB761C935, 0xE11CE5ED, 0x7A47B13C, 0x9CD2DF59, 0x55F2733F, + 0x1814CE79, 0x73C737BF, 0x53F7CDEA, 0x5FFDAA5B, 0xDF3D6F14, 0x7844DB86, + 0xCAAFF381, 0xB968C43E, 0x3824342C, 0xC2A3405F, 0x161DC372, 0xBCE2250C, + 0x283C498B, 0xFF0D9541, 0x39A80171, 0x080CB3DE, 0xD8B4E49C, 0x6456C190, + 0x7BCB8461, 0xD532B670, 0x486C5C74, 0xD0B85742 }; const u32bit AES::TD1[256] = { -0x5051F4A7, 0x537E4165, 0xC31A17A4, 0x963A275E, 0xCB3BAB6B, 0xF11F9D45, -0xABACFA58, 0x934BE303, 0x552030FA, 0xF6AD766D, 0x9188CC76, 0x25F5024C, -0xFC4FE5D7, 0xD7C52ACB, 0x80263544, 0x8FB562A3, 0x49DEB15A, 0x6725BA1B, -0x9845EA0E, 0xE15DFEC0, 0x02C32F75, 0x12814CF0, 0xA38D4697, 0xC66BD3F9, -0xE7038F5F, 0x9515929C, 0xEBBF6D7A, 0xDA955259, 0x2DD4BE83, 0xD3587421, -0x2949E069, 0x448EC9C8, 0x6A75C289, 0x78F48E79, 0x6B99583E, 0xDD27B971, -0xB6BEE14F, 0x17F088AD, 0x66C920AC, 0xB47DCE3A, 0x1863DF4A, 0x82E51A31, -0x60975133, 0x4562537F, 0xE0B16477, 0x84BB6BAE, 0x1CFE81A0, 0x94F9082B, -0x58704868, 0x198F45FD, 0x8794DE6C, 0xB7527BF8, 0x23AB73D3, 0xE2724B02, -0x57E31F8F, 0x2A6655AB, 0x07B2EB28, 0x032FB5C2, 0x9A86C57B, 0xA5D33708, -0xF2302887, 0xB223BFA5, 0xBA02036A, 0x5CED1682, 0x2B8ACF1C, 0x92A779B4, -0xF0F307F2, 0xA14E69E2, 0xCD65DAF4, 0xD50605BE, 0x1FD13462, 0x8AC4A6FE, -0x9D342E53, 0xA0A2F355, 0x32058AE1, 0x75A4F6EB, 0x390B83EC, 0xAA4060EF, -0x065E719F, 0x51BD6E10, 0xF93E218A, 0x3D96DD06, 0xAEDD3E05, 0x464DE6BD, -0xB591548D, 0x0571C45D, 0x6F0406D4, 0xFF605015, 0x241998FB, 0x97D6BDE9, -0xCC894043, 0x7767D99E, 0xBDB0E842, 0x8807898B, 0x38E7195B, 0xDB79C8EE, -0x47A17C0A, 0xE97C420F, 0xC9F8841E, 0x00000000, 0x83098086, 0x48322BED, -0xAC1E1170, 0x4E6C5A72, 0xFBFD0EFF, 0x560F8538, 0x1E3DAED5, 0x27362D39, -0x640A0FD9, 0x21685CA6, 0xD19B5B54, 0x3A24362E, 0xB10C0A67, 0x0F9357E7, -0xD2B4EE96, 0x9E1B9B91, 0x4F80C0C5, 0xA261DC20, 0x695A774B, 0x161C121A, -0x0AE293BA, 0xE5C0A02A, 0x433C22E0, 0x1D121B17, 0x0B0E090D, 0xADF28BC7, -0xB92DB6A8, 0xC8141EA9, 0x8557F119, 0x4CAF7507, 0xBBEE99DD, 0xFDA37F60, -0x9FF70126, 0xBC5C72F5, 0xC544663B, 0x345BFB7E, 0x768B4329, 0xDCCB23C6, -0x68B6EDFC, 0x63B8E4F1, 0xCAD731DC, 0x10426385, 0x40139722, 0x2084C611, -0x7D854A24, 0xF8D2BB3D, 0x11AEF932, 0x6DC729A1, 0x4B1D9E2F, 0xF3DCB230, -0xEC0D8652, 0xD077C1E3, 0x6C2BB316, 0x99A970B9, 0xFA119448, 0x2247E964, -0xC4A8FC8C, 0x1AA0F03F, 0xD8567D2C, 0xEF223390, 0xC787494E, 0xC1D938D1, -0xFE8CCAA2, 0x3698D40B, 0xCFA6F581, 0x28A57ADE, 0x26DAB78E, 0xA43FADBF, -0xE42C3A9D, 0x0D507892, 0x9B6A5FCC, 0x62547E46, 0xC2F68D13, 0xE890D8B8, -0x5E2E39F7, 0xF582C3AF, 0xBE9F5D80, 0x7C69D093, 0xA96FD52D, 0xB3CF2512, -0x3BC8AC99, 0xA710187D, 0x6EE89C63, 0x7BDB3BBB, 0x09CD2678, 0xF46E5918, -0x01EC9AB7, 0xA8834F9A, 0x65E6956E, 0x7EAAFFE6, 0x0821BCCF, 0xE6EF15E8, -0xD9BAE79B, 0xCE4A6F36, 0xD4EA9F09, 0xD629B07C, 0xAF31A4B2, 0x312A3F23, -0x30C6A594, 0xC035A266, 0x37744EBC, 0xA6FC82CA, 0xB0E090D0, 0x1533A7D8, -0x4AF10498, 0xF741ECDA, 0x0E7FCD50, 0x2F1791F6, 0x8D764DD6, 0x4D43EFB0, -0x54CCAA4D, 0xDFE49604, 0xE39ED1B5, 0x1B4C6A88, 0xB8C12C1F, 0x7F466551, -0x049D5EEA, 0x5D018C35, 0x73FA8774, 0x2EFB0B41, 0x5AB3671D, 0x5292DBD2, -0x33E91056, 0x136DD647, 0x8C9AD761, 0x7A37A10C, 0x8E59F814, 0x89EB133C, -0xEECEA927, 0x35B761C9, 0xEDE11CE5, 0x3C7A47B1, 0x599CD2DF, 0x3F55F273, -0x791814CE, 0xBF73C737, 0xEA53F7CD, 0x5B5FFDAA, 0x14DF3D6F, 0x867844DB, -0x81CAAFF3, 0x3EB968C4, 0x2C382434, 0x5FC2A340, 0x72161DC3, 0x0CBCE225, -0x8B283C49, 0x41FF0D95, 0x7139A801, 0xDE080CB3, 0x9CD8B4E4, 0x906456C1, -0x617BCB84, 0x70D532B6, 0x74486C5C, 0x42D0B857 }; + 0x5051F4A7, 0x537E4165, 0xC31A17A4, 0x963A275E, 0xCB3BAB6B, 0xF11F9D45, + 0xABACFA58, 0x934BE303, 0x552030FA, 0xF6AD766D, 0x9188CC76, 0x25F5024C, + 0xFC4FE5D7, 0xD7C52ACB, 0x80263544, 0x8FB562A3, 0x49DEB15A, 0x6725BA1B, + 0x9845EA0E, 0xE15DFEC0, 0x02C32F75, 0x12814CF0, 0xA38D4697, 0xC66BD3F9, + 0xE7038F5F, 0x9515929C, 0xEBBF6D7A, 0xDA955259, 0x2DD4BE83, 0xD3587421, + 0x2949E069, 0x448EC9C8, 0x6A75C289, 0x78F48E79, 0x6B99583E, 0xDD27B971, + 0xB6BEE14F, 0x17F088AD, 0x66C920AC, 0xB47DCE3A, 0x1863DF4A, 0x82E51A31, + 0x60975133, 0x4562537F, 0xE0B16477, 0x84BB6BAE, 0x1CFE81A0, 0x94F9082B, + 0x58704868, 0x198F45FD, 0x8794DE6C, 0xB7527BF8, 0x23AB73D3, 0xE2724B02, + 0x57E31F8F, 0x2A6655AB, 0x07B2EB28, 0x032FB5C2, 0x9A86C57B, 0xA5D33708, + 0xF2302887, 0xB223BFA5, 0xBA02036A, 0x5CED1682, 0x2B8ACF1C, 0x92A779B4, + 0xF0F307F2, 0xA14E69E2, 0xCD65DAF4, 0xD50605BE, 0x1FD13462, 0x8AC4A6FE, + 0x9D342E53, 0xA0A2F355, 0x32058AE1, 0x75A4F6EB, 0x390B83EC, 0xAA4060EF, + 0x065E719F, 0x51BD6E10, 0xF93E218A, 0x3D96DD06, 0xAEDD3E05, 0x464DE6BD, + 0xB591548D, 0x0571C45D, 0x6F0406D4, 0xFF605015, 0x241998FB, 0x97D6BDE9, + 0xCC894043, 0x7767D99E, 0xBDB0E842, 0x8807898B, 0x38E7195B, 0xDB79C8EE, + 0x47A17C0A, 0xE97C420F, 0xC9F8841E, 0x00000000, 0x83098086, 0x48322BED, + 0xAC1E1170, 0x4E6C5A72, 0xFBFD0EFF, 0x560F8538, 0x1E3DAED5, 0x27362D39, + 0x640A0FD9, 0x21685CA6, 0xD19B5B54, 0x3A24362E, 0xB10C0A67, 0x0F9357E7, + 0xD2B4EE96, 0x9E1B9B91, 0x4F80C0C5, 0xA261DC20, 0x695A774B, 0x161C121A, + 0x0AE293BA, 0xE5C0A02A, 0x433C22E0, 0x1D121B17, 0x0B0E090D, 0xADF28BC7, + 0xB92DB6A8, 0xC8141EA9, 0x8557F119, 0x4CAF7507, 0xBBEE99DD, 0xFDA37F60, + 0x9FF70126, 0xBC5C72F5, 0xC544663B, 0x345BFB7E, 0x768B4329, 0xDCCB23C6, + 0x68B6EDFC, 0x63B8E4F1, 0xCAD731DC, 0x10426385, 0x40139722, 0x2084C611, + 0x7D854A24, 0xF8D2BB3D, 0x11AEF932, 0x6DC729A1, 0x4B1D9E2F, 0xF3DCB230, + 0xEC0D8652, 0xD077C1E3, 0x6C2BB316, 0x99A970B9, 0xFA119448, 0x2247E964, + 0xC4A8FC8C, 0x1AA0F03F, 0xD8567D2C, 0xEF223390, 0xC787494E, 0xC1D938D1, + 0xFE8CCAA2, 0x3698D40B, 0xCFA6F581, 0x28A57ADE, 0x26DAB78E, 0xA43FADBF, + 0xE42C3A9D, 0x0D507892, 0x9B6A5FCC, 0x62547E46, 0xC2F68D13, 0xE890D8B8, + 0x5E2E39F7, 0xF582C3AF, 0xBE9F5D80, 0x7C69D093, 0xA96FD52D, 0xB3CF2512, + 0x3BC8AC99, 0xA710187D, 0x6EE89C63, 0x7BDB3BBB, 0x09CD2678, 0xF46E5918, + 0x01EC9AB7, 0xA8834F9A, 0x65E6956E, 0x7EAAFFE6, 0x0821BCCF, 0xE6EF15E8, + 0xD9BAE79B, 0xCE4A6F36, 0xD4EA9F09, 0xD629B07C, 0xAF31A4B2, 0x312A3F23, + 0x30C6A594, 0xC035A266, 0x37744EBC, 0xA6FC82CA, 0xB0E090D0, 0x1533A7D8, + 0x4AF10498, 0xF741ECDA, 0x0E7FCD50, 0x2F1791F6, 0x8D764DD6, 0x4D43EFB0, + 0x54CCAA4D, 0xDFE49604, 0xE39ED1B5, 0x1B4C6A88, 0xB8C12C1F, 0x7F466551, + 0x049D5EEA, 0x5D018C35, 0x73FA8774, 0x2EFB0B41, 0x5AB3671D, 0x5292DBD2, + 0x33E91056, 0x136DD647, 0x8C9AD761, 0x7A37A10C, 0x8E59F814, 0x89EB133C, + 0xEECEA927, 0x35B761C9, 0xEDE11CE5, 0x3C7A47B1, 0x599CD2DF, 0x3F55F273, + 0x791814CE, 0xBF73C737, 0xEA53F7CD, 0x5B5FFDAA, 0x14DF3D6F, 0x867844DB, + 0x81CAAFF3, 0x3EB968C4, 0x2C382434, 0x5FC2A340, 0x72161DC3, 0x0CBCE225, + 0x8B283C49, 0x41FF0D95, 0x7139A801, 0xDE080CB3, 0x9CD8B4E4, 0x906456C1, + 0x617BCB84, 0x70D532B6, 0x74486C5C, 0x42D0B857 }; const u32bit AES::TD2[256] = { -0xA75051F4, 0x65537E41, 0xA4C31A17, 0x5E963A27, 0x6BCB3BAB, 0x45F11F9D, -0x58ABACFA, 0x03934BE3, 0xFA552030, 0x6DF6AD76, 0x769188CC, 0x4C25F502, -0xD7FC4FE5, 0xCBD7C52A, 0x44802635, 0xA38FB562, 0x5A49DEB1, 0x1B6725BA, -0x0E9845EA, 0xC0E15DFE, 0x7502C32F, 0xF012814C, 0x97A38D46, 0xF9C66BD3, -0x5FE7038F, 0x9C951592, 0x7AEBBF6D, 0x59DA9552, 0x832DD4BE, 0x21D35874, -0x692949E0, 0xC8448EC9, 0x896A75C2, 0x7978F48E, 0x3E6B9958, 0x71DD27B9, -0x4FB6BEE1, 0xAD17F088, 0xAC66C920, 0x3AB47DCE, 0x4A1863DF, 0x3182E51A, -0x33609751, 0x7F456253, 0x77E0B164, 0xAE84BB6B, 0xA01CFE81, 0x2B94F908, -0x68587048, 0xFD198F45, 0x6C8794DE, 0xF8B7527B, 0xD323AB73, 0x02E2724B, -0x8F57E31F, 0xAB2A6655, 0x2807B2EB, 0xC2032FB5, 0x7B9A86C5, 0x08A5D337, -0x87F23028, 0xA5B223BF, 0x6ABA0203, 0x825CED16, 0x1C2B8ACF, 0xB492A779, -0xF2F0F307, 0xE2A14E69, 0xF4CD65DA, 0xBED50605, 0x621FD134, 0xFE8AC4A6, -0x539D342E, 0x55A0A2F3, 0xE132058A, 0xEB75A4F6, 0xEC390B83, 0xEFAA4060, -0x9F065E71, 0x1051BD6E, 0x8AF93E21, 0x063D96DD, 0x05AEDD3E, 0xBD464DE6, -0x8DB59154, 0x5D0571C4, 0xD46F0406, 0x15FF6050, 0xFB241998, 0xE997D6BD, -0x43CC8940, 0x9E7767D9, 0x42BDB0E8, 0x8B880789, 0x5B38E719, 0xEEDB79C8, -0x0A47A17C, 0x0FE97C42, 0x1EC9F884, 0x00000000, 0x86830980, 0xED48322B, -0x70AC1E11, 0x724E6C5A, 0xFFFBFD0E, 0x38560F85, 0xD51E3DAE, 0x3927362D, -0xD9640A0F, 0xA621685C, 0x54D19B5B, 0x2E3A2436, 0x67B10C0A, 0xE70F9357, -0x96D2B4EE, 0x919E1B9B, 0xC54F80C0, 0x20A261DC, 0x4B695A77, 0x1A161C12, -0xBA0AE293, 0x2AE5C0A0, 0xE0433C22, 0x171D121B, 0x0D0B0E09, 0xC7ADF28B, -0xA8B92DB6, 0xA9C8141E, 0x198557F1, 0x074CAF75, 0xDDBBEE99, 0x60FDA37F, -0x269FF701, 0xF5BC5C72, 0x3BC54466, 0x7E345BFB, 0x29768B43, 0xC6DCCB23, -0xFC68B6ED, 0xF163B8E4, 0xDCCAD731, 0x85104263, 0x22401397, 0x112084C6, -0x247D854A, 0x3DF8D2BB, 0x3211AEF9, 0xA16DC729, 0x2F4B1D9E, 0x30F3DCB2, -0x52EC0D86, 0xE3D077C1, 0x166C2BB3, 0xB999A970, 0x48FA1194, 0x642247E9, -0x8CC4A8FC, 0x3F1AA0F0, 0x2CD8567D, 0x90EF2233, 0x4EC78749, 0xD1C1D938, -0xA2FE8CCA, 0x0B3698D4, 0x81CFA6F5, 0xDE28A57A, 0x8E26DAB7, 0xBFA43FAD, -0x9DE42C3A, 0x920D5078, 0xCC9B6A5F, 0x4662547E, 0x13C2F68D, 0xB8E890D8, -0xF75E2E39, 0xAFF582C3, 0x80BE9F5D, 0x937C69D0, 0x2DA96FD5, 0x12B3CF25, -0x993BC8AC, 0x7DA71018, 0x636EE89C, 0xBB7BDB3B, 0x7809CD26, 0x18F46E59, -0xB701EC9A, 0x9AA8834F, 0x6E65E695, 0xE67EAAFF, 0xCF0821BC, 0xE8E6EF15, -0x9BD9BAE7, 0x36CE4A6F, 0x09D4EA9F, 0x7CD629B0, 0xB2AF31A4, 0x23312A3F, -0x9430C6A5, 0x66C035A2, 0xBC37744E, 0xCAA6FC82, 0xD0B0E090, 0xD81533A7, -0x984AF104, 0xDAF741EC, 0x500E7FCD, 0xF62F1791, 0xD68D764D, 0xB04D43EF, -0x4D54CCAA, 0x04DFE496, 0xB5E39ED1, 0x881B4C6A, 0x1FB8C12C, 0x517F4665, -0xEA049D5E, 0x355D018C, 0x7473FA87, 0x412EFB0B, 0x1D5AB367, 0xD25292DB, -0x5633E910, 0x47136DD6, 0x618C9AD7, 0x0C7A37A1, 0x148E59F8, 0x3C89EB13, -0x27EECEA9, 0xC935B761, 0xE5EDE11C, 0xB13C7A47, 0xDF599CD2, 0x733F55F2, -0xCE791814, 0x37BF73C7, 0xCDEA53F7, 0xAA5B5FFD, 0x6F14DF3D, 0xDB867844, -0xF381CAAF, 0xC43EB968, 0x342C3824, 0x405FC2A3, 0xC372161D, 0x250CBCE2, -0x498B283C, 0x9541FF0D, 0x017139A8, 0xB3DE080C, 0xE49CD8B4, 0xC1906456, -0x84617BCB, 0xB670D532, 0x5C74486C, 0x5742D0B8 }; + 0xA75051F4, 0x65537E41, 0xA4C31A17, 0x5E963A27, 0x6BCB3BAB, 0x45F11F9D, + 0x58ABACFA, 0x03934BE3, 0xFA552030, 0x6DF6AD76, 0x769188CC, 0x4C25F502, + 0xD7FC4FE5, 0xCBD7C52A, 0x44802635, 0xA38FB562, 0x5A49DEB1, 0x1B6725BA, + 0x0E9845EA, 0xC0E15DFE, 0x7502C32F, 0xF012814C, 0x97A38D46, 0xF9C66BD3, + 0x5FE7038F, 0x9C951592, 0x7AEBBF6D, 0x59DA9552, 0x832DD4BE, 0x21D35874, + 0x692949E0, 0xC8448EC9, 0x896A75C2, 0x7978F48E, 0x3E6B9958, 0x71DD27B9, + 0x4FB6BEE1, 0xAD17F088, 0xAC66C920, 0x3AB47DCE, 0x4A1863DF, 0x3182E51A, + 0x33609751, 0x7F456253, 0x77E0B164, 0xAE84BB6B, 0xA01CFE81, 0x2B94F908, + 0x68587048, 0xFD198F45, 0x6C8794DE, 0xF8B7527B, 0xD323AB73, 0x02E2724B, + 0x8F57E31F, 0xAB2A6655, 0x2807B2EB, 0xC2032FB5, 0x7B9A86C5, 0x08A5D337, + 0x87F23028, 0xA5B223BF, 0x6ABA0203, 0x825CED16, 0x1C2B8ACF, 0xB492A779, + 0xF2F0F307, 0xE2A14E69, 0xF4CD65DA, 0xBED50605, 0x621FD134, 0xFE8AC4A6, + 0x539D342E, 0x55A0A2F3, 0xE132058A, 0xEB75A4F6, 0xEC390B83, 0xEFAA4060, + 0x9F065E71, 0x1051BD6E, 0x8AF93E21, 0x063D96DD, 0x05AEDD3E, 0xBD464DE6, + 0x8DB59154, 0x5D0571C4, 0xD46F0406, 0x15FF6050, 0xFB241998, 0xE997D6BD, + 0x43CC8940, 0x9E7767D9, 0x42BDB0E8, 0x8B880789, 0x5B38E719, 0xEEDB79C8, + 0x0A47A17C, 0x0FE97C42, 0x1EC9F884, 0x00000000, 0x86830980, 0xED48322B, + 0x70AC1E11, 0x724E6C5A, 0xFFFBFD0E, 0x38560F85, 0xD51E3DAE, 0x3927362D, + 0xD9640A0F, 0xA621685C, 0x54D19B5B, 0x2E3A2436, 0x67B10C0A, 0xE70F9357, + 0x96D2B4EE, 0x919E1B9B, 0xC54F80C0, 0x20A261DC, 0x4B695A77, 0x1A161C12, + 0xBA0AE293, 0x2AE5C0A0, 0xE0433C22, 0x171D121B, 0x0D0B0E09, 0xC7ADF28B, + 0xA8B92DB6, 0xA9C8141E, 0x198557F1, 0x074CAF75, 0xDDBBEE99, 0x60FDA37F, + 0x269FF701, 0xF5BC5C72, 0x3BC54466, 0x7E345BFB, 0x29768B43, 0xC6DCCB23, + 0xFC68B6ED, 0xF163B8E4, 0xDCCAD731, 0x85104263, 0x22401397, 0x112084C6, + 0x247D854A, 0x3DF8D2BB, 0x3211AEF9, 0xA16DC729, 0x2F4B1D9E, 0x30F3DCB2, + 0x52EC0D86, 0xE3D077C1, 0x166C2BB3, 0xB999A970, 0x48FA1194, 0x642247E9, + 0x8CC4A8FC, 0x3F1AA0F0, 0x2CD8567D, 0x90EF2233, 0x4EC78749, 0xD1C1D938, + 0xA2FE8CCA, 0x0B3698D4, 0x81CFA6F5, 0xDE28A57A, 0x8E26DAB7, 0xBFA43FAD, + 0x9DE42C3A, 0x920D5078, 0xCC9B6A5F, 0x4662547E, 0x13C2F68D, 0xB8E890D8, + 0xF75E2E39, 0xAFF582C3, 0x80BE9F5D, 0x937C69D0, 0x2DA96FD5, 0x12B3CF25, + 0x993BC8AC, 0x7DA71018, 0x636EE89C, 0xBB7BDB3B, 0x7809CD26, 0x18F46E59, + 0xB701EC9A, 0x9AA8834F, 0x6E65E695, 0xE67EAAFF, 0xCF0821BC, 0xE8E6EF15, + 0x9BD9BAE7, 0x36CE4A6F, 0x09D4EA9F, 0x7CD629B0, 0xB2AF31A4, 0x23312A3F, + 0x9430C6A5, 0x66C035A2, 0xBC37744E, 0xCAA6FC82, 0xD0B0E090, 0xD81533A7, + 0x984AF104, 0xDAF741EC, 0x500E7FCD, 0xF62F1791, 0xD68D764D, 0xB04D43EF, + 0x4D54CCAA, 0x04DFE496, 0xB5E39ED1, 0x881B4C6A, 0x1FB8C12C, 0x517F4665, + 0xEA049D5E, 0x355D018C, 0x7473FA87, 0x412EFB0B, 0x1D5AB367, 0xD25292DB, + 0x5633E910, 0x47136DD6, 0x618C9AD7, 0x0C7A37A1, 0x148E59F8, 0x3C89EB13, + 0x27EECEA9, 0xC935B761, 0xE5EDE11C, 0xB13C7A47, 0xDF599CD2, 0x733F55F2, + 0xCE791814, 0x37BF73C7, 0xCDEA53F7, 0xAA5B5FFD, 0x6F14DF3D, 0xDB867844, + 0xF381CAAF, 0xC43EB968, 0x342C3824, 0x405FC2A3, 0xC372161D, 0x250CBCE2, + 0x498B283C, 0x9541FF0D, 0x017139A8, 0xB3DE080C, 0xE49CD8B4, 0xC1906456, + 0x84617BCB, 0xB670D532, 0x5C74486C, 0x5742D0B8 }; const u32bit AES::TD3[256] = { -0xF4A75051, 0x4165537E, 0x17A4C31A, 0x275E963A, 0xAB6BCB3B, 0x9D45F11F, -0xFA58ABAC, 0xE303934B, 0x30FA5520, 0x766DF6AD, 0xCC769188, 0x024C25F5, -0xE5D7FC4F, 0x2ACBD7C5, 0x35448026, 0x62A38FB5, 0xB15A49DE, 0xBA1B6725, -0xEA0E9845, 0xFEC0E15D, 0x2F7502C3, 0x4CF01281, 0x4697A38D, 0xD3F9C66B, -0x8F5FE703, 0x929C9515, 0x6D7AEBBF, 0x5259DA95, 0xBE832DD4, 0x7421D358, -0xE0692949, 0xC9C8448E, 0xC2896A75, 0x8E7978F4, 0x583E6B99, 0xB971DD27, -0xE14FB6BE, 0x88AD17F0, 0x20AC66C9, 0xCE3AB47D, 0xDF4A1863, 0x1A3182E5, -0x51336097, 0x537F4562, 0x6477E0B1, 0x6BAE84BB, 0x81A01CFE, 0x082B94F9, -0x48685870, 0x45FD198F, 0xDE6C8794, 0x7BF8B752, 0x73D323AB, 0x4B02E272, -0x1F8F57E3, 0x55AB2A66, 0xEB2807B2, 0xB5C2032F, 0xC57B9A86, 0x3708A5D3, -0x2887F230, 0xBFA5B223, 0x036ABA02, 0x16825CED, 0xCF1C2B8A, 0x79B492A7, -0x07F2F0F3, 0x69E2A14E, 0xDAF4CD65, 0x05BED506, 0x34621FD1, 0xA6FE8AC4, -0x2E539D34, 0xF355A0A2, 0x8AE13205, 0xF6EB75A4, 0x83EC390B, 0x60EFAA40, -0x719F065E, 0x6E1051BD, 0x218AF93E, 0xDD063D96, 0x3E05AEDD, 0xE6BD464D, -0x548DB591, 0xC45D0571, 0x06D46F04, 0x5015FF60, 0x98FB2419, 0xBDE997D6, -0x4043CC89, 0xD99E7767, 0xE842BDB0, 0x898B8807, 0x195B38E7, 0xC8EEDB79, -0x7C0A47A1, 0x420FE97C, 0x841EC9F8, 0x00000000, 0x80868309, 0x2BED4832, -0x1170AC1E, 0x5A724E6C, 0x0EFFFBFD, 0x8538560F, 0xAED51E3D, 0x2D392736, -0x0FD9640A, 0x5CA62168, 0x5B54D19B, 0x362E3A24, 0x0A67B10C, 0x57E70F93, -0xEE96D2B4, 0x9B919E1B, 0xC0C54F80, 0xDC20A261, 0x774B695A, 0x121A161C, -0x93BA0AE2, 0xA02AE5C0, 0x22E0433C, 0x1B171D12, 0x090D0B0E, 0x8BC7ADF2, -0xB6A8B92D, 0x1EA9C814, 0xF1198557, 0x75074CAF, 0x99DDBBEE, 0x7F60FDA3, -0x01269FF7, 0x72F5BC5C, 0x663BC544, 0xFB7E345B, 0x4329768B, 0x23C6DCCB, -0xEDFC68B6, 0xE4F163B8, 0x31DCCAD7, 0x63851042, 0x97224013, 0xC6112084, -0x4A247D85, 0xBB3DF8D2, 0xF93211AE, 0x29A16DC7, 0x9E2F4B1D, 0xB230F3DC, -0x8652EC0D, 0xC1E3D077, 0xB3166C2B, 0x70B999A9, 0x9448FA11, 0xE9642247, -0xFC8CC4A8, 0xF03F1AA0, 0x7D2CD856, 0x3390EF22, 0x494EC787, 0x38D1C1D9, -0xCAA2FE8C, 0xD40B3698, 0xF581CFA6, 0x7ADE28A5, 0xB78E26DA, 0xADBFA43F, -0x3A9DE42C, 0x78920D50, 0x5FCC9B6A, 0x7E466254, 0x8D13C2F6, 0xD8B8E890, -0x39F75E2E, 0xC3AFF582, 0x5D80BE9F, 0xD0937C69, 0xD52DA96F, 0x2512B3CF, -0xAC993BC8, 0x187DA710, 0x9C636EE8, 0x3BBB7BDB, 0x267809CD, 0x5918F46E, -0x9AB701EC, 0x4F9AA883, 0x956E65E6, 0xFFE67EAA, 0xBCCF0821, 0x15E8E6EF, -0xE79BD9BA, 0x6F36CE4A, 0x9F09D4EA, 0xB07CD629, 0xA4B2AF31, 0x3F23312A, -0xA59430C6, 0xA266C035, 0x4EBC3774, 0x82CAA6FC, 0x90D0B0E0, 0xA7D81533, -0x04984AF1, 0xECDAF741, 0xCD500E7F, 0x91F62F17, 0x4DD68D76, 0xEFB04D43, -0xAA4D54CC, 0x9604DFE4, 0xD1B5E39E, 0x6A881B4C, 0x2C1FB8C1, 0x65517F46, -0x5EEA049D, 0x8C355D01, 0x877473FA, 0x0B412EFB, 0x671D5AB3, 0xDBD25292, -0x105633E9, 0xD647136D, 0xD7618C9A, 0xA10C7A37, 0xF8148E59, 0x133C89EB, -0xA927EECE, 0x61C935B7, 0x1CE5EDE1, 0x47B13C7A, 0xD2DF599C, 0xF2733F55, -0x14CE7918, 0xC737BF73, 0xF7CDEA53, 0xFDAA5B5F, 0x3D6F14DF, 0x44DB8678, -0xAFF381CA, 0x68C43EB9, 0x24342C38, 0xA3405FC2, 0x1DC37216, 0xE2250CBC, -0x3C498B28, 0x0D9541FF, 0xA8017139, 0x0CB3DE08, 0xB4E49CD8, 0x56C19064, -0xCB84617B, 0x32B670D5, 0x6C5C7448, 0xB85742D0 }; + 0xF4A75051, 0x4165537E, 0x17A4C31A, 0x275E963A, 0xAB6BCB3B, 0x9D45F11F, + 0xFA58ABAC, 0xE303934B, 0x30FA5520, 0x766DF6AD, 0xCC769188, 0x024C25F5, + 0xE5D7FC4F, 0x2ACBD7C5, 0x35448026, 0x62A38FB5, 0xB15A49DE, 0xBA1B6725, + 0xEA0E9845, 0xFEC0E15D, 0x2F7502C3, 0x4CF01281, 0x4697A38D, 0xD3F9C66B, + 0x8F5FE703, 0x929C9515, 0x6D7AEBBF, 0x5259DA95, 0xBE832DD4, 0x7421D358, + 0xE0692949, 0xC9C8448E, 0xC2896A75, 0x8E7978F4, 0x583E6B99, 0xB971DD27, + 0xE14FB6BE, 0x88AD17F0, 0x20AC66C9, 0xCE3AB47D, 0xDF4A1863, 0x1A3182E5, + 0x51336097, 0x537F4562, 0x6477E0B1, 0x6BAE84BB, 0x81A01CFE, 0x082B94F9, + 0x48685870, 0x45FD198F, 0xDE6C8794, 0x7BF8B752, 0x73D323AB, 0x4B02E272, + 0x1F8F57E3, 0x55AB2A66, 0xEB2807B2, 0xB5C2032F, 0xC57B9A86, 0x3708A5D3, + 0x2887F230, 0xBFA5B223, 0x036ABA02, 0x16825CED, 0xCF1C2B8A, 0x79B492A7, + 0x07F2F0F3, 0x69E2A14E, 0xDAF4CD65, 0x05BED506, 0x34621FD1, 0xA6FE8AC4, + 0x2E539D34, 0xF355A0A2, 0x8AE13205, 0xF6EB75A4, 0x83EC390B, 0x60EFAA40, + 0x719F065E, 0x6E1051BD, 0x218AF93E, 0xDD063D96, 0x3E05AEDD, 0xE6BD464D, + 0x548DB591, 0xC45D0571, 0x06D46F04, 0x5015FF60, 0x98FB2419, 0xBDE997D6, + 0x4043CC89, 0xD99E7767, 0xE842BDB0, 0x898B8807, 0x195B38E7, 0xC8EEDB79, + 0x7C0A47A1, 0x420FE97C, 0x841EC9F8, 0x00000000, 0x80868309, 0x2BED4832, + 0x1170AC1E, 0x5A724E6C, 0x0EFFFBFD, 0x8538560F, 0xAED51E3D, 0x2D392736, + 0x0FD9640A, 0x5CA62168, 0x5B54D19B, 0x362E3A24, 0x0A67B10C, 0x57E70F93, + 0xEE96D2B4, 0x9B919E1B, 0xC0C54F80, 0xDC20A261, 0x774B695A, 0x121A161C, + 0x93BA0AE2, 0xA02AE5C0, 0x22E0433C, 0x1B171D12, 0x090D0B0E, 0x8BC7ADF2, + 0xB6A8B92D, 0x1EA9C814, 0xF1198557, 0x75074CAF, 0x99DDBBEE, 0x7F60FDA3, + 0x01269FF7, 0x72F5BC5C, 0x663BC544, 0xFB7E345B, 0x4329768B, 0x23C6DCCB, + 0xEDFC68B6, 0xE4F163B8, 0x31DCCAD7, 0x63851042, 0x97224013, 0xC6112084, + 0x4A247D85, 0xBB3DF8D2, 0xF93211AE, 0x29A16DC7, 0x9E2F4B1D, 0xB230F3DC, + 0x8652EC0D, 0xC1E3D077, 0xB3166C2B, 0x70B999A9, 0x9448FA11, 0xE9642247, + 0xFC8CC4A8, 0xF03F1AA0, 0x7D2CD856, 0x3390EF22, 0x494EC787, 0x38D1C1D9, + 0xCAA2FE8C, 0xD40B3698, 0xF581CFA6, 0x7ADE28A5, 0xB78E26DA, 0xADBFA43F, + 0x3A9DE42C, 0x78920D50, 0x5FCC9B6A, 0x7E466254, 0x8D13C2F6, 0xD8B8E890, + 0x39F75E2E, 0xC3AFF582, 0x5D80BE9F, 0xD0937C69, 0xD52DA96F, 0x2512B3CF, + 0xAC993BC8, 0x187DA710, 0x9C636EE8, 0x3BBB7BDB, 0x267809CD, 0x5918F46E, + 0x9AB701EC, 0x4F9AA883, 0x956E65E6, 0xFFE67EAA, 0xBCCF0821, 0x15E8E6EF, + 0xE79BD9BA, 0x6F36CE4A, 0x9F09D4EA, 0xB07CD629, 0xA4B2AF31, 0x3F23312A, + 0xA59430C6, 0xA266C035, 0x4EBC3774, 0x82CAA6FC, 0x90D0B0E0, 0xA7D81533, + 0x04984AF1, 0xECDAF741, 0xCD500E7F, 0x91F62F17, 0x4DD68D76, 0xEFB04D43, + 0xAA4D54CC, 0x9604DFE4, 0xD1B5E39E, 0x6A881B4C, 0x2C1FB8C1, 0x65517F46, + 0x5EEA049D, 0x8C355D01, 0x877473FA, 0x0B412EFB, 0x671D5AB3, 0xDBD25292, + 0x105633E9, 0xD647136D, 0xD7618C9A, 0xA10C7A37, 0xF8148E59, 0x133C89EB, + 0xA927EECE, 0x61C935B7, 0x1CE5EDE1, 0x47B13C7A, 0xD2DF599C, 0xF2733F55, + 0x14CE7918, 0xC737BF73, 0xF7CDEA53, 0xFDAA5B5F, 0x3D6F14DF, 0x44DB8678, + 0xAFF381CA, 0x68C43EB9, 0x24342C38, 0xA3405FC2, 0x1DC37216, 0xE2250CBC, + 0x3C498B28, 0x0D9541FF, 0xA8017139, 0x0CB3DE08, 0xB4E49CD8, 0x56C19064, + 0xCB84617B, 0x32B670D5, 0x6C5C7448, 0xB85742D0 }; } ======================================================================== --- botan/arc4.cpp 475ce257a2f738c10bf6b5858c6590d0c6618cb9 +++ botan/arc4.cpp 3eedab177bb0c069470419686212a1fd6f1d78ee @@ -8,7 +8,7 @@ namespace Botan { /************************************************* -* Combine Cipher Stream with Message * +* Combine cipher stream with message * *************************************************/ void ARC4::cipher(const byte in[], byte out[], u32bit length) { @@ -25,7 +25,7 @@ } /************************************************* -* Generate ARC4 Cipher Stream * +* Generate cipher stream * *************************************************/ void ARC4::generate() { ======================================================================== --- botan/authors.txt 10798aaadca24ea4ab922825e9b796c5afde6062 +++ botan/authors.txt 1fd525da451a04e2930f1e712c29064a8ad031fb @@ -1,8 +1,8 @@ The main author of Botan is: Name: Jack Lloyd Email: address@hidden -PGP Key Fingerprint: 2DD2 95F9 C7E3 A15E AF29 80E1 D6A9 A5B9 4DCD F398 +PGP Key Fingerprint: 3F69 2E64 6D92 3BBE E7AE 9258 5C0F 96E8 4EC1 6D6B Also see doc/thanks.txt for a list of people who have contributed code, bug reports, ideas, and/or useful information. ======================================================================== --- botan/des.cpp 8b763d83ca4d1febab40f06292fdbfdff2ba8142 +++ botan/des.cpp 4d1e86c4b9c39e8b6bbbe48a76b1ebca9ff6d6b9 @@ -12,18 +12,17 @@ *************************************************/ void DES::enc(const byte in[], byte out[]) const { - u32bit left = make_u32bit(in[0], in[1], in[2], in[3]), - right = make_u32bit(in[4], in[5], in[6], in[7]); - IP(left, right); round(left, right, 0); round(right, left, 1); - round(left, right, 2); round(right, left, 3); round(left, right, 4); - round(right, left, 5); round(left, right, 6); round(right, left, 7); - round(left, right, 8); round(right, left, 9); round(left, right,10); - round(right, left,11); round(left, right,12); round(right, left,13); - round(left, right,14); round(right, left,15); FP(left, right); - out[0] = get_byte(0, right); out[1] = get_byte(1, right); - out[2] = get_byte(2, right); out[3] = get_byte(3, right); - out[4] = get_byte(0, left); out[5] = get_byte(1, left); - out[6] = get_byte(2, left); out[7] = get_byte(3, left); + u32bit L = make_u32bit(in[0], in[1], in[2], in[3]), + R = make_u32bit(in[4], in[5], in[6], in[7]); + + IP(L, R); + raw_encrypt(L, R); + FP(L, R); + + out[0] = get_byte(0, R); out[1] = get_byte(1, R); + out[2] = get_byte(2, R); out[3] = get_byte(3, R); + out[4] = get_byte(0, L); out[5] = get_byte(1, L); + out[6] = get_byte(2, L); out[7] = get_byte(3, L); } /************************************************* @@ -31,31 +30,17 @@ *************************************************/ void DES::dec(const byte in[], byte out[]) const { - u32bit left = make_u32bit(in[0], in[1], in[2], in[3]), - right = make_u32bit(in[4], in[5], in[6], in[7]); - IP(left, right); round(left, right,15); round(right, left,14); - round(left, right,13); round(right, left,12); round(left, right,11); - round(right, left,10); round(left, right, 9); round(right, left, 8); - round(left, right, 7); round(right, left, 6); round(left, right, 5); - round(right, left, 4); round(left, right, 3); round(right, left, 2); - round(left, right, 1); round(right, left, 0); FP(left, right); - out[0] = get_byte(0, right); out[1] = get_byte(1, right); - out[2] = get_byte(2, right); out[3] = get_byte(3, right); - out[4] = get_byte(0, left); out[5] = get_byte(1, left); - out[6] = get_byte(2, left); out[7] = get_byte(3, left); - } + u32bit L = make_u32bit(in[0], in[1], in[2], in[3]), + R = make_u32bit(in[4], in[5], in[6], in[7]); -/************************************************* -* DES Round * -*************************************************/ -void DES::round(u32bit& left, u32bit right, u32bit n) const - { - u32bit T1 = rotate_right(right, 4) ^ round_key[2*n], - T2 = right ^ round_key[2*n + 1]; - left ^= SPBOX1[get_byte(0, T1)] ^ SPBOX2[get_byte(0, T2)] ^ - SPBOX3[get_byte(1, T1)] ^ SPBOX4[get_byte(1, T2)] ^ - SPBOX5[get_byte(2, T1)] ^ SPBOX6[get_byte(2, T2)] ^ - SPBOX7[get_byte(3, T1)] ^ SPBOX8[get_byte(3, T2)]; + IP(L, R); + raw_decrypt(L, R); + FP(L, R); + + out[0] = get_byte(0, R); out[1] = get_byte(1, R); + out[2] = get_byte(2, R); out[3] = get_byte(3, R); + out[4] = get_byte(0, L); out[5] = get_byte(1, L); + out[6] = get_byte(2, L); out[7] = get_byte(3, L); } /************************************************* @@ -87,27 +72,55 @@ /************************************************* * DES Raw Encryption * *************************************************/ -void DES::raw_encrypt(u32bit& left, u32bit& right) const +void DES::raw_encrypt(u32bit& L, u32bit& R) const { - round(left, right, 0); round(right, left, 1); round(left, right, 2); - round(right, left, 3); round(left, right, 4); round(right, left, 5); - round(left, right, 6); round(right, left, 7); round(left, right, 8); - round(right, left, 9); round(left, right,10); round(right, left,11); - round(left, right,12); round(right, left,13); round(left, right,14); - round(right, left,15); + for(u32bit j = 0; j != 16; j += 2) + { + u32bit T0, T1; + + T0 = rotate_right(R, 4) ^ round_key[2*j]; + T1 = R ^ round_key[2*j + 1]; + + L ^= SPBOX1[get_byte(0, T0)] ^ SPBOX2[get_byte(0, T1)] ^ + SPBOX3[get_byte(1, T0)] ^ SPBOX4[get_byte(1, T1)] ^ + SPBOX5[get_byte(2, T0)] ^ SPBOX6[get_byte(2, T1)] ^ + SPBOX7[get_byte(3, T0)] ^ SPBOX8[get_byte(3, T1)]; + + T0 = rotate_right(L, 4) ^ round_key[2*j + 2]; + T1 = L ^ round_key[2*j + 3]; + + R ^= SPBOX1[get_byte(0, T0)] ^ SPBOX2[get_byte(0, T1)] ^ + SPBOX3[get_byte(1, T0)] ^ SPBOX4[get_byte(1, T1)] ^ + SPBOX5[get_byte(2, T0)] ^ SPBOX6[get_byte(2, T1)] ^ + SPBOX7[get_byte(3, T0)] ^ SPBOX8[get_byte(3, T1)]; + } } /************************************************* * DES Raw Decryption * *************************************************/ -void DES::raw_decrypt(u32bit& left, u32bit& right) const +void DES::raw_decrypt(u32bit& L, u32bit& R) const { - round(left, right,15); round(right, left,14); round(left, right,13); - round(right, left,12); round(left, right,11); round(right, left,10); - round(left, right, 9); round(right, left, 8); round(left, right, 7); - round(right, left, 6); round(left, right, 5); round(right, left, 4); - round(left, right, 3); round(right, left, 2); round(left, right, 1); - round(right, left, 0); + for(u32bit j = 16; j != 0; j -= 2) + { + u32bit T0, T1; + + T0 = rotate_right(R, 4) ^ round_key[2*j - 2]; + T1 = R ^ round_key[2*j - 1]; + + L ^= SPBOX1[get_byte(0, T0)] ^ SPBOX2[get_byte(0, T1)] ^ + SPBOX3[get_byte(1, T0)] ^ SPBOX4[get_byte(1, T1)] ^ + SPBOX5[get_byte(2, T0)] ^ SPBOX6[get_byte(2, T1)] ^ + SPBOX7[get_byte(3, T0)] ^ SPBOX8[get_byte(3, T1)]; + + T0 = rotate_right(L, 4) ^ round_key[2*j - 4]; + T1 = L ^ round_key[2*j - 3]; + + R ^= SPBOX1[get_byte(0, T0)] ^ SPBOX2[get_byte(0, T1)] ^ + SPBOX3[get_byte(1, T0)] ^ SPBOX4[get_byte(1, T1)] ^ + SPBOX5[get_byte(2, T0)] ^ SPBOX6[get_byte(2, T1)] ^ + SPBOX7[get_byte(3, T0)] ^ SPBOX8[get_byte(3, T1)]; + } } /************************************************* @@ -179,17 +192,19 @@ *************************************************/ void TripleDES::enc(const byte in[], byte out[]) const { - u32bit left = make_u32bit(in[0], in[1], in[2], in[3]), - right = make_u32bit(in[4], in[5], in[6], in[7]); - DES::IP(left, right); - des1.raw_encrypt(left, right); - des2.raw_decrypt(right, left); - des3.raw_encrypt(left, right); - DES::FP(left, right); - out[0] = get_byte(0, right); out[1] = get_byte(1, right); - out[2] = get_byte(2, right); out[3] = get_byte(3, right); - out[4] = get_byte(0, left); out[5] = get_byte(1, left); - out[6] = get_byte(2, left); out[7] = get_byte(3, left); + u32bit L = make_u32bit(in[0], in[1], in[2], in[3]), + R = make_u32bit(in[4], in[5], in[6], in[7]); + + DES::IP(L, R); + des1.raw_encrypt(L, R); + des2.raw_decrypt(R, L); + des3.raw_encrypt(L, R); + DES::FP(L, R); + + out[0] = get_byte(0, R); out[1] = get_byte(1, R); + out[2] = get_byte(2, R); out[3] = get_byte(3, R); + out[4] = get_byte(0, L); out[5] = get_byte(1, L); + out[6] = get_byte(2, L); out[7] = get_byte(3, L); } /************************************************* @@ -197,17 +212,19 @@ *************************************************/ void TripleDES::dec(const byte in[], byte out[]) const { - u32bit left = make_u32bit(in[0], in[1], in[2], in[3]), - right = make_u32bit(in[4], in[5], in[6], in[7]); - DES::IP(left, right); - des3.raw_decrypt(left, right); - des2.raw_encrypt(right, left); - des1.raw_decrypt(left, right); - DES::FP(left, right); - out[0] = get_byte(0, right); out[1] = get_byte(1, right); - out[2] = get_byte(2, right); out[3] = get_byte(3, right); - out[4] = get_byte(0, left); out[5] = get_byte(1, left); - out[6] = get_byte(2, left); out[7] = get_byte(3, left); + u32bit L = make_u32bit(in[0], in[1], in[2], in[3]), + R = make_u32bit(in[4], in[5], in[6], in[7]); + + DES::IP(L, R); + des3.raw_decrypt(L, R); + des2.raw_encrypt(R, L); + des1.raw_decrypt(L, R); + DES::FP(L, R); + + out[0] = get_byte(0, R); out[1] = get_byte(1, R); + out[2] = get_byte(2, R); out[3] = get_byte(3, R); + out[4] = get_byte(0, L); out[5] = get_byte(1, L); + out[6] = get_byte(2, L); out[7] = get_byte(3, L); } /************************************************* ======================================================================== --- botan/des.h 769c08188bd776f17a84c887ef1aba7d19e18c63 +++ botan/des.h 37d4e302b7efcd7abbdb1a5100350bddad8af1c9 @@ -22,6 +22,7 @@ DES() : BlockCipher(8, 8) {} private: friend class TripleDES; + void enc(const byte[], byte[]) const; void dec(const byte[], byte[]) const; void key(const byte[], u32bit); @@ -30,9 +31,11 @@ void round(u32bit&, u32bit, u32bit) const; static void IP(u32bit&, u32bit&); static void FP(u32bit&, u32bit&); + static const u32bit SPBOX1[256], SPBOX2[256], SPBOX3[256], SPBOX4[256], SPBOX5[256], SPBOX6[256], SPBOX7[256], SPBOX8[256]; static const u64bit IPTAB1[256], IPTAB2[256], FPTAB1[256], FPTAB2[256]; + SecureBuffer round_key; }; ======================================================================== --- botan/des_tab.cpp 9ce42b4de43fb7cf599b1bad7c69b0e167543656 +++ botan/des_tab.cpp dcdc96f398b9788d6b10c5fc08e942a6cc65b87e @@ -8,364 +8,364 @@ namespace Botan { const u32bit DES::SPBOX1[256] = { -0x01010400, 0x00000000, 0x00010000, 0x01010404, 0x01010004, 0x00010404, -0x00000004, 0x00010000, 0x00000400, 0x01010400, 0x01010404, 0x00000400, -0x01000404, 0x01010004, 0x01000000, 0x00000004, 0x00000404, 0x01000400, -0x01000400, 0x00010400, 0x00010400, 0x01010000, 0x01010000, 0x01000404, -0x00010004, 0x01000004, 0x01000004, 0x00010004, 0x00000000, 0x00000404, -0x00010404, 0x01000000, 0x00010000, 0x01010404, 0x00000004, 0x01010000, -0x01010400, 0x01000000, 0x01000000, 0x00000400, 0x01010004, 0x00010000, -0x00010400, 0x01000004, 0x00000400, 0x00000004, 0x01000404, 0x00010404, -0x01010404, 0x00010004, 0x01010000, 0x01000404, 0x01000004, 0x00000404, -0x00010404, 0x01010400, 0x00000404, 0x01000400, 0x01000400, 0x00000000, -0x00010004, 0x00010400, 0x00000000, 0x01010004, 0x01010400, 0x00000000, -0x00010000, 0x01010404, 0x01010004, 0x00010404, 0x00000004, 0x00010000, -0x00000400, 0x01010400, 0x01010404, 0x00000400, 0x01000404, 0x01010004, -0x01000000, 0x00000004, 0x00000404, 0x01000400, 0x01000400, 0x00010400, -0x00010400, 0x01010000, 0x01010000, 0x01000404, 0x00010004, 0x01000004, -0x01000004, 0x00010004, 0x00000000, 0x00000404, 0x00010404, 0x01000000, -0x00010000, 0x01010404, 0x00000004, 0x01010000, 0x01010400, 0x01000000, -0x01000000, 0x00000400, 0x01010004, 0x00010000, 0x00010400, 0x01000004, -0x00000400, 0x00000004, 0x01000404, 0x00010404, 0x01010404, 0x00010004, -0x01010000, 0x01000404, 0x01000004, 0x00000404, 0x00010404, 0x01010400, -0x00000404, 0x01000400, 0x01000400, 0x00000000, 0x00010004, 0x00010400, -0x00000000, 0x01010004, 0x01010400, 0x00000000, 0x00010000, 0x01010404, -0x01010004, 0x00010404, 0x00000004, 0x00010000, 0x00000400, 0x01010400, -0x01010404, 0x00000400, 0x01000404, 0x01010004, 0x01000000, 0x00000004, -0x00000404, 0x01000400, 0x01000400, 0x00010400, 0x00010400, 0x01010000, -0x01010000, 0x01000404, 0x00010004, 0x01000004, 0x01000004, 0x00010004, -0x00000000, 0x00000404, 0x00010404, 0x01000000, 0x00010000, 0x01010404, -0x00000004, 0x01010000, 0x01010400, 0x01000000, 0x01000000, 0x00000400, -0x01010004, 0x00010000, 0x00010400, 0x01000004, 0x00000400, 0x00000004, -0x01000404, 0x00010404, 0x01010404, 0x00010004, 0x01010000, 0x01000404, -0x01000004, 0x00000404, 0x00010404, 0x01010400, 0x00000404, 0x01000400, -0x01000400, 0x00000000, 0x00010004, 0x00010400, 0x00000000, 0x01010004, -0x01010400, 0x00000000, 0x00010000, 0x01010404, 0x01010004, 0x00010404, -0x00000004, 0x00010000, 0x00000400, 0x01010400, 0x01010404, 0x00000400, -0x01000404, 0x01010004, 0x01000000, 0x00000004, 0x00000404, 0x01000400, -0x01000400, 0x00010400, 0x00010400, 0x01010000, 0x01010000, 0x01000404, -0x00010004, 0x01000004, 0x01000004, 0x00010004, 0x00000000, 0x00000404, -0x00010404, 0x01000000, 0x00010000, 0x01010404, 0x00000004, 0x01010000, -0x01010400, 0x01000000, 0x01000000, 0x00000400, 0x01010004, 0x00010000, -0x00010400, 0x01000004, 0x00000400, 0x00000004, 0x01000404, 0x00010404, -0x01010404, 0x00010004, 0x01010000, 0x01000404, 0x01000004, 0x00000404, -0x00010404, 0x01010400, 0x00000404, 0x01000400, 0x01000400, 0x00000000, -0x00010004, 0x00010400, 0x00000000, 0x01010004 }; + 0x01010400, 0x00000000, 0x00010000, 0x01010404, 0x01010004, 0x00010404, + 0x00000004, 0x00010000, 0x00000400, 0x01010400, 0x01010404, 0x00000400, + 0x01000404, 0x01010004, 0x01000000, 0x00000004, 0x00000404, 0x01000400, + 0x01000400, 0x00010400, 0x00010400, 0x01010000, 0x01010000, 0x01000404, + 0x00010004, 0x01000004, 0x01000004, 0x00010004, 0x00000000, 0x00000404, + 0x00010404, 0x01000000, 0x00010000, 0x01010404, 0x00000004, 0x01010000, + 0x01010400, 0x01000000, 0x01000000, 0x00000400, 0x01010004, 0x00010000, + 0x00010400, 0x01000004, 0x00000400, 0x00000004, 0x01000404, 0x00010404, + 0x01010404, 0x00010004, 0x01010000, 0x01000404, 0x01000004, 0x00000404, + 0x00010404, 0x01010400, 0x00000404, 0x01000400, 0x01000400, 0x00000000, + 0x00010004, 0x00010400, 0x00000000, 0x01010004, 0x01010400, 0x00000000, + 0x00010000, 0x01010404, 0x01010004, 0x00010404, 0x00000004, 0x00010000, + 0x00000400, 0x01010400, 0x01010404, 0x00000400, 0x01000404, 0x01010004, + 0x01000000, 0x00000004, 0x00000404, 0x01000400, 0x01000400, 0x00010400, + 0x00010400, 0x01010000, 0x01010000, 0x01000404, 0x00010004, 0x01000004, + 0x01000004, 0x00010004, 0x00000000, 0x00000404, 0x00010404, 0x01000000, + 0x00010000, 0x01010404, 0x00000004, 0x01010000, 0x01010400, 0x01000000, + 0x01000000, 0x00000400, 0x01010004, 0x00010000, 0x00010400, 0x01000004, + 0x00000400, 0x00000004, 0x01000404, 0x00010404, 0x01010404, 0x00010004, + 0x01010000, 0x01000404, 0x01000004, 0x00000404, 0x00010404, 0x01010400, + 0x00000404, 0x01000400, 0x01000400, 0x00000000, 0x00010004, 0x00010400, + 0x00000000, 0x01010004, 0x01010400, 0x00000000, 0x00010000, 0x01010404, + 0x01010004, 0x00010404, 0x00000004, 0x00010000, 0x00000400, 0x01010400, + 0x01010404, 0x00000400, 0x01000404, 0x01010004, 0x01000000, 0x00000004, + 0x00000404, 0x01000400, 0x01000400, 0x00010400, 0x00010400, 0x01010000, + 0x01010000, 0x01000404, 0x00010004, 0x01000004, 0x01000004, 0x00010004, + 0x00000000, 0x00000404, 0x00010404, 0x01000000, 0x00010000, 0x01010404, + 0x00000004, 0x01010000, 0x01010400, 0x01000000, 0x01000000, 0x00000400, + 0x01010004, 0x00010000, 0x00010400, 0x01000004, 0x00000400, 0x00000004, + 0x01000404, 0x00010404, 0x01010404, 0x00010004, 0x01010000, 0x01000404, + 0x01000004, 0x00000404, 0x00010404, 0x01010400, 0x00000404, 0x01000400, + 0x01000400, 0x00000000, 0x00010004, 0x00010400, 0x00000000, 0x01010004, + 0x01010400, 0x00000000, 0x00010000, 0x01010404, 0x01010004, 0x00010404, + 0x00000004, 0x00010000, 0x00000400, 0x01010400, 0x01010404, 0x00000400, + 0x01000404, 0x01010004, 0x01000000, 0x00000004, 0x00000404, 0x01000400, + 0x01000400, 0x00010400, 0x00010400, 0x01010000, 0x01010000, 0x01000404, + 0x00010004, 0x01000004, 0x01000004, 0x00010004, 0x00000000, 0x00000404, + 0x00010404, 0x01000000, 0x00010000, 0x01010404, 0x00000004, 0x01010000, + 0x01010400, 0x01000000, 0x01000000, 0x00000400, 0x01010004, 0x00010000, + 0x00010400, 0x01000004, 0x00000400, 0x00000004, 0x01000404, 0x00010404, + 0x01010404, 0x00010004, 0x01010000, 0x01000404, 0x01000004, 0x00000404, + 0x00010404, 0x01010400, 0x00000404, 0x01000400, 0x01000400, 0x00000000, + 0x00010004, 0x00010400, 0x00000000, 0x01010004 }; const u32bit DES::SPBOX2[256] = { -0x80108020, 0x80008000, 0x00008000, 0x00108020, 0x00100000, 0x00000020, -0x80100020, 0x80008020, 0x80000020, 0x80108020, 0x80108000, 0x80000000, -0x80008000, 0x00100000, 0x00000020, 0x80100020, 0x00108000, 0x00100020, -0x80008020, 0x00000000, 0x80000000, 0x00008000, 0x00108020, 0x80100000, -0x00100020, 0x80000020, 0x00000000, 0x00108000, 0x00008020, 0x80108000, -0x80100000, 0x00008020, 0x00000000, 0x00108020, 0x80100020, 0x00100000, -0x80008020, 0x80100000, 0x80108000, 0x00008000, 0x80100000, 0x80008000, -0x00000020, 0x80108020, 0x00108020, 0x00000020, 0x00008000, 0x80000000, -0x00008020, 0x80108000, 0x00100000, 0x80000020, 0x00100020, 0x80008020, -0x80000020, 0x00100020, 0x00108000, 0x00000000, 0x80008000, 0x00008020, -0x80000000, 0x80100020, 0x80108020, 0x00108000, 0x80108020, 0x80008000, -0x00008000, 0x00108020, 0x00100000, 0x00000020, 0x80100020, 0x80008020, -0x80000020, 0x80108020, 0x80108000, 0x80000000, 0x80008000, 0x00100000, -0x00000020, 0x80100020, 0x00108000, 0x00100020, 0x80008020, 0x00000000, -0x80000000, 0x00008000, 0x00108020, 0x80100000, 0x00100020, 0x80000020, -0x00000000, 0x00108000, 0x00008020, 0x80108000, 0x80100000, 0x00008020, -0x00000000, 0x00108020, 0x80100020, 0x00100000, 0x80008020, 0x80100000, -0x80108000, 0x00008000, 0x80100000, 0x80008000, 0x00000020, 0x80108020, -0x00108020, 0x00000020, 0x00008000, 0x80000000, 0x00008020, 0x80108000, -0x00100000, 0x80000020, 0x00100020, 0x80008020, 0x80000020, 0x00100020, -0x00108000, 0x00000000, 0x80008000, 0x00008020, 0x80000000, 0x80100020, -0x80108020, 0x00108000, 0x80108020, 0x80008000, 0x00008000, 0x00108020, -0x00100000, 0x00000020, 0x80100020, 0x80008020, 0x80000020, 0x80108020, -0x80108000, 0x80000000, 0x80008000, 0x00100000, 0x00000020, 0x80100020, -0x00108000, 0x00100020, 0x80008020, 0x00000000, 0x80000000, 0x00008000, -0x00108020, 0x80100000, 0x00100020, 0x80000020, 0x00000000, 0x00108000, -0x00008020, 0x80108000, 0x80100000, 0x00008020, 0x00000000, 0x00108020, -0x80100020, 0x00100000, 0x80008020, 0x80100000, 0x80108000, 0x00008000, -0x80100000, 0x80008000, 0x00000020, 0x80108020, 0x00108020, 0x00000020, -0x00008000, 0x80000000, 0x00008020, 0x80108000, 0x00100000, 0x80000020, -0x00100020, 0x80008020, 0x80000020, 0x00100020, 0x00108000, 0x00000000, -0x80008000, 0x00008020, 0x80000000, 0x80100020, 0x80108020, 0x00108000, -0x80108020, 0x80008000, 0x00008000, 0x00108020, 0x00100000, 0x00000020, -0x80100020, 0x80008020, 0x80000020, 0x80108020, 0x80108000, 0x80000000, -0x80008000, 0x00100000, 0x00000020, 0x80100020, 0x00108000, 0x00100020, -0x80008020, 0x00000000, 0x80000000, 0x00008000, 0x00108020, 0x80100000, -0x00100020, 0x80000020, 0x00000000, 0x00108000, 0x00008020, 0x80108000, -0x80100000, 0x00008020, 0x00000000, 0x00108020, 0x80100020, 0x00100000, -0x80008020, 0x80100000, 0x80108000, 0x00008000, 0x80100000, 0x80008000, -0x00000020, 0x80108020, 0x00108020, 0x00000020, 0x00008000, 0x80000000, -0x00008020, 0x80108000, 0x00100000, 0x80000020, 0x00100020, 0x80008020, -0x80000020, 0x00100020, 0x00108000, 0x00000000, 0x80008000, 0x00008020, -0x80000000, 0x80100020, 0x80108020, 0x00108000 }; + 0x80108020, 0x80008000, 0x00008000, 0x00108020, 0x00100000, 0x00000020, + 0x80100020, 0x80008020, 0x80000020, 0x80108020, 0x80108000, 0x80000000, + 0x80008000, 0x00100000, 0x00000020, 0x80100020, 0x00108000, 0x00100020, + 0x80008020, 0x00000000, 0x80000000, 0x00008000, 0x00108020, 0x80100000, + 0x00100020, 0x80000020, 0x00000000, 0x00108000, 0x00008020, 0x80108000, + 0x80100000, 0x00008020, 0x00000000, 0x00108020, 0x80100020, 0x00100000, + 0x80008020, 0x80100000, 0x80108000, 0x00008000, 0x80100000, 0x80008000, + 0x00000020, 0x80108020, 0x00108020, 0x00000020, 0x00008000, 0x80000000, + 0x00008020, 0x80108000, 0x00100000, 0x80000020, 0x00100020, 0x80008020, + 0x80000020, 0x00100020, 0x00108000, 0x00000000, 0x80008000, 0x00008020, + 0x80000000, 0x80100020, 0x80108020, 0x00108000, 0x80108020, 0x80008000, + 0x00008000, 0x00108020, 0x00100000, 0x00000020, 0x80100020, 0x80008020, + 0x80000020, 0x80108020, 0x80108000, 0x80000000, 0x80008000, 0x00100000, + 0x00000020, 0x80100020, 0x00108000, 0x00100020, 0x80008020, 0x00000000, + 0x80000000, 0x00008000, 0x00108020, 0x80100000, 0x00100020, 0x80000020, + 0x00000000, 0x00108000, 0x00008020, 0x80108000, 0x80100000, 0x00008020, + 0x00000000, 0x00108020, 0x80100020, 0x00100000, 0x80008020, 0x80100000, + 0x80108000, 0x00008000, 0x80100000, 0x80008000, 0x00000020, 0x80108020, + 0x00108020, 0x00000020, 0x00008000, 0x80000000, 0x00008020, 0x80108000, + 0x00100000, 0x80000020, 0x00100020, 0x80008020, 0x80000020, 0x00100020, + 0x00108000, 0x00000000, 0x80008000, 0x00008020, 0x80000000, 0x80100020, + 0x80108020, 0x00108000, 0x80108020, 0x80008000, 0x00008000, 0x00108020, + 0x00100000, 0x00000020, 0x80100020, 0x80008020, 0x80000020, 0x80108020, + 0x80108000, 0x80000000, 0x80008000, 0x00100000, 0x00000020, 0x80100020, + 0x00108000, 0x00100020, 0x80008020, 0x00000000, 0x80000000, 0x00008000, + 0x00108020, 0x80100000, 0x00100020, 0x80000020, 0x00000000, 0x00108000, + 0x00008020, 0x80108000, 0x80100000, 0x00008020, 0x00000000, 0x00108020, + 0x80100020, 0x00100000, 0x80008020, 0x80100000, 0x80108000, 0x00008000, + 0x80100000, 0x80008000, 0x00000020, 0x80108020, 0x00108020, 0x00000020, + 0x00008000, 0x80000000, 0x00008020, 0x80108000, 0x00100000, 0x80000020, + 0x00100020, 0x80008020, 0x80000020, 0x00100020, 0x00108000, 0x00000000, + 0x80008000, 0x00008020, 0x80000000, 0x80100020, 0x80108020, 0x00108000, + 0x80108020, 0x80008000, 0x00008000, 0x00108020, 0x00100000, 0x00000020, + 0x80100020, 0x80008020, 0x80000020, 0x80108020, 0x80108000, 0x80000000, + 0x80008000, 0x00100000, 0x00000020, 0x80100020, 0x00108000, 0x00100020, + 0x80008020, 0x00000000, 0x80000000, 0x00008000, 0x00108020, 0x80100000, + 0x00100020, 0x80000020, 0x00000000, 0x00108000, 0x00008020, 0x80108000, + 0x80100000, 0x00008020, 0x00000000, 0x00108020, 0x80100020, 0x00100000, + 0x80008020, 0x80100000, 0x80108000, 0x00008000, 0x80100000, 0x80008000, + 0x00000020, 0x80108020, 0x00108020, 0x00000020, 0x00008000, 0x80000000, + 0x00008020, 0x80108000, 0x00100000, 0x80000020, 0x00100020, 0x80008020, + 0x80000020, 0x00100020, 0x00108000, 0x00000000, 0x80008000, 0x00008020, + 0x80000000, 0x80100020, 0x80108020, 0x00108000 }; const u32bit DES::SPBOX3[256] = { -0x00000208, 0x08020200, 0x00000000, 0x08020008, 0x08000200, 0x00000000, -0x00020208, 0x08000200, 0x00020008, 0x08000008, 0x08000008, 0x00020000, -0x08020208, 0x00020008, 0x08020000, 0x00000208, 0x08000000, 0x00000008, -0x08020200, 0x00000200, 0x00020200, 0x08020000, 0x08020008, 0x00020208, -0x08000208, 0x00020200, 0x00020000, 0x08000208, 0x00000008, 0x08020208, -0x00000200, 0x08000000, 0x08020200, 0x08000000, 0x00020008, 0x00000208, -0x00020000, 0x08020200, 0x08000200, 0x00000000, 0x00000200, 0x00020008, -0x08020208, 0x08000200, 0x08000008, 0x00000200, 0x00000000, 0x08020008, -0x08000208, 0x00020000, 0x08000000, 0x08020208, 0x00000008, 0x00020208, -0x00020200, 0x08000008, 0x08020000, 0x08000208, 0x00000208, 0x08020000, -0x00020208, 0x00000008, 0x08020008, 0x00020200, 0x00000208, 0x08020200, -0x00000000, 0x08020008, 0x08000200, 0x00000000, 0x00020208, 0x08000200, -0x00020008, 0x08000008, 0x08000008, 0x00020000, 0x08020208, 0x00020008, -0x08020000, 0x00000208, 0x08000000, 0x00000008, 0x08020200, 0x00000200, -0x00020200, 0x08020000, 0x08020008, 0x00020208, 0x08000208, 0x00020200, -0x00020000, 0x08000208, 0x00000008, 0x08020208, 0x00000200, 0x08000000, -0x08020200, 0x08000000, 0x00020008, 0x00000208, 0x00020000, 0x08020200, -0x08000200, 0x00000000, 0x00000200, 0x00020008, 0x08020208, 0x08000200, -0x08000008, 0x00000200, 0x00000000, 0x08020008, 0x08000208, 0x00020000, -0x08000000, 0x08020208, 0x00000008, 0x00020208, 0x00020200, 0x08000008, -0x08020000, 0x08000208, 0x00000208, 0x08020000, 0x00020208, 0x00000008, -0x08020008, 0x00020200, 0x00000208, 0x08020200, 0x00000000, 0x08020008, -0x08000200, 0x00000000, 0x00020208, 0x08000200, 0x00020008, 0x08000008, -0x08000008, 0x00020000, 0x08020208, 0x00020008, 0x08020000, 0x00000208, -0x08000000, 0x00000008, 0x08020200, 0x00000200, 0x00020200, 0x08020000, -0x08020008, 0x00020208, 0x08000208, 0x00020200, 0x00020000, 0x08000208, -0x00000008, 0x08020208, 0x00000200, 0x08000000, 0x08020200, 0x08000000, -0x00020008, 0x00000208, 0x00020000, 0x08020200, 0x08000200, 0x00000000, -0x00000200, 0x00020008, 0x08020208, 0x08000200, 0x08000008, 0x00000200, -0x00000000, 0x08020008, 0x08000208, 0x00020000, 0x08000000, 0x08020208, -0x00000008, 0x00020208, 0x00020200, 0x08000008, 0x08020000, 0x08000208, -0x00000208, 0x08020000, 0x00020208, 0x00000008, 0x08020008, 0x00020200, -0x00000208, 0x08020200, 0x00000000, 0x08020008, 0x08000200, 0x00000000, -0x00020208, 0x08000200, 0x00020008, 0x08000008, 0x08000008, 0x00020000, -0x08020208, 0x00020008, 0x08020000, 0x00000208, 0x08000000, 0x00000008, -0x08020200, 0x00000200, 0x00020200, 0x08020000, 0x08020008, 0x00020208, -0x08000208, 0x00020200, 0x00020000, 0x08000208, 0x00000008, 0x08020208, -0x00000200, 0x08000000, 0x08020200, 0x08000000, 0x00020008, 0x00000208, -0x00020000, 0x08020200, 0x08000200, 0x00000000, 0x00000200, 0x00020008, -0x08020208, 0x08000200, 0x08000008, 0x00000200, 0x00000000, 0x08020008, -0x08000208, 0x00020000, 0x08000000, 0x08020208, 0x00000008, 0x00020208, -0x00020200, 0x08000008, 0x08020000, 0x08000208, 0x00000208, 0x08020000, -0x00020208, 0x00000008, 0x08020008, 0x00020200 }; + 0x00000208, 0x08020200, 0x00000000, 0x08020008, 0x08000200, 0x00000000, + 0x00020208, 0x08000200, 0x00020008, 0x08000008, 0x08000008, 0x00020000, + 0x08020208, 0x00020008, 0x08020000, 0x00000208, 0x08000000, 0x00000008, + 0x08020200, 0x00000200, 0x00020200, 0x08020000, 0x08020008, 0x00020208, + 0x08000208, 0x00020200, 0x00020000, 0x08000208, 0x00000008, 0x08020208, + 0x00000200, 0x08000000, 0x08020200, 0x08000000, 0x00020008, 0x00000208, + 0x00020000, 0x08020200, 0x08000200, 0x00000000, 0x00000200, 0x00020008, + 0x08020208, 0x08000200, 0x08000008, 0x00000200, 0x00000000, 0x08020008, + 0x08000208, 0x00020000, 0x08000000, 0x08020208, 0x00000008, 0x00020208, + 0x00020200, 0x08000008, 0x08020000, 0x08000208, 0x00000208, 0x08020000, + 0x00020208, 0x00000008, 0x08020008, 0x00020200, 0x00000208, 0x08020200, + 0x00000000, 0x08020008, 0x08000200, 0x00000000, 0x00020208, 0x08000200, + 0x00020008, 0x08000008, 0x08000008, 0x00020000, 0x08020208, 0x00020008, + 0x08020000, 0x00000208, 0x08000000, 0x00000008, 0x08020200, 0x00000200, + 0x00020200, 0x08020000, 0x08020008, 0x00020208, 0x08000208, 0x00020200, + 0x00020000, 0x08000208, 0x00000008, 0x08020208, 0x00000200, 0x08000000, + 0x08020200, 0x08000000, 0x00020008, 0x00000208, 0x00020000, 0x08020200, + 0x08000200, 0x00000000, 0x00000200, 0x00020008, 0x08020208, 0x08000200, + 0x08000008, 0x00000200, 0x00000000, 0x08020008, 0x08000208, 0x00020000, + 0x08000000, 0x08020208, 0x00000008, 0x00020208, 0x00020200, 0x08000008, + 0x08020000, 0x08000208, 0x00000208, 0x08020000, 0x00020208, 0x00000008, + 0x08020008, 0x00020200, 0x00000208, 0x08020200, 0x00000000, 0x08020008, + 0x08000200, 0x00000000, 0x00020208, 0x08000200, 0x00020008, 0x08000008, + 0x08000008, 0x00020000, 0x08020208, 0x00020008, 0x08020000, 0x00000208, + 0x08000000, 0x00000008, 0x08020200, 0x00000200, 0x00020200, 0x08020000, + 0x08020008, 0x00020208, 0x08000208, 0x00020200, 0x00020000, 0x08000208, + 0x00000008, 0x08020208, 0x00000200, 0x08000000, 0x08020200, 0x08000000, + 0x00020008, 0x00000208, 0x00020000, 0x08020200, 0x08000200, 0x00000000, + 0x00000200, 0x00020008, 0x08020208, 0x08000200, 0x08000008, 0x00000200, + 0x00000000, 0x08020008, 0x08000208, 0x00020000, 0x08000000, 0x08020208, + 0x00000008, 0x00020208, 0x00020200, 0x08000008, 0x08020000, 0x08000208, + 0x00000208, 0x08020000, 0x00020208, 0x00000008, 0x08020008, 0x00020200, + 0x00000208, 0x08020200, 0x00000000, 0x08020008, 0x08000200, 0x00000000, + 0x00020208, 0x08000200, 0x00020008, 0x08000008, 0x08000008, 0x00020000, + 0x08020208, 0x00020008, 0x08020000, 0x00000208, 0x08000000, 0x00000008, + 0x08020200, 0x00000200, 0x00020200, 0x08020000, 0x08020008, 0x00020208, + 0x08000208, 0x00020200, 0x00020000, 0x08000208, 0x00000008, 0x08020208, + 0x00000200, 0x08000000, 0x08020200, 0x08000000, 0x00020008, 0x00000208, + 0x00020000, 0x08020200, 0x08000200, 0x00000000, 0x00000200, 0x00020008, + 0x08020208, 0x08000200, 0x08000008, 0x00000200, 0x00000000, 0x08020008, + 0x08000208, 0x00020000, 0x08000000, 0x08020208, 0x00000008, 0x00020208, + 0x00020200, 0x08000008, 0x08020000, 0x08000208, 0x00000208, 0x08020000, + 0x00020208, 0x00000008, 0x08020008, 0x00020200 }; const u32bit DES::SPBOX4[256] = { -0x00802001, 0x00002081, 0x00002081, 0x00000080, 0x00802080, 0x00800081, -0x00800001, 0x00002001, 0x00000000, 0x00802000, 0x00802000, 0x00802081, -0x00000081, 0x00000000, 0x00800080, 0x00800001, 0x00000001, 0x00002000, -0x00800000, 0x00802001, 0x00000080, 0x00800000, 0x00002001, 0x00002080, -0x00800081, 0x00000001, 0x00002080, 0x00800080, 0x00002000, 0x00802080, -0x00802081, 0x00000081, 0x00800080, 0x00800001, 0x00802000, 0x00802081, -0x00000081, 0x00000000, 0x00000000, 0x00802000, 0x00002080, 0x00800080, -0x00800081, 0x00000001, 0x00802001, 0x00002081, 0x00002081, 0x00000080, -0x00802081, 0x00000081, 0x00000001, 0x00002000, 0x00800001, 0x00002001, -0x00802080, 0x00800081, 0x00002001, 0x00002080, 0x00800000, 0x00802001, -0x00000080, 0x00800000, 0x00002000, 0x00802080, 0x00802001, 0x00002081, -0x00002081, 0x00000080, 0x00802080, 0x00800081, 0x00800001, 0x00002001, -0x00000000, 0x00802000, 0x00802000, 0x00802081, 0x00000081, 0x00000000, -0x00800080, 0x00800001, 0x00000001, 0x00002000, 0x00800000, 0x00802001, -0x00000080, 0x00800000, 0x00002001, 0x00002080, 0x00800081, 0x00000001, -0x00002080, 0x00800080, 0x00002000, 0x00802080, 0x00802081, 0x00000081, -0x00800080, 0x00800001, 0x00802000, 0x00802081, 0x00000081, 0x00000000, -0x00000000, 0x00802000, 0x00002080, 0x00800080, 0x00800081, 0x00000001, -0x00802001, 0x00002081, 0x00002081, 0x00000080, 0x00802081, 0x00000081, -0x00000001, 0x00002000, 0x00800001, 0x00002001, 0x00802080, 0x00800081, -0x00002001, 0x00002080, 0x00800000, 0x00802001, 0x00000080, 0x00800000, -0x00002000, 0x00802080, 0x00802001, 0x00002081, 0x00002081, 0x00000080, -0x00802080, 0x00800081, 0x00800001, 0x00002001, 0x00000000, 0x00802000, -0x00802000, 0x00802081, 0x00000081, 0x00000000, 0x00800080, 0x00800001, -0x00000001, 0x00002000, 0x00800000, 0x00802001, 0x00000080, 0x00800000, -0x00002001, 0x00002080, 0x00800081, 0x00000001, 0x00002080, 0x00800080, -0x00002000, 0x00802080, 0x00802081, 0x00000081, 0x00800080, 0x00800001, -0x00802000, 0x00802081, 0x00000081, 0x00000000, 0x00000000, 0x00802000, -0x00002080, 0x00800080, 0x00800081, 0x00000001, 0x00802001, 0x00002081, -0x00002081, 0x00000080, 0x00802081, 0x00000081, 0x00000001, 0x00002000, -0x00800001, 0x00002001, 0x00802080, 0x00800081, 0x00002001, 0x00002080, -0x00800000, 0x00802001, 0x00000080, 0x00800000, 0x00002000, 0x00802080, -0x00802001, 0x00002081, 0x00002081, 0x00000080, 0x00802080, 0x00800081, -0x00800001, 0x00002001, 0x00000000, 0x00802000, 0x00802000, 0x00802081, -0x00000081, 0x00000000, 0x00800080, 0x00800001, 0x00000001, 0x00002000, -0x00800000, 0x00802001, 0x00000080, 0x00800000, 0x00002001, 0x00002080, -0x00800081, 0x00000001, 0x00002080, 0x00800080, 0x00002000, 0x00802080, -0x00802081, 0x00000081, 0x00800080, 0x00800001, 0x00802000, 0x00802081, -0x00000081, 0x00000000, 0x00000000, 0x00802000, 0x00002080, 0x00800080, -0x00800081, 0x00000001, 0x00802001, 0x00002081, 0x00002081, 0x00000080, -0x00802081, 0x00000081, 0x00000001, 0x00002000, 0x00800001, 0x00002001, -0x00802080, 0x00800081, 0x00002001, 0x00002080, 0x00800000, 0x00802001, -0x00000080, 0x00800000, 0x00002000, 0x00802080 }; + 0x00802001, 0x00002081, 0x00002081, 0x00000080, 0x00802080, 0x00800081, + 0x00800001, 0x00002001, 0x00000000, 0x00802000, 0x00802000, 0x00802081, + 0x00000081, 0x00000000, 0x00800080, 0x00800001, 0x00000001, 0x00002000, + 0x00800000, 0x00802001, 0x00000080, 0x00800000, 0x00002001, 0x00002080, + 0x00800081, 0x00000001, 0x00002080, 0x00800080, 0x00002000, 0x00802080, + 0x00802081, 0x00000081, 0x00800080, 0x00800001, 0x00802000, 0x00802081, + 0x00000081, 0x00000000, 0x00000000, 0x00802000, 0x00002080, 0x00800080, + 0x00800081, 0x00000001, 0x00802001, 0x00002081, 0x00002081, 0x00000080, + 0x00802081, 0x00000081, 0x00000001, 0x00002000, 0x00800001, 0x00002001, + 0x00802080, 0x00800081, 0x00002001, 0x00002080, 0x00800000, 0x00802001, + 0x00000080, 0x00800000, 0x00002000, 0x00802080, 0x00802001, 0x00002081, + 0x00002081, 0x00000080, 0x00802080, 0x00800081, 0x00800001, 0x00002001, + 0x00000000, 0x00802000, 0x00802000, 0x00802081, 0x00000081, 0x00000000, + 0x00800080, 0x00800001, 0x00000001, 0x00002000, 0x00800000, 0x00802001, + 0x00000080, 0x00800000, 0x00002001, 0x00002080, 0x00800081, 0x00000001, + 0x00002080, 0x00800080, 0x00002000, 0x00802080, 0x00802081, 0x00000081, + 0x00800080, 0x00800001, 0x00802000, 0x00802081, 0x00000081, 0x00000000, + 0x00000000, 0x00802000, 0x00002080, 0x00800080, 0x00800081, 0x00000001, + 0x00802001, 0x00002081, 0x00002081, 0x00000080, 0x00802081, 0x00000081, + 0x00000001, 0x00002000, 0x00800001, 0x00002001, 0x00802080, 0x00800081, + 0x00002001, 0x00002080, 0x00800000, 0x00802001, 0x00000080, 0x00800000, + 0x00002000, 0x00802080, 0x00802001, 0x00002081, 0x00002081, 0x00000080, + 0x00802080, 0x00800081, 0x00800001, 0x00002001, 0x00000000, 0x00802000, + 0x00802000, 0x00802081, 0x00000081, 0x00000000, 0x00800080, 0x00800001, + 0x00000001, 0x00002000, 0x00800000, 0x00802001, 0x00000080, 0x00800000, + 0x00002001, 0x00002080, 0x00800081, 0x00000001, 0x00002080, 0x00800080, + 0x00002000, 0x00802080, 0x00802081, 0x00000081, 0x00800080, 0x00800001, + 0x00802000, 0x00802081, 0x00000081, 0x00000000, 0x00000000, 0x00802000, + 0x00002080, 0x00800080, 0x00800081, 0x00000001, 0x00802001, 0x00002081, + 0x00002081, 0x00000080, 0x00802081, 0x00000081, 0x00000001, 0x00002000, + 0x00800001, 0x00002001, 0x00802080, 0x00800081, 0x00002001, 0x00002080, + 0x00800000, 0x00802001, 0x00000080, 0x00800000, 0x00002000, 0x00802080, + 0x00802001, 0x00002081, 0x00002081, 0x00000080, 0x00802080, 0x00800081, + 0x00800001, 0x00002001, 0x00000000, 0x00802000, 0x00802000, 0x00802081, + 0x00000081, 0x00000000, 0x00800080, 0x00800001, 0x00000001, 0x00002000, + 0x00800000, 0x00802001, 0x00000080, 0x00800000, 0x00002001, 0x00002080, + 0x00800081, 0x00000001, 0x00002080, 0x00800080, 0x00002000, 0x00802080, + 0x00802081, 0x00000081, 0x00800080, 0x00800001, 0x00802000, 0x00802081, + 0x00000081, 0x00000000, 0x00000000, 0x00802000, 0x00002080, 0x00800080, + 0x00800081, 0x00000001, 0x00802001, 0x00002081, 0x00002081, 0x00000080, + 0x00802081, 0x00000081, 0x00000001, 0x00002000, 0x00800001, 0x00002001, + 0x00802080, 0x00800081, 0x00002001, 0x00002080, 0x00800000, 0x00802001, + 0x00000080, 0x00800000, 0x00002000, 0x00802080 }; const u32bit DES::SPBOX5[256] = { -0x00000100, 0x02080100, 0x02080000, 0x42000100, 0x00080000, 0x00000100, -0x40000000, 0x02080000, 0x40080100, 0x00080000, 0x02000100, 0x40080100, -0x42000100, 0x42080000, 0x00080100, 0x40000000, 0x02000000, 0x40080000, -0x40080000, 0x00000000, 0x40000100, 0x42080100, 0x42080100, 0x02000100, -0x42080000, 0x40000100, 0x00000000, 0x42000000, 0x02080100, 0x02000000, -0x42000000, 0x00080100, 0x00080000, 0x42000100, 0x00000100, 0x02000000, -0x40000000, 0x02080000, 0x42000100, 0x40080100, 0x02000100, 0x40000000, -0x42080000, 0x02080100, 0x40080100, 0x00000100, 0x02000000, 0x42080000, -0x42080100, 0x00080100, 0x42000000, 0x42080100, 0x02080000, 0x00000000, -0x40080000, 0x42000000, 0x00080100, 0x02000100, 0x40000100, 0x00080000, -0x00000000, 0x40080000, 0x02080100, 0x40000100, 0x00000100, 0x02080100, -0x02080000, 0x42000100, 0x00080000, 0x00000100, 0x40000000, 0x02080000, -0x40080100, 0x00080000, 0x02000100, 0x40080100, 0x42000100, 0x42080000, -0x00080100, 0x40000000, 0x02000000, 0x40080000, 0x40080000, 0x00000000, -0x40000100, 0x42080100, 0x42080100, 0x02000100, 0x42080000, 0x40000100, -0x00000000, 0x42000000, 0x02080100, 0x02000000, 0x42000000, 0x00080100, -0x00080000, 0x42000100, 0x00000100, 0x02000000, 0x40000000, 0x02080000, -0x42000100, 0x40080100, 0x02000100, 0x40000000, 0x42080000, 0x02080100, -0x40080100, 0x00000100, 0x02000000, 0x42080000, 0x42080100, 0x00080100, -0x42000000, 0x42080100, 0x02080000, 0x00000000, 0x40080000, 0x42000000, -0x00080100, 0x02000100, 0x40000100, 0x00080000, 0x00000000, 0x40080000, -0x02080100, 0x40000100, 0x00000100, 0x02080100, 0x02080000, 0x42000100, -0x00080000, 0x00000100, 0x40000000, 0x02080000, 0x40080100, 0x00080000, -0x02000100, 0x40080100, 0x42000100, 0x42080000, 0x00080100, 0x40000000, -0x02000000, 0x40080000, 0x40080000, 0x00000000, 0x40000100, 0x42080100, -0x42080100, 0x02000100, 0x42080000, 0x40000100, 0x00000000, 0x42000000, -0x02080100, 0x02000000, 0x42000000, 0x00080100, 0x00080000, 0x42000100, -0x00000100, 0x02000000, 0x40000000, 0x02080000, 0x42000100, 0x40080100, -0x02000100, 0x40000000, 0x42080000, 0x02080100, 0x40080100, 0x00000100, -0x02000000, 0x42080000, 0x42080100, 0x00080100, 0x42000000, 0x42080100, -0x02080000, 0x00000000, 0x40080000, 0x42000000, 0x00080100, 0x02000100, -0x40000100, 0x00080000, 0x00000000, 0x40080000, 0x02080100, 0x40000100, -0x00000100, 0x02080100, 0x02080000, 0x42000100, 0x00080000, 0x00000100, -0x40000000, 0x02080000, 0x40080100, 0x00080000, 0x02000100, 0x40080100, -0x42000100, 0x42080000, 0x00080100, 0x40000000, 0x02000000, 0x40080000, -0x40080000, 0x00000000, 0x40000100, 0x42080100, 0x42080100, 0x02000100, -0x42080000, 0x40000100, 0x00000000, 0x42000000, 0x02080100, 0x02000000, -0x42000000, 0x00080100, 0x00080000, 0x42000100, 0x00000100, 0x02000000, -0x40000000, 0x02080000, 0x42000100, 0x40080100, 0x02000100, 0x40000000, -0x42080000, 0x02080100, 0x40080100, 0x00000100, 0x02000000, 0x42080000, -0x42080100, 0x00080100, 0x42000000, 0x42080100, 0x02080000, 0x00000000, -0x40080000, 0x42000000, 0x00080100, 0x02000100, 0x40000100, 0x00080000, -0x00000000, 0x40080000, 0x02080100, 0x40000100 }; + 0x00000100, 0x02080100, 0x02080000, 0x42000100, 0x00080000, 0x00000100, + 0x40000000, 0x02080000, 0x40080100, 0x00080000, 0x02000100, 0x40080100, + 0x42000100, 0x42080000, 0x00080100, 0x40000000, 0x02000000, 0x40080000, + 0x40080000, 0x00000000, 0x40000100, 0x42080100, 0x42080100, 0x02000100, + 0x42080000, 0x40000100, 0x00000000, 0x42000000, 0x02080100, 0x02000000, + 0x42000000, 0x00080100, 0x00080000, 0x42000100, 0x00000100, 0x02000000, + 0x40000000, 0x02080000, 0x42000100, 0x40080100, 0x02000100, 0x40000000, + 0x42080000, 0x02080100, 0x40080100, 0x00000100, 0x02000000, 0x42080000, + 0x42080100, 0x00080100, 0x42000000, 0x42080100, 0x02080000, 0x00000000, + 0x40080000, 0x42000000, 0x00080100, 0x02000100, 0x40000100, 0x00080000, + 0x00000000, 0x40080000, 0x02080100, 0x40000100, 0x00000100, 0x02080100, + 0x02080000, 0x42000100, 0x00080000, 0x00000100, 0x40000000, 0x02080000, + 0x40080100, 0x00080000, 0x02000100, 0x40080100, 0x42000100, 0x42080000, + 0x00080100, 0x40000000, 0x02000000, 0x40080000, 0x40080000, 0x00000000, + 0x40000100, 0x42080100, 0x42080100, 0x02000100, 0x42080000, 0x40000100, + 0x00000000, 0x42000000, 0x02080100, 0x02000000, 0x42000000, 0x00080100, + 0x00080000, 0x42000100, 0x00000100, 0x02000000, 0x40000000, 0x02080000, + 0x42000100, 0x40080100, 0x02000100, 0x40000000, 0x42080000, 0x02080100, + 0x40080100, 0x00000100, 0x02000000, 0x42080000, 0x42080100, 0x00080100, + 0x42000000, 0x42080100, 0x02080000, 0x00000000, 0x40080000, 0x42000000, + 0x00080100, 0x02000100, 0x40000100, 0x00080000, 0x00000000, 0x40080000, + 0x02080100, 0x40000100, 0x00000100, 0x02080100, 0x02080000, 0x42000100, + 0x00080000, 0x00000100, 0x40000000, 0x02080000, 0x40080100, 0x00080000, + 0x02000100, 0x40080100, 0x42000100, 0x42080000, 0x00080100, 0x40000000, + 0x02000000, 0x40080000, 0x40080000, 0x00000000, 0x40000100, 0x42080100, + 0x42080100, 0x02000100, 0x42080000, 0x40000100, 0x00000000, 0x42000000, + 0x02080100, 0x02000000, 0x42000000, 0x00080100, 0x00080000, 0x42000100, + 0x00000100, 0x02000000, 0x40000000, 0x02080000, 0x42000100, 0x40080100, + 0x02000100, 0x40000000, 0x42080000, 0x02080100, 0x40080100, 0x00000100, + 0x02000000, 0x42080000, 0x42080100, 0x00080100, 0x42000000, 0x42080100, + 0x02080000, 0x00000000, 0x40080000, 0x42000000, 0x00080100, 0x02000100, + 0x40000100, 0x00080000, 0x00000000, 0x40080000, 0x02080100, 0x40000100, + 0x00000100, 0x02080100, 0x02080000, 0x42000100, 0x00080000, 0x00000100, + 0x40000000, 0x02080000, 0x40080100, 0x00080000, 0x02000100, 0x40080100, + 0x42000100, 0x42080000, 0x00080100, 0x40000000, 0x02000000, 0x40080000, + 0x40080000, 0x00000000, 0x40000100, 0x42080100, 0x42080100, 0x02000100, + 0x42080000, 0x40000100, 0x00000000, 0x42000000, 0x02080100, 0x02000000, + 0x42000000, 0x00080100, 0x00080000, 0x42000100, 0x00000100, 0x02000000, + 0x40000000, 0x02080000, 0x42000100, 0x40080100, 0x02000100, 0x40000000, + 0x42080000, 0x02080100, 0x40080100, 0x00000100, 0x02000000, 0x42080000, + 0x42080100, 0x00080100, 0x42000000, 0x42080100, 0x02080000, 0x00000000, + 0x40080000, 0x42000000, 0x00080100, 0x02000100, 0x40000100, 0x00080000, + 0x00000000, 0x40080000, 0x02080100, 0x40000100 }; const u32bit DES::SPBOX6[256] = { -0x20000010, 0x20400000, 0x00004000, 0x20404010, 0x20400000, 0x00000010, -0x20404010, 0x00400000, 0x20004000, 0x00404010, 0x00400000, 0x20000010, -0x00400010, 0x20004000, 0x20000000, 0x00004010, 0x00000000, 0x00400010, -0x20004010, 0x00004000, 0x00404000, 0x20004010, 0x00000010, 0x20400010, -0x20400010, 0x00000000, 0x00404010, 0x20404000, 0x00004010, 0x00404000, -0x20404000, 0x20000000, 0x20004000, 0x00000010, 0x20400010, 0x00404000, -0x20404010, 0x00400000, 0x00004010, 0x20000010, 0x00400000, 0x20004000, -0x20000000, 0x00004010, 0x20000010, 0x20404010, 0x00404000, 0x20400000, -0x00404010, 0x20404000, 0x00000000, 0x20400010, 0x00000010, 0x00004000, -0x20400000, 0x00404010, 0x00004000, 0x00400010, 0x20004010, 0x00000000, -0x20404000, 0x20000000, 0x00400010, 0x20004010, 0x20000010, 0x20400000, -0x00004000, 0x20404010, 0x20400000, 0x00000010, 0x20404010, 0x00400000, -0x20004000, 0x00404010, 0x00400000, 0x20000010, 0x00400010, 0x20004000, -0x20000000, 0x00004010, 0x00000000, 0x00400010, 0x20004010, 0x00004000, -0x00404000, 0x20004010, 0x00000010, 0x20400010, 0x20400010, 0x00000000, -0x00404010, 0x20404000, 0x00004010, 0x00404000, 0x20404000, 0x20000000, -0x20004000, 0x00000010, 0x20400010, 0x00404000, 0x20404010, 0x00400000, -0x00004010, 0x20000010, 0x00400000, 0x20004000, 0x20000000, 0x00004010, -0x20000010, 0x20404010, 0x00404000, 0x20400000, 0x00404010, 0x20404000, -0x00000000, 0x20400010, 0x00000010, 0x00004000, 0x20400000, 0x00404010, -0x00004000, 0x00400010, 0x20004010, 0x00000000, 0x20404000, 0x20000000, -0x00400010, 0x20004010, 0x20000010, 0x20400000, 0x00004000, 0x20404010, -0x20400000, 0x00000010, 0x20404010, 0x00400000, 0x20004000, 0x00404010, -0x00400000, 0x20000010, 0x00400010, 0x20004000, 0x20000000, 0x00004010, -0x00000000, 0x00400010, 0x20004010, 0x00004000, 0x00404000, 0x20004010, -0x00000010, 0x20400010, 0x20400010, 0x00000000, 0x00404010, 0x20404000, -0x00004010, 0x00404000, 0x20404000, 0x20000000, 0x20004000, 0x00000010, -0x20400010, 0x00404000, 0x20404010, 0x00400000, 0x00004010, 0x20000010, -0x00400000, 0x20004000, 0x20000000, 0x00004010, 0x20000010, 0x20404010, -0x00404000, 0x20400000, 0x00404010, 0x20404000, 0x00000000, 0x20400010, -0x00000010, 0x00004000, 0x20400000, 0x00404010, 0x00004000, 0x00400010, -0x20004010, 0x00000000, 0x20404000, 0x20000000, 0x00400010, 0x20004010, -0x20000010, 0x20400000, 0x00004000, 0x20404010, 0x20400000, 0x00000010, -0x20404010, 0x00400000, 0x20004000, 0x00404010, 0x00400000, 0x20000010, -0x00400010, 0x20004000, 0x20000000, 0x00004010, 0x00000000, 0x00400010, -0x20004010, 0x00004000, 0x00404000, 0x20004010, 0x00000010, 0x20400010, -0x20400010, 0x00000000, 0x00404010, 0x20404000, 0x00004010, 0x00404000, -0x20404000, 0x20000000, 0x20004000, 0x00000010, 0x20400010, 0x00404000, -0x20404010, 0x00400000, 0x00004010, 0x20000010, 0x00400000, 0x20004000, -0x20000000, 0x00004010, 0x20000010, 0x20404010, 0x00404000, 0x20400000, -0x00404010, 0x20404000, 0x00000000, 0x20400010, 0x00000010, 0x00004000, -0x20400000, 0x00404010, 0x00004000, 0x00400010, 0x20004010, 0x00000000, -0x20404000, 0x20000000, 0x00400010, 0x20004010 }; + 0x20000010, 0x20400000, 0x00004000, 0x20404010, 0x20400000, 0x00000010, + 0x20404010, 0x00400000, 0x20004000, 0x00404010, 0x00400000, 0x20000010, + 0x00400010, 0x20004000, 0x20000000, 0x00004010, 0x00000000, 0x00400010, + 0x20004010, 0x00004000, 0x00404000, 0x20004010, 0x00000010, 0x20400010, + 0x20400010, 0x00000000, 0x00404010, 0x20404000, 0x00004010, 0x00404000, + 0x20404000, 0x20000000, 0x20004000, 0x00000010, 0x20400010, 0x00404000, + 0x20404010, 0x00400000, 0x00004010, 0x20000010, 0x00400000, 0x20004000, + 0x20000000, 0x00004010, 0x20000010, 0x20404010, 0x00404000, 0x20400000, + 0x00404010, 0x20404000, 0x00000000, 0x20400010, 0x00000010, 0x00004000, + 0x20400000, 0x00404010, 0x00004000, 0x00400010, 0x20004010, 0x00000000, + 0x20404000, 0x20000000, 0x00400010, 0x20004010, 0x20000010, 0x20400000, + 0x00004000, 0x20404010, 0x20400000, 0x00000010, 0x20404010, 0x00400000, + 0x20004000, 0x00404010, 0x00400000, 0x20000010, 0x00400010, 0x20004000, + 0x20000000, 0x00004010, 0x00000000, 0x00400010, 0x20004010, 0x00004000, + 0x00404000, 0x20004010, 0x00000010, 0x20400010, 0x20400010, 0x00000000, + 0x00404010, 0x20404000, 0x00004010, 0x00404000, 0x20404000, 0x20000000, + 0x20004000, 0x00000010, 0x20400010, 0x00404000, 0x20404010, 0x00400000, + 0x00004010, 0x20000010, 0x00400000, 0x20004000, 0x20000000, 0x00004010, + 0x20000010, 0x20404010, 0x00404000, 0x20400000, 0x00404010, 0x20404000, + 0x00000000, 0x20400010, 0x00000010, 0x00004000, 0x20400000, 0x00404010, + 0x00004000, 0x00400010, 0x20004010, 0x00000000, 0x20404000, 0x20000000, + 0x00400010, 0x20004010, 0x20000010, 0x20400000, 0x00004000, 0x20404010, + 0x20400000, 0x00000010, 0x20404010, 0x00400000, 0x20004000, 0x00404010, + 0x00400000, 0x20000010, 0x00400010, 0x20004000, 0x20000000, 0x00004010, + 0x00000000, 0x00400010, 0x20004010, 0x00004000, 0x00404000, 0x20004010, + 0x00000010, 0x20400010, 0x20400010, 0x00000000, 0x00404010, 0x20404000, + 0x00004010, 0x00404000, 0x20404000, 0x20000000, 0x20004000, 0x00000010, + 0x20400010, 0x00404000, 0x20404010, 0x00400000, 0x00004010, 0x20000010, + 0x00400000, 0x20004000, 0x20000000, 0x00004010, 0x20000010, 0x20404010, + 0x00404000, 0x20400000, 0x00404010, 0x20404000, 0x00000000, 0x20400010, + 0x00000010, 0x00004000, 0x20400000, 0x00404010, 0x00004000, 0x00400010, + 0x20004010, 0x00000000, 0x20404000, 0x20000000, 0x00400010, 0x20004010, + 0x20000010, 0x20400000, 0x00004000, 0x20404010, 0x20400000, 0x00000010, + 0x20404010, 0x00400000, 0x20004000, 0x00404010, 0x00400000, 0x20000010, + 0x00400010, 0x20004000, 0x20000000, 0x00004010, 0x00000000, 0x00400010, + 0x20004010, 0x00004000, 0x00404000, 0x20004010, 0x00000010, 0x20400010, + 0x20400010, 0x00000000, 0x00404010, 0x20404000, 0x00004010, 0x00404000, + 0x20404000, 0x20000000, 0x20004000, 0x00000010, 0x20400010, 0x00404000, + 0x20404010, 0x00400000, 0x00004010, 0x20000010, 0x00400000, 0x20004000, + 0x20000000, 0x00004010, 0x20000010, 0x20404010, 0x00404000, 0x20400000, + 0x00404010, 0x20404000, 0x00000000, 0x20400010, 0x00000010, 0x00004000, + 0x20400000, 0x00404010, 0x00004000, 0x00400010, 0x20004010, 0x00000000, + 0x20404000, 0x20000000, 0x00400010, 0x20004010 }; const u32bit DES::SPBOX7[256] = { -0x00200000, 0x04200002, 0x04000802, 0x00000000, 0x00000800, 0x04000802, -0x00200802, 0x04200800, 0x04200802, 0x00200000, 0x00000000, 0x04000002, -0x00000002, 0x04000000, 0x04200002, 0x00000802, 0x04000800, 0x00200802, -0x00200002, 0x04000800, 0x04000002, 0x04200000, 0x04200800, 0x00200002, -0x04200000, 0x00000800, 0x00000802, 0x04200802, 0x00200800, 0x00000002, -0x04000000, 0x00200800, 0x04000000, 0x00200800, 0x00200000, 0x04000802, -0x04000802, 0x04200002, 0x04200002, 0x00000002, 0x00200002, 0x04000000, -0x04000800, 0x00200000, 0x04200800, 0x00000802, 0x00200802, 0x04200800, -0x00000802, 0x04000002, 0x04200802, 0x04200000, 0x00200800, 0x00000000, -0x00000002, 0x04200802, 0x00000000, 0x00200802, 0x04200000, 0x00000800, -0x04000002, 0x04000800, 0x00000800, 0x00200002, 0x00200000, 0x04200002, -0x04000802, 0x00000000, 0x00000800, 0x04000802, 0x00200802, 0x04200800, -0x04200802, 0x00200000, 0x00000000, 0x04000002, 0x00000002, 0x04000000, -0x04200002, 0x00000802, 0x04000800, 0x00200802, 0x00200002, 0x04000800, -0x04000002, 0x04200000, 0x04200800, 0x00200002, 0x04200000, 0x00000800, -0x00000802, 0x04200802, 0x00200800, 0x00000002, 0x04000000, 0x00200800, -0x04000000, 0x00200800, 0x00200000, 0x04000802, 0x04000802, 0x04200002, -0x04200002, 0x00000002, 0x00200002, 0x04000000, 0x04000800, 0x00200000, -0x04200800, 0x00000802, 0x00200802, 0x04200800, 0x00000802, 0x04000002, -0x04200802, 0x04200000, 0x00200800, 0x00000000, 0x00000002, 0x04200802, -0x00000000, 0x00200802, 0x04200000, 0x00000800, 0x04000002, 0x04000800, -0x00000800, 0x00200002, 0x00200000, 0x04200002, 0x04000802, 0x00000000, -0x00000800, 0x04000802, 0x00200802, 0x04200800, 0x04200802, 0x00200000, -0x00000000, 0x04000002, 0x00000002, 0x04000000, 0x04200002, 0x00000802, -0x04000800, 0x00200802, 0x00200002, 0x04000800, 0x04000002, 0x04200000, -0x04200800, 0x00200002, 0x04200000, 0x00000800, 0x00000802, 0x04200802, -0x00200800, 0x00000002, 0x04000000, 0x00200800, 0x04000000, 0x00200800, -0x00200000, 0x04000802, 0x04000802, 0x04200002, 0x04200002, 0x00000002, -0x00200002, 0x04000000, 0x04000800, 0x00200000, 0x04200800, 0x00000802, -0x00200802, 0x04200800, 0x00000802, 0x04000002, 0x04200802, 0x04200000, -0x00200800, 0x00000000, 0x00000002, 0x04200802, 0x00000000, 0x00200802, -0x04200000, 0x00000800, 0x04000002, 0x04000800, 0x00000800, 0x00200002, -0x00200000, 0x04200002, 0x04000802, 0x00000000, 0x00000800, 0x04000802, -0x00200802, 0x04200800, 0x04200802, 0x00200000, 0x00000000, 0x04000002, -0x00000002, 0x04000000, 0x04200002, 0x00000802, 0x04000800, 0x00200802, -0x00200002, 0x04000800, 0x04000002, 0x04200000, 0x04200800, 0x00200002, -0x04200000, 0x00000800, 0x00000802, 0x04200802, 0x00200800, 0x00000002, -0x04000000, 0x00200800, 0x04000000, 0x00200800, 0x00200000, 0x04000802, -0x04000802, 0x04200002, 0x04200002, 0x00000002, 0x00200002, 0x04000000, -0x04000800, 0x00200000, 0x04200800, 0x00000802, 0x00200802, 0x04200800, -0x00000802, 0x04000002, 0x04200802, 0x04200000, 0x00200800, 0x00000000, -0x00000002, 0x04200802, 0x00000000, 0x00200802, 0x04200000, 0x00000800, -0x04000002, 0x04000800, 0x00000800, 0x00200002 }; + 0x00200000, 0x04200002, 0x04000802, 0x00000000, 0x00000800, 0x04000802, + 0x00200802, 0x04200800, 0x04200802, 0x00200000, 0x00000000, 0x04000002, + 0x00000002, 0x04000000, 0x04200002, 0x00000802, 0x04000800, 0x00200802, + 0x00200002, 0x04000800, 0x04000002, 0x04200000, 0x04200800, 0x00200002, + 0x04200000, 0x00000800, 0x00000802, 0x04200802, 0x00200800, 0x00000002, + 0x04000000, 0x00200800, 0x04000000, 0x00200800, 0x00200000, 0x04000802, + 0x04000802, 0x04200002, 0x04200002, 0x00000002, 0x00200002, 0x04000000, + 0x04000800, 0x00200000, 0x04200800, 0x00000802, 0x00200802, 0x04200800, + 0x00000802, 0x04000002, 0x04200802, 0x04200000, 0x00200800, 0x00000000, + 0x00000002, 0x04200802, 0x00000000, 0x00200802, 0x04200000, 0x00000800, + 0x04000002, 0x04000800, 0x00000800, 0x00200002, 0x00200000, 0x04200002, + 0x04000802, 0x00000000, 0x00000800, 0x04000802, 0x00200802, 0x04200800, + 0x04200802, 0x00200000, 0x00000000, 0x04000002, 0x00000002, 0x04000000, + 0x04200002, 0x00000802, 0x04000800, 0x00200802, 0x00200002, 0x04000800, + 0x04000002, 0x04200000, 0x04200800, 0x00200002, 0x04200000, 0x00000800, + 0x00000802, 0x04200802, 0x00200800, 0x00000002, 0x04000000, 0x00200800, + 0x04000000, 0x00200800, 0x00200000, 0x04000802, 0x04000802, 0x04200002, + 0x04200002, 0x00000002, 0x00200002, 0x04000000, 0x04000800, 0x00200000, + 0x04200800, 0x00000802, 0x00200802, 0x04200800, 0x00000802, 0x04000002, + 0x04200802, 0x04200000, 0x00200800, 0x00000000, 0x00000002, 0x04200802, + 0x00000000, 0x00200802, 0x04200000, 0x00000800, 0x04000002, 0x04000800, + 0x00000800, 0x00200002, 0x00200000, 0x04200002, 0x04000802, 0x00000000, + 0x00000800, 0x04000802, 0x00200802, 0x04200800, 0x04200802, 0x00200000, + 0x00000000, 0x04000002, 0x00000002, 0x04000000, 0x04200002, 0x00000802, + 0x04000800, 0x00200802, 0x00200002, 0x04000800, 0x04000002, 0x04200000, + 0x04200800, 0x00200002, 0x04200000, 0x00000800, 0x00000802, 0x04200802, + 0x00200800, 0x00000002, 0x04000000, 0x00200800, 0x04000000, 0x00200800, + 0x00200000, 0x04000802, 0x04000802, 0x04200002, 0x04200002, 0x00000002, + 0x00200002, 0x04000000, 0x04000800, 0x00200000, 0x04200800, 0x00000802, + 0x00200802, 0x04200800, 0x00000802, 0x04000002, 0x04200802, 0x04200000, + 0x00200800, 0x00000000, 0x00000002, 0x04200802, 0x00000000, 0x00200802, + 0x04200000, 0x00000800, 0x04000002, 0x04000800, 0x00000800, 0x00200002, + 0x00200000, 0x04200002, 0x04000802, 0x00000000, 0x00000800, 0x04000802, + 0x00200802, 0x04200800, 0x04200802, 0x00200000, 0x00000000, 0x04000002, + 0x00000002, 0x04000000, 0x04200002, 0x00000802, 0x04000800, 0x00200802, + 0x00200002, 0x04000800, 0x04000002, 0x04200000, 0x04200800, 0x00200002, + 0x04200000, 0x00000800, 0x00000802, 0x04200802, 0x00200800, 0x00000002, + 0x04000000, 0x00200800, 0x04000000, 0x00200800, 0x00200000, 0x04000802, + 0x04000802, 0x04200002, 0x04200002, 0x00000002, 0x00200002, 0x04000000, + 0x04000800, 0x00200000, 0x04200800, 0x00000802, 0x00200802, 0x04200800, + 0x00000802, 0x04000002, 0x04200802, 0x04200000, 0x00200800, 0x00000000, + 0x00000002, 0x04200802, 0x00000000, 0x00200802, 0x04200000, 0x00000800, + 0x04000002, 0x04000800, 0x00000800, 0x00200002 }; const u32bit DES::SPBOX8[256] = { -0x10001040, 0x00001000, 0x00040000, 0x10041040, 0x10000000, 0x10001040, -0x00000040, 0x10000000, 0x00040040, 0x10040000, 0x10041040, 0x00041000, -0x10041000, 0x00041040, 0x00001000, 0x00000040, 0x10040000, 0x10000040, -0x10001000, 0x00001040, 0x00041000, 0x00040040, 0x10040040, 0x10041000, -0x00001040, 0x00000000, 0x00000000, 0x10040040, 0x10000040, 0x10001000, -0x00041040, 0x00040000, 0x00041040, 0x00040000, 0x10041000, 0x00001000, -0x00000040, 0x10040040, 0x00001000, 0x00041040, 0x10001000, 0x00000040, -0x10000040, 0x10040000, 0x10040040, 0x10000000, 0x00040000, 0x10001040, -0x00000000, 0x10041040, 0x00040040, 0x10000040, 0x10040000, 0x10001000, -0x10001040, 0x00000000, 0x10041040, 0x00041000, 0x00041000, 0x00001040, -0x00001040, 0x00040040, 0x10000000, 0x10041000, 0x10001040, 0x00001000, -0x00040000, 0x10041040, 0x10000000, 0x10001040, 0x00000040, 0x10000000, -0x00040040, 0x10040000, 0x10041040, 0x00041000, 0x10041000, 0x00041040, -0x00001000, 0x00000040, 0x10040000, 0x10000040, 0x10001000, 0x00001040, -0x00041000, 0x00040040, 0x10040040, 0x10041000, 0x00001040, 0x00000000, -0x00000000, 0x10040040, 0x10000040, 0x10001000, 0x00041040, 0x00040000, -0x00041040, 0x00040000, 0x10041000, 0x00001000, 0x00000040, 0x10040040, -0x00001000, 0x00041040, 0x10001000, 0x00000040, 0x10000040, 0x10040000, -0x10040040, 0x10000000, 0x00040000, 0x10001040, 0x00000000, 0x10041040, -0x00040040, 0x10000040, 0x10040000, 0x10001000, 0x10001040, 0x00000000, -0x10041040, 0x00041000, 0x00041000, 0x00001040, 0x00001040, 0x00040040, -0x10000000, 0x10041000, 0x10001040, 0x00001000, 0x00040000, 0x10041040, -0x10000000, 0x10001040, 0x00000040, 0x10000000, 0x00040040, 0x10040000, -0x10041040, 0x00041000, 0x10041000, 0x00041040, 0x00001000, 0x00000040, -0x10040000, 0x10000040, 0x10001000, 0x00001040, 0x00041000, 0x00040040, -0x10040040, 0x10041000, 0x00001040, 0x00000000, 0x00000000, 0x10040040, -0x10000040, 0x10001000, 0x00041040, 0x00040000, 0x00041040, 0x00040000, -0x10041000, 0x00001000, 0x00000040, 0x10040040, 0x00001000, 0x00041040, -0x10001000, 0x00000040, 0x10000040, 0x10040000, 0x10040040, 0x10000000, -0x00040000, 0x10001040, 0x00000000, 0x10041040, 0x00040040, 0x10000040, -0x10040000, 0x10001000, 0x10001040, 0x00000000, 0x10041040, 0x00041000, -0x00041000, 0x00001040, 0x00001040, 0x00040040, 0x10000000, 0x10041000, -0x10001040, 0x00001000, 0x00040000, 0x10041040, 0x10000000, 0x10001040, -0x00000040, 0x10000000, 0x00040040, 0x10040000, 0x10041040, 0x00041000, -0x10041000, 0x00041040, 0x00001000, 0x00000040, 0x10040000, 0x10000040, -0x10001000, 0x00001040, 0x00041000, 0x00040040, 0x10040040, 0x10041000, -0x00001040, 0x00000000, 0x00000000, 0x10040040, 0x10000040, 0x10001000, -0x00041040, 0x00040000, 0x00041040, 0x00040000, 0x10041000, 0x00001000, -0x00000040, 0x10040040, 0x00001000, 0x00041040, 0x10001000, 0x00000040, -0x10000040, 0x10040000, 0x10040040, 0x10000000, 0x00040000, 0x10001040, -0x00000000, 0x10041040, 0x00040040, 0x10000040, 0x10040000, 0x10001000, -0x10001040, 0x00000000, 0x10041040, 0x00041000, 0x00041000, 0x00001040, -0x00001040, 0x00040040, 0x10000000, 0x10041000 }; + 0x10001040, 0x00001000, 0x00040000, 0x10041040, 0x10000000, 0x10001040, + 0x00000040, 0x10000000, 0x00040040, 0x10040000, 0x10041040, 0x00041000, + 0x10041000, 0x00041040, 0x00001000, 0x00000040, 0x10040000, 0x10000040, + 0x10001000, 0x00001040, 0x00041000, 0x00040040, 0x10040040, 0x10041000, + 0x00001040, 0x00000000, 0x00000000, 0x10040040, 0x10000040, 0x10001000, + 0x00041040, 0x00040000, 0x00041040, 0x00040000, 0x10041000, 0x00001000, + 0x00000040, 0x10040040, 0x00001000, 0x00041040, 0x10001000, 0x00000040, + 0x10000040, 0x10040000, 0x10040040, 0x10000000, 0x00040000, 0x10001040, + 0x00000000, 0x10041040, 0x00040040, 0x10000040, 0x10040000, 0x10001000, + 0x10001040, 0x00000000, 0x10041040, 0x00041000, 0x00041000, 0x00001040, + 0x00001040, 0x00040040, 0x10000000, 0x10041000, 0x10001040, 0x00001000, + 0x00040000, 0x10041040, 0x10000000, 0x10001040, 0x00000040, 0x10000000, + 0x00040040, 0x10040000, 0x10041040, 0x00041000, 0x10041000, 0x00041040, + 0x00001000, 0x00000040, 0x10040000, 0x10000040, 0x10001000, 0x00001040, + 0x00041000, 0x00040040, 0x10040040, 0x10041000, 0x00001040, 0x00000000, + 0x00000000, 0x10040040, 0x10000040, 0x10001000, 0x00041040, 0x00040000, + 0x00041040, 0x00040000, 0x10041000, 0x00001000, 0x00000040, 0x10040040, + 0x00001000, 0x00041040, 0x10001000, 0x00000040, 0x10000040, 0x10040000, + 0x10040040, 0x10000000, 0x00040000, 0x10001040, 0x00000000, 0x10041040, + 0x00040040, 0x10000040, 0x10040000, 0x10001000, 0x10001040, 0x00000000, + 0x10041040, 0x00041000, 0x00041000, 0x00001040, 0x00001040, 0x00040040, + 0x10000000, 0x10041000, 0x10001040, 0x00001000, 0x00040000, 0x10041040, + 0x10000000, 0x10001040, 0x00000040, 0x10000000, 0x00040040, 0x10040000, + 0x10041040, 0x00041000, 0x10041000, 0x00041040, 0x00001000, 0x00000040, + 0x10040000, 0x10000040, 0x10001000, 0x00001040, 0x00041000, 0x00040040, + 0x10040040, 0x10041000, 0x00001040, 0x00000000, 0x00000000, 0x10040040, + 0x10000040, 0x10001000, 0x00041040, 0x00040000, 0x00041040, 0x00040000, + 0x10041000, 0x00001000, 0x00000040, 0x10040040, 0x00001000, 0x00041040, + 0x10001000, 0x00000040, 0x10000040, 0x10040000, 0x10040040, 0x10000000, + 0x00040000, 0x10001040, 0x00000000, 0x10041040, 0x00040040, 0x10000040, + 0x10040000, 0x10001000, 0x10001040, 0x00000000, 0x10041040, 0x00041000, + 0x00041000, 0x00001040, 0x00001040, 0x00040040, 0x10000000, 0x10041000, + 0x10001040, 0x00001000, 0x00040000, 0x10041040, 0x10000000, 0x10001040, + 0x00000040, 0x10000000, 0x00040040, 0x10040000, 0x10041040, 0x00041000, + 0x10041000, 0x00041040, 0x00001000, 0x00000040, 0x10040000, 0x10000040, + 0x10001000, 0x00001040, 0x00041000, 0x00040040, 0x10040040, 0x10041000, + 0x00001040, 0x00000000, 0x00000000, 0x10040040, 0x10000040, 0x10001000, + 0x00041040, 0x00040000, 0x00041040, 0x00040000, 0x10041000, 0x00001000, + 0x00000040, 0x10040040, 0x00001000, 0x00041040, 0x10001000, 0x00000040, + 0x10000040, 0x10040000, 0x10040040, 0x10000000, 0x00040000, 0x10001040, + 0x00000000, 0x10041040, 0x00040040, 0x10000040, 0x10040000, 0x10001000, + 0x10001040, 0x00000000, 0x10041040, 0x00041000, 0x00041000, 0x00001040, + 0x00001040, 0x00040040, 0x10000000, 0x10041000 }; const u64bit DES::IPTAB1[256] = { 0x0000000000000000ULL, 0x0000000200000000ULL, 0x0000000000000002ULL, 0x0000000200000002ULL, ======================================================================== --- botan/eax.cpp 3d883a13778ce6be5beffd6ab42db67750c0765f +++ botan/eax.cpp bef7d724ecb7f46a5d47292ca28f71badb5d9d06 @@ -11,17 +11,17 @@ namespace { /************************************************* -* EAX OMAC-based PRF * +* EAX MAC-based PRF * *************************************************/ -SecureVector omac_n(byte param, u32bit BLOCK_SIZE, - MessageAuthenticationCode* omac, - const byte in[], u32bit length) +SecureVector eax_prf(byte param, u32bit BLOCK_SIZE, + MessageAuthenticationCode* mac, + const byte in[], u32bit length) { for(u32bit j = 0; j != BLOCK_SIZE - 1; j++) - omac->update(0); - omac->update(param); - omac->update(in, length); - return omac->final(); + mac->update(0); + mac->update(param); + mac->update(in, length); + return mac->final(); } } @@ -34,12 +34,12 @@ TAG_SIZE(tag_size ? tag_size / 8 : block_size_of(cipher_name)), BLOCK_SIZE(block_size_of(cipher_name)) { - const std::string omac_name = "OMAC(" + cipher_name + ")"; + const std::string mac_name = "CMAC(" + cipher_name + ")"; cipher = get_block_cipher(cipher_name); - omac = get_mac(omac_name); + mac = get_mac(mac_name); - if(tag_size % 8 != 0 || TAG_SIZE == 0 || TAG_SIZE > omac->OUTPUT_LENGTH) + if(tag_size % 8 != 0 || TAG_SIZE == 0 || TAG_SIZE > mac->OUTPUT_LENGTH) throw Invalid_Argument(name() + ": Bad tag size " + to_string(tag_size)); state.create(BLOCK_SIZE); @@ -54,7 +54,7 @@ { if(!cipher->valid_keylength(n)) return false; - if(!omac->valid_keylength(n)) + if(!mac->valid_keylength(n)) return false; return true; } @@ -65,8 +65,8 @@ void EAX_Base::set_key(const SymmetricKey& key) { cipher->set_key(key); - omac->set_key(key); - header_mac = omac_n(1, BLOCK_SIZE, omac, 0, 0); + mac->set_key(key); + header_mac = eax_prf(1, BLOCK_SIZE, mac, 0, 0); } /************************************************* @@ -75,8 +75,8 @@ void EAX_Base::start_msg() { for(u32bit j = 0; j != BLOCK_SIZE - 1; j++) - omac->update(0); - omac->update(2); + mac->update(0); + mac->update(2); } /************************************************* @@ -84,7 +84,7 @@ *************************************************/ void EAX_Base::set_iv(const InitializationVector& iv) { - nonce_mac = omac_n(0, BLOCK_SIZE, omac, iv.begin(), iv.length()); + nonce_mac = eax_prf(0, BLOCK_SIZE, mac, iv.begin(), iv.length()); state = nonce_mac; cipher->encrypt(state, buffer); } @@ -94,7 +94,7 @@ *************************************************/ void EAX_Base::set_header(const byte header[], u32bit length) { - header_mac = omac_n(1, BLOCK_SIZE, omac, header, length); + header_mac = eax_prf(1, BLOCK_SIZE, mac, header, length); } /************************************************* @@ -147,7 +147,7 @@ u32bit copied = std::min(BLOCK_SIZE - position, length); xor_buf(buffer + position, input, copied); send(buffer + position, copied); - omac->update(buffer + position, copied); + mac->update(buffer + position, copied); input += copied; length -= copied; position += copied; @@ -159,7 +159,7 @@ { xor_buf(buffer, input, BLOCK_SIZE); send(buffer, BLOCK_SIZE); - omac->update(buffer, BLOCK_SIZE); + mac->update(buffer, BLOCK_SIZE); input += BLOCK_SIZE; length -= BLOCK_SIZE; @@ -168,7 +168,7 @@ xor_buf(buffer + position, input, length); send(buffer + position, length); - omac->update(buffer + position, length); + mac->update(buffer + position, length); position += length; } @@ -177,7 +177,7 @@ *************************************************/ void EAX_Encryption::end_msg() { - SecureVector data_mac = omac->final(); + SecureVector data_mac = mac->final(); xor_buf(data_mac, nonce_mac, data_mac.size()); xor_buf(data_mac, header_mac, data_mac.size()); @@ -253,7 +253,7 @@ *************************************************/ void EAX_Decryption::do_write(const byte input[], u32bit length) { - omac->update(input, length); + mac->update(input, length); u32bit copied = std::min(BLOCK_SIZE - position, length); xor_buf(buffer + position, input, copied); @@ -288,7 +288,7 @@ if((queue_end - queue_start) != TAG_SIZE) throw Integrity_Failure(name() + ": Message authentication failure"); - SecureVector data_mac = omac->final(); + SecureVector data_mac = mac->final(); for(u32bit j = 0; j != TAG_SIZE; j++) if(queue[queue_start+j] != (data_mac[j] ^ nonce_mac[j] ^ header_mac[j])) ======================================================================== --- botan/eax.h 5d9f4d8474c9a222fb53579cbecf4e5a46558fe5 +++ botan/eax.h 616ac13b534dbba4144a76bd601259cc59187bc7 @@ -23,7 +23,7 @@ bool valid_keylength(u32bit) const; - ~EAX_Base() { delete cipher; delete omac; } + ~EAX_Base() { delete cipher; delete mac; } protected: EAX_Base(const std::string&, u32bit); void start_msg(); @@ -31,7 +31,7 @@ const u32bit TAG_SIZE, BLOCK_SIZE; BlockCipher* cipher; - MessageAuthenticationCode* omac; + MessageAuthenticationCode* mac; SecureVector nonce_mac, header_mac, state, buffer; u32bit position; }; ======================================================================== --- botan/es_capi.cpp e42afd863ee6de903cbb45029d513d15abd05d1c +++ botan/es_capi.cpp 368451d386e8cf5bde9e2326e328f8adfc650ee5 @@ -1,6 +1,6 @@ /************************************************* * Win32 CAPI EntropySource Source File * -* (C) 1999-2004 The Botan Project * +* (C) 1999-2005 The Botan Project * *************************************************/ #include ======================================================================== --- botan/es_capi.h 9a7ef5ab05ace7647772a20baa3fb803f9d97249 +++ botan/es_capi.h efbba9ebddda062c38c43b84e2d7058dfe381775 @@ -1,6 +1,6 @@ /************************************************* * Win32 CAPI EntropySource Header File * -* (C) 1999-2004 The Botan Project * +* (C) 1999-2005 The Botan Project * *************************************************/ #ifndef BOTAN_EXT_ENTROPY_SRC_WIN32_CAPI_H__ ======================================================================== --- botan/es_egd.cpp df8fdcbaeb086449cc8387bb62760e7c20178c5c +++ botan/es_egd.cpp 2bf6636a8908506776ca3f8cf6f05370d0f2b47f @@ -1,6 +1,6 @@ /************************************************* * EGD EntropySource Source File * -* (C) 1999-2004 The Botan Project * +* (C) 1999-2005 The Botan Project * *************************************************/ #include ======================================================================== --- botan/es_egd.h 5897aea48effee9ea35a1c21a681466db5dbef7c +++ botan/es_egd.h e5d389bab5e622f5438183f92778c314347f6565 @@ -1,6 +1,6 @@ /************************************************* * EGD EntropySource Header File * -* (C) 1999-2004 The Botan Project * +* (C) 1999-2005 The Botan Project * *************************************************/ #ifndef BOTAN_EXT_ENTROPY_SRC_EGD_H__ ======================================================================== --- botan/license.txt cf2701bb0aafa9d7d4f52f8f044ad6879cdc862e +++ botan/license.txt 8c0441f989ad0c3c9cb5a463dd4382154187e04e @@ -1,4 +1,4 @@ -Copyright (C) 1999-2004 The Botan Project. All rights reserved. +Copyright (C) 1999-2005 The Botan Project. All rights reserved. Redistribution and use in source and binary forms, for any use, with or without modification, is permitted provided that the following conditions are met: ======================================================================== --- botan/mem_pool.cpp 5deff590833f7d17b332f12a417a7b4e1cf91beb +++ botan/mem_pool.cpp 3b09bd3c3d6fdf3aa854529239e9d4e4d8ac18f5 @@ -210,6 +210,7 @@ } } + remove_empty_buffers(real_mem); defrag_free_list(); } } @@ -268,11 +269,9 @@ else real_mem[j].in_use = false; - remove_empty_buffers(real_mem); return; } - throw Internal_Error("Pooling_Allocator: Unknown pointer was freed"); } ======================================================================== --- botan/policy.cpp ab5c3e85a557a472bfdbbc779a55f6deb79389c1 +++ botan/policy.cpp 2969e73e720b3a226776f6f8ede5d24d14bbaaff @@ -172,6 +172,7 @@ add_alias("SHA-1", "SHA-160"); add_alias("SEAL", "SEAL-3.0-BE"); add_alias("MARK-4", "ARC4(256)"); + add_alias("OMAC", "CMAC"); } namespace Init { ======================================================================== --- botan/pubkey.cpp ab5b94948a910abe6d83b35148ac6c460f790a11 +++ botan/pubkey.cpp 4565d64054eb4cda0b3abbf7022978292124d46a @@ -159,6 +159,14 @@ /************************************************* * Add more to the message to be signed * *************************************************/ +void PK_Signer::update(byte in) + { + update(&in, 1); + } + +/************************************************* +* Add more to the message to be signed * +*************************************************/ void PK_Signer::update(const MemoryRegion& in) { update(in, in.size()); @@ -248,9 +256,17 @@ /************************************************* * Append to the message * *************************************************/ +void PK_Verifier::update(byte in) + { + update(&in, 1); + } + +/************************************************* +* Append to the message * +*************************************************/ void PK_Verifier::update(const MemoryRegion& in) { - emsa->update(in, in.size()); + update(in, in.size()); } /************************************************* ======================================================================== --- botan/pubkey.h dfcf36d1bc7eb006d8a593eb5f5a4a7e876171b8 +++ botan/pubkey.h f98be2d1a95ff8e0cee18613917206aa7e1c6108 @@ -47,8 +47,11 @@ public: SecureVector sign_message(const byte[], u32bit); SecureVector sign_message(const MemoryRegion&); + + void update(byte); void update(const byte[], u32bit); void update(const MemoryRegion&); + SecureVector signature(); void set_output_format(Signature_Format); @@ -71,6 +74,7 @@ bool verify_message(const MemoryRegion&, const MemoryRegion&); + void update(byte); void update(const byte[], u32bit); void update(const MemoryRegion&); ======================================================================== --- botan/thanks.txt 9971c734b99b04a2b95379e8c1b801d6857d5967 +++ botan/thanks.txt 02b4d75b3334c2069a8899f6f775de13b8da7498 @@ -12,13 +12,17 @@ Darren Starsmore Dan Nicolaescu + Matt Johnston + Hany Greiss Dominik Vogt - Hany Greiss + Kaushik Veeraraghavan James Widener Jeff B Ken Perano + Mike Desjardins Ying-Chieh Liao Vaclav Ovsik + Friedemann Kleint In addition, the following people have unknowingly contributed help: @@ -38,9 +42,7 @@ of one of the boolean functions, which was discovered by Colin Plumb. The design of Randpool takes some of it's design principles from those + suggested by Eric A. Young in his SSLeay documentation, Peter Gutmann's paper + "Software Generation of Practically Strong Random Numbers", and the paper + "Cryptanalytic Attacks on Pseudorandom Number Generators", by Kelsey, + Schneier, Wagner, and Hall. - suggested by Eric A. Young in his SSLeay documentation and Peter Gutmann's - paper "Software Generation of Practically Strong Random Numbers". - - ANSI_X917_RNG's design was changed from the X9.17 standard in response to the - attacks presented in the paper "Cryptanalytic Attacks on Pseudorandom Number - Generators", by Kelsey, Schneier, Wagner, and Hall. ======================================================================== --- botan/util.cpp bffaf59d7153d3f2f8b5482031a10a4b68a2d00e +++ botan/util.cpp 2e15565b61e10420fb51c9e841807dea7fdf9f4e @@ -41,66 +41,6 @@ } /************************************************* -* Byte Reversal Functions * -*************************************************/ -u16bit reverse_bytes(u16bit input) - { - return rotate_left(input, 8); - } - -u32bit reverse_bytes(u32bit input) - { - input = ((input & 0xFF00FF00) >> 8) | ((input & 0x00FF00FF) << 8); - return rotate_left(input, 16); - } - -u64bit reverse_bytes(u64bit input) - { - input = ((input & 0xFF00FF00FF00FF00ULL) >> 8) | - ((input & 0x00FF00FF00FF00FFULL) << 8); - input = ((input & 0xFFFF0000FFFF0000ULL) >> 16) | - ((input & 0x0000FFFF0000FFFFULL) << 16); - return rotate_left(input, 32); - } - -/************************************************* -* Bit Reversal Functions * -*************************************************/ -byte reverse_bits(byte input) - { - input = ((input & 0xAA) >> 1) | ((input & 0x55) << 1); - input = ((input & 0xCC) >> 2) | ((input & 0x33) << 2); - return rotate_left(input, 4); - } - -u16bit reverse_bits(u16bit input) - { - input = ((input & 0xAAAA) >> 1) | ((input & 0x5555) << 1); - input = ((input & 0xCCCC) >> 2) | ((input & 0x3333) << 2); - input = ((input & 0xF0F0) >> 4) | ((input & 0x0F0F) << 4); - return reverse_bytes(input); - } - -u32bit reverse_bits(u32bit input) - { - input = ((input & 0xAAAAAAAA) >> 1) | ((input & 0x55555555) << 1); - input = ((input & 0xCCCCCCCC) >> 2) | ((input & 0x33333333) << 2); - input = ((input & 0xF0F0F0F0) >> 4) | ((input & 0x0F0F0F0F) << 4); - return reverse_bytes(input); - } - -u64bit reverse_bits(u64bit input) - { - input = ((input & 0xAAAAAAAAAAAAAAAAULL) >> 1) | - ((input & 0x5555555555555555ULL) << 1); - input = ((input & 0xCCCCCCCCCCCCCCCCULL) >> 2) | - ((input & 0x3333333333333333ULL) << 2); - input = ((input & 0xF0F0F0F0F0F0F0F0ULL) >> 4) | - ((input & 0x0F0F0F0F0F0F0F0FULL) << 4); - return reverse_bytes(input); - } - -/************************************************* * Return true iff arg is 2**n for some n > 0 * *************************************************/ bool power_of_2(u64bit arg) ======================================================================== --- botan/util.h f79616d4efd20a9b88d57cdc3f536bc389e4b12f +++ botan/util.h bc34ee6faa38faa9e3a176cf4b046cec86020ad9 @@ -56,21 +56,6 @@ void xor_buf(byte[], const byte[], const byte[], u32bit); /************************************************* -* Byte Swapping Functions * -*************************************************/ -u16bit reverse_bytes(u16bit); -u32bit reverse_bytes(u32bit); -u64bit reverse_bytes(u64bit); - -/************************************************* -* Bit Swapping Functions * -*************************************************/ -byte reverse_bits(byte); -u16bit reverse_bits(u16bit); -u32bit reverse_bits(u32bit); -u64bit reverse_bits(u64bit); - -/************************************************* * Timer Access Functions * *************************************************/ u64bit system_time(); ======================================================================== --- botan/x931_rng.cpp 7f93d680b7e6c71a3b9fcf1f8af051062cdddb16 +++ botan/x931_rng.cpp ddea0d278bffdcc62a9a0a9cefca860fc4447c44 @@ -104,19 +104,20 @@ /************************************************* * ANSI X931 RNG Constructor * *************************************************/ -ANSI_X931_RNG::ANSI_X931_RNG(RandomNumberGenerator* prng_ptr) +ANSI_X931_RNG::ANSI_X931_RNG(const std::string& cipher_name, + RandomNumberGenerator* prng_ptr) { - cipher = get_block_cipher("AES-256"); + if(cipher_name == "") + cipher = get_block_cipher("AES-256"); + else + cipher = get_block_cipher(cipher_name); const u32bit BLOCK_SIZE = cipher->BLOCK_SIZE; V.create(BLOCK_SIZE); R.create(BLOCK_SIZE); - if(prng_ptr) - prng = prng_ptr; - else - prng = new Randpool; + prng = (prng_ptr ? prng_ptr : new Randpool); position = 0; } ======================================================================== --- botan/x931_rng.h 867850aff3df63007e12886ed6d00c338496b93e +++ botan/x931_rng.h 7379e614f20e55ff4bd65c3f9d40ed90d990c80e @@ -20,7 +20,8 @@ bool is_seeded() const; void clear() throw(); std::string name() const; - ANSI_X931_RNG(RandomNumberGenerator* = 0); + + ANSI_X931_RNG(const std::string& = "", RandomNumberGenerator* = 0); ~ANSI_X931_RNG(); private: void add_randomness(const byte[], u32bit);