symm/ccm.h, symm/ccm-def.h: Implement the CCM authenticated encryption mode.
[catacomb] / symm / t / rijndael.local
index 4039dbb..3060c55 100644 (file)
@@ -92,6 +92,377 @@ rijndael-cmac {
     9c0f16e39815d4e9cfce3ed1ecdf3d264a7f16cb16c2e815f422cdf0c8e30308be3c31e6bc58c0b7cadcb6
     3a2d6cd3d65ba29059613d7e6b6e1278;
 }
+
+rijndael-ccm {
+  ## From the Housley, Whiting, and Ferguson submission to NIST, somewhat
+  ## rearranged because of the bizarre (and undocumented) nonce structure.
+
+  c0c1c2c3c4c5c6c7c8c9cacbcccdcecf
+    00000003020100a0a1a2a3a4a5
+    0001020304050607
+    08090a0b0c0d0e0f101112131415161718191a1b1c1d1e
+    588c979a61c663d2f066d0c2c0f989806d5f6b61dac384
+    17e8d12cfdf926e0;
+  c0c1c2c3c4c5c6c7c8c9cacbcccdcecf
+    00000004030201a0a1a2a3a4a5
+    0001020304050607
+    08090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
+    72c91a36e135f8cf291ca894085c87e3cc15c439c9e43a3b
+    a091d56e10400916;
+  c0c1c2c3c4c5c6c7c8c9cacbcccdcecf
+    00000005040302a0a1a2a3a4a5
+    0001020304050607
+    08090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20
+    51b1e5f44a197d1da46b0f8e2d282ae871e838bb64da859657
+    4adaa76fbd9fb0c5;
+  c0c1c2c3c4c5c6c7c8c9cacbcccdcecf
+    00000006050403a0a1a2a3a4a5
+    000102030405060708090a0b
+    0c0d0e0f101112131415161718191a1b1c1d1e
+    a28c6865939a9a79faaa5c4c2a9d4a91cdac8c
+    96c861b9c9e61ef1;
+  c0c1c2c3c4c5c6c7c8c9cacbcccdcecf
+    00000007060504a0a1a2a3a4a5
+    000102030405060708090a0b
+    0c0d0e0f101112131415161718191a1b1c1d1e1f
+    dcf1fb7b5d9e23fb9d4e131253658ad86ebdca3e
+    51e83f077d9c2d93;
+  c0c1c2c3c4c5c6c7c8c9cacbcccdcecf
+    00000008070605a0a1a2a3a4a5
+    000102030405060708090a0b
+    0c0d0e0f101112131415161718191a1b1c1d1e1f20
+    6fc1b011f006568b5171a42d953d469b2570a4bd87
+    405a0443ac91cb94;
+  c0c1c2c3c4c5c6c7c8c9cacbcccdcecf
+    00000009080706a0a1a2a3a4a5
+    0001020304050607
+    08090a0b0c0d0e0f101112131415161718191a1b1c1d1e
+    0135d1b2c95f41d5d1d4fec185d166b8094e999dfed96c
+    048c56602c97acbb7490;
+  c0c1c2c3c4c5c6c7c8c9cacbcccdcecf
+    0000000a090807a0a1a2a3a4a5
+    0001020304050607
+    08090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
+    7b75399ac0831dd2f0bbd75879a2fd8f6cae6b6cd9b7db24
+    c17b4433f434963f34b4;
+  c0c1c2c3c4c5c6c7c8c9cacbcccdcecf
+    0000000b0a0908a0a1a2a3a4a5
+    0001020304050607
+    08090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20
+    82531a60cc24945a4b8279181ab5c84df21ce7f9b73f42e197
+    ea9c07e56b5eb17e5f4e;
+  c0c1c2c3c4c5c6c7c8c9cacbcccdcecf
+    0000000c0b0a09a0a1a2a3a4a5
+    000102030405060708090a0b
+    0c0d0e0f101112131415161718191a1b1c1d1e
+    07342594157785152b074098330abb141b947b
+    566aa9406b4d999988dd;
+  c0c1c2c3c4c5c6c7c8c9cacbcccdcecf
+    0000000d0c0b0aa0a1a2a3a4a5
+    000102030405060708090a0b
+    0c0d0e0f101112131415161718191a1b1c1d1e1f
+    676bb20380b0e301e8ab79590a396da78b834934
+    f53aa2e9107a8b6c022c;
+  c0c1c2c3c4c5c6c7c8c9cacbcccdcecf
+    0000000e0d0c0ba0a1a2a3a4a5
+    000102030405060708090a0b
+    0c0d0e0f101112131415161718191a1b1c1d1e1f20
+    c0ffa0d6f05bdb67f24d43a4338d2aa4bed7b20e43
+    cd1aa31662e7ad65d6db;
+  aca23752615c82c1d454c4fc1462dcf3
+    00b9965d963ec163c54530549a
+    20f2c84a078983d6
+    d9215a08e37911f08e13e868d561fd8de3bc968e0978ae
+    8ca7df83589d89f1e2f9633a4e219e4e8c4daf918cbd4a
+    795fa85da6e5711c;
+  aca23752615c82c1d454c4fc1462dcf3
+    0044144a825d7363c54530549a
+    23bc9db76f5e4761
+    5297b4a9984845b03b01cf4794fa66cf27cc89c002ff4a4b
+    c7d563f1e02eb4f54919ae707d6cc9573ca85434f3559b30
+    78aeda0f601d877e;
+  aca23752615c82c1d454c4fc1462dcf3
+    00aaf7bf9d75c663c54530549a
+    86eec4ba8409465f
+    875547667e2424abb2a30fde33b6e81c2b5c1c5629b262555c
+    a15c03b3d37d1f5fba858d394997e935c44985212cfaed5037
+    bd7dd7a68f95a476;
+  aca23752615c82c1d454c4fc1462dcf3
+    0040da4cf416fc63c54530549a
+    15801a12adb41e13223d9c4f
+    f1d25ee5bd3014d5eb7254c3c62ded9d1dbb7d
+    0c9c100d74193c6d5679cd01b6418fff3a4fe4
+    7cf0866237842658;
+  aca23752615c82c1d454c4fc1462dcf3
+    002c2cbdfa28bf63c54530549a
+    d9808ff2b59b6a89bf9c4a82
+    05bba8822b40f4803253fb91f0b5bcf60ee5dd95
+    b5b3b7fab03d662e1842333328466dd81dd8fe3d
+    6f8c861ab1617dc3;
+  aca23752615c82c1d454c4fc1462dcf3
+    0016230909f7cc63c54530549a
+    9b85df31226b387fdf8ddd4d
+    4eb993044b71beddc6ef3f287197e4d46e9f29e427
+    a0e19481ba549ce66fadd81937a09a4f542b2f421d
+    12695462fd931591;
+  aca23752615c82c1d454c4fc1462dcf3
+    00797b71e3c96963c54530549a
+    e7e6473a07dacca4
+    9436254b379e38d73861ca027fc79b0440aba519e9e1dc
+    0d22d68dc1d39934f8e5882c2058436a0cc58e03258b4e
+    2bb39e01a568aba1f1ba;
+  aca23752615c82c1d454c4fc1462dcf3
+    0083ae22deb9b163c54530549a
+    a1c6b900678806b8
+    37709803b3fff94ffac1150b28a3cef1bf4feea0ff19541c
+    3103c511e43dc5e01aba07db0b84a443a1e3425983c3fe7e
+    19c626fd947eafb9c1b3;
+  aca23752615c82c1d454c4fc1462dcf3
+    006541e08f013463c54530549a
+    ea6abbb54793ecc2
+    eb0e990f88cfb0e78c1d6196890f8b6fa7787fe2dd85a72355
+    a449f8b7a3c9d0c3fca9a6e7a89953fdbbb5d4d05dc77f67ae
+    4efbc470d8a0b1c4f967;
+  aca23752615c82c1d454c4fc1462dcf3
+    00ede32aa3875a63c54530549a
+    869cbaf565fbb429d4603ace
+    6cd5e33d9e5ff526e21b24f40d6b15e5ed25fb
+    450c728aac9be3105cbe74653ffd52feb4a5ad
+    d6db7bc4dfdfc165dd93;
+  aca23752615c82c1d454c4fc1462dcf3
+    0073331529b3db63c54530549a
+    934cae407d3e300ae7111b43
+    e9a5e8b187d1e7baa3ad94fcf9e1b25aff726259
+    5f7716b16a6218b2a44033c29260df1d75caadd4
+    583c50b41845b3867f21;
+  aca23752615c82c1d454c4fc1462dcf3
+    00cdf8f729be7363c54530549a
+    6dbf3223e9758ce37ed8e2a9
+    ab8db40bc61588976d79d96e3012f0ff60e37e0732
+    220bb8f4aba55c7d573f1f2fbd3d78a4361c665f51
+    659f6d2e866db4de0e97;
+
+  ## From NIST SP800-38C.
+  404142434445464748494a4b4c4d4e4f
+    10111213141516
+    0001020304050607
+    20212223
+    7162015b
+    4dac255d;
+  404142434445464748494a4b4c4d4e4f
+    1011121314151617
+    000102030405060708090a0b0c0d0e0f
+    202122232425262728292a2b2c2d2e2f
+    d2a1f0e051ea5f62081a7792073d593d
+    1fc64fbfaccd;
+  404142434445464748494a4b4c4d4e4f
+    101112131415161718191a1b
+    000102030405060708090a0b0c0d0e0f10111213
+    202122232425262728292a2b2c2d2e2f3031323334353637
+    e3b201a9f5b71a7a9b1ceaeccd97e70b6176aad9a4428aa5
+    484392fbc1b09951;
+
+  ## Other NIST examples.
+  404142434445464748494a4b4c4d4e4f
+    10111213141516
+    ""
+    202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f
+    7162015bc051951e5918aeaf3c11f3d4ac363f8d5b6af3d369603b04f24cae29964e2f2bf9d31143f72527ce2db402eab7660e4a10b08e82266517cdf60267f9
+    c66b655c;
+  404142434445464748494A4B4C4D4E4F
+    10111213141516
+    000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f
+    ""
+    ""
+    e84023f8;
+  404142434445464748494a4b4c4d4e4f5051525354555657
+    10111213141516
+    0001020304050607
+    20212223
+    18ee1730
+    c8c326d5;
+  404142434445464748494a4b4c4d4e4f5051525354555657
+    1011121314151617
+    000102030405060708090a0b0c0d0e0f
+    202122232425262728292a2b2c2d2e2f
+    2232b6e0924148ae7239bcbd1a0f7ecb
+    56e9cc28aa67;
+  404142434445464748494a4b4c4d4e4f5051525354555657
+    101112131415161718191a1b
+    000102030405060708090a0b0c0d0e0f10111213
+    202122232425262728292a2b2c2d2e2f3031323334353637
+    8081316fd89624d62ce7637fb94995b6631c50d61586de01
+    42366952505f995a;
+  404142434445464748494a4b4c4d4e4f5051525354555657
+    10111213141516
+    ""
+    202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f
+    18ee1730f4490ea847a8e9c532c69f9c0a539a585c1e7b6a5af919f4819088a96ed632555098d3007e7d963c7bd013eb307671d0fbc39a0df4a26a9f4b9e4dad
+    c9ce2fbc;
+  404142434445464748494a4b4c4d4e4f5051525354555657
+    10111213141516
+    000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f
+    ""
+    ""
+    f1fb2a57;
+  404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f
+    10111213141516
+    0001020304050607
+    20212223
+    8ab1a874
+    95fc0820;
+
+  404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f
+    1011121314151617
+    000102030405060708090a0b0c0d0e0f
+    202122232425262728292a2b2c2d2e2f
+    af1785fc0f5ea7d0cfba837246484497
+    94b826c8849e;
+
+  404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f
+    101112131415161718191a1b
+    000102030405060708090a0b0c0d0e0f10111213
+    202122232425262728292a2b2c2d2e2f3031323334353637
+    04f883aeb3bd0730eaf50bb6de4fa2212034e4e41b0e75e5
+    2b48c8766f7e7649;
+
+  404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f
+    10111213141516
+    ""
+    202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f
+    8ab1a874f6853f2443a59500f78d17272d6d39dfa6d0e65107b10700c2ce9ee8663d3e2a01c2e12c32e9377442231920be53278f4f60a972b709bb16932936ba
+    3fbd0fae;
+
+  404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f
+    10111213141516
+    000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f
+    ""
+    ""
+    a6cf8230;
+
+  ## Locally generated tests.
+  60d7bcda163547d348b7551195e77022
+    907dd1dff7dac5c9941d26
+    ""
+    ""
+    ""
+    cf28ba78;
+  d0c6eb14ad568f86edd1dc9268eeee53
+    3285a6ed810c9b689daaa9
+    06
+    ""
+    ""
+    f258e4d7;
+  0d2d4b6003062365b0a54364c76c160f
+    11896c4794846ecfa14a71
+    ""
+    30
+    d6
+    0c31647b;
+  c9f137120634c9519848a877ff77bf79
+    192a5b50ade5d9cd73
+    9a3d1f337f29549e6b0d27a4ba234085406a6136512061f7080cc07df0591d8fa21f2dd88374d8cde8e160ad10997a21
+    635c6d62c9269029df3e6057acc87638f508046733d9ff61cdbda3b3e9878731ebfedd4705e505da1435dceaa7b1cc49
+    41b97c9616d0af69288f13e20d74901645bc9b5263044121e5562fa5b0e5ef40a2639909c2e07e329cc50737613a2c53
+    e992acc597653980b46bc43fd471eb5f;
+  ae1d50c38201a894476b3f102b752eb9
+    529533966f27043eb6
+    21b7f65b000961040ef2f9b2fc5fa450727a9b542cde52ebfda19d0ccc520f215eb57bb3a4f3ebbbb18ac6
+    c95a97a48030370c33d090c54215abd6b3ad54efc9a38378c5b93bf4f2aad2605faee2b03fb648e27fff63102758fe2b69ac26afa3
+    8c314091d48b18dba473f0180ebfa878c920562f0d3c63303cafd8b92e31c35ca8e30e5dde711d30e7360b70030864de8d8156be5e
+    672d9df3a0e99ed948e4f598a913b421;
+  349829b94586306fed54154f8f28523c03d4de16
+    00157846b710ee72807a22
+    ""
+    ""
+    ""
+    9205b2da;
+  19bfb474fd71d891f24bb65d1563259f9eb53b57
+    1ea629c54d57dd2d42f708
+    00
+    ""
+    ""
+    9ae9b8a9;
+  df9fcbaca48b77dba189196d1ebba10b0467cb9f
+    c2712a199e533fa9156308
+    ""
+    cd
+    19
+    fab4799d;
+  ec3f768281e040a9b9a222bd689aef66f5306ceb
+    0c6b08ac8b0a22260c
+    571b4a42bb8fdb233bfa6a5cfb0bad7d95214ade49cb3b6f5fe8368131115c037ba323fe1dc8151784873f0eb5b647da
+    6794c18b5337685a96ed65b9aca338527ef19b09c063c46f88de9fd41e72d7b97e23e6eabdff3bcd211499268878dbf3
+    a11307a1d9df486ff782f6643324950ec651e2df47bab6ef1254fa7d04b59bca5f509bc9e781ed797105d39fb509de45
+    27d12d4fb2bc29dc306d5c2240e4894c;
+  0f1dad89d4b9b12012e4713df46795630e7952d2
+    2bb02d7100b8b64937
+    7d20a8f083455b663e4ee1315f3c8f2aebfa921451dcd1af5813b70d30ce2f1fef6ef315d0798391805da0
+    8da3aefc5f8584b7c5e617669c0f16e39815d4e9cfce3ed1ecdf3d264a7f16cb16c2e815f422cdf0c8e30308be3c31e6bc58c0b7ca
+    45adc79632d8fdc8470e9ea47e2523d2a9ad568b2817b5295c078756df3d7f584aaf4b4e9667023b719c1ef7ad9cb72bdf31746f56
+    f1855db5745f0561fd8113b2ff6006ce;
+  dcb658b970e47479a684b5aefa69a4cd52147ed12ca986981a874498
+    ad0abef8bc4fcb70e27e98
+    ""
+    ""
+    ""
+    a84a331d;
+  ef1f0446b42fb144d44b6d00f06dc188d472a784e0c6f21195a3b9f4
+    ae985511265febd11c1647
+    20
+    ""
+    ""
+    e4256cb2;
+  eef9eb1c8dd0b00951f284649016ed00456331854bc78bf43966eb0c
+    fa9138ddc39908445608fe
+    ""
+    95
+    52
+    87c71b52;
+  e81c2533e31c9c1a9851bc2810d858cbbc8424d126b807e6daa089c3
+    f9099c5ffb824173d7
+    634c04226f30cbb7f0e4a973a8cd190107314717a77456f3ff669c732b58db8f48af65f7cc9e3fb90e1721b730374ffc
+    9bc597f56ccbb2f294b38766fc69f6a9f2c0945ffd505003cc0cae9ce021a5f1fa4ffa91544485f1a1258b2b9b8f0911
+    b000328931c8a1484cae26f4f7be0415d58858fcff326136d37fd981492c5851163f68326cac9d4b80f29f5c157a28c2
+    9b9c5705e2d569fc1b280731e4286027;
+  e32d65cc1770a18cbfe6effd1ff6778554acf1270485b203a3c1c4c9
+    67c0a458cb948bdd40
+    9b687fa3a6827b480aa3a4c84cef64f6c9b53bf8f957f4b03cf43e89957f9a3e8128f8743d16687b7bb8de
+    b9bd205b70e04c091d205cdad9e9a79b1abf91b0851e5ca605ac8451399587011677508a15dde524af3e2bee0646541a42c2ecccb4
+    d038ac6646cb2b6da23963eac488def0a233d63e097f9b981d322f96d6cad2d2c2be978d566a5afd8b20ecff4f1c8765ee5446c2a3
+    28b572f708c9a6eb036444c0a9e8818c;
+  4d65bad397abfaf529ee41cf
+    9a05c7efedef3401539c51
+    ""
+    ""
+    ""
+    66c301e7;
+  d2a90bbf7f1bfc338ab0ef57
+    46ea8fdcccd213e33f7e8a
+    57
+    ""
+    ""
+    df5a4e4e;
+  18fd25014107c8e7d715a92a
+    dd9589d1f5c054b2d98351
+    ""
+    46
+    2a
+    0c3bbfb2;
+  05ec590294a319b9802068a9
+    f891bc5ba5afabf8c3
+    122d12d7ff3c41122d70d17d4569eaff59a332ba58d5d5589bfe079753ee1a957eb6d6699e6b7ea2725cb2dac07ecde9
+    5759ac46fee6dda7abc8ad68daac90cfe22d2f1f2968cc42fa8b669ed3bb3542a9cf44bbc8c6254d980398bd94e66eb4
+    5c4a984366df29ee88817bba556a52b0c17ce5c3a337caac667c792cd1d7b705e3db87734963b51d606d8022346fc267
+    1494a9ba0a649a71409b719d821d546f;
+  563d405e51881e99027b8ab9
+    aea3ccf860b0009740
+    763d96836c5f87b95460938de1288c69d80ea12ff4bb5f069b8a2e86041c1b9fc214e9ca2186ddf1f6a7a3
+    aa7e740da967828e3604b35b15ffaa6c36800d9645563a308ba60076817523bd2abf1261b089d8f23a9c2835076a23faac2cdd6777
+    73f618f0bfb917a6ca4f6b7872dbd148fa97bbf8ab044f3331410eef1be00037e9293d851e99ee70c65cad306c4fc0cee754ee1e5c
+    f1c35f66bbb6b69b6c7aa3e7ed23e47e;
+}
+
 rijndael-eax {
   ## From Mihir Bellare, Phillip Rogaway, David Wagner, `The EAX Mode of
   ## Operation (A Two-Pass Authenticated-Encryption Scheme Optimized for