symm/ocb1.h, symm/pmac1.h, ...: Implement PMAC1 and OCB1.
[catacomb] / symm / t / rijndael.local
index 3060c55..d0b337a 100644 (file)
@@ -1138,3 +1138,434 @@ rijndael-gcm {
     502ab4639cc0336813c1e56e627ca9fd05ae8a04bb2b5a5dd7c03a5a4fc64ec1b9222fb965ee6c675f52bf3815a88d8a0ab837ad7b
     66578408dd93abb230ea3124f859308d;
 }
+
+rijndael-ocb1 {
+  ## Rogaway's tests, from http://web.cs.ucdavis.edu/~rogaway/ocb/ocb-test.htm
+  000102030405060708090a0b0c0d0e0f
+    00000000000000000000000000000001
+    ""
+    ""
+    ""
+    15d37dd7c890d5d6acab927bc0dc60ee;
+  000102030405060708090a0b0c0d0e0f
+    00000000000000000000000000000001
+    ""
+    000102
+    fcd37d
+    02254739a5e3565ae2dcd62c659746ba;
+  000102030405060708090a0b0c0d0e0f
+    00000000000000000000000000000001
+    ""
+    000102030405060708090a0b0c0d0e0f
+    37df8ce15b489bf31d0fc44da1faf6d6
+    dfb763ebdb5f0e719c7b4161808004df;
+  000102030405060708090a0b0c0d0e0f
+    00000000000000000000000000000001
+    ""
+    000102030405060708090a0b0c0d0e0f10111213
+    01a075f0d815b1a4e9c881a1bcffc3eb7003eb55
+    753084144eb63b770b063c2e23cda0bb;
+  000102030405060708090a0b0c0d0e0f
+    00000000000000000000000000000001
+    ""
+    000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
+    01a075f0d815b1a4e9c881a1bcffc3eb4afcbb7fedc08ca8654c6d304d1612fa
+    c14cbf2c1a1f1c3c137eadea1f2f2fcf;
+  000102030405060708090a0b0c0d0e0f
+    00000000000000000000000000000001
+    ""
+    000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021
+    01a075f0d815b1a4e9c881a1bcffc3ebd4903dd0025ba4aa837c74f121b0260fa95d
+    cf8341bb10820ccf14bdec56b8d7d6ab;
+  000102030405060708090a0b0c0d0e0f
+    00000000000000000000000000000001
+    ""
+    00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+    4c9b676705ff2df05503872aa3d9e9b122c6b0ec060819146d9c887bad494417b63b4b2b3d9c3a4cd156856564c4a31be812a95d43e76ccf9811cc3a7613b0567bbcabf1a0f64f5245098c239ca7935765a7d402b01b671f1c600bc9a6823025c370a32da44a86911dce981ccaa7e3e720552bf8dd83918d8688e2347ba8691457bc25ab99a51a4388c3c7fad8a71e0c25fa185d2aa710dd9bb93cf2185ac950380732eef63549adcd451e70a0275b070fe1f9e338321aa57de832e1893f5febc0b2f0a6221d1aa187b9f152d20c259ed105c1a4be374993f4963074ef2676621109a03e628286124aefc8a3038b65103aa628f3e6bd6e1659ea0508185679d9a03b0794b914850cb4528293f7e992895a3e80337c23dbc95be1d3502cb9f8961e7dbe22898dc97b75fefaa75b4b3115969af05f54850489e007ce003d8023f490e37845f54d3c6dc3521fae9c34365091393f21139c96be6101a2bdc9dbc36902b5bd19686768154b011270157882f32dfef2a272be3cbf7e5d90ec1b6e374b4a4b806d83913e3df933e8caf5e02b1093b2a2991b34f98a41824a15b26a04a18f287024240d5347a2f3501546aac9c5b6e3f5010d9e2036c415d093892303050eaea499256eb83cba3ad4249537cbc250505024fe413965db1c41a77456711d50933249c63bd006716c4cc6ebf59c03c25a3ac3d06d7713c752f415f9ef59571885f38468c3f11bfd8111f839f080f544cb0c5ab9f87606287e314afe655510ceb8a62abcaef4e65e314f45b10e9858a175207356e9a8ac093f469ee587c18396f8965ce52e894b0bd29011b22f1e67abc16dcb948be141693fe31db635487285eeb4f8b4d5d13e511218759941850cd71fc898f8ba4cf1a4c23b3588dbf1e3e7c86efb113c8820e338a5d90d30c7d854a9ad7582d853d39cd3649cb67e3308c70bc75b732ae744aa126811034ff893829e554af51c83e1f004c3b7c9d0432978be459beaef6824b9cc5f370aa47b8d9edf583c3c84ef695705c95d59a428a675c5c788339ca737f2ec1cb6e83288b5bbfb6d1f81f47659f8f44118d76e900bdbc8094baa4bd950647abe22516a50bc85ea94410f985519076e34696b238262a00ebe889d58b09b81ee1f0b31f864a26978046ac24f1332559b6c5edc24748407e19f169c32d5d3f8ca6f71e4a5c2f72add2185857fde5749d5fd63f5b3658daa3dbaa1b0844fea3c8d2eb5e17febcfbfe44f4cf931129431ff51d6acce7e05107d6c055ad27beb185f7349ea060440a508b40186ec9732f84d21ae158969b671ac0d2ab823399220d75ec7cb50c29de3df974ae1e8c2465e3ecc207160c593443e424a57aaaee3c884632d979ccd0b6a239e1c3fdf777aa556a3c8815c2f8d1496a60048e2b971
+    ab335f725475e33e90ab8c1e4891596d;
+
+  000102030405060708090a0b0c0d0e0f1011121314151617
+    00000000000000000000000000000001
+    ""
+    ""
+    ""
+    b6e92be21127830a690f443f5ce8546d;
+
+  000102030405060708090a0b0c0d0e0f1011121314151617
+    00000000000000000000000000000001
+    ""
+    000102
+    c21ef1
+    09474d786d4640e823f52ff63ec5359a;
+
+  000102030405060708090a0b0c0d0e0f1011121314151617
+    00000000000000000000000000000001
+    ""
+    000102030405060708090a0b0c0d0e0f
+    3a709f22daf4c1bcf09cf1c2a0f5beff
+    98d49eb3468988d06d7cb32c438f1f23;
+
+  000102030405060708090a0b0c0d0e0f1011121314151617
+    00000000000000000000000000000001
+    ""
+    000102030405060708090a0b0c0d0e0f10111213
+    8e951e2a2fb4ede0397cec6ba5dad5b22137f07d
+    305767a31bc9e344f7f79843d1a268b1;
+
+  000102030405060708090a0b0c0d0e0f1011121314151617
+    00000000000000000000000000000001
+    ""
+    000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
+    8e951e2a2fb4ede0397cec6ba5dad5b247ff19f214fd464e821c63c26e4a11e9
+    63cea28204ef06e5a21a8780ea05050d;
+
+  000102030405060708090a0b0c0d0e0f1011121314151617
+    00000000000000000000000000000001
+    ""
+    000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021
+    8e951e2a2fb4ede0397cec6ba5dad5b235e6b8a5dcb0bd0017bfe98111352d3edf3a
+    dfec4b4ed2f95c305d59d79edbf62833;
+
+  000102030405060708090a0b0c0d0e0f1011121314151617
+    00000000000000000000000000000001
+    ""
+    00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+    1c97d826583970d083cca433773b02c34c0e6b7127d2258435bac13100c8672db6084c02171ba72b9937b1daccd14d0db1c322c708cc2da13486d772d82d93d12b69874a220573fc25fc05922700228c475ddeae653855a2c6d5f563f6e0724b7b2fe0fa066cba3223e010c5d1a51301a2ae1047409ae88c2779967283d50aa40ebb93e07dbde704f39c76c20cd1e1970bab196eacebab67b076bf901b4ed6f6ff066e230b540737d6856472ac02dce8b7a92aaa8890a47a13fc01bbce7ff902e3a7ede4685cd9bb926fecc27e915ad900f248d7ddd3cb9bff1b589196740c35ecf330e3812a6e0fcd2fd32212b0f0515629e7165cfe64857ec5ca2ad5c6eed654e27508a2c012b726e6931c4edc1fc00dd1d609f8659b24c0b4157f43fc33761d0a9b1fb1389068b600ce2f04cf475fb4483d32902b559cc40a589e97a82417241b92199595c6597dbd0e8dc08db9b6c0323a1d07812908be90c7785c66d1b295ab772793dc7e9725ef19da40b935c6ce10e404165388db6437621ffb08246f32b85a7ee9ca8bec10e3e973136c0b99552d8713bc6c892938ad72f79341f16eaaa7c8adfe45e2c627314c256bf0554dc1651ca77a80d79603cec892ffa58b092b5134c61d6dfba2a2132c75ce56db8cb1d852330a5c4a615645281457c2020391351f8dfa1297d45da234c0549991046d888b52175e1ed2ed3619474b5b270d6b5dcdd94e1a3f20594da51c8bd564e9694cb8b498eedd7a83569da5a209ba34e0fb29c43793097437fecc07e7709c8d64f15197b241ee930652872558c7ccb8c2a0e61e40637d1d587422d5f9f8f8eb25e44f7997058c051c4288356e5dd47e6022176f83c963eac7512cabc7fc8c408d448177e1b1671c82569a2318db142f8b94a60fe5b581c6895e03397a4d9b6f117fb534ad644ef7fafab3fe34c36b5d1544df4567fa94ba7a501ed20032d567bfea10f943170e5bf9b1aac21c0e25ae5f9b98272c75a401ba0185e46ff0c9b29caeb2314a507e2664df2208beb8a5c78563f68b49c3b59b650d18eb75a22296d06943b99239521c59736a10404d458e80ed9288879545c1f9b997036b9eb76c5d75afcd494736971dd27c3f0cbdc15e8cf8337c63417f861a15c324b44fc8b3e4ef6a1924f470aefd0abb6a965451d13835e8a8d9ef94add1d2a41f42c6ebc55045d7a1c6bb0ea3af9560220180fa7b623cc2c44d5cace341746e80289e0b7321178d770e2043a5b02560328c1a01ec4ab64ff98de111c5be5516657cff2f88d3a02643a587903f28a7f9d76cceca8a03671eeecdb2aa81e59de1171e5aaae08415533ceee30aa3ec4fbd551990c074d05c390dfbb1e5d1318e869be9e8417d49ccdaf801ebd42b0309718c36deb2965311710b6d26494a
+    d28b89f5339444767d637e8f1687d204;
+
+  000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
+    00000000000000000000000000000001
+    ""
+    ""
+    ""
+    796b5fd2716b066932371c17993dcb5a;
+
+  000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
+    00000000000000000000000000000001
+    ""
+    000102
+    a214d8
+    e31b3449bd1b85b257b404a76b5b86f2;
+
+  000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
+    00000000000000000000000000000001
+    ""
+    000102030405060708090a0b0c0d0e0f
+    8ed0923f5b2c650f31a5dd422463377f
+    794904f519ab5376a30cf7771548e319;
+
+  000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
+    00000000000000000000000000000001
+    ""
+    000102030405060708090a0b0c0d0e0f10111213
+    6512529248df82feb506a7aeab3874f7201b6f79
+    042ac0fd6956c2b0b4205dba0b889699;
+
+  000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
+    00000000000000000000000000000001
+    ""
+    000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
+    6512529248df82feb506a7aeab3874f7742c85da9d0d6cc91293ce0b333e0343
+    6a91a07cb0bf508fee08b27b5fd9f80d;
+
+  000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
+    00000000000000000000000000000001
+    ""
+    000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021
+    6512529248df82feb506a7aeab3874f7ae809e2f4f88d6a6088f8d0122a7b9e723a5
+    3ba0661c8a716b550150c9effe3b773c;
+
+  000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
+    00000000000000000000000000000001
+    ""
+    00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+    1464d49f9ead864d5e77ed99198302409e459f2af179c73d2f0d0855d51591cbd9555d9a8542014e2b995e5399c1f804addaff1a2c4b5afe07fd88b7095d1129cbf93f9dad20c625fab0e63788ec4634f0ae06b6fc5c56bfe1b05860e03dc3284d7e2b3190eacee799f523677f942dee5192cfc6b5dddf09a16e2ae13055e9d1ee1d159b7fcea386133de34b92743caddef8c457884a7c5034a53ee23e08aa90086824401c25646561af0d594114b1ccb6627bff630fb17a6021b4f54942ed06f06326e54408019caba8f7231200d30dc548f8ec2c80e06b13d8ebe462c1cdf1c54065afabdb97ac8d8e5a1d065c59795fb55336f01e35a6f7cf8ddbf944e31a24717977c2f9f89aba3ca1ab7559a4f732d301b678ac63c9d5388665b1f9bc56bd67b80fe21f0d6ce4973c078213456b23700725174037fe8426503b0170ce5adda0dedc80f1e5d6701384951bbed58e6ec5912cd20429c5d85c61484136caa00c5f92763414e9f1bb50efc59c834142e5fbbab07f624f28fdee284c2b7322cf3e0682731f764a049fedf2ee8486e60bbd11de998f1dfde848999c806ef779bab0468b674d395883400cc6c05cdf5b51c5fbb181690502914edc42cd4752d9c5fb524adb37149c3199f2329ecaa92006047761f01581eafb96003491fef9ccdbf637c972842645b052ece338e02b6417e25f4f93aa808ec44d8b6efdd774ebac19a1756014a9bb71da38e7743d1617e44bae076f3183c7e50f5c0fd5488cb325edd500ad5e794c469b83a4655c95289dc520797f94cd04e834b1842f769236522cf79ae63ad4664b4745316142bc74ab27be915194eff2a2a1d740c83bffe28b8fe6cd1382ca8de806365275ed05baca90484b03ee87624f072905b69587c05be58aefd4e367257aa95ce3a6d0f65a5e7221c8f729727e3bd66f3d9e33f0d7b8f03ad31e62c837599e062a4c8681ec3276c31d58f2f3f2dd018b3c579fe50d7f911f8665bc064a08ae8ff6d87440e088b2162733ea6066ac70309600819f3f429232bb26376303fc82cd198dfc92382cfb3c8bc245984b845c51e6b5da8a9669e1d961f7182d0bb9757a99c0d72d4c037df2ca29661faf0db89fdce75bfb67031522096ce88f1ca6740f3dbbfd65fdf674a547d82d331abaaf1c5f0742a25c6f5ee0cfe288fb93e76d2fab4fde4904c2967303fcf2adb8bbd333b33728aca04b60dabdd08e0acafaffa97b02cb011db94687afa7bed3157d3a90814eb00e55b39cabfe9ef35bae62c80ad225cc34a0d7cce13c55ac107d00d7b37562222ac5d94cb73ff20d8947fb8ec63735280c0ce31aaca8fee02666f7a6fb2b44f1ebe0f090050f1036877ddb6705b1b622dbd1742f8ed2d985a5aeab4cd2a0e68d1ec3c6c1fec66446150d44
+    826d7f68f3ce28e1e98191e92b23ab0a;
+
+  ## Homemade tests made with my toy implementation.
+  60d7bcda163547d348b7551195e77022
+    907dd1dff7dac5c9941d26d0c6eb14ad
+    ""
+    ""
+    ""
+    bbdd78ab7b6ed33bfbaf8438bf9df7ee;
+  568f86edd1dc9268eeee533285a6ed81
+    0c9b689daaa9060d2d4b6003062365b0
+    a5
+    ""
+    ""
+    f7922af46325a139e69abfbb9b999c4f;
+  4364c76c160f11896c4794846ecfa14a
+    7130c9f137120634c9519848a877ff77
+    ""
+    bf
+    98
+    8c5a791452eb9c1f37d7ab1bf637c432;
+  79192a5b50ade5d9cd739a3d1f337f29
+    549e6b0d27a4ba234085406a61365120
+    ""
+    61f7080cc07df0591d8fa21f2dd88374d8cde8e160ad10997a21635c6d62c9269029df3e6057acc87638f508046733d9
+    bed87d0e2b6ab736c20081f2041691cdcaedfff9cdb08f5ff2b443fbb4990690a9bb03b8b801d3562f037c61c6d40929
+    bd5b4d2c9aeae8e9dd6baf02c53cc96d;
+  ff61cdbda3b3e9878731ebfedd4705e5
+    05da1435dceaa7b1cc49ae1d50c38201
+    a894476b3f102b752eb9529533966f27043eb621b7f65b000961040ef2f9b2fc5fa450727a9b542cde52ebfda19d0ccc
+    520f215eb57bb3a4f3ebbbb18ac6c95a97a48030370c33d090c54215abd6b3ad54efc9a38378c5b93bf4f2aad2605fae
+    b6cbe859f09a407e4a0e376a41b18a84eb07874e1b280fa3cdffa733c207c4b67ace2b90a406b1df6a2389593134796d
+    f370bf6c86cae4c4248040d74c191392;
+  e2b03fb648e27fff63102758fe2b69ac
+    26afa3349829b94586306fed54154f8f
+    ""
+    28523c03d4de1600157846b710ee72807a2219bfb474fd71d891f24bb65d1563259f9eb53b571ea629c54d57dd2d42f70800df9fcb
+    2ca95a4a033cd358788f8ffd43bbf820dc0982dfee8583eead310d571cb87e4472331362ff6820abf76cab3b4f405b41ad167f864d
+    e20d6b13e4691b43b82d5e16f77366b9;
+  aca48b77dba189196d1ebba10b0467cb
+    9fc2712a199e533fa9156308cdec3f76
+    8281e040a9b9a222bd689aef66f5306ceb0c6b08ac8b0a22260c571b4a42bb8fdb233bfa6a5cfb0bad7d95
+    214ade49cb3b6f5fe8368131115c037ba323fe1dc8151784873f0eb5b647da6794c18b5337685a96ed65b9aca338527ef19b09c063
+    8c3ebaaf931dd282e77df4bf8c242a81593282df72cf91df24dc0bd8f6559f404058b9885529821083839944713def901330eebe75
+    2d965094a4c93d801be22ba3faa198d9;
+  c46f88de9fd41e72d7b97e23e6eabdff3bcd2114
+    99268878dbf30f1dad89d4b9b12012e4
+    ""
+    ""
+    ""
+    8d524a5f17704ae5983de23c8c09fe82;
+  713df46795630e7952d22bb02d7100b8b649377d
+    20a8f083455b663e4ee1315f3c8f2aeb
+    fa
+    ""
+    ""
+    9ea050885c272134d9056a4a94dba2dc;
+  921451dcd1af5813b70d30ce2f1fef6ef315d079
+    8391805da08da3aefc5f8584b7c5e617
+    ""
+    66
+    93
+    813637682fa8878156badce86a0243fa;
+  9c0f16e39815d4e9cfce3ed1ecdf3d264a7f16cb
+    16c2e815f422cdf0c8e30308be3c31e6
+    ""
+    bc58c0b7cadcb658b970e47479a684b5aefa69a4cd52147ed12ca986981a874498ad0abef8bc4fcb70e27e98ef1f0446
+    dd538bb0839a0a7925c5a2aaf2cac28de820d307023f2ab4f2ffa04cef224b155ab948ad399e65a9ea8477aea35f29e2
+    e00806f1d623829ca51eeda7493528e9;
+  b42fb144d44b6d00f06dc188d472a784e0c6f211
+    95a3b9f4ae985511265febd11c164720
+    eef9eb1c8dd0b00951f284649016ed00456331854bc78bf43966eb0cfa9138ddc39908445608fe95e81c2533e31c9c1a
+    9851bc2810d858cbbc8424d126b807e6daa089c3f9099c5ffb824173d7634c04226f30cbb7f0e4a973a8cd1901073147
+    4a2e9698c0d7ac74177739a07570f0f6afd2e3f3b6e9badbdbd95fdfc747dbbc7c1c8bceb40e423e1b2fa560ed2da50d
+    f13efea41ebf09ce14655687cb20a908;
+  17a77456f3ff669c732b58db8f48af65f7cc9e3f
+    b90e1721b730374ffc9bc597f56ccbb2
+    ""
+    f294b38766fc69f6a9f2c0945ffd505003cc0cae9ce021a5f1fa4ffa91544485f1a1258b2b9b8f0911e32d65cc1770a18cbfe6effd
+    672edb9395d87cc48fab9727017091e7a6d09f7977fbbfe77f9669485aaeca7a4d54662565aae03033ae925528e9880d33766cafcf
+    a8ff24657308e7d34115b33ff27ff795;
+  1ff6778554acf1270485b203a3c1c4c967c0a458
+    cb948bdd409b687fa3a6827b480aa3a4
+    c84cef64f6c9b53bf8f957f4b03cf43e89957f9a3e8128f8743d16687b7bb8deb9bd205b70e04c091d205c
+    dad9e9a79b1abf91b0851e5ca605ac8451399587011677508a15dde524af3e2bee0646541a42c2ecccb44d65bad397abfaf529ee41
+    367a16e4adbc471e15eed3d0415714c61a67e93f44b5890d17f9d29991bae8406d317e7064c765278d7370f6534462f6eb2db66b23
+    79a7bbc9be788ebb4b94fe94f3f74439;
+  cf9a05c7efedef3401539c51d2a90bbf7f1bfc338ab0ef5746ea8fdc
+    ccd213e33f7e8a5718fd25014107c8e7
+    ""
+    ""
+    ""
+    12f235dbf2dc24a51ec9211ba16494bd;
+  d715a92add9589d1f5c054b2d983514605ec590294a319b9802068a9
+    f891bc5ba5afabf8c3122d12d7ff3c41
+    12
+    ""
+    ""
+    eb5d7e61788af1e2d62a0023cbee8ce8;
+  2d70d17d4569eaff59a332ba58d5d5589bfe079753ee1a957eb6d669
+    9e6b7ea2725cb2dac07ecde95759ac46
+    ""
+    fe
+    65
+    80cbf647b155069f455e35ce699db1b6;
+  e6dda7abc8ad68daac90cfe22d2f1f2968cc42fa8b669ed3bb3542a9
+    cf44bbc8c6254d980398bd94e66eb456
+    ""
+    3d405e51881e99027b8ab9aea3ccf860b0009740763d96836c5f87b95460938de1288c69d80ea12ff4bb5f069b8a2e86
+    5b2913b5bd5d4155174de957631d366c398a890cdcdef62c8a7882229522d3b944a1b0cc2d958910469f001ff60f4d05
+    fd4cff3dc0c58f0743b0bd9bc4e7b346;
+  041c1b9fc214e9ca2186ddf1f6a7a3aa7e740da967828e3604b35b15
+    ffaa6c36800d9645563a308ba6007681
+    7523bd2abf1261b089d8f23a9c2835076a23faac2cdd67771cc667a8331f0a170b66283e4f834a06148f302c3973accd
+    56f6f24e33958b8c2e2352fd61e4fa8fec816ac861a8b33779f09e7a10fc02a8f48afa3080ee119a52a9a817e4f2b94b
+    79b025b6d15120b9cc79ceb62cfe0479248b47f4b6318deeffe7ff11688460479331326370bac61dbec32ba5571d65d8
+    ce1ea3a0bfda4a072c98376f259ed0d3;
+  0820cab383a8cffeea7c486315799dc875fba578c8ec4837898a9214
+    2b5b0677da1ac273117b45bcfff5d5f8
+    ""
+    b6fde2893232a9f81d14517ffae475f6b94a43a67b3d380d2f9aaafe2dd721c0095c8808847689211450ba8095ffab1eaadf66fd22
+    42075fba1b912e07c6f10e6356f6ccc84c60f34ea054dec4e4cdc39eb8f5066218b61d9cd799d28281e84d2d5f0138c944f1074b2a
+    2889c19baf58c2061aa386bb60bf5c94;
+  ac1976063e113ab61f813e28a1397a7974a1d7f4220c785fe426a5a0
+    e80f678d404147842941feeffdc2eb44
+    dc8c0d5e8f444f7f4e0c893959b74dc23a7bb40e7e0013e5150686d2301b43a15a84e81d7f5cedaa49e241
+    4ebf47970e560475cff206877de69146acc3ab6cf8556b7aa776945948d1b8834df2196c92ec1718dcdeee0d52d9539726d2810391
+    b270a45c7bb349e1dfbc9226da556d1916cb8eee0acc23671a875ba1bab176be7067e6ac38c492bef6c908881eed86e3fa34ba13bf
+    dd48047480fa2218d080933718dfa7dc;
+  b3f9d10c39b07ae8f08ce7ce
+    e4758a386a9943e97dedfbe61e737882
+    ""
+    ""
+    ""
+    aec3dd3d7d4d41c121f6da813bc52c6f;
+  cd09c2b9a80f34c0fde11c24
+    81b11fc76bfa4dbf710a9e544e0c536c
+    a1
+    ""
+    ""
+    1fb81cfb59ee9a075fc17a01fb0acb9e;
+  e040f9ad5b04140d98edabe0
+    8485290a4d87d13b07398a1458c2c6b6
+    ""
+    1d
+    cc
+    2efc465c99ba1057c7dce6bf82f04a7d;
+  bdbc1cccada8c1a0a9aabb6c
+    4e3c3554f8fb1ef61614c270295dfc0c
+    ""
+    a6551ca4bdb75359f91cb9d921056b7de74fc9a9b37154ce6c0b396179d31f06a1dd5982cbc0d7cb23841da1ae8f4ae4
+    c5b165d12e4f62edf355fad299ca25ee317c7c65deea43e27c93f43f66d87364b7dc60d20d5bcfde11e982c9275b2ebc
+    5536fc1ce20b189e094233fed7a3da05;
+  80cda98ad6cf2bacf6f9fd3f
+    821330c43f3df6c2b3fac7cbcf96523d
+    4723f91801325eb8553236651c96788d73d192ee53b3f3ebd66ddd98cedbe88e245de25b1593b70f8601562d90a9b59e
+    d034a867642d25d54756fa5c47f16f64b837bb4926214211a1c696ba172010abb433922a22d9fd881519165eb9d85197
+    03cf2190ef314c60a1b51ab9c6d6cf1613779e05cb1f6dd1b54b16f1cebf6b964ee6f21a606b72e5751723d5ad6e284b
+    7eb35f7458437efd2a95c97817396485;
+  a21cc34ac0d5ae7be8dbf98e
+    4ffed2cf6b1372a5aa47b54fd9d70c70
+    ""
+    e117bf1cae71b3a56f0e7d839ea59cc783443d64f2ed6a29b96856beca34fd6544bcf86b799e2a1681160ccf055f0fd3001da597a1
+    8a8f9e2516855b74721de0ee915f1759ae9aa036c52d9cbe43111de9015eb6bd353bef5bb4df325f466d8e2bd09303f912bc0576be
+    c67bc656ea1b155208501e080120205b;
+  406d465b7b1419ea51cf858f
+    938f6daafbd656445a09898eaa96ffc3
+    d1d2e31e4e34c94b8bfae64825ecd75a66d88eedb969ffe07669845ebb7a24c69f13d099f47166edf54538
+    e88fbf433a7ff212085179e79771f6eee7283ab178ef2b800d7b969da05780ffc1ba78c70dda7a4ca2a25e771702fb1901ecfc8a95
+    15d8d8bfdd4b5fbe0885d060fc15bb2763c2d4aad2d18df548ed258db51d9cfd866b4e7798650061e447291f45ebe5da37635d468d
+    329d67984dc92e926bf2c0698fba9e2b;
+}
+
+rijndael-pmac1 {
+  ## Rogaway's tests, from http://web.cs.ucdavis.edu/~rogaway/ocb/pmac-test.htm
+  000102030405060708090a0b0c0d0e0f
+    ""
+    4399572cd6ea5341b8d35876a7098af7;
+  000102030405060708090a0b0c0d0e0f
+    000102
+    256ba5193c1b991b4df0c51f388a9e27;
+  000102030405060708090a0b0c0d0e0f
+    000102030405060708090a0b0c0d0e0f
+    ebbd822fa458daf6dfdad7c27da76338;
+  000102030405060708090a0b0c0d0e0f
+    000102030405060708090a0b0c0d0e0f10111213
+    0412ca150bbf79058d8c75a58c993f55;
+  000102030405060708090a0b0c0d0e0f
+   000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
+    e97ac04e9e5e3399ce5355cd7407bc75;
+  000102030405060708090a0b0c0d0e0f
+    000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021
+    5cba7d5eb24f7c86ccc54604e53d5512;
+  000102030405060708090a0b0c0d0e0f
+    00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+    c2c9fa1d9985f6f0d2aff915a0e8d910;
+  000102030405060708090a0b0c0d0e0f1011121314151617
+    ""
+    0d63b2b2c276de9306b2f37e36dabe49;
+  000102030405060708090a0b0c0d0e0f1011121314151617
+    000102
+    5b1cbc4340752742d8828a7aa2c3197d;
+  000102030405060708090a0b0c0d0e0f1011121314151617
+    000102030405060708090a0b0c0d0e0f
+    0787415737989bc1a2e124c991e400e1;
+  000102030405060708090a0b0c0d0e0f1011121314151617
+    000102030405060708090a0b0c0d0e0f10111213
+    156a7c21121cc773a731e05ab618c6bb;
+  000102030405060708090a0b0c0d0e0f1011121314151617
+    000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
+    654a145904dc97da9f68318b180970b9;
+  000102030405060708090a0b0c0d0e0f1011121314151617
+    000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021
+    b5ff2016878e834438aa1ff624bfa09c;
+  000102030405060708090a0b0c0d0e0f1011121314151617
+    00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+    d3aec29036298bc11a2905f53773ff50;
+  000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
+    ""
+    e620f52fe75bbe87ab758c0624943d8b;
+  000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
+    000102
+    ffe124cc152cfb2bf1ef5409333c1c9a;
+  000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
+    000102030405060708090a0b0c0d0e0f
+    853fdbf3f91dcd36380d698a64770bab;
+  000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
+    000102030405060708090a0b0c0d0e0f10111213
+    7711395fbe9dec19861aeb96e052cd1b;
+  000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
+    000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
+    08fa25c28678c84d383130653e77f4c0;
+  000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
+    000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021
+    edd8a05f4b66761f9eee4feb4ed0c3a1;
+  000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
+    00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+    69aa77f231eb0cdff960f5561d29a96e;
+
+  ## Homemade tests made with my toy implementation.
+  60d7bcda163547d348b7551195e77022
+    ""
+    f179b2c8e7020f9992e161128568d833;
+  907dd1dff7dac5c9941d26d0c6eb14ad
+    56
+    335ab1737aaadac9f7d949ab7dc22fb5;
+  8f86edd1dc9268eeee533285a6ed810c
+    9b689daaa9060d2d4b6003062365b0a54364c76c160f11896c4794846ecfa14a7130c9f137120634c9519848a877ff77
+    bb8edccea3819962f3207d2494d63229;
+  bf79192a5b50ade5d9cd739a3d1f337f
+    29549e6b0d27a4ba234085406a6136512061f7080cc07df0591d8fa21f2dd88374d8cde8e160ad10997a21
+    2ecd8200722cfe2378e956131b67d64e;
+  635c6d62c9269029df3e6057acc87638f5080467
+    ""
+    5defdf6083418cf3d45824aa490a4d81;
+  33d9ff61cdbda3b3e9878731ebfedd4705e505da
+    14
+    6c60b9db748a6bdda7823422ed13e4cb;
+  35dceaa7b1cc49ae1d50c38201a894476b3f102b
+    752eb9529533966f27043eb621b7f65b000961040ef2f9b2fc5fa450727a9b542cde52ebfda19d0ccc520f215eb57bb3
+    c20cac43be40631325f8d7c9e65991ad;
+  a4f3ebbbb18ac6c95a97a48030370c33d090c542
+    15abd6b3ad54efc9a38378c5b93bf4f2aad2605faee2b03fb648e27fff63102758fe2b69ac26afa3349829
+    3c963d5d3230ef4dc33ebd19f63965d9;
+  b94586306fed54154f8f28523c03d4de1600157846b710ee72807a22
+    ""
+    050092b5cc9a2d131ea4450c057bbf3d;
+  19bfb474fd71d891f24bb65d1563259f9eb53b571ea629c54d57dd2d
+    42
+    16501f8ba884f8ace15138cefd2639a7;
+  f70800df9fcbaca48b77dba189196d1ebba10b0467cb9fc2712a199e
+    533fa9156308cdec3f768281e040a9b9a222bd689aef66f5306ceb0c6b08ac8b0a22260c571b4a42bb8fdb233bfa6a5c
+    9738377d0ead6012bac60ae10ac4e5f7;
+  fb0bad7d95214ade49cb3b6f5fe8368131115c037ba323fe1dc81517
+    84873f0eb5b647da6794c18b5337685a96ed65b9aca338527ef19b09c063c46f88de9fd41e72d7b97e23e6
+    709f56ce90034a8882bebbfe453452c7;
+  eabdff3bcd211499268878db
+    ""
+    697879320c2ee020acf13693df75c31d;
+  f30f1dad89d4b9b12012e471
+    3d
+    453c840a1c34bfeff73a653ad97150b4;
+  f46795630e7952d22bb02d71
+    00b8b649377d20a8f083455b663e4ee1315f3c8f2aebfa921451dcd1af5813b70d30ce2f1fef6ef315d0798391805da0
+    aef316f092694e691d9fba0324d8397a;
+  8da3aefc5f8584b7c5e61766
+    9c0f16e39815d4e9cfce3ed1ecdf3d264a7f16cb16c2e815f422cdf0c8e30308be3c31e6bc58c0b7cadcb6
+    0638371148ba4e00b0cf138e026a7740;
+}