From: Mark Wooding Date: Sun, 19 Jul 2020 22:10:05 +0000 (+0100) Subject: symm/square-mktab.c, etc.: Provide enough round constants for short keys. X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb/commitdiff_plain/1c54c7d261e18560a07ba9e809f4aaff0c64e647 symm/square-mktab.c, etc.: Provide enough round constants for short keys. It turns out that one needs 35 round constants to correctly schedule a 32-bit key, not just 32. It further turns out that Clang orders the various constant tables differently from GCC, which leads to the two implementations producing different, but both incorrect, answers. This is all very embarrassing. Fortunately, nobody will use a 32-bit key and expect anything useful to come of it, and no larger key size is affected. I think the main effect is that a bunch of the mode test vectors needed changing. --- diff --git a/symm/square-mktab.c b/symm/square-mktab.c index cc26f580..70d7e049 100644 --- a/symm/square-mktab.c +++ b/symm/square-mktab.c @@ -38,7 +38,7 @@ static octet s[256], si[256]; static uint32 t[4][256], ti[4][256]; static uint32 u[4][256]; -static octet rc[32]; +static octet rc[35]; /*----- Main code ---------------------------------------------------------*/ @@ -333,7 +333,7 @@ const uint32 square_u[4][256] = {\n\ fputs("\ /* --- The round constants --- */\n\ \n\ -const octet square_rcon[32] = {\n\ +const octet square_rcon[35] = {\n\ ", stdout); for (i = 0; i < sizeof(rc); i++) { printf("0x%02x", rc[i]); diff --git a/symm/square.c b/symm/square.c index 888d4957..34d313d7 100644 --- a/symm/square.c +++ b/symm/square.c @@ -47,7 +47,7 @@ const octet square_keysz[] = { KSZ_RANGE, SQUARE_KEYSZ, 4, 16, 4 }; extern const octet square_s[256], square_si[256]; extern const uint32 square_t[4][256], square_ti[4][256]; extern const uint32 square_u[4][256]; -extern const octet square_rcon[32]; +extern const octet square_rcon[35]; #define S square_s #define SI square_si diff --git a/symm/t/square b/symm/t/square index 9d0cbf9a..4adf5625 100644 --- a/symm/t/square +++ b/symm/t/square @@ -525,16 +525,16 @@ square { square-cmac { f260d7bc "" - 29984a33657f622352c1ee581eab804e; + a6c67fdb36ee9d8552f4112e08d64d76; da163547 d3 - cdc5e3485007695cdeb53ce1e8cec39e; + df74a9ab4bb73ba0904abebbc8aafd31; 48b75511 95e77022907dd1dff7dac5c9941d26d0c6eb14ad568f86edd1dc9268eeee533285a6ed810c9b689daaa9060d2d4b6003 - 7fdd1689e5a004d05b0bc92e3ecc8f16; + 93b8e5f20003a16bbc160e0010c09ad2; 062365b0 a54364c76c160f11896c4794846ecfa14a7130c9f137120634c9519848a877ff77bf79192a5b50ade5d9cd - 95f37b226b5f157fb68c9b235085799a; + fc6bc3e49f756681f782dabfaecabdab; 739a3d1f337f29549e6b0d27 "" c48de9e2768ea55c731b65c22052aebd; @@ -573,25 +573,25 @@ square-ccm { eb "" "" - bba9ea11; + 0b77d435; 14ad568f 86edd1dc9268eeee533285 "" a6 0a - 507bd8ea; + a1d8e1c8; ed810c9b 689daaa9060d2d4b60 03062365b0a54364c76c160f11896c4794846ecfa14a7130c9f137120634c9519848a877ff77bf79192a5b50ade5d9cd 739a3d1f337f29549e6b0d27a4ba234085406a6136512061f7080cc07df0591d8fa21f2dd88374d8cde8e160ad10997a - 2de5299d997f5a95d32115f84b8cbc072043580e27bb6ace6654173512e0d464ce4358899c43ac2befe5cbe68155797b - 217a8c66edf6aad2f17f555c8936028b; + 2de5299de77f5a9551211586c48cc2fb2043580e59bb6acee454174b9de0aa98ce435889e243ac2b6de5cb980e550787 + 890c514f7759ae037140eef723181c48; 21635c6d 62c9269029df3e6057 acc87638f508046733d9ff61cdbda3b3e9878731ebfedd4705e505da1435dceaa7b1cc49ae1d50c38201a8 94476b3f102b752eb9529533966f27043eb621b7f65b000961040ef2f9b2fc5fa450727a9b542cde52ebfda19d0ccc520f215eb57b - f88c7d34053cc7278c3e3b09715ab3dec3aa050aa70aa6dcd560a9ea58ddd10857b9bcffb98e2af8a3c851f60f540ab8872af0df1d - a65b843ead57238ecd6bf0eea46d6fbe; + f88c7d347b3cc7270e3e3b77fe5acd22c3aa050ad90aa6dc5760a994d7ddaff457b9bcffc78e2af821c8518880547444872af0df63 + 06f53d976392e9e86ac221394b5fb07c; b3a4f3ebbbb18ac6c95a97a4 8030370c33d090c54215ab "" @@ -660,37 +660,37 @@ square-eax { "" "" "" - 66848361a1d85500e3efc4889f3c2bd1; + 68950a6ce18037350d23d4b89f253b27; da163547 d3 "" "" "" - 3e14f9c0f9b208db9a52730d00525dc6; + aff75e00b2b5ec870ee51a74b87f658b; 48b75511 "" 95 "" "" - 1b81e7698ff5e258ea2e8f75b7bcfd88; + d62f0eac68b965fbb852442a082b390e; e7702290 "" "" 7d d5 - c256dd01d1ee4db1387ef0f0b3d43b57; + 3b4a842254e17ddd4906899551af908c; d1dff7da c5c9941d26d0c6eb14ad568f86edd1dc 9268eeee533285a6ed810c9b689daaa9060d2d4b6003062365b0a54364c76c160f11896c4794846ecfa14a7130c9f137 120634c9519848a877ff77bf79192a5b50ade5d9cd739a3d1f337f29549e6b0d27a4ba234085406a6136512061f7080c - cd9fbedf0befc513ec208493902b99f4e304654e0460d29920804d69dc150fa3e31d86a755ba930d0211fee9b7ca5f9f - f01b0b0089bf48fedc2c21556a1b644a; + 792f3471e561f7f3c2da13d0ea08d8b4299c8514c61fc51896804fe26089afebe792f88719672f75b3656f491e894635 + 0515fe199fc47f8f105e5ce90fa181ea; c07df059 1d8fa21f2dd88374d8cde8e160ad10 997a21635c6d62c9269029df3e6057acc87638f508046733d9ff61cdbda3b3e9878731ebfedd4705e505da 1435dceaa7b1cc49ae1d50c38201a894476b3f102b752eb9529533966f27043eb621b7f65b000961040ef2f9b2fc5fa450727a9b54 - b88f48021b69e18d9457120fc11ebdd467c0b1119b5ab0bd16a5c3aa70e263d3ab841cbe6bba4fd02c94690dd143746294f825c26f - e0efd3bd220277de49de30272939c21c; + 19a55efbd17a2244fe3c555e336fc60c40e085e44dde6f28ea6e3194127b46e45cb6245c82a396f1f29f784edcb0055d3f04e30eb0 + 074a5996cc3961dfceed8fe3d2863452; 2cde52ebfda19d0ccc520f21 "" "" @@ -771,43 +771,43 @@ square-gcm { "" "" "" - 66ac17c939ebd05ca617e77ba83201e9; + 66ac17c947ebd05c2417e70527327f15; da163547 d3 "" "" "" - 8361e8e723233ce477ef9132624bfb9e; + a793a26107dd3c18ba0431c52f2708af; 48b75511 "" 95 "" "" - 29a7e874d6054c42dcc1ada2e6f38cf8; + 19d3533dcde0922c2d3ffc53bb921da8; e7702290 "" "" 7d 7d - d439d2be5e01a0d767739abd80dbc293; + d51f111bc7c1b32ab76788e279cd208c; d1dff7da c5c9941d26d0c6eb14ad568f86edd1dc 9268eeee533285a6ed810c9b689daaa9060d2d4b6003062365b0a54364c76c160f11896c4794846ecfa14a7130c9f137 120634c9519848a877ff77bf79192a5b50ade5d9cd739a3d1f337f29549e6b0d27a4ba234085406a6136512061f7080c - f36d7d44b8637a2a560a8e89a7a5a5c754de68194a47bb2befdf2384e91eb38cc70807a42a687eb3113c9c223e1c8763 - e13b8f67d62247d887180b4cfb90eb6b; + 3c011823aab23337e5a5c1d3bc7422b6216ffbea8135a4e2ffb11dfb68c2a14e746ffc5b48f0551c9f22642faf9835d8 + 35aaf9095f76e809798699ffbe1c0b0a; c07df059 1d8fa21f2dd88374d8cde8e1 60ad10997a21635c6d62c9269029df3e6057ac c87638f508046733d9ff61cdbda3b3e9878731ebfedd4705e505da1435dceaa7b1cc49ae1d50c38201a894476b3f102b752eb9529533966f27 - 863f1602c0fb45b1a3264e8140b5addd0a82feb9b5e632fc539b3ed83667eecbf32c65dcacec865ea475c3506d61d00db1ba24288ba1a13ef1 - 58de876618ed18d0aab09ef9acd06bae; + 863f1602befb45b121264effcfb5d3210a82feb9cbe632fcd19b3ea6b9679037f32c65dcd2ec865e2675c32ee261aef1b1ba2428f5a1a13e73 + 80d044d5151c9bd4360850268cf9b6f6; 043eb621 b7f65b000961040ef2f9b2fc5fa450 727a9b542cde52ebfda19d0ccc520f215eb57bb3a4f3ebbbb18ac6c95a97a48030370c33d090c54215abd6 b3ad54efc9a38378c5b93bf4f2aad2605faee2b03fb648e27fff63102758fe2b69ac26afa3349829b94586306fed54154f8f28523c - 1e559d1bc26402ae885ebcb0946a573d44df5d59476510247197bc816467f5386887c5543f3a2256e26f44a91b31afcb7bcc85b2dc - 83783d53918eff6b310540ac8c1c5d85; + 8eade4d2955ca654b8aab9e25092f2ec8885f08960d1692a8c09bec546d8fd396dc75e52f6331a96391fa8e4a7d18b25bc86ae6aab + cca26d676181ec28242129be174ef96c; 03d4de1600157846b710ee72 "" "" @@ -900,43 +900,43 @@ square-ocb1 { "" "" "" - 4ec5c312526c730e41458aca324ae0a0; + 9517fb39f874f5eb9492ab804cac53a0; dff7dac5 c9941d26d0c6eb14ad568f86edd1dc92 68 "" "" - d0cc24f9084261cdaf4393e7b250701b; + f250f3dd82723801fae0678035528efe; eeee5332 85a6ed810c9b689daaa9060d2d4b6003 "" 06 - 72 - 1e1671f47f5bd8b32ebb09c019105281; + 7e + 9d05909f6a5484b677be057af1ea2a8a; 2365b0a5 4364c76c160f11896c4794846ecfa14a "" 7130c9f137120634c9519848a877ff77bf79192a5b50ade5d9cd739a3d1f337f29549e6b0d27a4ba234085406a613651 - 11e134a63441fc0951b37098764822d6eaa47187fe96a2f3658563cc612c857f0dd5d4e056c820a3670828dd7f5a9d1c - 86893621402b0a64fded1b34d47504fb; + 90236cc04b3ce7ab2c782d22fb93b02ae0583bb026f837c28a6e4ae22b533878255b39b158962faf8814c99423e5fa64 + 29a472eb0282c912127b000174003c50; 2061f708 0cc07df0591d8fa21f2dd88374d8cde8 e160ad10997a21635c6d62c9269029df3e6057acc87638f508046733d9ff61cdbda3b3e9878731ebfedd4705e505da14 35dceaa7b1cc49ae1d50c38201a894476b3f102b752eb9529533966f27043eb621b7f65b000961040ef2f9b2fc5fa450 - 1599b31480519c999bbc9fd4fb1a24676071040c16ff4a6834cdaf46c51ccbb9522cfde0e2df2867871cabd4aa73c33a - e8e411a4ac803610a4f2a8e1b6aabba9; + f16cf340bff7a524dd6b369039ef6eb7f1e0bae5814c79864964a2cb624b56041fe2c7f997b5d3760324b40197e72a0d + fab36fdf2f2c4ded8846e9d22e6ac9a8; 727a9b54 2cde52ebfda19d0ccc520f215eb57bb3 "" a4f3ebbbb18ac6c95a97a48030370c33d090c54215abd6b3ad54efc9a38378c5b93bf4f2aad2605faee2b03fb648e27fff63102758 - 384781d5a43f9e0d692787efd9cbbff3f8cc6e154544695653e495e63b3da9730b781b214f5c8f6d940542c76c24f0acacfcf099c0 - 5fa2cade7fa22e8df91b9f91593f9d3a; + 2469ec52037cd3e95b25de4c6ef7be38887e49d789f649a91cb0301fc2a94d80377a623f24afb58e9428b5c089cb6eecd6a7408678 + 357e06fe7770804cccb09d3f80cad777; fe2b69ac 26afa3349829b94586306fed54154f8f 28523c03d4de1600157846b710ee72807a2219bfb474fd71d891f24bb65d1563259f9eb53b571ea629c54d 57dd2d42f70800df9fcbaca48b77dba189196d1ebba10b0467cb9fc2712a199e533fa9156308cdec3f768281e040a9b9a222bd689a - 4c8c3874f73c8504b64bbe612589c103a462720d244c3092221b6c7b31a162aebefaea934d2ac8eb9e03f8f480aa1407d58a8a8e0f - 03fa1ede942984e0ae4f30946f7e0201; + d0a3845096db507a5f0fd48124160df0b71c43dcbcdb4383629901895b30f400b59087532c0357816645f6d972c8ec143524b1b628 + 6ef130cca6a884d3a8a04d06ae1ad5fc; ef66f5306ceb0c6b08ac8b0a 22260c571b4a42bb8fdb233bfa6a5cfb "" @@ -1026,16 +1026,16 @@ square-ocb1 { square-pmac1 { f260d7bc "" - aec43cacfa9e76ed9f6c0176974d1111; + aec43cac849e76ed1d6c0108184d6fed; da163547 d3 - 38e2ce3d69f8fb21ed28599d77607fe8; + 38e2ce3d17f8fb216f2859e3f8600114; 48b75511 95e77022907dd1dff7dac5c9941d26d0c6eb14ad568f86edd1dc9268eeee533285a6ed810c9b689daaa9060d2d4b6003 - 7c8785ab3dcb7d71ba3d6fcf7ba32376; + 65c61b1f4a19d8c1a15e7f7f77fed761; 062365b0 a54364c76c160f11896c4794846ecfa14a7130c9f137120634c9519848a877ff77bf79192a5b50ade5d9cd - b21eb39143554c29a104eb7ca8d10ca8; + 0df810432393db82d08f39204917e303; 739a3d1f337f29549e6b0d27 "" 8a5016e4834fa9fe8ef64746a89189ce; @@ -1068,43 +1068,43 @@ square-ocb3 { "" "" "" - b1669cbf9b59f73b4288eb0761332190; + 43ecf932f2a50f9a85f7dedbee4a09f2; 7dd1dff7 dac5c9941d26d0c6eb14ad568f86 ed "" "" - 780716f09513ecb8dd6f322f3901fd27; + 4e23472f7776db3c194a95e9523bfb69; d1dc9268 eeee533285a6ed810c9b689daaa9 "" 06 - b8 - 1fcf843450fa4d3da50d8de6525119eb; + 06 + 80f022fdba9a783af386696a7468a7d0; 0d2d4b60 03062365b0a54364c76c16 "" 0f11896c4794846ecfa14a7130c9f137120634c9519848a877ff77bf79192a5b50ade5d9cd739a3d1f337f29549e6b0d - 33f91dd536f3667b220ac4fa9ef6bec830fc052968f5c3c78141ad56254dbe7fff02e85ea5a278bce0c9a5037caa31f0 - 11621f557ad6c52a82e8d9495bb284e2; + ec00fcf09bc64fb96c5630b05426c0f3e11c4e5e278f64dd5391ee47cb3765af3407824e449c2f3ad2e53b1d7a754391 + 838c24cc6117a97999b82d8a6f49927f; 27a4ba23 4085406a6136512061f7080cc0 7df0591d8fa21f2dd88374d8cde8e160ad10997a21635c6d62c9269029df3e6057acc87638f508046733d9ff61cdbda3 b3e9878731ebfedd4705e505da1435dceaa7b1cc49ae1d50c38201a894476b3f102b752eb9529533966f27043eb621b7 - 1859d78e9ad0fbc8bf76a97f08e6de088994238974dce458f7dc145948b8ba9f8b8f52c82a1ff60046350eeec8936379 - 350f84d218392b1282daa7db5ebc4e5e; + 688100f96e36393c78db3753d70228a939eb45ddb3692356fad4b74ade71fea04546dccc6896115975a92e7d715e329b + a00f680ac9305870d77686138a56be0d; f65b0009 61040ef2f9b2fc5fa450727a9b54 "" 2cde52ebfda19d0ccc520f215eb57bb3a4f3ebbbb18ac6c95a97a48030370c33d090c54215abd6b3ad54efc9a38378c5b93bf4f2aa - 664cabfb69a25342a0bcc17049c316c78c412df3efbf75cc192b936dccf87b3c094d51468c20911a477cd6a214c403ff99abec313a - 09b989eae5e6973b675f06ab4b9ad1e7; + 47cba1883ecfcb1c960a4af93ca6a30d74cd55635368c2523b675910d02e63ec2f6255396d7a9325d8bce6913293860c952f3755c3 + 1c31d84f0f6360eb2dd47910f1375c61; d2605fae e2b03fb648e27fff63102758fe2b 69ac26afa3349829b94586306fed54154f8f28523c03d4de1600157846b710ee72807a2219bfb474fd71d8 91f24bb65d1563259f9eb53b571ea629c54d57dd2d42f70800df9fcbaca48b77dba189196d1ebba10b0467cb9fc2712a199e533fa9 - 9f53984003391daa1fe81c1e9385d1d902f330b930b225a8164f06adeaff820d08dfceeba9ae1a9639d556bba8ad6563186d022240 - 64d960c38db07c9ede67bd56b122544e; + d8a4afa64f98f4dc2a74ac259523c9201f96b07b7521a3c6a25b40b62c52fb1e65a993715cc737afc6e84b8ad7eb31386ee8bc8941 + 05c0bdead7d29c226d28e8d257555b3e; 156308cdec3f768281e040a9 b9a222bd689aef66f5306ceb0c6b "" @@ -1195,13 +1195,13 @@ square-ocb3-mct { 16 47b0a29f45c1b000f1a0c27eee7f42e7; 12 7a80e7d6e556778f77a327928ff4dc35; 8 886bfcb71cd24995911ed011b231d99e; - 4 d0b2597b73f284932af5a5db0fd1fb3d; + 4 6554bcd7716933559def79025d3c06ba; 16 5c3d0dfbee0d8977a7cee660; 12 6057212ee2684bb36520d44b; 8 5f0f721b8171461d242bb883; - 4 127b569653ace9af8aac7f47; + 4 bd7b3db643c64178da4896a5; 16 4184125b37fbd3fc; 12 258e75d36b5359b3; 8 bd8c4a18f64be7cf; - 4 55a5c5e40c4de0e9; + 4 4f39f80256368cc0; }