From b6cdf9f3dcf693fbc243c5f341ea27114caf869a Mon Sep 17 00:00:00 2001 From: Joseph Birr-Pixton Date: Fri, 24 Feb 2017 20:15:45 +0000 Subject: [PATCH] Correct chacha20poly1305's empty padding case Add a bunch of tests generated with libsodium. --- extra_vecs/libsodium-extra.py | 24 ++ src/chacha20poly1305.c | 2 +- src/testchacha20poly1305.c | 485 +++++++++++++++++++++++++++++++++- 3 files changed, 503 insertions(+), 8 deletions(-) create mode 100644 extra_vecs/libsodium-extra.py diff --git a/extra_vecs/libsodium-extra.py b/extra_vecs/libsodium-extra.py new file mode 100644 index 0000000..7f5946c --- /dev/null +++ b/extra_vecs/libsodium-extra.py @@ -0,0 +1,24 @@ +import pysodium + +def test(msg, aad, nonce, key): + ct = pysodium.crypto_aead_chacha20poly1305_ietf_encrypt(msg, aad, nonce, key) + ct, tag = ct[:len(msg)], ct[len(msg):] + + print """ + vector("%s", + "%s", + "%s", + "%s", + "%s", + "%s");""" % (key.encode('hex'), nonce.encode('hex'), aad.encode('hex'), msg.encode('hex'), ct.encode('hex'), tag.encode('hex')) + +key = 'key.' * 8 +nonce = 'nonce.' * 2 +msg = 'message' * 5 +aad = 'aad' * 12 + +for msgl in range(32): + test(msg[:msgl], aad, nonce, key) + +for aadl in range(32): + test(msg, aad[:aadl], nonce, key) diff --git a/src/chacha20poly1305.c b/src/chacha20poly1305.c index 0095b3a..d0dc96d 100644 --- a/src/chacha20poly1305.c +++ b/src/chacha20poly1305.c @@ -56,7 +56,7 @@ static int process(const uint8_t key[static 32], * AAD || pad(AAD) || cipher || pad(cipher) || len_64(aad) || len_64(cipher) */ uint8_t padbuf[16] = { 0 }; -#define PADLEN(x) (16 - ((x) & 0xf)) +#define PADLEN(x) ((16 - ((x) & 0xf)) & 0xf) /* AAD || pad(AAD) */ cf_poly1305_update(&poly, header, nheader); diff --git a/src/testchacha20poly1305.c b/src/testchacha20poly1305.c index f1b53e6..39603fd 100644 --- a/src/testchacha20poly1305.c +++ b/src/testchacha20poly1305.c @@ -25,7 +25,7 @@ static void vector(const char *keystr, const char *tagstr) { /* inputs */ - uint8_t K[32], N[12], H[12], A[16]; + uint8_t K[32], N[12], H[40], A[16]; uint8_t C[265], P[265]; unhex(K, sizeof K, keystr); @@ -56,13 +56,16 @@ static void vector(const char *keystr, A, out)); TEST_CHECK(0 == memcmp(out, P, plainlen)); - /* failure decryption */ - C[0] ^= 0xff; + if (plainlen) + { + /* failure decryption */ + C[0] ^= 0xff; - TEST_CHECK(1 == cf_chacha20poly1305_decrypt(K, N, - H, headerlen, - C, cipherlen, - A, out)); + TEST_CHECK(1 == cf_chacha20poly1305_decrypt(K, N, + H, headerlen, + C, cipherlen, + A, out)); + } } static void test_vectors(void) @@ -82,10 +85,478 @@ static void test_vectors(void) "496e7465726e65742d4472616674732061726520647261667420646f63756d656e74732076616c696420666f722061206d6178696d756d206f6620736978206d6f6e74687320616e64206d617920626520757064617465642c207265706c616365642c206f72206f62736f6c65746564206279206f7468657220646f63756d656e747320617420616e792074696d652e20497420697320696e617070726f70726961746520746f2075736520496e7465726e65742d447261667473206173207265666572656e6365206d6174657269616c206f7220746f2063697465207468656d206f74686572207468616e206173202fe2809c776f726b20696e2070726f67726573732e2fe2809d", "64a0861575861af460f062c79be643bd5e805cfd345cf389f108670ac76c8cb24c6cfc18755d43eea09ee94e382d26b0bdb7b73c321b0100d4f03b7f355894cf332f830e710b97ce98c8a84abd0b948114ad176e008d33bd60f982b1ff37c8559797a06ef4f0ef61c186324e2b3506383606907b6a7c02b0f9f6157b53c867e4b9166c767b804d46a59b5216cde7a4e99040c5a40433225ee282a1b0a06c523eaf4534d7f83fa1155b0047718cbc546a0d072b04b3564eea1b422273f548271a0bb2316053fa76991955ebd63159434ecebb4e466dae5a1073a6727627097a1049e617d91d361094fa68f0ff77987130305beaba2eda04df997b714d6c6f2c29a6ad5cb4022b02709b", "eead9d67890cbb22392336fea1851f38"); + + /* Unofficial test vectors, generated by libsodium. */ + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164", + "6d657373616765", + "5d9c0a9fe7d5e5", + "2824af504fdce6e85fc9d80c7c2a9f38"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "", + "6d657373616765", + "5d9c0a9fe7d5e5", + "c93aa61fc3cc66a819ac96f6ce365aee"); +} + +static void test_lengths(void) +{ + /* Tests covering interesting lengths of message and aad. */ + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164616164616164616164", + "", + "", + "694530bb11356a7a747ea9bcaa860165"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164616164616164616164", + "6d", + "5d", + "8f89ed0789f37c30eb3bfba2d24a198d"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164616164616164616164", + "6d65", + "5d9c", + "b6441d127b771e30408a1f974a0b956a"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164616164616164616164", + "6d6573", + "5d9c0a", + "a9a0059aef600f7b006570ba5be05421"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164616164616164616164", + "6d657373", + "5d9c0a9f", + "34cf6163d314bb3cea63be4aaa59492d"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164616164616164616164", + "6d65737361", + "5d9c0a9fe7", + "34a9140c4db224065466786cee7475ba"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164616164616164616164", + "6d6573736167", + "5d9c0a9fe7d5", + "97a55e6765d6b57905556f8d484d26a2"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164616164616164616164", + "6d657373616765", + "5d9c0a9fe7d5e5", + "d0c32fd8e17d1f2d1277f5cdfe7ed02f"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164616164616164616164", + "6d6573736167656d", + "5d9c0a9fe7d5e5df", + "3a37d26160b6c1f48647ca17da695f0b"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164616164616164616164", + "6d6573736167656d65", + "5d9c0a9fe7d5e5df13", + "dc1664ace460c2208f5a5dc4e5dd6472"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164616164616164616164", + "6d6573736167656d6573", + "5d9c0a9fe7d5e5df1359", + "c139bf5146e55f13aa0d088be91d5d0e"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164616164616164616164", + "6d6573736167656d657373", + "5d9c0a9fe7d5e5df13599c", + "0653af95c3876d53afb23d874f0623a5"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164616164616164616164", + "6d6573736167656d65737361", + "5d9c0a9fe7d5e5df13599cd8", + "f3cffa6dc06b891976eb83f58ca9ea50"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164616164616164616164", + "6d6573736167656d6573736167", + "5d9c0a9fe7d5e5df13599cd8d2", + "aac03a4c3f0a74b99a423c79be60fd4d"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164616164616164616164", + "6d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d210", + "76c4fce07331b5159caf5b1743337a7e"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164616164616164616164", + "6d6573736167656d6573736167656d", + "5d9c0a9fe7d5e5df13599cd8d21073", + "70d8a3116508eac3569c3fe1ff92d715"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164616164616164616164", + "6d6573736167656d6573736167656d65", + "5d9c0a9fe7d5e5df13599cd8d2107344", + "9f522873285b867612c8ba1f2a8fa12f"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164616164616164616164", + "6d6573736167656d6573736167656d6573", + "5d9c0a9fe7d5e5df13599cd8d210734485", + "03bdca913cd39d8b210d2042ea05c15a"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164616164616164616164", + "6d6573736167656d6573736167656d657373", + "5d9c0a9fe7d5e5df13599cd8d21073448516", + "3fdfe713bac773c5ab3616f6e459c2d0"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164616164616164616164", + "6d6573736167656d6573736167656d65737361", + "5d9c0a9fe7d5e5df13599cd8d2107344851619", + "f4554c5573f9af71d28339bbf312a98b"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164616164616164616164", + "6d6573736167656d6573736167656d6573736167", + "5d9c0a9fe7d5e5df13599cd8d210734485161952", + "fd081f2ad290c68e95dbd5ac14431cf2"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164616164616164616164", + "6d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a", + "773cee9dd69f288e12af8c0d44580e7e"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164616164616164616164", + "6d6573736167656d6573736167656d6573736167656d", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93", + "f462a121793b23a01fec3d9f735f2a70"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164616164616164616164", + "6d6573736167656d6573736167656d6573736167656d65", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a9359", + "a27257b7fde85b905516b0536e6528c2"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164616164616164616164", + "6d6573736167656d6573736167656d6573736167656d6573", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b", + "c948430fbab784474ec0b4bfc319174a"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164616164616164616164", + "6d6573736167656d6573736167656d6573736167656d657373", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5a", + "89d071c979654af2b2a7157eeff3cd01"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164616164616164616164", + "6d6573736167656d6573736167656d6573736167656d65737361", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae5", + "a08ad7fde904c3dcc78b831beb475259"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164616164616164616164", + "6d6573736167656d6573736167656d6573736167656d6573736167", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f", + "d845c1c8cbc5819751a7c492349b73c9"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164616164616164616164", + "6d6573736167656d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57", + "2ef6be0a3dc38abb2b8c243c9d223454"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164616164616164616164", + "6d6573736167656d6573736167656d6573736167656d6573736167656d", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f5712", + "31d298c294449b1be2a00c69cdc670e7"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164616164616164616164", + "6d6573736167656d6573736167656d6573736167656d6573736167656d65", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b", + "61bfb5bd4a8588726465753c824508fa"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164616164616164616164", + "6d6573736167656d6573736167656d6573736167656d6573736167656d6573", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b0e", + "6d88783b5e19126488a8bc78e9f0104a"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "", + "6d6573736167656d6573736167656d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b0ee715d2c4", + "1924f71204944fe87c16c2f6549c50a3"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "61", + "6d6573736167656d6573736167656d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b0ee715d2c4", + "fc9d4a3dab2b33f055e055ca3652b260"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "6161", + "6d6573736167656d6573736167656d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b0ee715d2c4", + "bec499d2764e6a5cedaadd3b095750f5"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164", + "6d6573736167656d6573736167656d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b0ee715d2c4", + "3810131fdd0255fc06f2af776bb014cf"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "61616461", + "6d6573736167656d6573736167656d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b0ee715d2c4", + "684e1ec4cf1d0996fd5c0444d62347d0"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "6161646161", + "6d6573736167656d6573736167656d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b0ee715d2c4", + "5a8e9217d03ae2029e4b34d548eabefa"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164", + "6d6573736167656d6573736167656d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b0ee715d2c4", + "3a3e5d23f581720ad0ed97e837fb00b5"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "61616461616461", + "6d6573736167656d6573736167656d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b0ee715d2c4", + "b33799e10c5b5b9e6859f5d84a8ed377"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "6161646161646161", + "6d6573736167656d6573736167656d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b0ee715d2c4", + "dac7c865269df23f03ea2573e1fc6a42"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164", + "6d6573736167656d6573736167656d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b0ee715d2c4", + "db14acd3af354206c831f19e2b9f8489"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "61616461616461616461", + "6d6573736167656d6573736167656d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b0ee715d2c4", + "81161ae2823f44bf1ed248313f3b7bf4"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "6161646161646161646161", + "6d6573736167656d6573736167656d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b0ee715d2c4", + "3ace5198ec3c0c7ade20aec577aa1be3"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164", + "6d6573736167656d6573736167656d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b0ee715d2c4", + "b428a52b13eebda4f427388467b44d85"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "61616461616461616461616461", + "6d6573736167656d6573736167656d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b0ee715d2c4", + "6457a561ee2910197ce1b4d4af4ae6f0"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "6161646161646161646161646161", + "6d6573736167656d6573736167656d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b0ee715d2c4", + "5d1a0aaa7f2f0a24f760338ea6ee8081"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164", + "6d6573736167656d6573736167656d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b0ee715d2c4", + "54530fb3b350e1eb25ca219e55b745c9"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "61616461616461616461616461616461", + "6d6573736167656d6573736167656d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b0ee715d2c4", + "7f4c50f4bb1e5b68dfd3591fb7729c69"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "6161646161646161646161646161646161", + "6d6573736167656d6573736167656d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b0ee715d2c4", + "d20714d88921f9e2a744161d06dfb09d"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164", + "6d6573736167656d6573736167656d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b0ee715d2c4", + "094b18e3134ee0f5f65115d9039f923e"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "61616461616461616461616461616461616461", + "6d6573736167656d6573736167656d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b0ee715d2c4", + "3920757a0444c1e569e1a49d1bcd9bd4"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "6161646161646161646161646161646161646161", + "6d6573736167656d6573736167656d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b0ee715d2c4", + "645e801ff75e757f604cf9698640ced5"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164", + "6d6573736167656d6573736167656d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b0ee715d2c4", + "01f343e91331c4aa0aebcfb23b7e902b"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "61616461616461616461616461616461616461616461", + "6d6573736167656d6573736167656d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b0ee715d2c4", + "eaf8b9a5c25b9f3c7e83831f734c5b9b"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "6161646161646161646161646161646161646161646161", + "6d6573736167656d6573736167656d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b0ee715d2c4", + "68f2f563da3488d016efe00f86df2d5e"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164", + "6d6573736167656d6573736167656d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b0ee715d2c4", + "a09f1b9248c6958e66f5cfb3ccf47c6b"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "61616461616461616461616461616461616461616461616461", + "6d6573736167656d6573736167656d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b0ee715d2c4", + "91d7e109280a96de0e8825210de7effa"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "6161646161646161646161646161646161646161646161646161", + "6d6573736167656d6573736167656d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b0ee715d2c4", + "37d94f18fb13989765287db32083e665"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164", + "6d6573736167656d6573736167656d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b0ee715d2c4", + "7df69ae381070aa774edfefcceb09004"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "61616461616461616461616461616461616461616461616461616461", + "6d6573736167656d6573736167656d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b0ee715d2c4", + "9bc08863939bc52736a5129f0945049d"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "6161646161646161646161646161646161646161646161646161646161", + "6d6573736167656d6573736167656d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b0ee715d2c4", + "4bef88996ed7179cbd5e8fef51db9c08"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "616164616164616164616164616164616164616164616164616164616164", + "6d6573736167656d6573736167656d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b0ee715d2c4", + "6fbe497265f026c42e8862f8be9bec0e"); + + vector("6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e6b65792e", + "6e6f6e63652e6e6f6e63652e", + "61616461616461616461616461616461616461616461616461616461616461", + "6d6573736167656d6573736167656d6573736167656d6573736167656d657373616765", + "5d9c0a9fe7d5e5df13599cd8d2107344851619523a93599b5ae54f57122b0ee715d2c4", + "55c9421f09acea7640fba6b31eee94a1"); } TEST_LIST = { { "vectors", test_vectors }, + { "lentests", test_lengths }, { 0 } };