symm/square-mktab.c, etc.: Provide enough round constants for short keys.
authorMark Wooding <mdw@distorted.org.uk>
Sun, 19 Jul 2020 22:10:05 +0000 (23:10 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Sun, 19 Jul 2020 22:20:32 +0000 (23:20 +0100)
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.

symm/square-mktab.c
symm/square.c
symm/t/square

index cc26f58..70d7e04 100644 (file)
@@ -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]);
index 888d495..34d313d 100644 (file)
@@ -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
index 9d0cbf9..4adf562 100644 (file)
@@ -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;
 }