]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - crypto/testmgr.h
Merge tag 'armsoc-tee' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
[karo-tx-linux.git] / crypto / testmgr.h
index 9b656be7f52f9dab558a9667d3787fc9ddcf64a8..429357339dcccc301811005aa7584478842580aa 100644 (file)
@@ -34,9 +34,9 @@
 
 struct hash_testvec {
        /* only used with keyed hash algorithms */
-       char *key;
-       char *plaintext;
-       char *digest;
+       const char *key;
+       const char *plaintext;
+       const char *digest;
        unsigned char tap[MAX_TAP];
        unsigned short psize;
        unsigned char np;
@@ -63,11 +63,11 @@ struct hash_testvec {
  */
 
 struct cipher_testvec {
-       char *key;
-       char *iv;
-       char *iv_out;
-       char *input;
-       char *result;
+       const char *key;
+       const char *iv;
+       const char *iv_out;
+       const char *input;
+       const char *result;
        unsigned short tap[MAX_TAP];
        int np;
        unsigned char also_non_np;
@@ -80,11 +80,11 @@ struct cipher_testvec {
 };
 
 struct aead_testvec {
-       char *key;
-       char *iv;
-       char *input;
-       char *assoc;
-       char *result;
+       const char *key;
+       const char *iv;
+       const char *input;
+       const char *assoc;
+       const char *result;
        unsigned char tap[MAX_TAP];
        unsigned char atap[MAX_TAP];
        int np;
@@ -99,10 +99,10 @@ struct aead_testvec {
 };
 
 struct cprng_testvec {
-       char *key;
-       char *dt;
-       char *v;
-       char *result;
+       const char *key;
+       const char *dt;
+       const char *v;
+       const char *result;
        unsigned char klen;
        unsigned short dtlen;
        unsigned short vlen;
@@ -111,24 +111,24 @@ struct cprng_testvec {
 };
 
 struct drbg_testvec {
-       unsigned char *entropy;
+       const unsigned char *entropy;
        size_t entropylen;
-       unsigned char *entpra;
-       unsigned char *entprb;
+       const unsigned char *entpra;
+       const unsigned char *entprb;
        size_t entprlen;
-       unsigned char *addtla;
-       unsigned char *addtlb;
+       const unsigned char *addtla;
+       const unsigned char *addtlb;
        size_t addtllen;
-       unsigned char *pers;
+       const unsigned char *pers;
        size_t perslen;
-       unsigned char *expected;
+       const unsigned char *expected;
        size_t expectedlen;
 };
 
 struct akcipher_testvec {
-       unsigned char *key;
-       unsigned char *m;
-       unsigned char *c;
+       const unsigned char *key;
+       const unsigned char *m;
+       const unsigned char *c;
        unsigned int key_len;
        unsigned int m_size;
        unsigned int c_size;
@@ -136,27 +136,22 @@ struct akcipher_testvec {
 };
 
 struct kpp_testvec {
-       unsigned char *secret;
-       unsigned char *b_public;
-       unsigned char *expected_a_public;
-       unsigned char *expected_ss;
+       const unsigned char *secret;
+       const unsigned char *b_public;
+       const unsigned char *expected_a_public;
+       const unsigned char *expected_ss;
        unsigned short secret_size;
        unsigned short b_public_size;
        unsigned short expected_a_public_size;
        unsigned short expected_ss_size;
 };
 
-static char zeroed_string[48];
+static const char zeroed_string[48];
 
 /*
  * RSA test vectors. Borrowed from openSSL.
  */
-#ifdef CONFIG_CRYPTO_FIPS
-#define RSA_TEST_VECTORS       2
-#else
-#define RSA_TEST_VECTORS       5
-#endif
-static struct akcipher_testvec rsa_tv_template[] = {
+static const struct akcipher_testvec rsa_tv_template[] = {
        {
 #ifndef CONFIG_CRYPTO_FIPS
        .key =
@@ -340,6 +335,7 @@ static struct akcipher_testvec rsa_tv_template[] = {
        .m_size = 8,
        .c_size = 256,
        .public_key_vec = true,
+#ifndef CONFIG_CRYPTO_FIPS
        }, {
        .key =
        "\x30\x82\x09\x29" /* sequence of 2345 bytes */
@@ -538,12 +534,11 @@ static struct akcipher_testvec rsa_tv_template[] = {
        .key_len = 2349,
        .m_size = 8,
        .c_size = 512,
+#endif
        }
 };
 
-#define DH_TEST_VECTORS 2
-
-struct kpp_testvec dh_tv_template[] = {
+static const struct kpp_testvec dh_tv_template[] = {
        {
        .secret =
 #ifdef __LITTLE_ENDIAN
@@ -760,12 +755,7 @@ struct kpp_testvec dh_tv_template[] = {
        }
 };
 
-#ifdef CONFIG_CRYPTO_FIPS
-#define ECDH_TEST_VECTORS 1
-#else
-#define ECDH_TEST_VECTORS 2
-#endif
-struct kpp_testvec ecdh_tv_template[] = {
+static const struct kpp_testvec ecdh_tv_template[] = {
        {
 #ifndef CONFIG_CRYPTO_FIPS
        .secret =
@@ -856,9 +846,7 @@ struct kpp_testvec ecdh_tv_template[] = {
 /*
  * MD4 test vectors from RFC1320
  */
-#define MD4_TEST_VECTORS       7
-
-static struct hash_testvec md4_tv_template [] = {
+static const struct hash_testvec md4_tv_template[] = {
        {
                .plaintext = "",
                .digest = "\x31\xd6\xcf\xe0\xd1\x6a\xe9\x31"
@@ -899,8 +887,7 @@ static struct hash_testvec md4_tv_template [] = {
        },
 };
 
-#define SHA3_224_TEST_VECTORS  3
-static struct hash_testvec sha3_224_tv_template[] = {
+static const struct hash_testvec sha3_224_tv_template[] = {
        {
                .plaintext = "",
                .digest = "\x6b\x4e\x03\x42\x36\x67\xdb\xb7"
@@ -925,8 +912,7 @@ static struct hash_testvec sha3_224_tv_template[] = {
        },
 };
 
-#define SHA3_256_TEST_VECTORS  3
-static struct hash_testvec sha3_256_tv_template[] = {
+static const struct hash_testvec sha3_256_tv_template[] = {
        {
                .plaintext = "",
                .digest = "\xa7\xff\xc6\xf8\xbf\x1e\xd7\x66"
@@ -952,8 +938,7 @@ static struct hash_testvec sha3_256_tv_template[] = {
 };
 
 
-#define SHA3_384_TEST_VECTORS  3
-static struct hash_testvec sha3_384_tv_template[] = {
+static const struct hash_testvec sha3_384_tv_template[] = {
        {
                .plaintext = "",
                .digest = "\x0c\x63\xa7\x5b\x84\x5e\x4f\x7d"
@@ -985,8 +970,7 @@ static struct hash_testvec sha3_384_tv_template[] = {
 };
 
 
-#define SHA3_512_TEST_VECTORS  3
-static struct hash_testvec sha3_512_tv_template[] = {
+static const struct hash_testvec sha3_512_tv_template[] = {
        {
                .plaintext = "",
                .digest = "\xa6\x9f\x73\xcc\xa2\x3a\x9a\xc5"
@@ -1027,9 +1011,7 @@ static struct hash_testvec sha3_512_tv_template[] = {
 /*
  * MD5 test vectors from RFC1321
  */
-#define MD5_TEST_VECTORS       7
-
-static struct hash_testvec md5_tv_template[] = {
+static const struct hash_testvec md5_tv_template[] = {
        {
                .digest = "\xd4\x1d\x8c\xd9\x8f\x00\xb2\x04"
                          "\xe9\x80\x09\x98\xec\xf8\x42\x7e",
@@ -1073,9 +1055,7 @@ static struct hash_testvec md5_tv_template[] = {
 /*
  * RIPEMD-128 test vectors from ISO/IEC 10118-3:2004(E)
  */
-#define RMD128_TEST_VECTORS     10
-
-static struct hash_testvec rmd128_tv_template[] = {
+static const struct hash_testvec rmd128_tv_template[] = {
        {
                .digest = "\xcd\xf2\x62\x13\xa1\x50\xdc\x3e"
                          "\xcb\x61\x0f\x18\xf6\xb3\x8b\x46",
@@ -1137,9 +1117,7 @@ static struct hash_testvec rmd128_tv_template[] = {
 /*
  * RIPEMD-160 test vectors from ISO/IEC 10118-3:2004(E)
  */
-#define RMD160_TEST_VECTORS     10
-
-static struct hash_testvec rmd160_tv_template[] = {
+static const struct hash_testvec rmd160_tv_template[] = {
        {
                .digest = "\x9c\x11\x85\xa5\xc5\xe9\xfc\x54\x61\x28"
                          "\x08\x97\x7e\xe8\xf5\x48\xb2\x25\x8d\x31",
@@ -1201,9 +1179,7 @@ static struct hash_testvec rmd160_tv_template[] = {
 /*
  * RIPEMD-256 test vectors
  */
-#define RMD256_TEST_VECTORS     8
-
-static struct hash_testvec rmd256_tv_template[] = {
+static const struct hash_testvec rmd256_tv_template[] = {
        {
                .digest = "\x02\xba\x4c\x4e\x5f\x8e\xcd\x18"
                          "\x77\xfc\x52\xd6\x4d\x30\xe3\x7a"
@@ -1269,9 +1245,7 @@ static struct hash_testvec rmd256_tv_template[] = {
 /*
  * RIPEMD-320 test vectors
  */
-#define RMD320_TEST_VECTORS     8
-
-static struct hash_testvec rmd320_tv_template[] = {
+static const struct hash_testvec rmd320_tv_template[] = {
        {
                .digest = "\x22\xd6\x5d\x56\x61\x53\x6c\xdc\x75\xc1"
                          "\xfd\xf5\xc6\xde\x7b\x41\xb9\xf2\x73\x25"
@@ -1334,8 +1308,7 @@ static struct hash_testvec rmd320_tv_template[] = {
        }
 };
 
-#define CRCT10DIF_TEST_VECTORS ARRAY_SIZE(crct10dif_tv_template)
-static struct hash_testvec crct10dif_tv_template[] = {
+static const struct hash_testvec crct10dif_tv_template[] = {
        {
                .plaintext      = "abc",
                .psize          = 3,
@@ -1385,9 +1358,7 @@ static struct hash_testvec crct10dif_tv_template[] = {
  * SHA1 test vectors  from from FIPS PUB 180-1
  * Long vector from CAVS 5.0
  */
-#define SHA1_TEST_VECTORS      6
-
-static struct hash_testvec sha1_tv_template[] = {
+static const struct hash_testvec sha1_tv_template[] = {
        {
                .plaintext = "",
                .psize  = 0,
@@ -1577,9 +1548,7 @@ static struct hash_testvec sha1_tv_template[] = {
 /*
  * SHA224 test vectors from from FIPS PUB 180-2
  */
-#define SHA224_TEST_VECTORS     5
-
-static struct hash_testvec sha224_tv_template[] = {
+static const struct hash_testvec sha224_tv_template[] = {
        {
                .plaintext = "",
                .psize  = 0,
@@ -1751,9 +1720,7 @@ static struct hash_testvec sha224_tv_template[] = {
 /*
  * SHA256 test vectors from from NIST
  */
-#define SHA256_TEST_VECTORS    5
-
-static struct hash_testvec sha256_tv_template[] = {
+static const struct hash_testvec sha256_tv_template[] = {
        {
                .plaintext = "",
                .psize  = 0,
@@ -1924,9 +1891,7 @@ static struct hash_testvec sha256_tv_template[] = {
 /*
  * SHA384 test vectors from from NIST and kerneli
  */
-#define SHA384_TEST_VECTORS    6
-
-static struct hash_testvec sha384_tv_template[] = {
+static const struct hash_testvec sha384_tv_template[] = {
        {
                .plaintext = "",
                .psize  = 0,
@@ -2118,9 +2083,7 @@ static struct hash_testvec sha384_tv_template[] = {
 /*
  * SHA512 test vectors from from NIST and kerneli
  */
-#define SHA512_TEST_VECTORS    6
-
-static struct hash_testvec sha512_tv_template[] = {
+static const struct hash_testvec sha512_tv_template[] = {
        {
                .plaintext = "",
                .psize  = 0,
@@ -2327,9 +2290,7 @@ static struct hash_testvec sha512_tv_template[] = {
  * by Vincent Rijmen and Paulo S. L. M. Barreto as part of the NESSIE
  * submission
  */
-#define WP512_TEST_VECTORS     8
-
-static struct hash_testvec wp512_tv_template[] = {
+static const struct hash_testvec wp512_tv_template[] = {
        {
                .plaintext = "",
                .psize  = 0,
@@ -2425,9 +2386,7 @@ static struct hash_testvec wp512_tv_template[] = {
        },
 };
 
-#define WP384_TEST_VECTORS     8
-
-static struct hash_testvec wp384_tv_template[] = {
+static const struct hash_testvec wp384_tv_template[] = {
        {
                .plaintext = "",
                .psize  = 0,
@@ -2507,9 +2466,7 @@ static struct hash_testvec wp384_tv_template[] = {
        },
 };
 
-#define WP256_TEST_VECTORS     8
-
-static struct hash_testvec wp256_tv_template[] = {
+static const struct hash_testvec wp256_tv_template[] = {
        {
                .plaintext = "",
                .psize  = 0,
@@ -2576,9 +2533,7 @@ static struct hash_testvec wp256_tv_template[] = {
 /*
  * TIGER test vectors from Tiger website
  */
-#define TGR192_TEST_VECTORS    6
-
-static struct hash_testvec tgr192_tv_template[] = {
+static const struct hash_testvec tgr192_tv_template[] = {
        {
                .plaintext = "",
                .psize  = 0,
@@ -2621,9 +2576,7 @@ static struct hash_testvec tgr192_tv_template[] = {
        },
 };
 
-#define TGR160_TEST_VECTORS    6
-
-static struct hash_testvec tgr160_tv_template[] = {
+static const struct hash_testvec tgr160_tv_template[] = {
        {
                .plaintext = "",
                .psize  = 0,
@@ -2666,9 +2619,7 @@ static struct hash_testvec tgr160_tv_template[] = {
        },
 };
 
-#define TGR128_TEST_VECTORS    6
-
-static struct hash_testvec tgr128_tv_template[] = {
+static const struct hash_testvec tgr128_tv_template[] = {
        {
                .plaintext = "",
                .psize  = 0,
@@ -2705,9 +2656,7 @@ static struct hash_testvec tgr128_tv_template[] = {
        },
 };
 
-#define GHASH_TEST_VECTORS 6
-
-static struct hash_testvec ghash_tv_template[] =
+static const struct hash_testvec ghash_tv_template[] =
 {
        {
                .key    = "\xdf\xa6\xbf\x4d\xed\x81\xdb\x03"
@@ -2822,9 +2771,7 @@ static struct hash_testvec ghash_tv_template[] =
  * HMAC-MD5 test vectors from RFC2202
  * (These need to be fixed to not use strlen).
  */
-#define HMAC_MD5_TEST_VECTORS  7
-
-static struct hash_testvec hmac_md5_tv_template[] =
+static const struct hash_testvec hmac_md5_tv_template[] =
 {
        {
                .key    = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
@@ -2904,9 +2851,7 @@ static struct hash_testvec hmac_md5_tv_template[] =
 /*
  * HMAC-RIPEMD128 test vectors from RFC2286
  */
-#define HMAC_RMD128_TEST_VECTORS       7
-
-static struct hash_testvec hmac_rmd128_tv_template[] = {
+static const struct hash_testvec hmac_rmd128_tv_template[] = {
        {
                .key    = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
                .ksize  = 16,
@@ -2985,9 +2930,7 @@ static struct hash_testvec hmac_rmd128_tv_template[] = {
 /*
  * HMAC-RIPEMD160 test vectors from RFC2286
  */
-#define HMAC_RMD160_TEST_VECTORS       7
-
-static struct hash_testvec hmac_rmd160_tv_template[] = {
+static const struct hash_testvec hmac_rmd160_tv_template[] = {
        {
                .key    = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
                .ksize  = 20,
@@ -3066,9 +3009,7 @@ static struct hash_testvec hmac_rmd160_tv_template[] = {
 /*
  * HMAC-SHA1 test vectors from RFC2202
  */
-#define HMAC_SHA1_TEST_VECTORS 7
-
-static struct hash_testvec hmac_sha1_tv_template[] = {
+static const struct hash_testvec hmac_sha1_tv_template[] = {
        {
                .key    = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
                .ksize  = 20,
@@ -3149,9 +3090,7 @@ static struct hash_testvec hmac_sha1_tv_template[] = {
 /*
  * SHA224 HMAC test vectors from RFC4231
  */
-#define HMAC_SHA224_TEST_VECTORS    4
-
-static struct hash_testvec hmac_sha224_tv_template[] = {
+static const struct hash_testvec hmac_sha224_tv_template[] = {
        {
                .key    = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
                        "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
@@ -3264,9 +3203,7 @@ static struct hash_testvec hmac_sha224_tv_template[] = {
  * HMAC-SHA256 test vectors from
  * draft-ietf-ipsec-ciph-sha-256-01.txt
  */
-#define HMAC_SHA256_TEST_VECTORS       10
-
-static struct hash_testvec hmac_sha256_tv_template[] = {
+static const struct hash_testvec hmac_sha256_tv_template[] = {
        {
                .key    = "\x01\x02\x03\x04\x05\x06\x07\x08"
                          "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
@@ -3401,9 +3338,7 @@ static struct hash_testvec hmac_sha256_tv_template[] = {
        },
 };
 
-#define CMAC_AES_TEST_VECTORS 6
-
-static struct hash_testvec aes_cmac128_tv_template[] = {
+static const struct hash_testvec aes_cmac128_tv_template[] = {
        { /* From NIST Special Publication 800-38B, AES-128 */
                .key            = "\x2b\x7e\x15\x16\x28\xae\xd2\xa6"
                                  "\xab\xf7\x15\x88\x09\xcf\x4f\x3c",
@@ -3478,9 +3413,67 @@ static struct hash_testvec aes_cmac128_tv_template[] = {
        }
 };
 
-#define CMAC_DES3_EDE_TEST_VECTORS 4
+static const struct hash_testvec aes_cbcmac_tv_template[] = {
+       {
+               .key            = "\x2b\x7e\x15\x16\x28\xae\xd2\xa6"
+                                 "\xab\xf7\x15\x88\x09\xcf\x4f\x3c",
+               .plaintext      = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
+                                 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a",
+               .digest         = "\x3a\xd7\x7b\xb4\x0d\x7a\x36\x60"
+                                 "\xa8\x9e\xca\xf3\x24\x66\xef\x97",
+               .psize          = 16,
+               .ksize          = 16,
+       }, {
+               .key            = "\x2b\x7e\x15\x16\x28\xae\xd2\xa6"
+                                 "\xab\xf7\x15\x88\x09\xcf\x4f\x3c",
+               .plaintext      = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
+                                 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
+                                 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
+                                 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
+                                 "\x30",
+               .digest         = "\x9d\x0d\xd0\x63\xfb\xcb\x24\x43"
+                                 "\xf8\xf2\x76\x03\xac\x39\xb0\x9d",
+               .psize          = 33,
+               .ksize          = 16,
+               .np             = 2,
+               .tap            = { 7, 26 },
+       }, {
+               .key            = "\x2b\x7e\x15\x16\x28\xae\xd2\xa6"
+                                 "\xab\xf7\x15\x88\x09\xcf\x4f\x3c",
+               .plaintext      = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
+                                 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
+                                 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
+                                 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
+                                 "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
+                                 "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
+                                 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
+                                 "\xad\x2b\x41\x7b\xe6\x6c\x37",
+               .digest         = "\xc0\x71\x73\xb8\xa0\x2c\x11\x7c"
+                                 "\xaf\xdc\xb2\xf8\x89\x32\xa3\x3a",
+               .psize          = 63,
+               .ksize          = 16,
+       }, {
+               .key            = "\x60\x3d\xeb\x10\x15\xca\x71\xbe"
+                                 "\x2b\x73\xae\xf0\x85\x7d\x77\x81"
+                                 "\x1f\x35\x2c\x07\x3b\x61\x08\xd7"
+                                 "\x2d\x98\x10\xa3\x09\x14\xdf\xf4",
+               .plaintext      = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
+                                 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
+                                 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
+                                 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
+                                 "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
+                                 "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
+                                 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
+                                 "\xad\x2b\x41\x7b\xe6\x6c\x37\x10"
+                                 "\x1c",
+               .digest         = "\x6a\x4e\xdb\x21\x47\x51\xdf\x4f"
+                                 "\xa8\x4d\x4c\x10\x3b\x72\x7d\xd6",
+               .psize          = 65,
+               .ksize          = 32,
+       }
+};
 
-static struct hash_testvec des3_ede_cmac64_tv_template[] = {
+static const struct hash_testvec des3_ede_cmac64_tv_template[] = {
 /*
  * From NIST Special Publication 800-38B, Three Key TDEA
  * Corrected test vectors from:
@@ -3526,9 +3519,7 @@ static struct hash_testvec des3_ede_cmac64_tv_template[] = {
        }
 };
 
-#define XCBC_AES_TEST_VECTORS 6
-
-static struct hash_testvec aes_xcbc128_tv_template[] = {
+static const struct hash_testvec aes_xcbc128_tv_template[] = {
        {
                .key    = "\x00\x01\x02\x03\x04\x05\x06\x07"
                          "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
@@ -3594,36 +3585,35 @@ static struct hash_testvec aes_xcbc128_tv_template[] = {
        }
 };
 
-#define VMAC_AES_TEST_VECTORS  11
-static char vmac_string1[128] = {'\x01', '\x01', '\x01', '\x01',
-                               '\x02', '\x03', '\x02', '\x02',
-                               '\x02', '\x04', '\x01', '\x07',
-                               '\x04', '\x01', '\x04', '\x03',};
-static char vmac_string2[128] = {'a', 'b', 'c',};
-static char vmac_string3[128] = {'a', 'b', 'c', 'a', 'b', 'c',
-                               'a', 'b', 'c', 'a', 'b', 'c',
-                               'a', 'b', 'c', 'a', 'b', 'c',
-                               'a', 'b', 'c', 'a', 'b', 'c',
-                               'a', 'b', 'c', 'a', 'b', 'c',
-                               'a', 'b', 'c', 'a', 'b', 'c',
-                               'a', 'b', 'c', 'a', 'b', 'c',
-                               'a', 'b', 'c', 'a', 'b', 'c',
-                               };
-
-static char vmac_string4[17] = {'b', 'c', 'e', 'f',
-                               'i', 'j', 'l', 'm',
-                               'o', 'p', 'r', 's',
-                               't', 'u', 'w', 'x', 'z'};
-
-static char vmac_string5[127] = {'r', 'm', 'b', 't', 'c',
-                                'o', 'l', 'k', ']', '%',
-                                '9', '2', '7', '!', 'A'};
-
-static char vmac_string6[129] = {'p', 't', '*', '7', 'l',
-                                'i', '!', '#', 'w', '0',
-                                'z', '/', '4', 'A', 'n'};
-
-static struct hash_testvec aes_vmac128_tv_template[] = {
+static const char vmac_string1[128] = {'\x01', '\x01', '\x01', '\x01',
+                                      '\x02', '\x03', '\x02', '\x02',
+                                      '\x02', '\x04', '\x01', '\x07',
+                                      '\x04', '\x01', '\x04', '\x03',};
+static const char vmac_string2[128] = {'a', 'b', 'c',};
+static const char vmac_string3[128] = {'a', 'b', 'c', 'a', 'b', 'c',
+                                      'a', 'b', 'c', 'a', 'b', 'c',
+                                      'a', 'b', 'c', 'a', 'b', 'c',
+                                      'a', 'b', 'c', 'a', 'b', 'c',
+                                      'a', 'b', 'c', 'a', 'b', 'c',
+                                      'a', 'b', 'c', 'a', 'b', 'c',
+                                      'a', 'b', 'c', 'a', 'b', 'c',
+                                      'a', 'b', 'c', 'a', 'b', 'c',
+                                     };
+
+static const char vmac_string4[17] = {'b', 'c', 'e', 'f',
+                                     'i', 'j', 'l', 'm',
+                                     'o', 'p', 'r', 's',
+                                     't', 'u', 'w', 'x', 'z'};
+
+static const char vmac_string5[127] = {'r', 'm', 'b', 't', 'c',
+                                      'o', 'l', 'k', ']', '%',
+                                      '9', '2', '7', '!', 'A'};
+
+static const char vmac_string6[129] = {'p', 't', '*', '7', 'l',
+                                      'i', '!', '#', 'w', '0',
+                                      'z', '/', '4', 'A', 'n'};
+
+static const struct hash_testvec aes_vmac128_tv_template[] = {
        {
                .key    = "\x00\x01\x02\x03\x04\x05\x06\x07"
                          "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
@@ -3701,9 +3691,7 @@ static struct hash_testvec aes_vmac128_tv_template[] = {
  * SHA384 HMAC test vectors from RFC4231
  */
 
-#define HMAC_SHA384_TEST_VECTORS       4
-
-static struct hash_testvec hmac_sha384_tv_template[] = {
+static const struct hash_testvec hmac_sha384_tv_template[] = {
        {
                .key    = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
                          "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
@@ -3801,9 +3789,7 @@ static struct hash_testvec hmac_sha384_tv_template[] = {
  * SHA512 HMAC test vectors from RFC4231
  */
 
-#define HMAC_SHA512_TEST_VECTORS       4
-
-static struct hash_testvec hmac_sha512_tv_template[] = {
+static const struct hash_testvec hmac_sha512_tv_template[] = {
        {
                .key    = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
                          "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
@@ -3908,9 +3894,7 @@ static struct hash_testvec hmac_sha512_tv_template[] = {
        },
 };
 
-#define HMAC_SHA3_224_TEST_VECTORS     4
-
-static struct hash_testvec hmac_sha3_224_tv_template[] = {
+static const struct hash_testvec hmac_sha3_224_tv_template[] = {
        {
                .key    = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
                          "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
@@ -3999,9 +3983,7 @@ static struct hash_testvec hmac_sha3_224_tv_template[] = {
        },
 };
 
-#define HMAC_SHA3_256_TEST_VECTORS     4
-
-static struct hash_testvec hmac_sha3_256_tv_template[] = {
+static const struct hash_testvec hmac_sha3_256_tv_template[] = {
        {
                .key    = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
                          "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
@@ -4090,9 +4072,7 @@ static struct hash_testvec hmac_sha3_256_tv_template[] = {
        },
 };
 
-#define HMAC_SHA3_384_TEST_VECTORS     4
-
-static struct hash_testvec hmac_sha3_384_tv_template[] = {
+static const struct hash_testvec hmac_sha3_384_tv_template[] = {
        {
                .key    = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
                          "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
@@ -4189,9 +4169,7 @@ static struct hash_testvec hmac_sha3_384_tv_template[] = {
        },
 };
 
-#define HMAC_SHA3_512_TEST_VECTORS     4
-
-static struct hash_testvec hmac_sha3_512_tv_template[] = {
+static const struct hash_testvec hmac_sha3_512_tv_template[] = {
        {
                .key    = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
                          "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
@@ -4300,9 +4278,7 @@ static struct hash_testvec hmac_sha3_512_tv_template[] = {
  * Poly1305 test vectors from RFC7539 A.3.
  */
 
-#define POLY1305_TEST_VECTORS  11
-
-static struct hash_testvec poly1305_tv_template[] = {
+static const struct hash_testvec poly1305_tv_template[] = {
        { /* Test Vector #1 */
                .plaintext      = "\x00\x00\x00\x00\x00\x00\x00\x00"
                                  "\x00\x00\x00\x00\x00\x00\x00\x00"
@@ -4547,20 +4523,7 @@ static struct hash_testvec poly1305_tv_template[] = {
 /*
  * DES test vectors.
  */
-#define DES_ENC_TEST_VECTORS           11
-#define DES_DEC_TEST_VECTORS           5
-#define DES_CBC_ENC_TEST_VECTORS       6
-#define DES_CBC_DEC_TEST_VECTORS       5
-#define DES_CTR_ENC_TEST_VECTORS       2
-#define DES_CTR_DEC_TEST_VECTORS       2
-#define DES3_EDE_ENC_TEST_VECTORS      4
-#define DES3_EDE_DEC_TEST_VECTORS      4
-#define DES3_EDE_CBC_ENC_TEST_VECTORS  2
-#define DES3_EDE_CBC_DEC_TEST_VECTORS  2
-#define DES3_EDE_CTR_ENC_TEST_VECTORS  2
-#define DES3_EDE_CTR_DEC_TEST_VECTORS  2
-
-static struct cipher_testvec des_enc_tv_template[] = {
+static const struct cipher_testvec des_enc_tv_template[] = {
        { /* From Applied Cryptography */
                .key    = "\x01\x23\x45\x67\x89\xab\xcd\xef",
                .klen   = 8,
@@ -4734,7 +4697,7 @@ static struct cipher_testvec des_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec des_dec_tv_template[] = {
+static const struct cipher_testvec des_dec_tv_template[] = {
        { /* From Applied Cryptography */
                .key    = "\x01\x23\x45\x67\x89\xab\xcd\xef",
                .klen   = 8,
@@ -4844,7 +4807,7 @@ static struct cipher_testvec des_dec_tv_template[] = {
        },
 };
 
-static struct cipher_testvec des_cbc_enc_tv_template[] = {
+static const struct cipher_testvec des_cbc_enc_tv_template[] = {
        { /* From OpenSSL */
                .key    = "\x01\x23\x45\x67\x89\xab\xcd\xef",
                .klen   = 8,
@@ -4970,7 +4933,7 @@ static struct cipher_testvec des_cbc_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec des_cbc_dec_tv_template[] = {
+static const struct cipher_testvec des_cbc_dec_tv_template[] = {
        { /* FIPS Pub 81 */
                .key    = "\x01\x23\x45\x67\x89\xab\xcd\xef",
                .klen   = 8,
@@ -5079,7 +5042,7 @@ static struct cipher_testvec des_cbc_dec_tv_template[] = {
        },
 };
 
-static struct cipher_testvec des_ctr_enc_tv_template[] = {
+static const struct cipher_testvec des_ctr_enc_tv_template[] = {
        { /* Generated with Crypto++ */
                .key    = "\xC9\x83\xA6\xC9\xEC\x0F\x32\x55",
                .klen   = 8,
@@ -5225,7 +5188,7 @@ static struct cipher_testvec des_ctr_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec des_ctr_dec_tv_template[] = {
+static const struct cipher_testvec des_ctr_dec_tv_template[] = {
        { /* Generated with Crypto++ */
                .key    = "\xC9\x83\xA6\xC9\xEC\x0F\x32\x55",
                .klen   = 8,
@@ -5371,7 +5334,7 @@ static struct cipher_testvec des_ctr_dec_tv_template[] = {
        },
 };
 
-static struct cipher_testvec des3_ede_enc_tv_template[] = {
+static const struct cipher_testvec des3_ede_enc_tv_template[] = {
        { /* These are from openssl */
                .key    = "\x01\x23\x45\x67\x89\xab\xcd\xef"
                          "\x55\x55\x55\x55\x55\x55\x55\x55"
@@ -5536,7 +5499,7 @@ static struct cipher_testvec des3_ede_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec des3_ede_dec_tv_template[] = {
+static const struct cipher_testvec des3_ede_dec_tv_template[] = {
        { /* These are from openssl */
                .key    = "\x01\x23\x45\x67\x89\xab\xcd\xef"
                          "\x55\x55\x55\x55\x55\x55\x55\x55"
@@ -5701,7 +5664,7 @@ static struct cipher_testvec des3_ede_dec_tv_template[] = {
        },
 };
 
-static struct cipher_testvec des3_ede_cbc_enc_tv_template[] = {
+static const struct cipher_testvec des3_ede_cbc_enc_tv_template[] = {
        { /* Generated from openssl */
                .key    = "\xE9\xC0\xFF\x2E\x76\x0B\x64\x24"
                          "\x44\x4D\x99\x5A\x12\xD6\x40\xC0"
@@ -5881,7 +5844,7 @@ static struct cipher_testvec des3_ede_cbc_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec des3_ede_cbc_dec_tv_template[] = {
+static const struct cipher_testvec des3_ede_cbc_dec_tv_template[] = {
        { /* Generated from openssl */
                .key    = "\xE9\xC0\xFF\x2E\x76\x0B\x64\x24"
                          "\x44\x4D\x99\x5A\x12\xD6\x40\xC0"
@@ -6061,7 +6024,7 @@ static struct cipher_testvec des3_ede_cbc_dec_tv_template[] = {
        },
 };
 
-static struct cipher_testvec des3_ede_ctr_enc_tv_template[] = {
+static const struct cipher_testvec des3_ede_ctr_enc_tv_template[] = {
        { /* Generated with Crypto++ */
                .key    = "\x9C\xD6\xF3\x9C\xB9\x5A\x67\x00"
                          "\x5A\x67\x00\x2D\xCE\xEB\x2D\xCE"
@@ -6339,7 +6302,7 @@ static struct cipher_testvec des3_ede_ctr_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec des3_ede_ctr_dec_tv_template[] = {
+static const struct cipher_testvec des3_ede_ctr_dec_tv_template[] = {
        { /* Generated with Crypto++ */
                .key    = "\x9C\xD6\xF3\x9C\xB9\x5A\x67\x00"
                          "\x5A\x67\x00\x2D\xCE\xEB\x2D\xCE"
@@ -6620,14 +6583,7 @@ static struct cipher_testvec des3_ede_ctr_dec_tv_template[] = {
 /*
  * Blowfish test vectors.
  */
-#define BF_ENC_TEST_VECTORS    7
-#define BF_DEC_TEST_VECTORS    7
-#define BF_CBC_ENC_TEST_VECTORS        2
-#define BF_CBC_DEC_TEST_VECTORS        2
-#define BF_CTR_ENC_TEST_VECTORS        2
-#define BF_CTR_DEC_TEST_VECTORS        2
-
-static struct cipher_testvec bf_enc_tv_template[] = {
+static const struct cipher_testvec bf_enc_tv_template[] = {
        { /* DES test vectors from OpenSSL */
                .key    = "\x00\x00\x00\x00\x00\x00\x00\x00",
                .klen   = 8,
@@ -6819,7 +6775,7 @@ static struct cipher_testvec bf_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec bf_dec_tv_template[] = {
+static const struct cipher_testvec bf_dec_tv_template[] = {
        { /* DES test vectors from OpenSSL */
                .key    = "\x00\x00\x00\x00\x00\x00\x00\x00",
                .klen   = 8,
@@ -7011,7 +6967,7 @@ static struct cipher_testvec bf_dec_tv_template[] = {
        },
 };
 
-static struct cipher_testvec bf_cbc_enc_tv_template[] = {
+static const struct cipher_testvec bf_cbc_enc_tv_template[] = {
        { /* From OpenSSL */
                .key    = "\x01\x23\x45\x67\x89\xab\xcd\xef"
                          "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
@@ -7168,7 +7124,7 @@ static struct cipher_testvec bf_cbc_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec bf_cbc_dec_tv_template[] = {
+static const struct cipher_testvec bf_cbc_dec_tv_template[] = {
        { /* From OpenSSL */
                .key    = "\x01\x23\x45\x67\x89\xab\xcd\xef"
                          "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
@@ -7325,7 +7281,7 @@ static struct cipher_testvec bf_cbc_dec_tv_template[] = {
        },
 };
 
-static struct cipher_testvec bf_ctr_enc_tv_template[] = {
+static const struct cipher_testvec bf_ctr_enc_tv_template[] = {
        { /* Generated with Crypto++ */
                .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
                          "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
@@ -7737,7 +7693,7 @@ static struct cipher_testvec bf_ctr_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec bf_ctr_dec_tv_template[] = {
+static const struct cipher_testvec bf_ctr_dec_tv_template[] = {
        { /* Generated with Crypto++ */
                .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
                          "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
@@ -8152,18 +8108,7 @@ static struct cipher_testvec bf_ctr_dec_tv_template[] = {
 /*
  * Twofish test vectors.
  */
-#define TF_ENC_TEST_VECTORS            4
-#define TF_DEC_TEST_VECTORS            4
-#define TF_CBC_ENC_TEST_VECTORS                5
-#define TF_CBC_DEC_TEST_VECTORS                5
-#define TF_CTR_ENC_TEST_VECTORS                2
-#define TF_CTR_DEC_TEST_VECTORS                2
-#define TF_LRW_ENC_TEST_VECTORS                8
-#define TF_LRW_DEC_TEST_VECTORS                8
-#define TF_XTS_ENC_TEST_VECTORS                5
-#define TF_XTS_DEC_TEST_VECTORS                5
-
-static struct cipher_testvec tf_enc_tv_template[] = {
+static const struct cipher_testvec tf_enc_tv_template[] = {
        {
                .key    = zeroed_string,
                .klen   = 16,
@@ -8331,7 +8276,7 @@ static struct cipher_testvec tf_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec tf_dec_tv_template[] = {
+static const struct cipher_testvec tf_dec_tv_template[] = {
        {
                .key    = zeroed_string,
                .klen   = 16,
@@ -8499,7 +8444,7 @@ static struct cipher_testvec tf_dec_tv_template[] = {
        },
 };
 
-static struct cipher_testvec tf_cbc_enc_tv_template[] = {
+static const struct cipher_testvec tf_cbc_enc_tv_template[] = {
        { /* Generated with Nettle */
                .key    = zeroed_string,
                .klen   = 16,
@@ -8682,7 +8627,7 @@ static struct cipher_testvec tf_cbc_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec tf_cbc_dec_tv_template[] = {
+static const struct cipher_testvec tf_cbc_dec_tv_template[] = {
        { /* Reverse of the first four above */
                .key    = zeroed_string,
                .klen   = 16,
@@ -8865,7 +8810,7 @@ static struct cipher_testvec tf_cbc_dec_tv_template[] = {
        },
 };
 
-static struct cipher_testvec tf_ctr_enc_tv_template[] = {
+static const struct cipher_testvec tf_ctr_enc_tv_template[] = {
        { /* Generated with Crypto++ */
                .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
                          "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
@@ -9276,7 +9221,7 @@ static struct cipher_testvec tf_ctr_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec tf_ctr_dec_tv_template[] = {
+static const struct cipher_testvec tf_ctr_dec_tv_template[] = {
        { /* Generated with Crypto++ */
                .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
                          "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
@@ -9687,7 +9632,7 @@ static struct cipher_testvec tf_ctr_dec_tv_template[] = {
        },
 };
 
-static struct cipher_testvec tf_lrw_enc_tv_template[] = {
+static const struct cipher_testvec tf_lrw_enc_tv_template[] = {
        /* Generated from AES-LRW test vectors */
        {
                .key    = "\x45\x62\xac\x25\xf8\x28\x17\x6d"
@@ -9939,7 +9884,7 @@ static struct cipher_testvec tf_lrw_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec tf_lrw_dec_tv_template[] = {
+static const struct cipher_testvec tf_lrw_dec_tv_template[] = {
        /* Generated from AES-LRW test vectors */
        /* same as enc vectors with input and result reversed */
        {
@@ -10192,7 +10137,7 @@ static struct cipher_testvec tf_lrw_dec_tv_template[] = {
        },
 };
 
-static struct cipher_testvec tf_xts_enc_tv_template[] = {
+static const struct cipher_testvec tf_xts_enc_tv_template[] = {
        /* Generated from AES-XTS test vectors */
 {
                .key    = "\x00\x00\x00\x00\x00\x00\x00\x00"
@@ -10534,7 +10479,7 @@ static struct cipher_testvec tf_xts_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec tf_xts_dec_tv_template[] = {
+static const struct cipher_testvec tf_xts_dec_tv_template[] = {
        /* Generated from AES-XTS test vectors */
        /* same as enc vectors with input and result reversed */
        {
@@ -10881,25 +10826,7 @@ static struct cipher_testvec tf_xts_dec_tv_template[] = {
  * Serpent test vectors.  These are backwards because Serpent writes
  * octet sequences in right-to-left mode.
  */
-#define SERPENT_ENC_TEST_VECTORS       5
-#define SERPENT_DEC_TEST_VECTORS       5
-
-#define TNEPRES_ENC_TEST_VECTORS       4
-#define TNEPRES_DEC_TEST_VECTORS       4
-
-#define SERPENT_CBC_ENC_TEST_VECTORS   1
-#define SERPENT_CBC_DEC_TEST_VECTORS   1
-
-#define SERPENT_CTR_ENC_TEST_VECTORS   2
-#define SERPENT_CTR_DEC_TEST_VECTORS   2
-
-#define SERPENT_LRW_ENC_TEST_VECTORS   8
-#define SERPENT_LRW_DEC_TEST_VECTORS   8
-
-#define SERPENT_XTS_ENC_TEST_VECTORS   5
-#define SERPENT_XTS_DEC_TEST_VECTORS   5
-
-static struct cipher_testvec serpent_enc_tv_template[] = {
+static const struct cipher_testvec serpent_enc_tv_template[] = {
        {
                .input  = "\x00\x01\x02\x03\x04\x05\x06\x07"
                          "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
@@ -11075,7 +11002,7 @@ static struct cipher_testvec serpent_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec tnepres_enc_tv_template[] = {
+static const struct cipher_testvec tnepres_enc_tv_template[] = {
        { /* KeySize=128, PT=0, I=1 */
                .input  = "\x00\x00\x00\x00\x00\x00\x00\x00"
                          "\x00\x00\x00\x00\x00\x00\x00\x00",
@@ -11125,7 +11052,7 @@ static struct cipher_testvec tnepres_enc_tv_template[] = {
 };
 
 
-static struct cipher_testvec serpent_dec_tv_template[] = {
+static const struct cipher_testvec serpent_dec_tv_template[] = {
        {
                .input  = "\x12\x07\xfc\xce\x9b\xd0\xd6\x47"
                          "\x6a\xe9\x8f\xbe\xd1\x43\xa0\xe2",
@@ -11301,7 +11228,7 @@ static struct cipher_testvec serpent_dec_tv_template[] = {
        },
 };
 
-static struct cipher_testvec tnepres_dec_tv_template[] = {
+static const struct cipher_testvec tnepres_dec_tv_template[] = {
        {
                .input  = "\x41\xcc\x6b\x31\x59\x31\x45\x97"
                          "\x6d\x6f\xbb\x38\x4b\x37\x21\x28",
@@ -11342,7 +11269,7 @@ static struct cipher_testvec tnepres_dec_tv_template[] = {
        },
 };
 
-static struct cipher_testvec serpent_cbc_enc_tv_template[] = {
+static const struct cipher_testvec serpent_cbc_enc_tv_template[] = {
        { /* Generated with Crypto++ */
                .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
                          "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
@@ -11483,7 +11410,7 @@ static struct cipher_testvec serpent_cbc_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec serpent_cbc_dec_tv_template[] = {
+static const struct cipher_testvec serpent_cbc_dec_tv_template[] = {
        { /* Generated with Crypto++ */
                .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
                          "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
@@ -11624,7 +11551,7 @@ static struct cipher_testvec serpent_cbc_dec_tv_template[] = {
        },
 };
 
-static struct cipher_testvec serpent_ctr_enc_tv_template[] = {
+static const struct cipher_testvec serpent_ctr_enc_tv_template[] = {
        { /* Generated with Crypto++ */
                .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
                          "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
@@ -12035,7 +11962,7 @@ static struct cipher_testvec serpent_ctr_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec serpent_ctr_dec_tv_template[] = {
+static const struct cipher_testvec serpent_ctr_dec_tv_template[] = {
        { /* Generated with Crypto++ */
                .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
                          "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
@@ -12446,7 +12373,7 @@ static struct cipher_testvec serpent_ctr_dec_tv_template[] = {
        },
 };
 
-static struct cipher_testvec serpent_lrw_enc_tv_template[] = {
+static const struct cipher_testvec serpent_lrw_enc_tv_template[] = {
        /* Generated from AES-LRW test vectors */
        {
                .key    = "\x45\x62\xac\x25\xf8\x28\x17\x6d"
@@ -12698,7 +12625,7 @@ static struct cipher_testvec serpent_lrw_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec serpent_lrw_dec_tv_template[] = {
+static const struct cipher_testvec serpent_lrw_dec_tv_template[] = {
        /* Generated from AES-LRW test vectors */
        /* same as enc vectors with input and result reversed */
        {
@@ -12951,7 +12878,7 @@ static struct cipher_testvec serpent_lrw_dec_tv_template[] = {
        },
 };
 
-static struct cipher_testvec serpent_xts_enc_tv_template[] = {
+static const struct cipher_testvec serpent_xts_enc_tv_template[] = {
        /* Generated from AES-XTS test vectors */
        {
                .key    = "\x00\x00\x00\x00\x00\x00\x00\x00"
@@ -13293,7 +13220,7 @@ static struct cipher_testvec serpent_xts_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec serpent_xts_dec_tv_template[] = {
+static const struct cipher_testvec serpent_xts_dec_tv_template[] = {
        /* Generated from AES-XTS test vectors */
        /* same as enc vectors with input and result reversed */
        {
@@ -13637,18 +13564,7 @@ static struct cipher_testvec serpent_xts_dec_tv_template[] = {
 };
 
 /* Cast6 test vectors from RFC 2612 */
-#define CAST6_ENC_TEST_VECTORS         4
-#define CAST6_DEC_TEST_VECTORS         4
-#define CAST6_CBC_ENC_TEST_VECTORS     1
-#define CAST6_CBC_DEC_TEST_VECTORS     1
-#define CAST6_CTR_ENC_TEST_VECTORS     2
-#define CAST6_CTR_DEC_TEST_VECTORS     2
-#define CAST6_LRW_ENC_TEST_VECTORS     1
-#define CAST6_LRW_DEC_TEST_VECTORS     1
-#define CAST6_XTS_ENC_TEST_VECTORS     1
-#define CAST6_XTS_DEC_TEST_VECTORS     1
-
-static struct cipher_testvec cast6_enc_tv_template[] = {
+static const struct cipher_testvec cast6_enc_tv_template[] = {
        {
                .key    = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
                          "\x0a\xf7\x56\x47\xf2\x9f\x61\x5d",
@@ -13819,7 +13735,7 @@ static struct cipher_testvec cast6_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec cast6_dec_tv_template[] = {
+static const struct cipher_testvec cast6_dec_tv_template[] = {
        {
                .key    = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
                          "\x0a\xf7\x56\x47\xf2\x9f\x61\x5d",
@@ -13990,7 +13906,7 @@ static struct cipher_testvec cast6_dec_tv_template[] = {
        },
 };
 
-static struct cipher_testvec cast6_cbc_enc_tv_template[] = {
+static const struct cipher_testvec cast6_cbc_enc_tv_template[] = {
        { /* Generated from TF test vectors */
                .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
                          "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
@@ -14131,7 +14047,7 @@ static struct cipher_testvec cast6_cbc_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec cast6_cbc_dec_tv_template[] = {
+static const struct cipher_testvec cast6_cbc_dec_tv_template[] = {
        { /* Generated from TF test vectors */
                .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
                          "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
@@ -14272,7 +14188,7 @@ static struct cipher_testvec cast6_cbc_dec_tv_template[] = {
        },
 };
 
-static struct cipher_testvec cast6_ctr_enc_tv_template[] = {
+static const struct cipher_testvec cast6_ctr_enc_tv_template[] = {
        { /* Generated from TF test vectors */
                .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
                          "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
@@ -14429,7 +14345,7 @@ static struct cipher_testvec cast6_ctr_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec cast6_ctr_dec_tv_template[] = {
+static const struct cipher_testvec cast6_ctr_dec_tv_template[] = {
        { /* Generated from TF test vectors */
                .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
                          "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
@@ -14586,7 +14502,7 @@ static struct cipher_testvec cast6_ctr_dec_tv_template[] = {
        },
 };
 
-static struct cipher_testvec cast6_lrw_enc_tv_template[] = {
+static const struct cipher_testvec cast6_lrw_enc_tv_template[] = {
        { /* Generated from TF test vectors */
                .key    = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
                          "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
@@ -14733,7 +14649,7 @@ static struct cipher_testvec cast6_lrw_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec cast6_lrw_dec_tv_template[] = {
+static const struct cipher_testvec cast6_lrw_dec_tv_template[] = {
        { /* Generated from TF test vectors */
                .key    = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
                          "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
@@ -14880,7 +14796,7 @@ static struct cipher_testvec cast6_lrw_dec_tv_template[] = {
        },
 };
 
-static struct cipher_testvec cast6_xts_enc_tv_template[] = {
+static const struct cipher_testvec cast6_xts_enc_tv_template[] = {
        { /* Generated from TF test vectors */
                .key    = "\x27\x18\x28\x18\x28\x45\x90\x45"
                          "\x23\x53\x60\x28\x74\x71\x35\x26"
@@ -15029,7 +14945,7 @@ static struct cipher_testvec cast6_xts_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec cast6_xts_dec_tv_template[] = {
+static const struct cipher_testvec cast6_xts_dec_tv_template[] = {
        { /* Generated from TF test vectors */
                .key    = "\x27\x18\x28\x18\x28\x45\x90\x45"
                          "\x23\x53\x60\x28\x74\x71\x35\x26"
@@ -15182,39 +15098,7 @@ static struct cipher_testvec cast6_xts_dec_tv_template[] = {
 /*
  * AES test vectors.
  */
-#define AES_ENC_TEST_VECTORS 4
-#define AES_DEC_TEST_VECTORS 4
-#define AES_CBC_ENC_TEST_VECTORS 5
-#define AES_CBC_DEC_TEST_VECTORS 5
-#define HMAC_MD5_ECB_CIPHER_NULL_ENC_TEST_VECTORS 2
-#define HMAC_MD5_ECB_CIPHER_NULL_DEC_TEST_VECTORS 2
-#define HMAC_SHA1_ECB_CIPHER_NULL_ENC_TEST_VEC 2
-#define HMAC_SHA1_ECB_CIPHER_NULL_DEC_TEST_VEC 2
-#define HMAC_SHA1_AES_CBC_ENC_TEST_VEC 7
-#define HMAC_SHA256_AES_CBC_ENC_TEST_VEC 7
-#define HMAC_SHA512_AES_CBC_ENC_TEST_VEC 7
-#define AES_LRW_ENC_TEST_VECTORS 8
-#define AES_LRW_DEC_TEST_VECTORS 8
-#define AES_XTS_ENC_TEST_VECTORS 5
-#define AES_XTS_DEC_TEST_VECTORS 5
-#define AES_CTR_ENC_TEST_VECTORS 5
-#define AES_CTR_DEC_TEST_VECTORS 5
-#define AES_OFB_ENC_TEST_VECTORS 1
-#define AES_OFB_DEC_TEST_VECTORS 1
-#define AES_CTR_3686_ENC_TEST_VECTORS 7
-#define AES_CTR_3686_DEC_TEST_VECTORS 6
-#define AES_GCM_ENC_TEST_VECTORS 9
-#define AES_GCM_DEC_TEST_VECTORS 8
-#define AES_GCM_4106_ENC_TEST_VECTORS 23
-#define AES_GCM_4106_DEC_TEST_VECTORS 23
-#define AES_GCM_4543_ENC_TEST_VECTORS 1
-#define AES_GCM_4543_DEC_TEST_VECTORS 2
-#define AES_CCM_ENC_TEST_VECTORS 8
-#define AES_CCM_DEC_TEST_VECTORS 7
-#define AES_CCM_4309_ENC_TEST_VECTORS 7
-#define AES_CCM_4309_DEC_TEST_VECTORS 10
-
-static struct cipher_testvec aes_enc_tv_template[] = {
+static const struct cipher_testvec aes_enc_tv_template[] = {
        { /* From FIPS-197 */
                .key    = "\x00\x01\x02\x03\x04\x05\x06\x07"
                          "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
@@ -15386,7 +15270,7 @@ static struct cipher_testvec aes_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec aes_dec_tv_template[] = {
+static const struct cipher_testvec aes_dec_tv_template[] = {
        { /* From FIPS-197 */
                .key    = "\x00\x01\x02\x03\x04\x05\x06\x07"
                          "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
@@ -15558,7 +15442,7 @@ static struct cipher_testvec aes_dec_tv_template[] = {
        },
 };
 
-static struct cipher_testvec aes_cbc_enc_tv_template[] = {
+static const struct cipher_testvec aes_cbc_enc_tv_template[] = {
        { /* From RFC 3602 */
                .key    = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
                          "\x51\x2e\x03\xd5\x34\x12\x00\x06",
@@ -15780,7 +15664,7 @@ static struct cipher_testvec aes_cbc_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec aes_cbc_dec_tv_template[] = {
+static const struct cipher_testvec aes_cbc_dec_tv_template[] = {
        { /* From RFC 3602 */
                .key    = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
                          "\x51\x2e\x03\xd5\x34\x12\x00\x06",
@@ -16002,7 +15886,7 @@ static struct cipher_testvec aes_cbc_dec_tv_template[] = {
        },
 };
 
-static struct aead_testvec hmac_md5_ecb_cipher_null_enc_tv_template[] = {
+static const struct aead_testvec hmac_md5_ecb_cipher_null_enc_tv_template[] = {
        { /* Input data from RFC 2410 Case 1 */
 #ifdef __LITTLE_ENDIAN
                .key    = "\x08\x00"            /* rta length */
@@ -16044,7 +15928,7 @@ static struct aead_testvec hmac_md5_ecb_cipher_null_enc_tv_template[] = {
        },
 };
 
-static struct aead_testvec hmac_md5_ecb_cipher_null_dec_tv_template[] = {
+static const struct aead_testvec hmac_md5_ecb_cipher_null_dec_tv_template[] = {
        {
 #ifdef __LITTLE_ENDIAN
                .key    = "\x08\x00"            /* rta length */
@@ -16086,7 +15970,7 @@ static struct aead_testvec hmac_md5_ecb_cipher_null_dec_tv_template[] = {
        },
 };
 
-static struct aead_testvec hmac_sha1_aes_cbc_enc_tv_temp[] = {
+static const struct aead_testvec hmac_sha1_aes_cbc_enc_tv_temp[] = {
        { /* RFC 3602 Case 1 */
 #ifdef __LITTLE_ENDIAN
                .key    = "\x08\x00"            /* rta length */
@@ -16355,7 +16239,7 @@ static struct aead_testvec hmac_sha1_aes_cbc_enc_tv_temp[] = {
        },
 };
 
-static struct aead_testvec hmac_sha1_ecb_cipher_null_enc_tv_temp[] = {
+static const struct aead_testvec hmac_sha1_ecb_cipher_null_enc_tv_temp[] = {
        { /* Input data from RFC 2410 Case 1 */
 #ifdef __LITTLE_ENDIAN
                .key    = "\x08\x00"            /* rta length */
@@ -16401,7 +16285,7 @@ static struct aead_testvec hmac_sha1_ecb_cipher_null_enc_tv_temp[] = {
        },
 };
 
-static struct aead_testvec hmac_sha1_ecb_cipher_null_dec_tv_temp[] = {
+static const struct aead_testvec hmac_sha1_ecb_cipher_null_dec_tv_temp[] = {
        {
 #ifdef __LITTLE_ENDIAN
                .key    = "\x08\x00"            /* rta length */
@@ -16447,7 +16331,7 @@ static struct aead_testvec hmac_sha1_ecb_cipher_null_dec_tv_temp[] = {
        },
 };
 
-static struct aead_testvec hmac_sha256_aes_cbc_enc_tv_temp[] = {
+static const struct aead_testvec hmac_sha256_aes_cbc_enc_tv_temp[] = {
        { /* RFC 3602 Case 1 */
 #ifdef __LITTLE_ENDIAN
                .key    = "\x08\x00"            /* rta length */
@@ -16730,7 +16614,7 @@ static struct aead_testvec hmac_sha256_aes_cbc_enc_tv_temp[] = {
        },
 };
 
-static struct aead_testvec hmac_sha512_aes_cbc_enc_tv_temp[] = {
+static const struct aead_testvec hmac_sha512_aes_cbc_enc_tv_temp[] = {
        { /* RFC 3602 Case 1 */
 #ifdef __LITTLE_ENDIAN
                .key    = "\x08\x00"            /* rta length */
@@ -17069,9 +16953,7 @@ static struct aead_testvec hmac_sha512_aes_cbc_enc_tv_temp[] = {
        },
 };
 
-#define HMAC_SHA1_DES_CBC_ENC_TEST_VEC 1
-
-static struct aead_testvec hmac_sha1_des_cbc_enc_tv_temp[] = {
+static const struct aead_testvec hmac_sha1_des_cbc_enc_tv_temp[] = {
        { /*Generated with cryptopp*/
 #ifdef __LITTLE_ENDIAN
                .key    = "\x08\x00"            /* rta length */
@@ -17130,9 +17012,7 @@ static struct aead_testvec hmac_sha1_des_cbc_enc_tv_temp[] = {
        },
 };
 
-#define HMAC_SHA224_DES_CBC_ENC_TEST_VEC       1
-
-static struct aead_testvec hmac_sha224_des_cbc_enc_tv_temp[] = {
+static const struct aead_testvec hmac_sha224_des_cbc_enc_tv_temp[] = {
        { /*Generated with cryptopp*/
 #ifdef __LITTLE_ENDIAN
                .key    = "\x08\x00"            /* rta length */
@@ -17191,9 +17071,7 @@ static struct aead_testvec hmac_sha224_des_cbc_enc_tv_temp[] = {
        },
 };
 
-#define HMAC_SHA256_DES_CBC_ENC_TEST_VEC       1
-
-static struct aead_testvec hmac_sha256_des_cbc_enc_tv_temp[] = {
+static const struct aead_testvec hmac_sha256_des_cbc_enc_tv_temp[] = {
        { /*Generated with cryptopp*/
 #ifdef __LITTLE_ENDIAN
                .key    = "\x08\x00"            /* rta length */
@@ -17254,9 +17132,7 @@ static struct aead_testvec hmac_sha256_des_cbc_enc_tv_temp[] = {
        },
 };
 
-#define HMAC_SHA384_DES_CBC_ENC_TEST_VEC       1
-
-static struct aead_testvec hmac_sha384_des_cbc_enc_tv_temp[] = {
+static const struct aead_testvec hmac_sha384_des_cbc_enc_tv_temp[] = {
        { /*Generated with cryptopp*/
 #ifdef __LITTLE_ENDIAN
                .key    = "\x08\x00"            /* rta length */
@@ -17321,9 +17197,7 @@ static struct aead_testvec hmac_sha384_des_cbc_enc_tv_temp[] = {
        },
 };
 
-#define HMAC_SHA512_DES_CBC_ENC_TEST_VEC       1
-
-static struct aead_testvec hmac_sha512_des_cbc_enc_tv_temp[] = {
+static const struct aead_testvec hmac_sha512_des_cbc_enc_tv_temp[] = {
        { /*Generated with cryptopp*/
 #ifdef __LITTLE_ENDIAN
                .key    = "\x08\x00"            /* rta length */
@@ -17392,9 +17266,7 @@ static struct aead_testvec hmac_sha512_des_cbc_enc_tv_temp[] = {
        },
 };
 
-#define HMAC_SHA1_DES3_EDE_CBC_ENC_TEST_VEC    1
-
-static struct aead_testvec hmac_sha1_des3_ede_cbc_enc_tv_temp[] = {
+static const struct aead_testvec hmac_sha1_des3_ede_cbc_enc_tv_temp[] = {
        { /*Generated with cryptopp*/
 #ifdef __LITTLE_ENDIAN
                .key    = "\x08\x00"            /* rta length */
@@ -17455,9 +17327,7 @@ static struct aead_testvec hmac_sha1_des3_ede_cbc_enc_tv_temp[] = {
        },
 };
 
-#define HMAC_SHA224_DES3_EDE_CBC_ENC_TEST_VEC  1
-
-static struct aead_testvec hmac_sha224_des3_ede_cbc_enc_tv_temp[] = {
+static const struct aead_testvec hmac_sha224_des3_ede_cbc_enc_tv_temp[] = {
        { /*Generated with cryptopp*/
 #ifdef __LITTLE_ENDIAN
                .key    = "\x08\x00"            /* rta length */
@@ -17518,9 +17388,7 @@ static struct aead_testvec hmac_sha224_des3_ede_cbc_enc_tv_temp[] = {
        },
 };
 
-#define HMAC_SHA256_DES3_EDE_CBC_ENC_TEST_VEC  1
-
-static struct aead_testvec hmac_sha256_des3_ede_cbc_enc_tv_temp[] = {
+static const struct aead_testvec hmac_sha256_des3_ede_cbc_enc_tv_temp[] = {
        { /*Generated with cryptopp*/
 #ifdef __LITTLE_ENDIAN
                .key    = "\x08\x00"            /* rta length */
@@ -17583,9 +17451,7 @@ static struct aead_testvec hmac_sha256_des3_ede_cbc_enc_tv_temp[] = {
        },
 };
 
-#define HMAC_SHA384_DES3_EDE_CBC_ENC_TEST_VEC  1
-
-static struct aead_testvec hmac_sha384_des3_ede_cbc_enc_tv_temp[] = {
+static const struct aead_testvec hmac_sha384_des3_ede_cbc_enc_tv_temp[] = {
        { /*Generated with cryptopp*/
 #ifdef __LITTLE_ENDIAN
                .key    = "\x08\x00"            /* rta length */
@@ -17652,9 +17518,7 @@ static struct aead_testvec hmac_sha384_des3_ede_cbc_enc_tv_temp[] = {
        },
 };
 
-#define HMAC_SHA512_DES3_EDE_CBC_ENC_TEST_VEC  1
-
-static struct aead_testvec hmac_sha512_des3_ede_cbc_enc_tv_temp[] = {
+static const struct aead_testvec hmac_sha512_des3_ede_cbc_enc_tv_temp[] = {
        { /*Generated with cryptopp*/
 #ifdef __LITTLE_ENDIAN
                .key    = "\x08\x00"            /* rta length */
@@ -17725,7 +17589,7 @@ static struct aead_testvec hmac_sha512_des3_ede_cbc_enc_tv_temp[] = {
        },
 };
 
-static struct cipher_testvec aes_lrw_enc_tv_template[] = {
+static const struct cipher_testvec aes_lrw_enc_tv_template[] = {
        /* from http://grouper.ieee.org/groups/1619/email/pdf00017.pdf */
        { /* LRW-32-AES 1 */
                .key    = "\x45\x62\xac\x25\xf8\x28\x17\x6d"
@@ -17978,7 +17842,7 @@ static struct cipher_testvec aes_lrw_enc_tv_template[] = {
        }
 };
 
-static struct cipher_testvec aes_lrw_dec_tv_template[] = {
+static const struct cipher_testvec aes_lrw_dec_tv_template[] = {
        /* from http://grouper.ieee.org/groups/1619/email/pdf00017.pdf */
        /* same as enc vectors with input and result reversed */
        { /* LRW-32-AES 1 */
@@ -18232,7 +18096,7 @@ static struct cipher_testvec aes_lrw_dec_tv_template[] = {
        }
 };
 
-static struct cipher_testvec aes_xts_enc_tv_template[] = {
+static const struct cipher_testvec aes_xts_enc_tv_template[] = {
        /* http://grouper.ieee.org/groups/1619/email/pdf00086.pdf */
        { /* XTS-AES 1 */
                .key    = "\x00\x00\x00\x00\x00\x00\x00\x00"
@@ -18575,7 +18439,7 @@ static struct cipher_testvec aes_xts_enc_tv_template[] = {
        }
 };
 
-static struct cipher_testvec aes_xts_dec_tv_template[] = {
+static const struct cipher_testvec aes_xts_dec_tv_template[] = {
        /* http://grouper.ieee.org/groups/1619/email/pdf00086.pdf */
        { /* XTS-AES 1 */
                .key    = "\x00\x00\x00\x00\x00\x00\x00\x00"
@@ -18919,7 +18783,7 @@ static struct cipher_testvec aes_xts_dec_tv_template[] = {
 };
 
 
-static struct cipher_testvec aes_ctr_enc_tv_template[] = {
+static const struct cipher_testvec aes_ctr_enc_tv_template[] = {
        { /* From NIST Special Publication 800-38A, Appendix F.5 */
                .key    = "\x2b\x7e\x15\x16\x28\xae\xd2\xa6"
                          "\xab\xf7\x15\x88\x09\xcf\x4f\x3c",
@@ -19274,7 +19138,7 @@ static struct cipher_testvec aes_ctr_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec aes_ctr_dec_tv_template[] = {
+static const struct cipher_testvec aes_ctr_dec_tv_template[] = {
        { /* From NIST Special Publication 800-38A, Appendix F.5 */
                .key    = "\x2b\x7e\x15\x16\x28\xae\xd2\xa6"
                          "\xab\xf7\x15\x88\x09\xcf\x4f\x3c",
@@ -19629,7 +19493,7 @@ static struct cipher_testvec aes_ctr_dec_tv_template[] = {
        },
 };
 
-static struct cipher_testvec aes_ctr_rfc3686_enc_tv_template[] = {
+static const struct cipher_testvec aes_ctr_rfc3686_enc_tv_template[] = {
        { /* From RFC 3686 */
                .key    = "\xae\x68\x52\xf8\x12\x10\x67\xcc"
                          "\x4b\xf7\xa5\x76\x55\x77\xf3\x9e"
@@ -20761,7 +20625,7 @@ static struct cipher_testvec aes_ctr_rfc3686_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec aes_ctr_rfc3686_dec_tv_template[] = {
+static const struct cipher_testvec aes_ctr_rfc3686_dec_tv_template[] = {
        { /* From RFC 3686 */
                .key    = "\xae\x68\x52\xf8\x12\x10\x67\xcc"
                          "\x4b\xf7\xa5\x76\x55\x77\xf3\x9e"
@@ -20852,7 +20716,7 @@ static struct cipher_testvec aes_ctr_rfc3686_dec_tv_template[] = {
        },
 };
 
-static struct cipher_testvec aes_ofb_enc_tv_template[] = {
+static const struct cipher_testvec aes_ofb_enc_tv_template[] = {
         /* From NIST Special Publication 800-38A, Appendix F.5 */
        {
                .key    = "\x2b\x7e\x15\x16\x28\xae\xd2\xa6"
@@ -20881,7 +20745,7 @@ static struct cipher_testvec aes_ofb_enc_tv_template[] = {
        }
 };
 
-static struct cipher_testvec aes_ofb_dec_tv_template[] = {
+static const struct cipher_testvec aes_ofb_dec_tv_template[] = {
         /* From NIST Special Publication 800-38A, Appendix F.5 */
        {
                .key    = "\x2b\x7e\x15\x16\x28\xae\xd2\xa6"
@@ -20910,7 +20774,7 @@ static struct cipher_testvec aes_ofb_dec_tv_template[] = {
        }
 };
 
-static struct aead_testvec aes_gcm_enc_tv_template[] = {
+static const struct aead_testvec aes_gcm_enc_tv_template[] = {
        { /* From McGrew & Viega - http://citeseer.ist.psu.edu/656989.html */
                .key    = zeroed_string,
                .klen   = 16,
@@ -21070,7 +20934,7 @@ static struct aead_testvec aes_gcm_enc_tv_template[] = {
        }
 };
 
-static struct aead_testvec aes_gcm_dec_tv_template[] = {
+static const struct aead_testvec aes_gcm_dec_tv_template[] = {
        { /* From McGrew & Viega - http://citeseer.ist.psu.edu/656989.html */
                .key    = zeroed_string,
                .klen   = 32,
@@ -21272,7 +21136,7 @@ static struct aead_testvec aes_gcm_dec_tv_template[] = {
        }
 };
 
-static struct aead_testvec aes_gcm_rfc4106_enc_tv_template[] = {
+static const struct aead_testvec aes_gcm_rfc4106_enc_tv_template[] = {
        { /* Generated using Crypto++ */
                .key    = zeroed_string,
                .klen   = 20,
@@ -21885,7 +21749,7 @@ static struct aead_testvec aes_gcm_rfc4106_enc_tv_template[] = {
        }
 };
 
-static struct aead_testvec aes_gcm_rfc4106_dec_tv_template[] = {
+static const struct aead_testvec aes_gcm_rfc4106_dec_tv_template[] = {
        { /* Generated using Crypto++ */
                .key    = zeroed_string,
                .klen   = 20,
@@ -22499,7 +22363,7 @@ static struct aead_testvec aes_gcm_rfc4106_dec_tv_template[] = {
        }
 };
 
-static struct aead_testvec aes_gcm_rfc4543_enc_tv_template[] = {
+static const struct aead_testvec aes_gcm_rfc4543_enc_tv_template[] = {
        { /* From draft-mcgrew-gcm-test-01 */
                .key    = "\x4c\x80\xcd\xef\xbb\x5d\x10\xda"
                          "\x90\x6a\xc7\x3c\x36\x13\xa6\x34"
@@ -22530,7 +22394,7 @@ static struct aead_testvec aes_gcm_rfc4543_enc_tv_template[] = {
        }
 };
 
-static struct aead_testvec aes_gcm_rfc4543_dec_tv_template[] = {
+static const struct aead_testvec aes_gcm_rfc4543_dec_tv_template[] = {
        { /* From draft-mcgrew-gcm-test-01 */
                .key    = "\x4c\x80\xcd\xef\xbb\x5d\x10\xda"
                          "\x90\x6a\xc7\x3c\x36\x13\xa6\x34"
@@ -22589,7 +22453,7 @@ static struct aead_testvec aes_gcm_rfc4543_dec_tv_template[] = {
        },
 };
 
-static struct aead_testvec aes_ccm_enc_tv_template[] = {
+static const struct aead_testvec aes_ccm_enc_tv_template[] = {
        { /* From RFC 3610 */
                .key    = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
                          "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
@@ -22827,7 +22691,7 @@ static struct aead_testvec aes_ccm_enc_tv_template[] = {
                          "\x09\x75\x9a\x9b\x3c\x9b\x27\x39",
                .klen   = 32,
                .iv     = "\x03\xf9\xd9\x4e\x63\xb5\x3d\x9d"
-                         "\x43\xf6\x1e\x50",
+                         "\x43\xf6\x1e\x50\0\0\0\0",
                .assoc  = "\x57\xf5\x6b\x8b\x57\x5c\x3d\x3b"
                          "\x13\x02\x01\x0c\x83\x4c\x96\x35"
                          "\x8e\xd6\x39\xcf\x7d\x14\x9b\x94"
@@ -22873,7 +22737,7 @@ static struct aead_testvec aes_ccm_enc_tv_template[] = {
        }
 };
 
-static struct aead_testvec aes_ccm_dec_tv_template[] = {
+static const struct aead_testvec aes_ccm_dec_tv_template[] = {
        { /* From RFC 3610 */
                .key    = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
                          "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
@@ -23205,7 +23069,7 @@ static struct aead_testvec aes_ccm_dec_tv_template[] = {
  * These vectors are copied/generated from the ones for rfc4106 with
  * the key truncated by one byte..
  */
-static struct aead_testvec aes_ccm_rfc4309_enc_tv_template[] = {
+static const struct aead_testvec aes_ccm_rfc4309_enc_tv_template[] = {
        { /* Generated using Crypto++ */
                .key    = zeroed_string,
                .klen   = 19,
@@ -23818,7 +23682,7 @@ static struct aead_testvec aes_ccm_rfc4309_enc_tv_template[] = {
        }
 };
 
-static struct aead_testvec aes_ccm_rfc4309_dec_tv_template[]   = {
+static const struct aead_testvec aes_ccm_rfc4309_dec_tv_template[]     = {
        { /* Generated using Crypto++ */
                .key    = zeroed_string,
                .klen   = 19,
@@ -24434,9 +24298,7 @@ static struct aead_testvec aes_ccm_rfc4309_dec_tv_template[]    = {
 /*
  * ChaCha20-Poly1305 AEAD test vectors from RFC7539 2.8.2./A.5.
  */
-#define RFC7539_ENC_TEST_VECTORS 2
-#define RFC7539_DEC_TEST_VECTORS 2
-static struct aead_testvec rfc7539_enc_tv_template[] = {
+static const struct aead_testvec rfc7539_enc_tv_template[] = {
        {
                .key    = "\x80\x81\x82\x83\x84\x85\x86\x87"
                          "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
@@ -24568,7 +24430,7 @@ static struct aead_testvec rfc7539_enc_tv_template[] = {
        },
 };
 
-static struct aead_testvec rfc7539_dec_tv_template[] = {
+static const struct aead_testvec rfc7539_dec_tv_template[] = {
        {
                .key    = "\x80\x81\x82\x83\x84\x85\x86\x87"
                          "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
@@ -24703,9 +24565,7 @@ static struct aead_testvec rfc7539_dec_tv_template[] = {
 /*
  * draft-irtf-cfrg-chacha20-poly1305
  */
-#define RFC7539ESP_DEC_TEST_VECTORS 1
-#define RFC7539ESP_ENC_TEST_VECTORS 1
-static struct aead_testvec rfc7539esp_enc_tv_template[] = {
+static const struct aead_testvec rfc7539esp_enc_tv_template[] = {
        {
                .key    = "\x1c\x92\x40\xa5\xeb\x55\xd3\x8a"
                          "\xf3\x33\x88\x86\x04\xf6\xb5\xf0"
@@ -24793,7 +24653,7 @@ static struct aead_testvec rfc7539esp_enc_tv_template[] = {
        },
 };
 
-static struct aead_testvec rfc7539esp_dec_tv_template[] = {
+static const struct aead_testvec rfc7539esp_dec_tv_template[] = {
        {
                .key    = "\x1c\x92\x40\xa5\xeb\x55\xd3\x8a"
                          "\xf3\x33\x88\x86\x04\xf6\xb5\xf0"
@@ -24889,7 +24749,7 @@ static struct aead_testvec rfc7539esp_dec_tv_template[] = {
  * semiblock of the ciphertext from the test vector. For decryption, iv is
  * the first semiblock of the ciphertext.
  */
-static struct cipher_testvec aes_kw_enc_tv_template[] = {
+static const struct cipher_testvec aes_kw_enc_tv_template[] = {
        {
                .key    = "\x75\x75\xda\x3a\x93\x60\x7c\xc2"
                          "\xbf\xd8\xce\xc7\xaa\xdf\xd9\xa6",
@@ -24904,7 +24764,7 @@ static struct cipher_testvec aes_kw_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec aes_kw_dec_tv_template[] = {
+static const struct cipher_testvec aes_kw_dec_tv_template[] = {
        {
                .key    = "\x80\xaa\x99\x73\x27\xa4\x80\x6b"
                          "\x6a\x7a\x41\xa5\x2b\x86\xc3\x71"
@@ -24927,9 +24787,7 @@ static struct cipher_testvec aes_kw_dec_tv_template[] = {
  *     http://csrc.nist.gov/groups/STM/cavp/documents/rng/RNGVS.pdf
  * Only AES-128 is supported at this time.
  */
-#define ANSI_CPRNG_AES_TEST_VECTORS    6
-
-static struct cprng_testvec ansi_cprng_aes_tv_template[] = {
+static const struct cprng_testvec ansi_cprng_aes_tv_template[] = {
        {
                .key    = "\xf3\xb1\x66\x6d\x13\x60\x72\x42"
                          "\xed\x06\x1c\xab\xb8\xd4\x62\x02",
@@ -25025,7 +24883,7 @@ static struct cprng_testvec ansi_cprng_aes_tv_template[] = {
  * (Hash, HMAC, CTR) are tested with all permutations of use cases (w/ and
  * w/o personalization string, w/ and w/o additional input string).
  */
-static struct drbg_testvec drbg_pr_sha256_tv_template[] = {
+static const struct drbg_testvec drbg_pr_sha256_tv_template[] = {
        {
                .entropy = (unsigned char *)
                        "\x72\x88\x4c\xcd\x6c\x85\x57\x70\xf7\x0b\x8b\x86"
@@ -25183,7 +25041,7 @@ static struct drbg_testvec drbg_pr_sha256_tv_template[] = {
        },
 };
 
-static struct drbg_testvec drbg_pr_hmac_sha256_tv_template[] = {
+static const struct drbg_testvec drbg_pr_hmac_sha256_tv_template[] = {
        {
                .entropy = (unsigned char *)
                        "\x99\x69\xe5\x4b\x47\x03\xff\x31\x78\x5b\x87\x9a"
@@ -25341,7 +25199,7 @@ static struct drbg_testvec drbg_pr_hmac_sha256_tv_template[] = {
        },
 };
 
-static struct drbg_testvec drbg_pr_ctr_aes128_tv_template[] = {
+static const struct drbg_testvec drbg_pr_ctr_aes128_tv_template[] = {
        {
                .entropy = (unsigned char *)
                        "\xd1\x44\xc6\x61\x81\x6d\xca\x9d\x15\x28\x8a\x42"
@@ -25465,7 +25323,7 @@ static struct drbg_testvec drbg_pr_ctr_aes128_tv_template[] = {
  * (Hash, HMAC, CTR) are tested with all permutations of use cases (w/ and
  * w/o personalization string, w/ and w/o additional input string).
  */
-static struct drbg_testvec drbg_nopr_sha256_tv_template[] = {
+static const struct drbg_testvec drbg_nopr_sha256_tv_template[] = {
        {
                .entropy = (unsigned char *)
                        "\xa6\x5a\xd0\xf3\x45\xdb\x4e\x0e\xff\xe8\x75\xc3"
@@ -25587,7 +25445,7 @@ static struct drbg_testvec drbg_nopr_sha256_tv_template[] = {
        },
 };
 
-static struct drbg_testvec drbg_nopr_hmac_sha256_tv_template[] = {
+static const struct drbg_testvec drbg_nopr_hmac_sha256_tv_template[] = {
        {
                .entropy = (unsigned char *)
                        "\xca\x85\x19\x11\x34\x93\x84\xbf\xfe\x89\xde\x1c"
@@ -25709,7 +25567,7 @@ static struct drbg_testvec drbg_nopr_hmac_sha256_tv_template[] = {
        },
 };
 
-static struct drbg_testvec drbg_nopr_ctr_aes192_tv_template[] = {
+static const struct drbg_testvec drbg_nopr_ctr_aes192_tv_template[] = {
        {
                .entropy = (unsigned char *)
                        "\xc3\x5c\x2f\xa2\xa8\x9d\x52\xa1\x1f\xa3\x2a\xa9"
@@ -25733,7 +25591,7 @@ static struct drbg_testvec drbg_nopr_ctr_aes192_tv_template[] = {
        },
 };
 
-static struct drbg_testvec drbg_nopr_ctr_aes256_tv_template[] = {
+static const struct drbg_testvec drbg_nopr_ctr_aes256_tv_template[] = {
        {
                .entropy = (unsigned char *)
                        "\x36\x40\x19\x40\xfa\x8b\x1f\xba\x91\xa1\x66\x1f"
@@ -25757,7 +25615,7 @@ static struct drbg_testvec drbg_nopr_ctr_aes256_tv_template[] = {
        },
 };
 
-static struct drbg_testvec drbg_nopr_ctr_aes128_tv_template[] = {
+static const struct drbg_testvec drbg_nopr_ctr_aes128_tv_template[] = {
        {
                .entropy = (unsigned char *)
                        "\x87\xe1\xc5\x32\x99\x7f\x57\xa3\x5c\x28\x6d\xe8"
@@ -25846,14 +25704,7 @@ static struct drbg_testvec drbg_nopr_ctr_aes128_tv_template[] = {
 };
 
 /* Cast5 test vectors from RFC 2144 */
-#define CAST5_ENC_TEST_VECTORS         4
-#define CAST5_DEC_TEST_VECTORS         4
-#define CAST5_CBC_ENC_TEST_VECTORS     1
-#define CAST5_CBC_DEC_TEST_VECTORS     1
-#define CAST5_CTR_ENC_TEST_VECTORS     2
-#define CAST5_CTR_DEC_TEST_VECTORS     2
-
-static struct cipher_testvec cast5_enc_tv_template[] = {
+static const struct cipher_testvec cast5_enc_tv_template[] = {
        {
                .key    = "\x01\x23\x45\x67\x12\x34\x56\x78"
                          "\x23\x45\x67\x89\x34\x56\x78\x9a",
@@ -26014,7 +25865,7 @@ static struct cipher_testvec cast5_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec cast5_dec_tv_template[] = {
+static const struct cipher_testvec cast5_dec_tv_template[] = {
        {
                .key    = "\x01\x23\x45\x67\x12\x34\x56\x78"
                          "\x23\x45\x67\x89\x34\x56\x78\x9a",
@@ -26175,7 +26026,7 @@ static struct cipher_testvec cast5_dec_tv_template[] = {
        },
 };
 
-static struct cipher_testvec cast5_cbc_enc_tv_template[] = {
+static const struct cipher_testvec cast5_cbc_enc_tv_template[] = {
        { /* Generated from TF test vectors */
                .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
                          "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A",
@@ -26313,7 +26164,7 @@ static struct cipher_testvec cast5_cbc_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec cast5_cbc_dec_tv_template[] = {
+static const struct cipher_testvec cast5_cbc_dec_tv_template[] = {
        { /* Generated from TF test vectors */
                .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
                          "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A",
@@ -26451,7 +26302,7 @@ static struct cipher_testvec cast5_cbc_dec_tv_template[] = {
        },
 };
 
-static struct cipher_testvec cast5_ctr_enc_tv_template[] = {
+static const struct cipher_testvec cast5_ctr_enc_tv_template[] = {
        { /* Generated from TF test vectors */
                .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
                          "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A",
@@ -26602,7 +26453,7 @@ static struct cipher_testvec cast5_ctr_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec cast5_ctr_dec_tv_template[] = {
+static const struct cipher_testvec cast5_ctr_dec_tv_template[] = {
        { /* Generated from TF test vectors */
                .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
                          "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A",
@@ -26756,10 +26607,7 @@ static struct cipher_testvec cast5_ctr_dec_tv_template[] = {
 /*
  * ARC4 test vectors from OpenSSL
  */
-#define ARC4_ENC_TEST_VECTORS  7
-#define ARC4_DEC_TEST_VECTORS  7
-
-static struct cipher_testvec arc4_enc_tv_template[] = {
+static const struct cipher_testvec arc4_enc_tv_template[] = {
        {
                .key    = "\x01\x23\x45\x67\x89\xab\xcd\xef",
                .klen   = 8,
@@ -26825,7 +26673,7 @@ static struct cipher_testvec arc4_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec arc4_dec_tv_template[] = {
+static const struct cipher_testvec arc4_dec_tv_template[] = {
        {
                .key    = "\x01\x23\x45\x67\x89\xab\xcd\xef",
                .klen   = 8,
@@ -26894,10 +26742,7 @@ static struct cipher_testvec arc4_dec_tv_template[] = {
 /*
  * TEA test vectors
  */
-#define TEA_ENC_TEST_VECTORS   4
-#define TEA_DEC_TEST_VECTORS   4
-
-static struct cipher_testvec tea_enc_tv_template[] = {
+static const struct cipher_testvec tea_enc_tv_template[] = {
        {
                .key    = zeroed_string,
                .klen   = 16,
@@ -26940,7 +26785,7 @@ static struct cipher_testvec tea_enc_tv_template[] = {
        }
 };
 
-static struct cipher_testvec tea_dec_tv_template[] = {
+static const struct cipher_testvec tea_dec_tv_template[] = {
        {
                .key    = zeroed_string,
                .klen   = 16,
@@ -26986,10 +26831,7 @@ static struct cipher_testvec tea_dec_tv_template[] = {
 /*
  * XTEA test vectors
  */
-#define XTEA_ENC_TEST_VECTORS  4
-#define XTEA_DEC_TEST_VECTORS  4
-
-static struct cipher_testvec xtea_enc_tv_template[] = {
+static const struct cipher_testvec xtea_enc_tv_template[] = {
        {
                .key    = zeroed_string,
                .klen   = 16,
@@ -27032,7 +26874,7 @@ static struct cipher_testvec xtea_enc_tv_template[] = {
        }
 };
 
-static struct cipher_testvec xtea_dec_tv_template[] = {
+static const struct cipher_testvec xtea_dec_tv_template[] = {
        {
                .key    = zeroed_string,
                .klen   = 16,
@@ -27078,10 +26920,7 @@ static struct cipher_testvec xtea_dec_tv_template[] = {
 /*
  * KHAZAD test vectors.
  */
-#define KHAZAD_ENC_TEST_VECTORS 5
-#define KHAZAD_DEC_TEST_VECTORS 5
-
-static struct cipher_testvec khazad_enc_tv_template[] = {
+static const struct cipher_testvec khazad_enc_tv_template[] = {
        {
                .key    = "\x80\x00\x00\x00\x00\x00\x00\x00"
                          "\x00\x00\x00\x00\x00\x00\x00\x00",
@@ -27127,7 +26966,7 @@ static struct cipher_testvec khazad_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec khazad_dec_tv_template[] = {
+static const struct cipher_testvec khazad_dec_tv_template[] = {
        {
                .key    = "\x80\x00\x00\x00\x00\x00\x00\x00"
                          "\x00\x00\x00\x00\x00\x00\x00\x00",
@@ -27177,12 +27016,7 @@ static struct cipher_testvec khazad_dec_tv_template[] = {
  * Anubis test vectors.
  */
 
-#define ANUBIS_ENC_TEST_VECTORS                        5
-#define ANUBIS_DEC_TEST_VECTORS                        5
-#define ANUBIS_CBC_ENC_TEST_VECTORS            2
-#define ANUBIS_CBC_DEC_TEST_VECTORS            2
-
-static struct cipher_testvec anubis_enc_tv_template[] = {
+static const struct cipher_testvec anubis_enc_tv_template[] = {
        {
                .key    = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
                          "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
@@ -27245,7 +27079,7 @@ static struct cipher_testvec anubis_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec anubis_dec_tv_template[] = {
+static const struct cipher_testvec anubis_dec_tv_template[] = {
        {
                .key    = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
                          "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
@@ -27308,7 +27142,7 @@ static struct cipher_testvec anubis_dec_tv_template[] = {
        },
 };
 
-static struct cipher_testvec anubis_cbc_enc_tv_template[] = {
+static const struct cipher_testvec anubis_cbc_enc_tv_template[] = {
        {
                .key    = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
                          "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
@@ -27343,7 +27177,7 @@ static struct cipher_testvec anubis_cbc_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec anubis_cbc_dec_tv_template[] = {
+static const struct cipher_testvec anubis_cbc_dec_tv_template[] = {
        {
                .key    = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
                          "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
@@ -27381,10 +27215,7 @@ static struct cipher_testvec anubis_cbc_dec_tv_template[] = {
 /*
  * XETA test vectors
  */
-#define XETA_ENC_TEST_VECTORS  4
-#define XETA_DEC_TEST_VECTORS  4
-
-static struct cipher_testvec xeta_enc_tv_template[] = {
+static const struct cipher_testvec xeta_enc_tv_template[] = {
        {
                .key    = zeroed_string,
                .klen   = 16,
@@ -27427,7 +27258,7 @@ static struct cipher_testvec xeta_enc_tv_template[] = {
        }
 };
 
-static struct cipher_testvec xeta_dec_tv_template[] = {
+static const struct cipher_testvec xeta_dec_tv_template[] = {
        {
                .key    = zeroed_string,
                .klen   = 16,
@@ -27473,10 +27304,7 @@ static struct cipher_testvec xeta_dec_tv_template[] = {
 /*
  * FCrypt test vectors
  */
-#define FCRYPT_ENC_TEST_VECTORS        ARRAY_SIZE(fcrypt_pcbc_enc_tv_template)
-#define FCRYPT_DEC_TEST_VECTORS        ARRAY_SIZE(fcrypt_pcbc_dec_tv_template)
-
-static struct cipher_testvec fcrypt_pcbc_enc_tv_template[] = {
+static const struct cipher_testvec fcrypt_pcbc_enc_tv_template[] = {
        { /* http://www.openafs.org/pipermail/openafs-devel/2000-December/005320.html */
                .key    = "\x00\x00\x00\x00\x00\x00\x00\x00",
                .klen   = 8,
@@ -27537,7 +27365,7 @@ static struct cipher_testvec fcrypt_pcbc_enc_tv_template[] = {
        }
 };
 
-static struct cipher_testvec fcrypt_pcbc_dec_tv_template[] = {
+static const struct cipher_testvec fcrypt_pcbc_dec_tv_template[] = {
        { /* http://www.openafs.org/pipermail/openafs-devel/2000-December/005320.html */
                .key    = "\x00\x00\x00\x00\x00\x00\x00\x00",
                .klen   = 8,
@@ -27601,18 +27429,7 @@ static struct cipher_testvec fcrypt_pcbc_dec_tv_template[] = {
 /*
  * CAMELLIA test vectors.
  */
-#define CAMELLIA_ENC_TEST_VECTORS 4
-#define CAMELLIA_DEC_TEST_VECTORS 4
-#define CAMELLIA_CBC_ENC_TEST_VECTORS 3
-#define CAMELLIA_CBC_DEC_TEST_VECTORS 3
-#define CAMELLIA_CTR_ENC_TEST_VECTORS 2
-#define CAMELLIA_CTR_DEC_TEST_VECTORS 2
-#define CAMELLIA_LRW_ENC_TEST_VECTORS 8
-#define CAMELLIA_LRW_DEC_TEST_VECTORS 8
-#define CAMELLIA_XTS_ENC_TEST_VECTORS 5
-#define CAMELLIA_XTS_DEC_TEST_VECTORS 5
-
-static struct cipher_testvec camellia_enc_tv_template[] = {
+static const struct cipher_testvec camellia_enc_tv_template[] = {
        {
                .key    = "\x01\x23\x45\x67\x89\xab\xcd\xef"
                          "\xfe\xdc\xba\x98\x76\x54\x32\x10",
@@ -27912,7 +27729,7 @@ static struct cipher_testvec camellia_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec camellia_dec_tv_template[] = {
+static const struct cipher_testvec camellia_dec_tv_template[] = {
        {
                .key    = "\x01\x23\x45\x67\x89\xab\xcd\xef"
                          "\xfe\xdc\xba\x98\x76\x54\x32\x10",
@@ -28212,7 +28029,7 @@ static struct cipher_testvec camellia_dec_tv_template[] = {
        },
 };
 
-static struct cipher_testvec camellia_cbc_enc_tv_template[] = {
+static const struct cipher_testvec camellia_cbc_enc_tv_template[] = {
        {
                .key    = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
                          "\x51\x2e\x03\xd5\x34\x12\x00\x06",
@@ -28508,7 +28325,7 @@ static struct cipher_testvec camellia_cbc_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec camellia_cbc_dec_tv_template[] = {
+static const struct cipher_testvec camellia_cbc_dec_tv_template[] = {
        {
                .key    = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
                          "\x51\x2e\x03\xd5\x34\x12\x00\x06",
@@ -28804,7 +28621,7 @@ static struct cipher_testvec camellia_cbc_dec_tv_template[] = {
        },
 };
 
-static struct cipher_testvec camellia_ctr_enc_tv_template[] = {
+static const struct cipher_testvec camellia_ctr_enc_tv_template[] = {
        { /* Generated with Crypto++ */
                .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
                          "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
@@ -29471,7 +29288,7 @@ static struct cipher_testvec camellia_ctr_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec camellia_ctr_dec_tv_template[] = {
+static const struct cipher_testvec camellia_ctr_dec_tv_template[] = {
        { /* Generated with Crypto++ */
                .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
                          "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
@@ -30138,7 +29955,7 @@ static struct cipher_testvec camellia_ctr_dec_tv_template[] = {
        },
 };
 
-static struct cipher_testvec camellia_lrw_enc_tv_template[] = {
+static const struct cipher_testvec camellia_lrw_enc_tv_template[] = {
        /* Generated from AES-LRW test vectors */
        {
                .key    = "\x45\x62\xac\x25\xf8\x28\x17\x6d"
@@ -30390,7 +30207,7 @@ static struct cipher_testvec camellia_lrw_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec camellia_lrw_dec_tv_template[] = {
+static const struct cipher_testvec camellia_lrw_dec_tv_template[] = {
        /* Generated from AES-LRW test vectors */
        /* same as enc vectors with input and result reversed */
        {
@@ -30643,7 +30460,7 @@ static struct cipher_testvec camellia_lrw_dec_tv_template[] = {
        },
 };
 
-static struct cipher_testvec camellia_xts_enc_tv_template[] = {
+static const struct cipher_testvec camellia_xts_enc_tv_template[] = {
        /* Generated from AES-XTS test vectors */
        {
                .key    = "\x00\x00\x00\x00\x00\x00\x00\x00"
@@ -30985,7 +30802,7 @@ static struct cipher_testvec camellia_xts_enc_tv_template[] = {
        },
 };
 
-static struct cipher_testvec camellia_xts_dec_tv_template[] = {
+static const struct cipher_testvec camellia_xts_dec_tv_template[] = {
        /* Generated from AES-XTS test vectors */
        /* same as enc vectors with input and result reversed */
        {
@@ -31331,10 +31148,7 @@ static struct cipher_testvec camellia_xts_dec_tv_template[] = {
 /*
  * SEED test vectors
  */
-#define SEED_ENC_TEST_VECTORS  4
-#define SEED_DEC_TEST_VECTORS  4
-
-static struct cipher_testvec seed_enc_tv_template[] = {
+static const struct cipher_testvec seed_enc_tv_template[] = {
        {
                .key    = zeroed_string,
                .klen   = 16,
@@ -31376,7 +31190,7 @@ static struct cipher_testvec seed_enc_tv_template[] = {
        }
 };
 
-static struct cipher_testvec seed_dec_tv_template[] = {
+static const struct cipher_testvec seed_dec_tv_template[] = {
        {
                .key    = zeroed_string,
                .klen   = 16,
@@ -31418,8 +31232,7 @@ static struct cipher_testvec seed_dec_tv_template[] = {
        }
 };
 
-#define SALSA20_STREAM_ENC_TEST_VECTORS 5
-static struct cipher_testvec salsa20_stream_enc_tv_template[] = {
+static const struct cipher_testvec salsa20_stream_enc_tv_template[] = {
        /*
        * Testvectors from verified.test-vectors submitted to ECRYPT.
        * They are truncated to size 39, 64, 111, 129 to test a variety
@@ -32588,8 +32401,7 @@ static struct cipher_testvec salsa20_stream_enc_tv_template[] = {
        },
 };
 
-#define CHACHA20_ENC_TEST_VECTORS 4
-static struct cipher_testvec chacha20_enc_tv_template[] = {
+static const struct cipher_testvec chacha20_enc_tv_template[] = {
        { /* RFC7539 A.2. Test Vector #1 */
                .key    = "\x00\x00\x00\x00\x00\x00\x00\x00"
                          "\x00\x00\x00\x00\x00\x00\x00\x00"
@@ -33100,9 +32912,7 @@ static struct cipher_testvec chacha20_enc_tv_template[] = {
 /*
  * CTS (Cipher Text Stealing) mode tests
  */
-#define CTS_MODE_ENC_TEST_VECTORS 6
-#define CTS_MODE_DEC_TEST_VECTORS 6
-static struct cipher_testvec cts_mode_enc_tv_template[] = {
+static const struct cipher_testvec cts_mode_enc_tv_template[] = {
        { /* from rfc3962 */
                .klen   = 16,
                .key    = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
@@ -33204,7 +33014,7 @@ static struct cipher_testvec cts_mode_enc_tv_template[] = {
        }
 };
 
-static struct cipher_testvec cts_mode_dec_tv_template[] = {
+static const struct cipher_testvec cts_mode_dec_tv_template[] = {
        { /* from rfc3962 */
                .klen   = 16,
                .key    = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
@@ -33322,10 +33132,7 @@ struct comp_testvec {
  * Params: winbits=-11, Z_DEFAULT_COMPRESSION, MAX_MEM_LEVEL.
  */
 
-#define DEFLATE_COMP_TEST_VECTORS 2
-#define DEFLATE_DECOMP_TEST_VECTORS 2
-
-static struct comp_testvec deflate_comp_tv_template[] = {
+static const struct comp_testvec deflate_comp_tv_template[] = {
        {
                .inlen  = 70,
                .outlen = 38,
@@ -33361,7 +33168,7 @@ static struct comp_testvec deflate_comp_tv_template[] = {
        },
 };
 
-static struct comp_testvec deflate_decomp_tv_template[] = {
+static const struct comp_testvec deflate_decomp_tv_template[] = {
        {
                .inlen  = 122,
                .outlen = 191,
@@ -33397,13 +33204,85 @@ static struct comp_testvec deflate_decomp_tv_template[] = {
        },
 };
 
+static const struct comp_testvec zlib_deflate_comp_tv_template[] = {
+       {
+               .inlen  = 70,
+               .outlen = 44,
+               .input  = "Join us now and share the software "
+                       "Join us now and share the software ",
+               .output = "\x78\x5e\xf3\xca\xcf\xcc\x53\x28"
+                         "\x2d\x56\xc8\xcb\x2f\x57\x48\xcc"
+                         "\x4b\x51\x28\xce\x48\x2c\x4a\x55"
+                         "\x28\xc9\x48\x55\x28\xce\x4f\x2b"
+                         "\x29\x07\x71\xbc\x08\x2b\x01\x00"
+                         "\x7c\x65\x19\x3d",
+       }, {
+               .inlen  = 191,
+               .outlen = 129,
+               .input  = "This document describes a compression method based on the DEFLATE"
+                       "compression algorithm.  This document defines the application of "
+                       "the DEFLATE algorithm to the IP Payload Compression Protocol.",
+               .output = "\x78\x5e\x5d\xce\x41\x0a\xc3\x30"
+                         "\x0c\x04\xc0\xaf\xec\x0b\xf2\x87"
+                         "\xd2\xa6\x50\xe8\xc1\x07\x7f\x40"
+                         "\xb1\x95\x5a\x60\x5b\xc6\x56\x0f"
+                         "\xfd\x7d\x93\x1e\x42\xe8\x51\xec"
+                         "\xee\x20\x9f\x64\x20\x6a\x78\x17"
+                         "\xae\x86\xc8\x23\x74\x59\x78\x80"
+                         "\x10\xb4\xb4\xce\x63\x88\x56\x14"
+                         "\xb6\xa4\x11\x0b\x0d\x8e\xd8\x6e"
+                         "\x4b\x8c\xdb\x7c\x7f\x5e\xfc\x7c"
+                         "\xae\x51\x7e\x69\x17\x4b\x65\x02"
+                         "\xfc\x1f\xbc\x4a\xdd\xd8\x7d\x48"
+                         "\xad\x65\x09\x64\x3b\xac\xeb\xd9"
+                         "\xc2\x01\xc0\xf4\x17\x3c\x1c\x1c"
+                         "\x7d\xb2\x52\xc4\xf5\xf4\x8f\xeb"
+                         "\x6a\x1a\x34\x4f\x5f\x2e\x32\x45"
+                         "\x4e",
+       },
+};
+
+static const struct comp_testvec zlib_deflate_decomp_tv_template[] = {
+       {
+               .inlen  = 128,
+               .outlen = 191,
+               .input  = "\x78\x9c\x5d\x8d\x31\x0e\xc2\x30"
+                         "\x10\x04\xbf\xb2\x2f\xc8\x1f\x10"
+                         "\x04\x09\x89\xc2\x85\x3f\x70\xb1"
+                         "\x2f\xf8\x24\xdb\x67\xd9\x47\xc1"
+                         "\xef\x49\x68\x12\x51\xae\x76\x67"
+                         "\xd6\x27\x19\x88\x1a\xde\x85\xab"
+                         "\x21\xf2\x08\x5d\x16\x1e\x20\x04"
+                         "\x2d\xad\xf3\x18\xa2\x15\x85\x2d"
+                         "\x69\xc4\x42\x83\x23\xb6\x6c\x89"
+                         "\x71\x9b\xef\xcf\x8b\x9f\xcf\x33"
+                         "\xca\x2f\xed\x62\xa9\x4c\x80\xff"
+                         "\x13\xaf\x52\x37\xed\x0e\x52\x6b"
+                         "\x59\x02\xd9\x4e\xe8\x7a\x76\x1d"
+                         "\x02\x98\xfe\x8a\x87\x83\xa3\x4f"
+                         "\x56\x8a\xb8\x9e\x8e\x5c\x57\xd3"
+                         "\xa0\x79\xfa\x02\x2e\x32\x45\x4e",
+               .output = "This document describes a compression method based on the DEFLATE"
+                       "compression algorithm.  This document defines the application of "
+                       "the DEFLATE algorithm to the IP Payload Compression Protocol.",
+       }, {
+               .inlen  = 44,
+               .outlen = 70,
+               .input  = "\x78\x9c\xf3\xca\xcf\xcc\x53\x28"
+                         "\x2d\x56\xc8\xcb\x2f\x57\x48\xcc"
+                         "\x4b\x51\x28\xce\x48\x2c\x4a\x55"
+                         "\x28\xc9\x48\x55\x28\xce\x4f\x2b"
+                         "\x29\x07\x71\xbc\x08\x2b\x01\x00"
+                         "\x7c\x65\x19\x3d",
+               .output = "Join us now and share the software "
+                       "Join us now and share the software ",
+       },
+};
+
 /*
  * LZO test vectors (null-terminated strings).
  */
-#define LZO_COMP_TEST_VECTORS 2
-#define LZO_DECOMP_TEST_VECTORS 2
-
-static struct comp_testvec lzo_comp_tv_template[] = {
+static const struct comp_testvec lzo_comp_tv_template[] = {
        {
                .inlen  = 70,
                .outlen = 57,
@@ -33443,7 +33322,7 @@ static struct comp_testvec lzo_comp_tv_template[] = {
        },
 };
 
-static struct comp_testvec lzo_decomp_tv_template[] = {
+static const struct comp_testvec lzo_decomp_tv_template[] = {
        {
                .inlen  = 133,
                .outlen = 159,
@@ -33486,7 +33365,7 @@ static struct comp_testvec lzo_decomp_tv_template[] = {
  */
 #define MICHAEL_MIC_TEST_VECTORS 6
 
-static struct hash_testvec michael_mic_tv_template[] = {
+static const struct hash_testvec michael_mic_tv_template[] = {
        {
                .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
                .ksize = 8,
@@ -33534,9 +33413,7 @@ static struct hash_testvec michael_mic_tv_template[] = {
 /*
  * CRC32 test vectors
  */
-#define CRC32_TEST_VECTORS 14
-
-static struct hash_testvec crc32_tv_template[] = {
+static const struct hash_testvec crc32_tv_template[] = {
        {
                .key = "\x87\xa9\xcb\xed",
                .ksize = 4,
@@ -33968,9 +33845,7 @@ static struct hash_testvec crc32_tv_template[] = {
 /*
  * CRC32C test vectors
  */
-#define CRC32C_TEST_VECTORS 15
-
-static struct hash_testvec crc32c_tv_template[] = {
+static const struct hash_testvec crc32c_tv_template[] = {
        {
                .psize = 0,
                .digest = "\x00\x00\x00\x00",
@@ -34406,9 +34281,7 @@ static struct hash_testvec crc32c_tv_template[] = {
 /*
  * Blakcifn CRC test vectors
  */
-#define BFIN_CRC_TEST_VECTORS 6
-
-static struct hash_testvec bfin_crc_tv_template[] = {
+static const struct hash_testvec bfin_crc_tv_template[] = {
        {
                .psize = 0,
                .digest = "\x00\x00\x00\x00",
@@ -34493,69 +34366,125 @@ static struct hash_testvec bfin_crc_tv_template[] = {
 
 };
 
-#define LZ4_COMP_TEST_VECTORS 1
-#define LZ4_DECOMP_TEST_VECTORS 1
-
-static struct comp_testvec lz4_comp_tv_template[] = {
+static const struct comp_testvec lz4_comp_tv_template[] = {
        {
-               .inlen  = 70,
-               .outlen = 45,
-               .input  = "Join us now and share the software "
-                         "Join us now and share the software ",
-               .output = "\xf0\x10\x4a\x6f\x69\x6e\x20\x75"
-                         "\x73\x20\x6e\x6f\x77\x20\x61\x6e"
-                         "\x64\x20\x73\x68\x61\x72\x65\x20"
-                         "\x74\x68\x65\x20\x73\x6f\x66\x74"
-                         "\x77\x0d\x00\x0f\x23\x00\x0b\x50"
-                         "\x77\x61\x72\x65\x20",
+               .inlen  = 255,
+               .outlen = 218,
+               .input  = "LZ4 is lossless compression algorithm, providing"
+                        " compression speed at 400 MB/s per core, scalable "
+                        "with multi-cores CPU. It features an extremely fast "
+                        "decoder, with speed in multiple GB/s per core, "
+                        "typically reaching RAM speed limits on multi-core "
+                        "systems.",
+               .output = "\xf9\x21\x4c\x5a\x34\x20\x69\x73\x20\x6c\x6f\x73\x73"
+                         "\x6c\x65\x73\x73\x20\x63\x6f\x6d\x70\x72\x65\x73\x73"
+                         "\x69\x6f\x6e\x20\x61\x6c\x67\x6f\x72\x69\x74\x68\x6d"
+                         "\x2c\x20\x70\x72\x6f\x76\x69\x64\x69\x6e\x67\x21\x00"
+                         "\xf0\x21\x73\x70\x65\x65\x64\x20\x61\x74\x20\x34\x30"
+                         "\x30\x20\x4d\x42\x2f\x73\x20\x70\x65\x72\x20\x63\x6f"
+                         "\x72\x65\x2c\x20\x73\x63\x61\x6c\x61\x62\x6c\x65\x20"
+                         "\x77\x69\x74\x68\x20\x6d\x75\x6c\x74\x69\x2d\x1a\x00"
+                         "\xf0\x00\x73\x20\x43\x50\x55\x2e\x20\x49\x74\x20\x66"
+                         "\x65\x61\x74\x75\x11\x00\xf2\x0b\x61\x6e\x20\x65\x78"
+                         "\x74\x72\x65\x6d\x65\x6c\x79\x20\x66\x61\x73\x74\x20"
+                         "\x64\x65\x63\x6f\x64\x65\x72\x2c\x3d\x00\x02\x67\x00"
+                         "\x22\x69\x6e\x46\x00\x5a\x70\x6c\x65\x20\x47\x6c\x00"
+                         "\xf0\x00\x74\x79\x70\x69\x63\x61\x6c\x6c\x79\x20\x72"
+                         "\x65\x61\x63\x68\xa7\x00\x33\x52\x41\x4d\x38\x00\x83"
+                         "\x6c\x69\x6d\x69\x74\x73\x20\x6f\x3f\x00\x01\x85\x00"
+                         "\x90\x20\x73\x79\x73\x74\x65\x6d\x73\x2e",
+
        },
 };
 
-static struct comp_testvec lz4_decomp_tv_template[] = {
+static const struct comp_testvec lz4_decomp_tv_template[] = {
        {
-               .inlen  = 45,
-               .outlen = 70,
-               .input  = "\xf0\x10\x4a\x6f\x69\x6e\x20\x75"
-                         "\x73\x20\x6e\x6f\x77\x20\x61\x6e"
-                         "\x64\x20\x73\x68\x61\x72\x65\x20"
-                         "\x74\x68\x65\x20\x73\x6f\x66\x74"
-                         "\x77\x0d\x00\x0f\x23\x00\x0b\x50"
-                         "\x77\x61\x72\x65\x20",
-               .output = "Join us now and share the software "
-                         "Join us now and share the software ",
+               .inlen  = 218,
+               .outlen = 255,
+               .input  = "\xf9\x21\x4c\x5a\x34\x20\x69\x73\x20\x6c\x6f\x73\x73"
+                         "\x6c\x65\x73\x73\x20\x63\x6f\x6d\x70\x72\x65\x73\x73"
+                         "\x69\x6f\x6e\x20\x61\x6c\x67\x6f\x72\x69\x74\x68\x6d"
+                         "\x2c\x20\x70\x72\x6f\x76\x69\x64\x69\x6e\x67\x21\x00"
+                         "\xf0\x21\x73\x70\x65\x65\x64\x20\x61\x74\x20\x34\x30"
+                         "\x30\x20\x4d\x42\x2f\x73\x20\x70\x65\x72\x20\x63\x6f"
+                         "\x72\x65\x2c\x20\x73\x63\x61\x6c\x61\x62\x6c\x65\x20"
+                         "\x77\x69\x74\x68\x20\x6d\x75\x6c\x74\x69\x2d\x1a\x00"
+                         "\xf0\x00\x73\x20\x43\x50\x55\x2e\x20\x49\x74\x20\x66"
+                         "\x65\x61\x74\x75\x11\x00\xf2\x0b\x61\x6e\x20\x65\x78"
+                         "\x74\x72\x65\x6d\x65\x6c\x79\x20\x66\x61\x73\x74\x20"
+                         "\x64\x65\x63\x6f\x64\x65\x72\x2c\x3d\x00\x02\x67\x00"
+                         "\x22\x69\x6e\x46\x00\x5a\x70\x6c\x65\x20\x47\x6c\x00"
+                         "\xf0\x00\x74\x79\x70\x69\x63\x61\x6c\x6c\x79\x20\x72"
+                         "\x65\x61\x63\x68\xa7\x00\x33\x52\x41\x4d\x38\x00\x83"
+                         "\x6c\x69\x6d\x69\x74\x73\x20\x6f\x3f\x00\x01\x85\x00"
+                         "\x90\x20\x73\x79\x73\x74\x65\x6d\x73\x2e",
+               .output = "LZ4 is lossless compression algorithm, providing"
+                        " compression speed at 400 MB/s per core, scalable "
+                        "with multi-cores CPU. It features an extremely fast "
+                        "decoder, with speed in multiple GB/s per core, "
+                        "typically reaching RAM speed limits on multi-core "
+                        "systems.",
        },
 };
 
-#define LZ4HC_COMP_TEST_VECTORS 1
-#define LZ4HC_DECOMP_TEST_VECTORS 1
-
-static struct comp_testvec lz4hc_comp_tv_template[] = {
+static const struct comp_testvec lz4hc_comp_tv_template[] = {
        {
-               .inlen  = 70,
-               .outlen = 45,
-               .input  = "Join us now and share the software "
-                         "Join us now and share the software ",
-               .output = "\xf0\x10\x4a\x6f\x69\x6e\x20\x75"
-                         "\x73\x20\x6e\x6f\x77\x20\x61\x6e"
-                         "\x64\x20\x73\x68\x61\x72\x65\x20"
-                         "\x74\x68\x65\x20\x73\x6f\x66\x74"
-                         "\x77\x0d\x00\x0f\x23\x00\x0b\x50"
-                         "\x77\x61\x72\x65\x20",
+               .inlen  = 255,
+               .outlen = 216,
+               .input  = "LZ4 is lossless compression algorithm, providing"
+                        " compression speed at 400 MB/s per core, scalable "
+                        "with multi-cores CPU. It features an extremely fast "
+                        "decoder, with speed in multiple GB/s per core, "
+                        "typically reaching RAM speed limits on multi-core "
+                        "systems.",
+               .output = "\xf9\x21\x4c\x5a\x34\x20\x69\x73\x20\x6c\x6f\x73\x73"
+                         "\x6c\x65\x73\x73\x20\x63\x6f\x6d\x70\x72\x65\x73\x73"
+                         "\x69\x6f\x6e\x20\x61\x6c\x67\x6f\x72\x69\x74\x68\x6d"
+                         "\x2c\x20\x70\x72\x6f\x76\x69\x64\x69\x6e\x67\x21\x00"
+                         "\xf0\x21\x73\x70\x65\x65\x64\x20\x61\x74\x20\x34\x30"
+                         "\x30\x20\x4d\x42\x2f\x73\x20\x70\x65\x72\x20\x63\x6f"
+                         "\x72\x65\x2c\x20\x73\x63\x61\x6c\x61\x62\x6c\x65\x20"
+                         "\x77\x69\x74\x68\x20\x6d\x75\x6c\x74\x69\x2d\x1a\x00"
+                         "\xf0\x00\x73\x20\x43\x50\x55\x2e\x20\x49\x74\x20\x66"
+                         "\x65\x61\x74\x75\x11\x00\xf2\x0b\x61\x6e\x20\x65\x78"
+                         "\x74\x72\x65\x6d\x65\x6c\x79\x20\x66\x61\x73\x74\x20"
+                         "\x64\x65\x63\x6f\x64\x65\x72\x2c\x3d\x00\x02\x67\x00"
+                         "\x22\x69\x6e\x46\x00\x5a\x70\x6c\x65\x20\x47\x6c\x00"
+                         "\xf0\x00\x74\x79\x70\x69\x63\x61\x6c\x6c\x79\x20\x72"
+                         "\x65\x61\x63\x68\xa7\x00\x33\x52\x41\x4d\x38\x00\x97"
+                         "\x6c\x69\x6d\x69\x74\x73\x20\x6f\x6e\x85\x00\x90\x20"
+                         "\x73\x79\x73\x74\x65\x6d\x73\x2e",
+
        },
 };
 
-static struct comp_testvec lz4hc_decomp_tv_template[] = {
+static const struct comp_testvec lz4hc_decomp_tv_template[] = {
        {
-               .inlen  = 45,
-               .outlen = 70,
-               .input  = "\xf0\x10\x4a\x6f\x69\x6e\x20\x75"
-                         "\x73\x20\x6e\x6f\x77\x20\x61\x6e"
-                         "\x64\x20\x73\x68\x61\x72\x65\x20"
-                         "\x74\x68\x65\x20\x73\x6f\x66\x74"
-                         "\x77\x0d\x00\x0f\x23\x00\x0b\x50"
-                         "\x77\x61\x72\x65\x20",
-               .output = "Join us now and share the software "
-                         "Join us now and share the software ",
+               .inlen  = 216,
+               .outlen = 255,
+               .input  = "\xf9\x21\x4c\x5a\x34\x20\x69\x73\x20\x6c\x6f\x73\x73"
+                         "\x6c\x65\x73\x73\x20\x63\x6f\x6d\x70\x72\x65\x73\x73"
+                         "\x69\x6f\x6e\x20\x61\x6c\x67\x6f\x72\x69\x74\x68\x6d"
+                         "\x2c\x20\x70\x72\x6f\x76\x69\x64\x69\x6e\x67\x21\x00"
+                         "\xf0\x21\x73\x70\x65\x65\x64\x20\x61\x74\x20\x34\x30"
+                         "\x30\x20\x4d\x42\x2f\x73\x20\x70\x65\x72\x20\x63\x6f"
+                         "\x72\x65\x2c\x20\x73\x63\x61\x6c\x61\x62\x6c\x65\x20"
+                         "\x77\x69\x74\x68\x20\x6d\x75\x6c\x74\x69\x2d\x1a\x00"
+                         "\xf0\x00\x73\x20\x43\x50\x55\x2e\x20\x49\x74\x20\x66"
+                         "\x65\x61\x74\x75\x11\x00\xf2\x0b\x61\x6e\x20\x65\x78"
+                         "\x74\x72\x65\x6d\x65\x6c\x79\x20\x66\x61\x73\x74\x20"
+                         "\x64\x65\x63\x6f\x64\x65\x72\x2c\x3d\x00\x02\x67\x00"
+                         "\x22\x69\x6e\x46\x00\x5a\x70\x6c\x65\x20\x47\x6c\x00"
+                         "\xf0\x00\x74\x79\x70\x69\x63\x61\x6c\x6c\x79\x20\x72"
+                         "\x65\x61\x63\x68\xa7\x00\x33\x52\x41\x4d\x38\x00\x97"
+                         "\x6c\x69\x6d\x69\x74\x73\x20\x6f\x6e\x85\x00\x90\x20"
+                         "\x73\x79\x73\x74\x65\x6d\x73\x2e",
+               .output = "LZ4 is lossless compression algorithm, providing"
+                        " compression speed at 400 MB/s per core, scalable "
+                        "with multi-cores CPU. It features an extremely fast "
+                        "decoder, with speed in multiple GB/s per core, "
+                        "typically reaching RAM speed limits on multi-core "
+                        "systems.",
        },
 };