crypto: testmgr - add more camellia test vectors
authorJussi Kivilinna <jussi.kivilinna@mbnet.fi>
Mon, 5 Mar 2012 18:26:21 +0000 (20:26 +0200)
committerHerbert Xu <herbert@gondor.apana.org.au>
Wed, 14 Mar 2012 09:25:54 +0000 (17:25 +0800)
New ECB, CBC, CTR, LRW and XTS test vectors for camellia. Larger ECB/CBC test
vectors needed for parallel 2-way camellia implementation.

Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
crypto/testmgr.c
crypto/testmgr.h

index bb54b882d7380187371c9596411656bdd9af75be..5674878ff6c18d244ec23b4f8b7815647a814c9b 100644 (file)
@@ -1845,6 +1845,21 @@ static const struct alg_test_desc alg_test_descs[] = {
                                }
                        }
                }
+       }, {
+               .alg = "ctr(camellia)",
+               .test = alg_test_skcipher,
+               .suite = {
+                       .cipher = {
+                               .enc = {
+                                       .vecs = camellia_ctr_enc_tv_template,
+                                       .count = CAMELLIA_CTR_ENC_TEST_VECTORS
+                               },
+                               .dec = {
+                                       .vecs = camellia_ctr_dec_tv_template,
+                                       .count = CAMELLIA_CTR_DEC_TEST_VECTORS
+                               }
+                       }
+               }
        }, {
                .alg = "ctr(serpent)",
                .test = alg_test_skcipher,
@@ -2296,6 +2311,21 @@ static const struct alg_test_desc alg_test_descs[] = {
                                }
                        }
                }
+       }, {
+               .alg = "lrw(camellia)",
+               .test = alg_test_skcipher,
+               .suite = {
+                       .cipher = {
+                               .enc = {
+                                       .vecs = camellia_lrw_enc_tv_template,
+                                       .count = CAMELLIA_LRW_ENC_TEST_VECTORS
+                               },
+                               .dec = {
+                                       .vecs = camellia_lrw_dec_tv_template,
+                                       .count = CAMELLIA_LRW_DEC_TEST_VECTORS
+                               }
+                       }
+               }
        }, {
                .alg = "lrw(serpent)",
                .test = alg_test_skcipher,
@@ -2633,6 +2663,21 @@ static const struct alg_test_desc alg_test_descs[] = {
                                }
                        }
                }
+       }, {
+               .alg = "xts(camellia)",
+               .test = alg_test_skcipher,
+               .suite = {
+                       .cipher = {
+                               .enc = {
+                                       .vecs = camellia_xts_enc_tv_template,
+                                       .count = CAMELLIA_XTS_ENC_TEST_VECTORS
+                               },
+                               .dec = {
+                                       .vecs = camellia_xts_dec_tv_template,
+                                       .count = CAMELLIA_XTS_DEC_TEST_VECTORS
+                               }
+                       }
+               }
        }, {
                .alg = "xts(serpent)",
                .test = alg_test_skcipher,
index 43e84d32b341ff58b12d3f80a3924a2296b56f5a..36e5a8ee0e1e8ef8d3c85e9cadbb435ecc51530d 100644 (file)
@@ -11332,10 +11332,16 @@ static struct cipher_testvec fcrypt_pcbc_dec_tv_template[] = {
 /*
  * CAMELLIA test vectors.
  */
-#define CAMELLIA_ENC_TEST_VECTORS 3
-#define CAMELLIA_DEC_TEST_VECTORS 3
-#define CAMELLIA_CBC_ENC_TEST_VECTORS 2
-#define CAMELLIA_CBC_DEC_TEST_VECTORS 2
+#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[] = {
        {
@@ -11372,6 +11378,27 @@ static struct cipher_testvec camellia_enc_tv_template[] = {
                          "\x20\xef\x7c\x91\x9e\x3a\x75\x09",
                .rlen   = 16,
        },
+       { /* Generated with Crypto++ */
+               .key    = "\x3F\x85\x62\x3F\x1C\xF9\xD6\x1C"
+                         "\xF9\xD6\xB3\x90\x6D\x4A\x90\x6D"
+                         "\x4A\x27\x04\xE1\x27\x04\xE1\xBE"
+                         "\x9B\x78\xBE\x9B\x78\x55\x32\x0F",
+               .klen   = 32,
+               .input  = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
+                         "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
+                         "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
+                         "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
+                         "\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
+                         "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48",
+               .ilen   = 48,
+               .result = "\xED\xCD\xDB\xB8\x68\xCE\xBD\xEA"
+                         "\x9D\x9D\xCD\x9F\x4F\xFC\x4D\xB7"
+                         "\xA5\xFF\x6F\x43\x0F\xBA\x32\x04"
+                         "\xB3\xC2\xB9\x03\xAA\x91\x56\x29"
+                         "\x0D\xD0\xFD\xC4\x65\xA5\x69\xB9"
+                         "\xF1\xF6\xB1\xA5\xB2\x75\x4F\x8A",
+               .rlen   = 48,
+       },
 };
 
 static struct cipher_testvec camellia_dec_tv_template[] = {
@@ -11409,6 +11436,27 @@ static struct cipher_testvec camellia_dec_tv_template[] = {
                          "\xfe\xdc\xba\x98\x76\x54\x32\x10",
                .rlen   = 16,
        },
+       { /* Generated with Crypto++ */
+               .key    = "\x3F\x85\x62\x3F\x1C\xF9\xD6\x1C"
+                         "\xF9\xD6\xB3\x90\x6D\x4A\x90\x6D"
+                         "\x4A\x27\x04\xE1\x27\x04\xE1\xBE"
+                         "\x9B\x78\xBE\x9B\x78\x55\x32\x0F",
+               .klen   = 32,
+               .input  = "\xED\xCD\xDB\xB8\x68\xCE\xBD\xEA"
+                         "\x9D\x9D\xCD\x9F\x4F\xFC\x4D\xB7"
+                         "\xA5\xFF\x6F\x43\x0F\xBA\x32\x04"
+                         "\xB3\xC2\xB9\x03\xAA\x91\x56\x29"
+                         "\x0D\xD0\xFD\xC4\x65\xA5\x69\xB9"
+                         "\xF1\xF6\xB1\xA5\xB2\x75\x4F\x8A",
+               .ilen   = 48,
+               .result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
+                         "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
+                         "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
+                         "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
+                         "\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
+                         "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48",
+               .rlen   = 48,
+       },
 };
 
 static struct cipher_testvec camellia_cbc_enc_tv_template[] = {
@@ -11440,6 +11488,29 @@ static struct cipher_testvec camellia_cbc_enc_tv_template[] = {
                          "\x15\x78\xe0\x5e\xf2\xcb\x87\x16",
                .rlen   = 32,
        },
+       { /* Generated with Crypto++ */
+               .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
+                         "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
+                         "\x27\x04\xE1\x27\x04\xE1\xBE\x9B"
+                         "\x78\xBE\x9B\x78\x55\x32\x0F\x55",
+               .klen   = 32,
+               .iv     = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F"
+                         "\xC4\x29\x8E\xF3\x35\x9A\xFF\x64",
+               .input  = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
+                         "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
+                         "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
+                         "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
+                         "\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
+                         "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48",
+               .ilen   = 48,
+               .result = "\xCD\x3E\x2A\x3B\x3E\x94\xC5\x77"
+                         "\xBA\xBB\x5B\xB1\xDE\x7B\xA4\x40"
+                         "\x88\x39\xE3\xFD\x94\x4B\x25\x58"
+                         "\xE1\x4B\xC4\x18\x7A\xFD\x17\x2B"
+                         "\xB9\xF9\xC2\x27\x6A\xB6\x31\x27"
+                         "\xA6\xAD\xEF\xE5\x5D\xE4\x02\x01",
+               .rlen   = 48,
+       },
 };
 
 static struct cipher_testvec camellia_cbc_dec_tv_template[] = {
@@ -11471,6 +11542,1310 @@ static struct cipher_testvec camellia_cbc_dec_tv_template[] = {
                          "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
                .rlen   = 32,
        },
+       { /* Generated with Crypto++ */
+               .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
+                         "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
+                         "\x27\x04\xE1\x27\x04\xE1\xBE\x9B"
+                         "\x78\xBE\x9B\x78\x55\x32\x0F\x55",
+               .klen   = 32,
+               .iv     = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F"
+                         "\xC4\x29\x8E\xF3\x35\x9A\xFF\x64",
+               .input  = "\xCD\x3E\x2A\x3B\x3E\x94\xC5\x77"
+                         "\xBA\xBB\x5B\xB1\xDE\x7B\xA4\x40"
+                         "\x88\x39\xE3\xFD\x94\x4B\x25\x58"
+                         "\xE1\x4B\xC4\x18\x7A\xFD\x17\x2B"
+                         "\xB9\xF9\xC2\x27\x6A\xB6\x31\x27"
+                         "\xA6\xAD\xEF\xE5\x5D\xE4\x02\x01",
+               .ilen   = 48,
+               .result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
+                         "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
+                         "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
+                         "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
+                         "\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
+                         "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48",
+               .rlen   = 48,
+       },
+};
+
+static 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"
+                         "\x27\x04\xE1\x27\x04\xE1\xBE\x9B"
+                         "\x78\xBE\x9B\x78\x55\x32\x0F\x55",
+               .klen   = 32,
+               .iv     = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F"
+                         "\xC4\x29\x8E\xF3\x35\x9A\xFF\x64",
+               .input  = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
+                         "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
+                         "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
+                         "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
+                         "\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
+                         "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48",
+               .ilen   = 48,
+               .result = "\xF3\x06\x3A\x84\xCD\xBA\x8E\x11"
+                         "\xB7\x74\x6F\x5C\x97\xFB\x36\xFE"
+                         "\xDE\x71\x58\xD4\x15\xD1\xC1\xA4"
+                         "\xC9\x28\x74\xA6\x6B\xC7\x95\xA6"
+                         "\x6C\x77\xF7\x2F\xDF\xC7\xBB\x85"
+                         "\x60\xFC\xE8\x94\xE8\xB5\x09\x2C",
+               .rlen   = 48,
+       },
+       { /* Generated with Crypto++ */
+               .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
+                         "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
+                         "\x27\x04\xE1\x27\x04\xE1\xBE\x9B"
+                         "\x78\xBE\x9B\x78\x55\x32\x0F\x55",
+               .klen   = 32,
+               .iv     = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F"
+                         "\xC4\x29\x8E\xF3\x35\x9A\xFF\x64",
+               .input  = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
+                         "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
+                         "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
+                         "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
+                         "\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
+                         "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48"
+                         "\xDF\x76\x0D",
+               .ilen   = 51,
+               .result = "\xF3\x06\x3A\x84\xCD\xBA\x8E\x11"
+                         "\xB7\x74\x6F\x5C\x97\xFB\x36\xFE"
+                         "\xDE\x71\x58\xD4\x15\xD1\xC1\xA4"
+                         "\xC9\x28\x74\xA6\x6B\xC7\x95\xA6"
+                         "\x6C\x77\xF7\x2F\xDF\xC7\xBB\x85"
+                         "\x60\xFC\xE8\x94\xE8\xB5\x09\x2C"
+                         "\x1E\x43\xEF",
+               .rlen   = 51,
+       },
+};
+
+static 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"
+                         "\x27\x04\xE1\x27\x04\xE1\xBE\x9B"
+                         "\x78\xBE\x9B\x78\x55\x32\x0F\x55",
+               .klen   = 32,
+               .iv     = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F"
+                         "\xC4\x29\x8E\xF3\x35\x9A\xFF\x64",
+               .input  = "\xF3\x06\x3A\x84\xCD\xBA\x8E\x11"
+                         "\xB7\x74\x6F\x5C\x97\xFB\x36\xFE"
+                         "\xDE\x71\x58\xD4\x15\xD1\xC1\xA4"
+                         "\xC9\x28\x74\xA6\x6B\xC7\x95\xA6"
+                         "\x6C\x77\xF7\x2F\xDF\xC7\xBB\x85"
+                         "\x60\xFC\xE8\x94\xE8\xB5\x09\x2C",
+               .ilen   = 48,
+               .result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
+                         "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
+                         "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
+                         "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
+                         "\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
+                         "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48",
+               .rlen   = 48,
+       },
+       { /* Generated with Crypto++ */
+               .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
+                         "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
+                         "\x27\x04\xE1\x27\x04\xE1\xBE\x9B"
+                         "\x78\xBE\x9B\x78\x55\x32\x0F\x55",
+               .klen   = 32,
+               .iv     = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F"
+                         "\xC4\x29\x8E\xF3\x35\x9A\xFF\x64",
+               .input  = "\xF3\x06\x3A\x84\xCD\xBA\x8E\x11"
+                         "\xB7\x74\x6F\x5C\x97\xFB\x36\xFE"
+                         "\xDE\x71\x58\xD4\x15\xD1\xC1\xA4"
+                         "\xC9\x28\x74\xA6\x6B\xC7\x95\xA6"
+                         "\x6C\x77\xF7\x2F\xDF\xC7\xBB\x85"
+                         "\x60\xFC\xE8\x94\xE8\xB5\x09\x2C"
+                         "\x1E\x43\xEF",
+               .ilen   = 51,
+               .result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
+                         "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
+                         "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
+                         "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
+                         "\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
+                         "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48"
+                         "\xDF\x76\x0D",
+               .rlen   = 51,
+       },
+
+};
+
+static struct cipher_testvec camellia_lrw_enc_tv_template[] = {
+       /* Generated from AES-LRW test vectors */
+       {
+               .key    = "\x45\x62\xac\x25\xf8\x28\x17\x6d"
+                         "\x4c\x26\x84\x14\xb5\x68\x01\x85"
+                         "\x25\x8e\x2a\x05\xe7\x3e\x9d\x03"
+                         "\xee\x5a\x83\x0c\xcc\x09\x4c\x87",
+               .klen   = 32,
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x01",
+               .input  = "\x30\x31\x32\x33\x34\x35\x36\x37"
+                         "\x38\x39\x41\x42\x43\x44\x45\x46",
+               .ilen   = 16,
+               .result = "\x92\x68\x19\xd7\xb7\x5b\x0a\x31"
+                         "\x97\xcc\x72\xbe\x99\x17\xeb\x3e",
+               .rlen   = 16,
+       }, {
+               .key    = "\x59\x70\x47\x14\xf5\x57\x47\x8c"
+                         "\xd7\x79\xe8\x0f\x54\x88\x79\x44"
+                         "\x0d\x48\xf0\xb7\xb1\x5a\x53\xea"
+                         "\x1c\xaa\x6b\x29\xc2\xca\xfb\xaf",
+               .klen   = 32,
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x02",
+               .input  = "\x30\x31\x32\x33\x34\x35\x36\x37"
+                         "\x38\x39\x41\x42\x43\x44\x45\x46",
+               .ilen   = 16,
+               .result = "\x73\x09\xb7\x50\xb6\x77\x30\x50"
+                         "\x5c\x8a\x9c\x26\x77\x9d\xfc\x4a",
+               .rlen   = 16,
+       }, {
+               .key    = "\xd8\x2a\x91\x34\xb2\x6a\x56\x50"
+                         "\x30\xfe\x69\xe2\x37\x7f\x98\x47"
+                         "\xcd\xf9\x0b\x16\x0c\x64\x8f\xb6"
+                         "\xb0\x0d\x0d\x1b\xae\x85\x87\x1f",
+               .klen   = 32,
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x02\x00\x00\x00\x00",
+               .input  = "\x30\x31\x32\x33\x34\x35\x36\x37"
+                         "\x38\x39\x41\x42\x43\x44\x45\x46",
+               .ilen   = 16,
+               .result = "\x90\xae\x83\xe0\x22\xb9\x60\x91"
+                         "\xfa\xa9\xb7\x98\xe3\xed\x87\x01",
+               .rlen   = 16,
+       }, {
+               .key    = "\x0f\x6a\xef\xf8\xd3\xd2\xbb\x15"
+                         "\x25\x83\xf7\x3c\x1f\x01\x28\x74"
+                         "\xca\xc6\xbc\x35\x4d\x4a\x65\x54"
+                         "\x90\xae\x61\xcf\x7b\xae\xbd\xcc"
+                         "\xad\xe4\x94\xc5\x4a\x29\xae\x70",
+               .klen   = 40,
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x01",
+               .input  = "\x30\x31\x32\x33\x34\x35\x36\x37"
+                         "\x38\x39\x41\x42\x43\x44\x45\x46",
+               .ilen   = 16,
+               .result = "\x99\xe9\x6e\xd4\xc9\x21\xa5\xf0"
+                         "\xd8\x83\xef\xd9\x07\x16\x5f\x35",
+               .rlen   = 16,
+       }, {
+               .key    = "\x8a\xd4\xee\x10\x2f\xbd\x81\xff"
+                         "\xf8\x86\xce\xac\x93\xc5\xad\xc6"
+                         "\xa0\x19\x07\xc0\x9d\xf7\xbb\xdd"
+                         "\x52\x13\xb2\xb7\xf0\xff\x11\xd8"
+                         "\xd6\x08\xd0\xcd\x2e\xb1\x17\x6f",
+               .klen   = 40,
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x02\x00\x00\x00\x00",
+               .input  = "\x30\x31\x32\x33\x34\x35\x36\x37"
+                         "\x38\x39\x41\x42\x43\x44\x45\x46",
+               .ilen   = 16,
+               .result = "\x42\x88\xf4\xcb\x21\x11\x6d\x8e"
+                         "\xde\x1a\xf2\x29\xf1\x4a\xe0\x15",
+               .rlen   = 16,
+       }, {
+               .key    = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
+                         "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
+                         "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
+                         "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
+                         "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
+                         "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
+               .klen   = 48,
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x01",
+               .input  = "\x30\x31\x32\x33\x34\x35\x36\x37"
+                         "\x38\x39\x41\x42\x43\x44\x45\x46",
+               .ilen   = 16,
+               .result = "\x40\xaa\x34\x86\x4a\x8f\x78\xb9"
+                         "\xdb\xdb\x0f\x3d\x48\x70\xbe\x8d",
+               .rlen   = 16,
+       }, {
+               .key    = "\xfb\x76\x15\xb2\x3d\x80\x89\x1d"
+                         "\xd4\x70\x98\x0b\xc7\x95\x84\xc8"
+                         "\xb2\xfb\x64\xce\x60\x97\x87\x8d"
+                         "\x17\xfc\xe4\x5a\x49\xe8\x30\xb7"
+                         "\x6e\x78\x17\xe7\x2d\x5e\x12\xd4"
+                         "\x60\x64\x04\x7a\xf1\x2f\x9e\x0c",
+               .klen   = 48,
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x02\x00\x00\x00\x00",
+               .input  = "\x30\x31\x32\x33\x34\x35\x36\x37"
+                         "\x38\x39\x41\x42\x43\x44\x45\x46",
+               .ilen   = 16,
+               .result = "\x04\xab\x28\x37\x31\x7a\x26\xab"
+                         "\xa1\x70\x1b\x9c\xe7\xdd\x83\xff",
+               .rlen   = 16,
+       }, {
+               .key    = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
+                         "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
+                         "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
+                         "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
+                         "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
+                         "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
+               .klen   = 48,
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x01",
+               .input  = "\x05\x11\xb7\x18\xab\xc6\x2d\xac"
+                         "\x70\x5d\xf6\x22\x94\xcd\xe5\x6c"
+                         "\x17\x6b\xf6\x1c\xf0\xf3\x6e\xf8"
+                         "\x50\x38\x1f\x71\x49\xb6\x57\xd6"
+                         "\x8f\xcb\x8d\x6b\xe3\xa6\x29\x90"
+                         "\xfe\x2a\x62\x82\xae\x6d\x8b\xf6"
+                         "\xad\x1e\x9e\x20\x5f\x38\xbe\x04"
+                         "\xda\x10\x8e\xed\xa2\xa4\x87\xab"
+                         "\xda\x6b\xb4\x0c\x75\xba\xd3\x7c"
+                         "\xc9\xac\x42\x31\x95\x7c\xc9\x04"
+                         "\xeb\xd5\x6e\x32\x69\x8a\xdb\xa6"
+                         "\x15\xd7\x3f\x4f\x2f\x66\x69\x03"
+                         "\x9c\x1f\x54\x0f\xde\x1f\xf3\x65"
+                         "\x4c\x96\x12\xed\x7c\x92\x03\x01"
+                         "\x6f\xbc\x35\x93\xac\xf1\x27\xf1"
+                         "\xb4\x96\x82\x5a\x5f\xb0\xa0\x50"
+                         "\x89\xa4\x8e\x66\x44\x85\xcc\xfd"
+                         "\x33\x14\x70\xe3\x96\xb2\xc3\xd3"
+                         "\xbb\x54\x5a\x1a\xf9\x74\xa2\xc5"
+                         "\x2d\x64\x75\xdd\xb4\x54\xe6\x74"
+                         "\x8c\xd3\x9d\x9e\x86\xab\x51\x53"
+                         "\xb7\x93\x3e\x6f\xd0\x4e\x2c\x40"
+                         "\xf6\xa8\x2e\x3e\x9d\xf4\x66\xa5"
+                         "\x76\x12\x73\x44\x1a\x56\xd7\x72"
+                         "\x88\xcd\x21\x8c\x4c\x0f\xfe\xda"
+                         "\x95\xe0\x3a\xa6\xa5\x84\x46\xcd"
+                         "\xd5\x3e\x9d\x3a\xe2\x67\xe6\x60"
+                         "\x1a\xe2\x70\x85\x58\xc2\x1b\x09"
+                         "\xe1\xd7\x2c\xca\xad\xa8\x8f\xf9"
+                         "\xac\xb3\x0e\xdb\xca\x2e\xe2\xb8"
+                         "\x51\x71\xd9\x3c\x6c\xf1\x56\xf8"
+                         "\xea\x9c\xf1\xfb\x0c\xe6\xb7\x10"
+                         "\x1c\xf8\xa9\x7c\xe8\x53\x35\xc1"
+                         "\x90\x3e\x76\x4a\x74\xa4\x21\x2c"
+                         "\xf6\x2c\x4e\x0f\x94\x3a\x88\x2e"
+                         "\x41\x09\x6a\x33\x7d\xf6\xdd\x3f"
+                         "\x8d\x23\x31\x74\x84\xeb\x88\x6e"
+                         "\xcc\xb9\xbc\x22\x83\x19\x07\x22"
+                         "\xa5\x2d\xdf\xa5\xf3\x80\x85\x78"
+                         "\x84\x39\x6a\x6d\x6a\x99\x4f\xa5"
+                         "\x15\xfe\x46\xb0\xe4\x6c\xa5\x41"
+                         "\x3c\xce\x8f\x42\x60\x71\xa7\x75"
+                         "\x08\x40\x65\x8a\x82\xbf\xf5\x43"
+                         "\x71\x96\xa9\x4d\x44\x8a\x20\xbe"
+                         "\xfa\x4d\xbb\xc0\x7d\x31\x96\x65"
+                         "\xe7\x75\xe5\x3e\xfd\x92\x3b\xc9"
+                         "\x55\xbb\x16\x7e\xf7\xc2\x8c\xa4"
+                         "\x40\x1d\xe5\xef\x0e\xdf\xe4\x9a"
+                         "\x62\x73\x65\xfd\x46\x63\x25\x3d"
+                         "\x2b\xaf\xe5\x64\xfe\xa5\x5c\xcf"
+                         "\x24\xf3\xb4\xac\x64\xba\xdf\x4b"
+                         "\xc6\x96\x7d\x81\x2d\x8d\x97\xf7"
+                         "\xc5\x68\x77\x84\x32\x2b\xcc\x85"
+                         "\x74\x96\xf0\x12\x77\x61\xb9\xeb"
+                         "\x71\xaa\x82\xcb\x1c\xdb\x89\xc8"
+                         "\xc6\xb5\xe3\x5c\x7d\x39\x07\x24"
+                         "\xda\x39\x87\x45\xc0\x2b\xbb\x01"
+                         "\xac\xbc\x2a\x5c\x7f\xfc\xe8\xce"
+                         "\x6d\x9c\x6f\xed\xd3\xc1\xa1\xd6"
+                         "\xc5\x55\xa9\x66\x2f\xe1\xc8\x32"
+                         "\xa6\x5d\xa4\x3a\x98\x73\xe8\x45"
+                         "\xa4\xc7\xa8\xb4\xf6\x13\x03\xf6"
+                         "\xe9\x2e\xc4\x29\x0f\x84\xdb\xc4"
+                         "\x21\xc4\xc2\x75\x67\x89\x37\x0a",
+               .ilen   = 512,
+               .result = "\x90\x69\x8e\xf2\x14\x86\x59\xf9"
+                         "\xec\xe7\xfa\x3f\x48\x9d\x7f\x96"
+                         "\x67\x76\xac\x2c\xd2\x63\x18\x93"
+                         "\x13\xf8\xf1\xf6\x71\x77\xb3\xee"
+                         "\x93\xb2\xcc\xf3\x26\xc1\x16\x4f"
+                         "\xd4\xe8\x43\xc1\x68\xa3\x3e\x06"
+                         "\x38\x51\xff\xa8\xb9\xa4\xeb\xb1"
+                         "\x62\xdd\x78\x81\xea\x1d\xef\x04"
+                         "\x1d\x07\xc1\x67\xc8\xd6\x77\xa1"
+                         "\x84\x95\xf4\x9a\xd9\xbc\x2d\xe2"
+                         "\xf6\x80\xfc\x91\x2a\xbc\x42\xa0"
+                         "\x40\x41\x69\xaa\x71\xc0\x37\xec"
+                         "\x39\xf3\xf2\xec\x82\xc3\x88\x79"
+                         "\xbc\xc3\xaa\xb7\xcf\x6a\x72\x80"
+                         "\x4c\xf4\x84\x8f\x13\x9e\x94\x5c"
+                         "\xe5\xb2\x91\xbb\x92\x51\x4d\xf1"
+                         "\xd6\x0d\x71\x6b\x7a\xc2\x2f\x12"
+                         "\x6f\x75\xc7\x80\x99\x50\x84\xcf"
+                         "\xa8\xeb\xd6\xe1\x1c\x59\x81\x7e"
+                         "\xb9\xb3\xde\x7a\x93\x14\x12\xa2"
+                         "\xf7\x43\xb3\x9d\x1a\x87\x65\x91"
+                         "\x42\x08\x40\x82\x06\x1c\x2d\x55"
+                         "\x6e\x48\xd5\x74\x07\x6e\x9d\x80"
+                         "\xeb\xb4\x97\xa1\x36\xdf\xfa\x74"
+                         "\x79\x7f\x5a\x75\xe7\x71\xc8\x8c"
+                         "\x7e\xf8\x3a\x77\xcd\x32\x05\xf9"
+                         "\x3d\xd4\xe9\xa2\xbb\xc4\x8b\x83"
+                         "\x42\x5c\x82\xfa\xe9\x4b\x96\x3b"
+                         "\x7f\x89\x8b\xf9\xf1\x87\xda\xf0"
+                         "\x87\xef\x13\x5d\xf0\xe2\xc5\xc1"
+                         "\xed\x14\xa9\x57\x19\x63\x40\x04"
+                         "\x24\xeb\x6e\x19\xd1\x3d\x70\x78"
+                         "\xeb\xda\x55\x70\x2c\x4f\x41\x5b"
+                         "\x56\x9f\x1a\xd3\xac\xf1\xc0\xc3"
+                         "\x21\xec\xd7\xd2\x55\x32\x7c\x2e"
+                         "\x3c\x48\x8e\xb4\x85\x35\x47\xfe"
+                         "\xe2\x88\x79\x98\x6a\xc9\x8d\xff"
+                         "\xe9\x89\x6e\xb8\xe2\x97\x00\xbd"
+                         "\xa4\x8f\xba\xd0\x8c\xcb\x79\x99"
+                         "\xb3\xb2\xb2\x7a\xc3\xb7\xef\x75"
+                         "\x23\x52\x76\xc3\x50\x6e\x66\xf8"
+                         "\xa2\xe2\xce\xba\x40\x21\x3f\xc9"
+                         "\x0a\x32\x7f\xf7\x08\x8c\x66\xcf"
+                         "\xd3\xdf\x57\x59\x83\xb8\xe1\x85"
+                         "\xd6\x8f\xfb\x48\x1f\x3a\xc4\x2f"
+                         "\xb4\x2d\x58\xab\xd8\x7f\x5e\x3a"
+                         "\xbc\x62\x3e\xe2\x6a\x52\x0d\x76"
+                         "\x2f\x1c\x1a\x30\xed\x95\x2a\x44"
+                         "\x35\xa5\x83\x04\x84\x01\x99\x56"
+                         "\xb7\xe3\x10\x96\xfa\xdc\x19\xdd"
+                         "\xe2\x7f\xcb\xa0\x49\x1b\xff\x4c"
+                         "\x73\xf6\xbb\x94\x00\xe8\xa9\x3d"
+                         "\xe2\x20\xe9\x3f\xfa\x07\x5d\x77"
+                         "\x06\xd5\x4f\x4d\x02\xb8\x40\x1b"
+                         "\x30\xed\x1a\x50\x19\xef\xc4\x2c"
+                         "\x02\xd9\xc5\xd3\x11\x33\x37\xe5"
+                         "\x2b\xa3\x95\xa6\xee\xd8\x74\x1d"
+                         "\x68\xa0\xeb\xbf\xdd\x5e\x99\x96"
+                         "\x91\xc3\x94\x24\xa5\x12\xa2\x37"
+                         "\xb3\xac\xcf\x2a\xfd\x55\x34\xfe"
+                         "\x79\x92\x3e\xe6\x1b\x49\x57\x5d"
+                         "\x93\x6c\x01\xf7\xcc\x4e\x20\xd1"
+                         "\xb2\x1a\xd8\x4c\xbd\x1d\x10\xe9"
+                         "\x5a\xa8\x92\x7f\xba\xe6\x0c\x95",
+               .rlen   = 512,
+       },
+};
+
+static struct cipher_testvec camellia_lrw_dec_tv_template[] = {
+       /* Generated from AES-LRW test vectors */
+       /* same as enc vectors with input and result reversed */
+       {
+               .key    = "\x45\x62\xac\x25\xf8\x28\x17\x6d"
+                         "\x4c\x26\x84\x14\xb5\x68\x01\x85"
+                         "\x25\x8e\x2a\x05\xe7\x3e\x9d\x03"
+                         "\xee\x5a\x83\x0c\xcc\x09\x4c\x87",
+               .klen   = 32,
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x01",
+               .input  = "\x92\x68\x19\xd7\xb7\x5b\x0a\x31"
+                         "\x97\xcc\x72\xbe\x99\x17\xeb\x3e",
+               .ilen   = 16,
+               .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
+                         "\x38\x39\x41\x42\x43\x44\x45\x46",
+               .rlen   = 16,
+       }, {
+               .key    = "\x59\x70\x47\x14\xf5\x57\x47\x8c"
+                         "\xd7\x79\xe8\x0f\x54\x88\x79\x44"
+                         "\x0d\x48\xf0\xb7\xb1\x5a\x53\xea"
+                         "\x1c\xaa\x6b\x29\xc2\xca\xfb\xaf",
+               .klen   = 32,
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x02",
+               .input  = "\x73\x09\xb7\x50\xb6\x77\x30\x50"
+                         "\x5c\x8a\x9c\x26\x77\x9d\xfc\x4a",
+               .ilen   = 16,
+               .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
+                         "\x38\x39\x41\x42\x43\x44\x45\x46",
+               .rlen   = 16,
+       }, {
+               .key    = "\xd8\x2a\x91\x34\xb2\x6a\x56\x50"
+                         "\x30\xfe\x69\xe2\x37\x7f\x98\x47"
+                         "\xcd\xf9\x0b\x16\x0c\x64\x8f\xb6"
+                         "\xb0\x0d\x0d\x1b\xae\x85\x87\x1f",
+               .klen   = 32,
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x02\x00\x00\x00\x00",
+               .input  = "\x90\xae\x83\xe0\x22\xb9\x60\x91"
+                         "\xfa\xa9\xb7\x98\xe3\xed\x87\x01",
+               .ilen   = 16,
+               .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
+                         "\x38\x39\x41\x42\x43\x44\x45\x46",
+               .rlen   = 16,
+       }, {
+               .key    = "\x0f\x6a\xef\xf8\xd3\xd2\xbb\x15"
+                         "\x25\x83\xf7\x3c\x1f\x01\x28\x74"
+                         "\xca\xc6\xbc\x35\x4d\x4a\x65\x54"
+                         "\x90\xae\x61\xcf\x7b\xae\xbd\xcc"
+                         "\xad\xe4\x94\xc5\x4a\x29\xae\x70",
+               .klen   = 40,
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x01",
+               .input  = "\x99\xe9\x6e\xd4\xc9\x21\xa5\xf0"
+                         "\xd8\x83\xef\xd9\x07\x16\x5f\x35",
+               .ilen   = 16,
+               .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
+                         "\x38\x39\x41\x42\x43\x44\x45\x46",
+               .rlen   = 16,
+       }, {
+               .key    = "\x8a\xd4\xee\x10\x2f\xbd\x81\xff"
+                         "\xf8\x86\xce\xac\x93\xc5\xad\xc6"
+                         "\xa0\x19\x07\xc0\x9d\xf7\xbb\xdd"
+                         "\x52\x13\xb2\xb7\xf0\xff\x11\xd8"
+                         "\xd6\x08\xd0\xcd\x2e\xb1\x17\x6f",
+               .klen   = 40,
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x02\x00\x00\x00\x00",
+               .input  = "\x42\x88\xf4\xcb\x21\x11\x6d\x8e"
+                         "\xde\x1a\xf2\x29\xf1\x4a\xe0\x15",
+               .ilen   = 16,
+               .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
+                         "\x38\x39\x41\x42\x43\x44\x45\x46",
+               .rlen   = 16,
+       }, {
+               .key    = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
+                         "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
+                         "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
+                         "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
+                         "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
+                         "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
+               .klen   = 48,
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x01",
+               .input  = "\x40\xaa\x34\x86\x4a\x8f\x78\xb9"
+                         "\xdb\xdb\x0f\x3d\x48\x70\xbe\x8d",
+               .ilen   = 16,
+               .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
+                         "\x38\x39\x41\x42\x43\x44\x45\x46",
+               .rlen   = 16,
+       }, {
+               .key    = "\xfb\x76\x15\xb2\x3d\x80\x89\x1d"
+                         "\xd4\x70\x98\x0b\xc7\x95\x84\xc8"
+                         "\xb2\xfb\x64\xce\x60\x97\x87\x8d"
+                         "\x17\xfc\xe4\x5a\x49\xe8\x30\xb7"
+                         "\x6e\x78\x17\xe7\x2d\x5e\x12\xd4"
+                         "\x60\x64\x04\x7a\xf1\x2f\x9e\x0c",
+               .klen   = 48,
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x02\x00\x00\x00\x00",
+               .input  = "\x04\xab\x28\x37\x31\x7a\x26\xab"
+                         "\xa1\x70\x1b\x9c\xe7\xdd\x83\xff",
+               .ilen   = 16,
+               .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
+                         "\x38\x39\x41\x42\x43\x44\x45\x46",
+               .rlen   = 16,
+       }, {
+               .key    = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
+                         "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
+                         "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
+                         "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
+                         "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
+                         "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
+               .klen   = 48,
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x01",
+               .input  = "\x90\x69\x8e\xf2\x14\x86\x59\xf9"
+                         "\xec\xe7\xfa\x3f\x48\x9d\x7f\x96"
+                         "\x67\x76\xac\x2c\xd2\x63\x18\x93"
+                         "\x13\xf8\xf1\xf6\x71\x77\xb3\xee"
+                         "\x93\xb2\xcc\xf3\x26\xc1\x16\x4f"
+                         "\xd4\xe8\x43\xc1\x68\xa3\x3e\x06"
+                         "\x38\x51\xff\xa8\xb9\xa4\xeb\xb1"
+                         "\x62\xdd\x78\x81\xea\x1d\xef\x04"
+                         "\x1d\x07\xc1\x67\xc8\xd6\x77\xa1"
+                         "\x84\x95\xf4\x9a\xd9\xbc\x2d\xe2"
+                         "\xf6\x80\xfc\x91\x2a\xbc\x42\xa0"
+                         "\x40\x41\x69\xaa\x71\xc0\x37\xec"
+                         "\x39\xf3\xf2\xec\x82\xc3\x88\x79"
+                         "\xbc\xc3\xaa\xb7\xcf\x6a\x72\x80"
+                         "\x4c\xf4\x84\x8f\x13\x9e\x94\x5c"
+                         "\xe5\xb2\x91\xbb\x92\x51\x4d\xf1"
+                         "\xd6\x0d\x71\x6b\x7a\xc2\x2f\x12"
+                         "\x6f\x75\xc7\x80\x99\x50\x84\xcf"
+                         "\xa8\xeb\xd6\xe1\x1c\x59\x81\x7e"
+                         "\xb9\xb3\xde\x7a\x93\x14\x12\xa2"
+                         "\xf7\x43\xb3\x9d\x1a\x87\x65\x91"
+                         "\x42\x08\x40\x82\x06\x1c\x2d\x55"
+                         "\x6e\x48\xd5\x74\x07\x6e\x9d\x80"
+                         "\xeb\xb4\x97\xa1\x36\xdf\xfa\x74"
+                         "\x79\x7f\x5a\x75\xe7\x71\xc8\x8c"
+                         "\x7e\xf8\x3a\x77\xcd\x32\x05\xf9"
+                         "\x3d\xd4\xe9\xa2\xbb\xc4\x8b\x83"
+                         "\x42\x5c\x82\xfa\xe9\x4b\x96\x3b"
+                         "\x7f\x89\x8b\xf9\xf1\x87\xda\xf0"
+                         "\x87\xef\x13\x5d\xf0\xe2\xc5\xc1"
+                         "\xed\x14\xa9\x57\x19\x63\x40\x04"
+                         "\x24\xeb\x6e\x19\xd1\x3d\x70\x78"
+                         "\xeb\xda\x55\x70\x2c\x4f\x41\x5b"
+                         "\x56\x9f\x1a\xd3\xac\xf1\xc0\xc3"
+                         "\x21\xec\xd7\xd2\x55\x32\x7c\x2e"
+                         "\x3c\x48\x8e\xb4\x85\x35\x47\xfe"
+                         "\xe2\x88\x79\x98\x6a\xc9\x8d\xff"
+                         "\xe9\x89\x6e\xb8\xe2\x97\x00\xbd"
+                         "\xa4\x8f\xba\xd0\x8c\xcb\x79\x99"
+                         "\xb3\xb2\xb2\x7a\xc3\xb7\xef\x75"
+                         "\x23\x52\x76\xc3\x50\x6e\x66\xf8"
+                         "\xa2\xe2\xce\xba\x40\x21\x3f\xc9"
+                         "\x0a\x32\x7f\xf7\x08\x8c\x66\xcf"
+                         "\xd3\xdf\x57\x59\x83\xb8\xe1\x85"
+                         "\xd6\x8f\xfb\x48\x1f\x3a\xc4\x2f"
+                         "\xb4\x2d\x58\xab\xd8\x7f\x5e\x3a"
+                         "\xbc\x62\x3e\xe2\x6a\x52\x0d\x76"
+                         "\x2f\x1c\x1a\x30\xed\x95\x2a\x44"
+                         "\x35\xa5\x83\x04\x84\x01\x99\x56"
+                         "\xb7\xe3\x10\x96\xfa\xdc\x19\xdd"
+                         "\xe2\x7f\xcb\xa0\x49\x1b\xff\x4c"
+                         "\x73\xf6\xbb\x94\x00\xe8\xa9\x3d"
+                         "\xe2\x20\xe9\x3f\xfa\x07\x5d\x77"
+                         "\x06\xd5\x4f\x4d\x02\xb8\x40\x1b"
+                         "\x30\xed\x1a\x50\x19\xef\xc4\x2c"
+                         "\x02\xd9\xc5\xd3\x11\x33\x37\xe5"
+                         "\x2b\xa3\x95\xa6\xee\xd8\x74\x1d"
+                         "\x68\xa0\xeb\xbf\xdd\x5e\x99\x96"
+                         "\x91\xc3\x94\x24\xa5\x12\xa2\x37"
+                         "\xb3\xac\xcf\x2a\xfd\x55\x34\xfe"
+                         "\x79\x92\x3e\xe6\x1b\x49\x57\x5d"
+                         "\x93\x6c\x01\xf7\xcc\x4e\x20\xd1"
+                         "\xb2\x1a\xd8\x4c\xbd\x1d\x10\xe9"
+                         "\x5a\xa8\x92\x7f\xba\xe6\x0c\x95",
+               .ilen   = 512,
+               .result = "\x05\x11\xb7\x18\xab\xc6\x2d\xac"
+                         "\x70\x5d\xf6\x22\x94\xcd\xe5\x6c"
+                         "\x17\x6b\xf6\x1c\xf0\xf3\x6e\xf8"
+                         "\x50\x38\x1f\x71\x49\xb6\x57\xd6"
+                         "\x8f\xcb\x8d\x6b\xe3\xa6\x29\x90"
+                         "\xfe\x2a\x62\x82\xae\x6d\x8b\xf6"
+                         "\xad\x1e\x9e\x20\x5f\x38\xbe\x04"
+                         "\xda\x10\x8e\xed\xa2\xa4\x87\xab"
+                         "\xda\x6b\xb4\x0c\x75\xba\xd3\x7c"
+                         "\xc9\xac\x42\x31\x95\x7c\xc9\x04"
+                         "\xeb\xd5\x6e\x32\x69\x8a\xdb\xa6"
+                         "\x15\xd7\x3f\x4f\x2f\x66\x69\x03"
+                         "\x9c\x1f\x54\x0f\xde\x1f\xf3\x65"
+                         "\x4c\x96\x12\xed\x7c\x92\x03\x01"
+                         "\x6f\xbc\x35\x93\xac\xf1\x27\xf1"
+                         "\xb4\x96\x82\x5a\x5f\xb0\xa0\x50"
+                         "\x89\xa4\x8e\x66\x44\x85\xcc\xfd"
+                         "\x33\x14\x70\xe3\x96\xb2\xc3\xd3"
+                         "\xbb\x54\x5a\x1a\xf9\x74\xa2\xc5"
+                         "\x2d\x64\x75\xdd\xb4\x54\xe6\x74"
+                         "\x8c\xd3\x9d\x9e\x86\xab\x51\x53"
+                         "\xb7\x93\x3e\x6f\xd0\x4e\x2c\x40"
+                         "\xf6\xa8\x2e\x3e\x9d\xf4\x66\xa5"
+                         "\x76\x12\x73\x44\x1a\x56\xd7\x72"
+                         "\x88\xcd\x21\x8c\x4c\x0f\xfe\xda"
+                         "\x95\xe0\x3a\xa6\xa5\x84\x46\xcd"
+                         "\xd5\x3e\x9d\x3a\xe2\x67\xe6\x60"
+                         "\x1a\xe2\x70\x85\x58\xc2\x1b\x09"
+                         "\xe1\xd7\x2c\xca\xad\xa8\x8f\xf9"
+                         "\xac\xb3\x0e\xdb\xca\x2e\xe2\xb8"
+                         "\x51\x71\xd9\x3c\x6c\xf1\x56\xf8"
+                         "\xea\x9c\xf1\xfb\x0c\xe6\xb7\x10"
+                         "\x1c\xf8\xa9\x7c\xe8\x53\x35\xc1"
+                         "\x90\x3e\x76\x4a\x74\xa4\x21\x2c"
+                         "\xf6\x2c\x4e\x0f\x94\x3a\x88\x2e"
+                         "\x41\x09\x6a\x33\x7d\xf6\xdd\x3f"
+                         "\x8d\x23\x31\x74\x84\xeb\x88\x6e"
+                         "\xcc\xb9\xbc\x22\x83\x19\x07\x22"
+                         "\xa5\x2d\xdf\xa5\xf3\x80\x85\x78"
+                         "\x84\x39\x6a\x6d\x6a\x99\x4f\xa5"
+                         "\x15\xfe\x46\xb0\xe4\x6c\xa5\x41"
+                         "\x3c\xce\x8f\x42\x60\x71\xa7\x75"
+                         "\x08\x40\x65\x8a\x82\xbf\xf5\x43"
+                         "\x71\x96\xa9\x4d\x44\x8a\x20\xbe"
+                         "\xfa\x4d\xbb\xc0\x7d\x31\x96\x65"
+                         "\xe7\x75\xe5\x3e\xfd\x92\x3b\xc9"
+                         "\x55\xbb\x16\x7e\xf7\xc2\x8c\xa4"
+                         "\x40\x1d\xe5\xef\x0e\xdf\xe4\x9a"
+                         "\x62\x73\x65\xfd\x46\x63\x25\x3d"
+                         "\x2b\xaf\xe5\x64\xfe\xa5\x5c\xcf"
+                         "\x24\xf3\xb4\xac\x64\xba\xdf\x4b"
+                         "\xc6\x96\x7d\x81\x2d\x8d\x97\xf7"
+                         "\xc5\x68\x77\x84\x32\x2b\xcc\x85"
+                         "\x74\x96\xf0\x12\x77\x61\xb9\xeb"
+                         "\x71\xaa\x82\xcb\x1c\xdb\x89\xc8"
+                         "\xc6\xb5\xe3\x5c\x7d\x39\x07\x24"
+                         "\xda\x39\x87\x45\xc0\x2b\xbb\x01"
+                         "\xac\xbc\x2a\x5c\x7f\xfc\xe8\xce"
+                         "\x6d\x9c\x6f\xed\xd3\xc1\xa1\xd6"
+                         "\xc5\x55\xa9\x66\x2f\xe1\xc8\x32"
+                         "\xa6\x5d\xa4\x3a\x98\x73\xe8\x45"
+                         "\xa4\xc7\xa8\xb4\xf6\x13\x03\xf6"
+                         "\xe9\x2e\xc4\x29\x0f\x84\xdb\xc4"
+                         "\x21\xc4\xc2\x75\x67\x89\x37\x0a",
+               .rlen   = 512,
+       },
+};
+
+static struct cipher_testvec camellia_xts_enc_tv_template[] = {
+       /* Generated from AES-XTS test vectors */
+       {
+               .key    = "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .klen   = 32,
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .input  = "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .ilen   = 32,
+               .result = "\x06\xcb\xa5\xf1\x04\x63\xb2\x41"
+                         "\xdc\xca\xfa\x09\xba\x74\xb9\x05"
+                         "\x78\xba\xa4\xf8\x67\x4d\x7e\xad"
+                         "\x20\x18\xf5\x0c\x41\x16\x2a\x61",
+               .rlen   = 32,
+       }, {
+               .key    = "\x11\x11\x11\x11\x11\x11\x11\x11"
+                         "\x11\x11\x11\x11\x11\x11\x11\x11"
+                         "\x22\x22\x22\x22\x22\x22\x22\x22"
+                         "\x22\x22\x22\x22\x22\x22\x22\x22",
+               .klen   = 32,
+               .iv     = "\x33\x33\x33\x33\x33\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .input  = "\x44\x44\x44\x44\x44\x44\x44\x44"
+                         "\x44\x44\x44\x44\x44\x44\x44\x44"
+                         "\x44\x44\x44\x44\x44\x44\x44\x44"
+                         "\x44\x44\x44\x44\x44\x44\x44\x44",
+               .ilen   = 32,
+               .result = "\xc2\xb9\xdc\x44\x1d\xdf\xf2\x86"
+                         "\x8d\x35\x42\x0a\xa5\x5e\x3d\x4f"
+                         "\xb5\x37\x06\xff\xbd\xd4\x91\x70"
+                         "\x80\x1f\xb2\x39\x10\x89\x44\xf5",
+               .rlen   = 32,
+       }, {
+               .key    = "\xff\xfe\xfd\xfc\xfb\xfa\xf9\xf8"
+                         "\xf7\xf6\xf5\xf4\xf3\xf2\xf1\xf0"
+                         "\x22\x22\x22\x22\x22\x22\x22\x22"
+                         "\x22\x22\x22\x22\x22\x22\x22\x22",
+               .klen   = 32,
+               .iv     = "\x33\x33\x33\x33\x33\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .input  = "\x44\x44\x44\x44\x44\x44\x44\x44"
+                         "\x44\x44\x44\x44\x44\x44\x44\x44"
+                         "\x44\x44\x44\x44\x44\x44\x44\x44"
+                         "\x44\x44\x44\x44\x44\x44\x44\x44",
+               .ilen   = 32,
+               .result = "\x52\x1f\x9d\xf5\x5a\x58\x5a\x7e"
+                         "\x9f\xd0\x8e\x02\x9c\x9a\x6a\xa7"
+                         "\xb4\x3b\xce\xe7\x17\xaa\x89\x6a"
+                         "\x35\x3c\x6b\xb5\x61\x1c\x79\x38",
+               .rlen   = 32,
+       }, {
+               .key    = "\x27\x18\x28\x18\x28\x45\x90\x45"
+                         "\x23\x53\x60\x28\x74\x71\x35\x26"
+                         "\x31\x41\x59\x26\x53\x58\x97\x93"
+                         "\x23\x84\x62\x64\x33\x83\x27\x95",
+               .klen   = 32,
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .input  = "\x00\x01\x02\x03\x04\x05\x06\x07"
+                         "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
+                         "\x10\x11\x12\x13\x14\x15\x16\x17"
+                         "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
+                         "\x20\x21\x22\x23\x24\x25\x26\x27"
+                         "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
+                         "\x30\x31\x32\x33\x34\x35\x36\x37"
+                         "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
+                         "\x40\x41\x42\x43\x44\x45\x46\x47"
+                         "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
+                         "\x50\x51\x52\x53\x54\x55\x56\x57"
+                         "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
+                         "\x60\x61\x62\x63\x64\x65\x66\x67"
+                         "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
+                         "\x70\x71\x72\x73\x74\x75\x76\x77"
+                         "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
+                         "\x80\x81\x82\x83\x84\x85\x86\x87"
+                         "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
+                         "\x90\x91\x92\x93\x94\x95\x96\x97"
+                         "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
+                         "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
+                         "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
+                         "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
+                         "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
+                         "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
+                         "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
+                         "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
+                         "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
+                         "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
+                         "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
+                         "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
+                         "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
+                         "\x00\x01\x02\x03\x04\x05\x06\x07"
+                         "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
+                         "\x10\x11\x12\x13\x14\x15\x16\x17"
+                         "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
+                         "\x20\x21\x22\x23\x24\x25\x26\x27"
+                         "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
+                         "\x30\x31\x32\x33\x34\x35\x36\x37"
+                         "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
+                         "\x40\x41\x42\x43\x44\x45\x46\x47"
+                         "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
+                         "\x50\x51\x52\x53\x54\x55\x56\x57"
+                         "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
+                         "\x60\x61\x62\x63\x64\x65\x66\x67"
+                         "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
+                         "\x70\x71\x72\x73\x74\x75\x76\x77"
+                         "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
+                         "\x80\x81\x82\x83\x84\x85\x86\x87"
+                         "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
+                         "\x90\x91\x92\x93\x94\x95\x96\x97"
+                         "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
+                         "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
+                         "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
+                         "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
+                         "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
+                         "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
+                         "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
+                         "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
+                         "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
+                         "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
+                         "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
+                         "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
+                         "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
+               .ilen   = 512,
+               .result = "\xc7\xf9\x0a\xaa\xcb\xb5\x8f\x33"
+                         "\x60\xc3\xe9\x47\x90\xb7\x50\x57"
+                         "\xa3\xad\x81\x2f\xf5\x22\x96\x02"
+                         "\xaa\x7f\xea\xac\x29\x78\xca\x2a"
+                         "\x7c\xcd\x31\x1a\x3c\x40\x0a\x73"
+                         "\x09\x66\xad\x72\x0e\x4d\x5d\x77"
+                         "\xbc\xb8\x76\x80\x37\x59\xa9\x01"
+                         "\x9e\xfb\xdb\x6c\x93\xef\xb6\x8d"
+                         "\x1e\xc1\x94\xa8\xd4\xb5\xb0\x01"
+                         "\xd5\x01\x97\x28\xcd\x7a\x1f\xe8"
+                         "\x08\xda\x76\x00\x65\xcf\x7b\x31"
+                         "\xc6\xfa\xf2\x3b\x00\xa7\x6a\x9e"
+                         "\x6c\x43\x80\x87\xe0\xbb\x4e\xe5"
+                         "\xdc\x8a\xdf\xc3\x1d\x1b\x41\x04"
+                         "\xfb\x54\xdd\x29\x27\xc2\x65\x17"
+                         "\x36\x88\xb0\x85\x8d\x73\x7e\x4b"
+                         "\x1d\x16\x8a\x52\xbc\xa6\xbc\xa4"
+                         "\x8c\xd1\x04\x16\xbf\x8c\x01\x0f"
+                         "\x7e\x6b\x59\x15\x29\xd1\x9b\xd3"
+                         "\x6c\xee\xac\xdc\x45\x58\xca\x5b"
+                         "\x70\x0e\x6a\x12\x86\x82\x79\x9f"
+                         "\x16\xd4\x9d\x67\xcd\x70\x65\x26"
+                         "\x21\x72\x1e\xa1\x94\x8a\x83\x0c"
+                         "\x92\x42\x58\x5e\xa2\xc5\x31\xf3"
+                         "\x7b\xd1\x31\xd4\x15\x80\x31\x61"
+                         "\x5c\x53\x10\xdd\xea\xc8\x83\x5c"
+                         "\x7d\xa7\x05\x66\xcc\x1e\xbb\x05"
+                         "\x47\xae\xb4\x0f\x84\xd8\xf6\xb5"
+                         "\xa1\xc6\x52\x00\x52\xe8\xdc\xd9"
+                         "\x16\x31\xb2\x47\x91\x67\xaa\x28"
+                         "\x2c\x29\x85\xa3\xf7\xf2\x24\x93"
+                         "\x23\x80\x1f\xa8\x1b\x82\x8d\xdc"
+                         "\x9f\x0b\xcd\xb4\x3c\x20\xbc\xec"
+                         "\x4f\xc7\xee\xf8\xfd\xd9\xfb\x7e"
+                         "\x3f\x0d\x23\xfa\x3f\xa7\xcc\x66"
+                         "\x1c\xfe\xa6\x86\xf6\xf7\x85\xc7"
+                         "\x43\xc1\xd4\xfc\xe4\x79\xc9\x1d"
+                         "\xf8\x89\xcd\x20\x27\x84\x5d\x5c"
+                         "\x8e\x4f\x1f\xeb\x08\x21\x4f\xa3"
+                         "\xe0\x7e\x0b\x9c\xe7\x42\xcf\xb7"
+                         "\x3f\x43\xcc\x86\x71\x34\x6a\xd9"
+                         "\x5e\xec\x8f\x36\xc9\x0a\x03\xfe"
+                         "\x18\x41\xdc\x9e\x2e\x75\x20\x3e"
+                         "\xcc\x77\xe0\x8f\xe8\x43\x37\x4c"
+                         "\xed\x1a\x5a\xb3\xfa\x43\xc9\x71"
+                         "\x9f\xc5\xce\xcf\xff\xe7\x77\x1e"
+                         "\x35\x93\xde\x6b\xc0\x6a\x7e\xa9"
+                         "\x34\xb8\x27\x74\x08\xda\xf2\x4a"
+                         "\x23\x5b\x9f\x55\x3a\x57\x82\x52"
+                         "\xea\x6d\xc3\xc7\xf2\xc8\xb5\xdc"
+                         "\xc5\xb9\xbb\xaa\xf2\x29\x9f\x49"
+                         "\x7a\xef\xfe\xdc\x9f\xc9\x28\xe2"
+                         "\x96\x0b\x35\x84\x05\x0d\xd6\x2a"
+                         "\xea\x5a\xbf\x69\xde\xee\x4f\x8f"
+                         "\x84\xb9\xcf\xa7\x57\xea\xe0\xe8"
+                         "\x96\xef\x0f\x0e\xec\xc7\xa6\x74"
+                         "\xb1\xfe\x7a\x6d\x11\xdd\x0e\x15"
+                         "\x4a\x1e\x73\x7f\x55\xea\xf6\xe1"
+                         "\x5b\xb6\x71\xda\xb0\x0c\xba\x26"
+                         "\x5c\x48\x38\x6d\x1c\x32\xb2\x7d"
+                         "\x05\x87\xc2\x1e\x7e\x2d\xd4\x33"
+                         "\xcc\x06\xdb\xe7\x82\x29\x63\xd1"
+                         "\x52\x84\x4f\xee\x27\xe8\x02\xd4"
+                         "\x34\x3c\x69\xc2\xbd\x20\xe6\x7a",
+               .rlen   = 512,
+       }, {
+               .key    = "\x27\x18\x28\x18\x28\x45\x90\x45"
+                         "\x23\x53\x60\x28\x74\x71\x35\x26"
+                         "\x62\x49\x77\x57\x24\x70\x93\x69"
+                         "\x99\x59\x57\x49\x66\x96\x76\x27"
+                         "\x31\x41\x59\x26\x53\x58\x97\x93"
+                         "\x23\x84\x62\x64\x33\x83\x27\x95"
+                         "\x02\x88\x41\x97\x16\x93\x99\x37"
+                         "\x51\x05\x82\x09\x74\x94\x45\x92",
+               .klen   = 64,
+               .iv     = "\xff\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .input  = "\x00\x01\x02\x03\x04\x05\x06\x07"
+                         "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
+                         "\x10\x11\x12\x13\x14\x15\x16\x17"
+                         "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
+                         "\x20\x21\x22\x23\x24\x25\x26\x27"
+                         "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
+                         "\x30\x31\x32\x33\x34\x35\x36\x37"
+                         "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
+                         "\x40\x41\x42\x43\x44\x45\x46\x47"
+                         "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
+                         "\x50\x51\x52\x53\x54\x55\x56\x57"
+                         "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
+                         "\x60\x61\x62\x63\x64\x65\x66\x67"
+                         "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
+                         "\x70\x71\x72\x73\x74\x75\x76\x77"
+                         "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
+                         "\x80\x81\x82\x83\x84\x85\x86\x87"
+                         "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
+                         "\x90\x91\x92\x93\x94\x95\x96\x97"
+                         "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
+                         "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
+                         "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
+                         "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
+                         "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
+                         "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
+                         "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
+                         "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
+                         "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
+                         "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
+                         "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
+                         "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
+                         "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
+                         "\x00\x01\x02\x03\x04\x05\x06\x07"
+                         "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
+                         "\x10\x11\x12\x13\x14\x15\x16\x17"
+                         "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
+                         "\x20\x21\x22\x23\x24\x25\x26\x27"
+                         "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
+                         "\x30\x31\x32\x33\x34\x35\x36\x37"
+                         "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
+                         "\x40\x41\x42\x43\x44\x45\x46\x47"
+                         "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
+                         "\x50\x51\x52\x53\x54\x55\x56\x57"
+                         "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
+                         "\x60\x61\x62\x63\x64\x65\x66\x67"
+                         "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
+                         "\x70\x71\x72\x73\x74\x75\x76\x77"
+                         "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
+                         "\x80\x81\x82\x83\x84\x85\x86\x87"
+                         "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
+                         "\x90\x91\x92\x93\x94\x95\x96\x97"
+                         "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
+                         "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
+                         "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
+                         "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
+                         "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
+                         "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
+                         "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
+                         "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
+                         "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
+                         "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
+                         "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
+                         "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
+                         "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
+               .ilen   = 512,
+               .result = "\x49\xcd\xb8\xbf\x2f\x73\x37\x28"
+                         "\x9a\x7f\x6e\x57\x55\xb8\x07\x88"
+                         "\x4a\x0d\x8b\x55\x60\xed\xb6\x7b"
+                         "\xf1\x74\xac\x96\x05\x7b\x32\xca"
+                         "\xd1\x4e\xf1\x58\x29\x16\x24\x6c"
+                         "\xf2\xb3\xe4\x88\x84\xac\x4d\xee"
+                         "\x97\x07\x82\xf0\x07\x12\x38\x0a"
+                         "\x67\x62\xaf\xfd\x85\x9f\x0a\x55"
+                         "\xa5\x20\xc5\x60\xe4\x68\x53\xa4"
+                         "\x0e\x2e\x65\xe3\xe4\x0c\x30\x7c"
+                         "\x1c\x01\x4f\x55\xa9\x13\xeb\x25"
+                         "\x21\x87\xbc\xd3\xe7\x67\x4f\x38"
+                         "\xa8\x14\x25\x71\xe9\x2e\x4c\x21"
+                         "\x41\x82\x0c\x45\x39\x35\xa8\x75"
+                         "\x03\x29\x01\x84\x8c\xab\x48\xbe"
+                         "\x11\x56\x22\x67\xb7\x67\x1a\x09"
+                         "\xa1\x72\x25\x41\x3c\x39\x65\x80"
+                         "\x7d\x2f\xf8\x2c\x73\x04\x58\x9d"
+                         "\xdd\x16\x8b\x63\x70\x4e\xc5\x17"
+                         "\x21\xe0\x84\x51\x4b\x6f\x05\x52"
+                         "\xe3\x63\x34\xfa\xa4\xaf\x33\x20"
+                         "\xc1\xae\x32\xc4\xb8\x2b\xdb\x76"
+                         "\xd9\x02\x31\x2f\xa3\xc6\xd0\x7b"
+                         "\xaf\x1b\x84\xe3\x9b\xbf\xa6\xe0"
+                         "\xb8\x8a\x13\x88\x71\xf4\x11\xa5"
+                         "\xe9\xa9\x10\x33\xe0\xbe\x49\x89"
+                         "\x41\x22\xf5\x9d\x80\x3e\x3b\x76"
+                         "\x01\x16\x50\x6e\x7c\x6a\x81\xe9"
+                         "\x13\x2c\xde\xb2\x5f\x79\xba\xb2"
+                         "\xb1\x75\xae\xd2\x07\x98\x4b\x69"
+                         "\xae\x7d\x5b\x90\xc2\x6c\xe6\x98"
+                         "\xd3\x4c\xa1\xa3\x9c\xc9\x33\x6a"
+                         "\x0d\x23\xb1\x79\x25\x13\x4b\xe5"
+                         "\xaf\x93\x20\x5c\x7f\x06\x7a\x34"
+                         "\x0b\x78\xe3\x67\x26\xe0\xad\x95"
+                         "\xc5\x4e\x26\x22\xcf\x73\x77\x62"
+                         "\x3e\x10\xd7\x90\x4b\x52\x1c\xc9"
+                         "\xef\x38\x52\x18\x0e\x29\x7e\xef"
+                         "\x34\xfe\x31\x95\xc5\xbc\xa8\xe2"
+                         "\xa8\x4e\x9f\xea\xa6\xf0\xfe\x5d"
+                         "\xc5\x39\x86\xed\x2f\x6d\xa0\xfe"
+                         "\x96\xcd\x41\x10\x78\x4e\x0c\xc9"
+                         "\xc3\x6d\x0f\xb7\xe8\xe0\x62\xab"
+                         "\x8b\xf1\x21\x89\xa1\x12\xaa\xfa"
+                         "\x9d\x70\xbe\x4c\xa8\x98\x89\x01"
+                         "\xb9\xe2\x61\xde\x0c\x4a\x0b\xaa"
+                         "\x89\xf5\x14\x79\x18\x8f\x3b\x0d"
+                         "\x21\x17\xf8\x59\x15\x24\x64\x22"
+                         "\x57\x48\x80\xd5\x3d\x92\x30\x07"
+                         "\xd9\xa1\x4a\x23\x16\x43\x48\x0e"
+                         "\x2b\x2d\x1b\x87\xef\x7e\xbd\xfa"
+                         "\x49\xbc\x7e\x68\x6e\xa8\x46\x95"
+                         "\xad\x5e\xfe\x0a\xa8\xd3\x1a\x5d"
+                         "\x6b\x84\xf3\x00\xba\x52\x05\x02"
+                         "\xe3\x96\x4e\xb6\x79\x3f\x43\xd3"
+                         "\x4d\x3f\xd6\xab\x0a\xc4\x75\x2d"
+                         "\xd1\x08\xc3\x6a\xc8\x37\x29\xa0"
+                         "\xcc\x9a\x05\xdd\x5c\xe1\xff\x66"
+                         "\xf2\x7a\x1d\xf2\xaf\xa9\x48\x89"
+                         "\xf5\x21\x0f\x02\x48\x83\x74\xbf"
+                         "\x2e\xe6\x93\x7b\xa0\xf4\xb1\x2b"
+                         "\xb1\x02\x0a\x5c\x79\x19\x3b\x75"
+                         "\xb7\x16\xd8\x12\x5c\xcd\x7d\x4e"
+                         "\xd5\xc6\x99\xcc\x4e\x6c\x94\x95",
+               .rlen   = 512,
+       },
+};
+
+static struct cipher_testvec camellia_xts_dec_tv_template[] = {
+       /* Generated from AES-XTS test vectors */
+       /* same as enc vectors with input and result reversed */
+       {
+               .key    = "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .klen   = 32,
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .input  = "\x06\xcb\xa5\xf1\x04\x63\xb2\x41"
+                         "\xdc\xca\xfa\x09\xba\x74\xb9\x05"
+                         "\x78\xba\xa4\xf8\x67\x4d\x7e\xad"
+                         "\x20\x18\xf5\x0c\x41\x16\x2a\x61",
+               .ilen   = 32,
+               .result = "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .rlen   = 32,
+       }, {
+               .key    = "\x11\x11\x11\x11\x11\x11\x11\x11"
+                         "\x11\x11\x11\x11\x11\x11\x11\x11"
+                         "\x22\x22\x22\x22\x22\x22\x22\x22"
+                         "\x22\x22\x22\x22\x22\x22\x22\x22",
+               .klen   = 32,
+               .iv     = "\x33\x33\x33\x33\x33\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .input  = "\xc2\xb9\xdc\x44\x1d\xdf\xf2\x86"
+                         "\x8d\x35\x42\x0a\xa5\x5e\x3d\x4f"
+                         "\xb5\x37\x06\xff\xbd\xd4\x91\x70"
+                         "\x80\x1f\xb2\x39\x10\x89\x44\xf5",
+               .ilen   = 32,
+               .result = "\x44\x44\x44\x44\x44\x44\x44\x44"
+                         "\x44\x44\x44\x44\x44\x44\x44\x44"
+                         "\x44\x44\x44\x44\x44\x44\x44\x44"
+                         "\x44\x44\x44\x44\x44\x44\x44\x44",
+               .rlen   = 32,
+       }, {
+               .key    = "\xff\xfe\xfd\xfc\xfb\xfa\xf9\xf8"
+                         "\xf7\xf6\xf5\xf4\xf3\xf2\xf1\xf0"
+                         "\x22\x22\x22\x22\x22\x22\x22\x22"
+                         "\x22\x22\x22\x22\x22\x22\x22\x22",
+               .klen   = 32,
+               .iv     = "\x33\x33\x33\x33\x33\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .input  = "\x52\x1f\x9d\xf5\x5a\x58\x5a\x7e"
+                         "\x9f\xd0\x8e\x02\x9c\x9a\x6a\xa7"
+                         "\xb4\x3b\xce\xe7\x17\xaa\x89\x6a"
+                         "\x35\x3c\x6b\xb5\x61\x1c\x79\x38",
+               .ilen   = 32,
+               .result = "\x44\x44\x44\x44\x44\x44\x44\x44"
+                         "\x44\x44\x44\x44\x44\x44\x44\x44"
+                         "\x44\x44\x44\x44\x44\x44\x44\x44"
+                         "\x44\x44\x44\x44\x44\x44\x44\x44",
+               .rlen   = 32,
+       }, {
+               .key    = "\x27\x18\x28\x18\x28\x45\x90\x45"
+                         "\x23\x53\x60\x28\x74\x71\x35\x26"
+                         "\x31\x41\x59\x26\x53\x58\x97\x93"
+                         "\x23\x84\x62\x64\x33\x83\x27\x95",
+               .klen   = 32,
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .input  = "\xc7\xf9\x0a\xaa\xcb\xb5\x8f\x33"
+                         "\x60\xc3\xe9\x47\x90\xb7\x50\x57"
+                         "\xa3\xad\x81\x2f\xf5\x22\x96\x02"
+                         "\xaa\x7f\xea\xac\x29\x78\xca\x2a"
+                         "\x7c\xcd\x31\x1a\x3c\x40\x0a\x73"
+                         "\x09\x66\xad\x72\x0e\x4d\x5d\x77"
+                         "\xbc\xb8\x76\x80\x37\x59\xa9\x01"
+                         "\x9e\xfb\xdb\x6c\x93\xef\xb6\x8d"
+                         "\x1e\xc1\x94\xa8\xd4\xb5\xb0\x01"
+                         "\xd5\x01\x97\x28\xcd\x7a\x1f\xe8"
+                         "\x08\xda\x76\x00\x65\xcf\x7b\x31"
+                         "\xc6\xfa\xf2\x3b\x00\xa7\x6a\x9e"
+                         "\x6c\x43\x80\x87\xe0\xbb\x4e\xe5"
+                         "\xdc\x8a\xdf\xc3\x1d\x1b\x41\x04"
+                         "\xfb\x54\xdd\x29\x27\xc2\x65\x17"
+                         "\x36\x88\xb0\x85\x8d\x73\x7e\x4b"
+                         "\x1d\x16\x8a\x52\xbc\xa6\xbc\xa4"
+                         "\x8c\xd1\x04\x16\xbf\x8c\x01\x0f"
+                         "\x7e\x6b\x59\x15\x29\xd1\x9b\xd3"
+                         "\x6c\xee\xac\xdc\x45\x58\xca\x5b"
+                         "\x70\x0e\x6a\x12\x86\x82\x79\x9f"
+                         "\x16\xd4\x9d\x67\xcd\x70\x65\x26"
+                         "\x21\x72\x1e\xa1\x94\x8a\x83\x0c"
+                         "\x92\x42\x58\x5e\xa2\xc5\x31\xf3"
+                         "\x7b\xd1\x31\xd4\x15\x80\x31\x61"
+                         "\x5c\x53\x10\xdd\xea\xc8\x83\x5c"
+                         "\x7d\xa7\x05\x66\xcc\x1e\xbb\x05"
+                         "\x47\xae\xb4\x0f\x84\xd8\xf6\xb5"
+                         "\xa1\xc6\x52\x00\x52\xe8\xdc\xd9"
+                         "\x16\x31\xb2\x47\x91\x67\xaa\x28"
+                         "\x2c\x29\x85\xa3\xf7\xf2\x24\x93"
+                         "\x23\x80\x1f\xa8\x1b\x82\x8d\xdc"
+                         "\x9f\x0b\xcd\xb4\x3c\x20\xbc\xec"
+                         "\x4f\xc7\xee\xf8\xfd\xd9\xfb\x7e"
+                         "\x3f\x0d\x23\xfa\x3f\xa7\xcc\x66"
+                         "\x1c\xfe\xa6\x86\xf6\xf7\x85\xc7"
+                         "\x43\xc1\xd4\xfc\xe4\x79\xc9\x1d"
+                         "\xf8\x89\xcd\x20\x27\x84\x5d\x5c"
+                         "\x8e\x4f\x1f\xeb\x08\x21\x4f\xa3"
+                         "\xe0\x7e\x0b\x9c\xe7\x42\xcf\xb7"
+                         "\x3f\x43\xcc\x86\x71\x34\x6a\xd9"
+                         "\x5e\xec\x8f\x36\xc9\x0a\x03\xfe"
+                         "\x18\x41\xdc\x9e\x2e\x75\x20\x3e"
+                         "\xcc\x77\xe0\x8f\xe8\x43\x37\x4c"
+                         "\xed\x1a\x5a\xb3\xfa\x43\xc9\x71"
+                         "\x9f\xc5\xce\xcf\xff\xe7\x77\x1e"
+                         "\x35\x93\xde\x6b\xc0\x6a\x7e\xa9"
+                         "\x34\xb8\x27\x74\x08\xda\xf2\x4a"
+                         "\x23\x5b\x9f\x55\x3a\x57\x82\x52"
+                         "\xea\x6d\xc3\xc7\xf2\xc8\xb5\xdc"
+                         "\xc5\xb9\xbb\xaa\xf2\x29\x9f\x49"
+                         "\x7a\xef\xfe\xdc\x9f\xc9\x28\xe2"
+                         "\x96\x0b\x35\x84\x05\x0d\xd6\x2a"
+                         "\xea\x5a\xbf\x69\xde\xee\x4f\x8f"
+                         "\x84\xb9\xcf\xa7\x57\xea\xe0\xe8"
+                         "\x96\xef\x0f\x0e\xec\xc7\xa6\x74"
+                         "\xb1\xfe\x7a\x6d\x11\xdd\x0e\x15"
+                         "\x4a\x1e\x73\x7f\x55\xea\xf6\xe1"
+                         "\x5b\xb6\x71\xda\xb0\x0c\xba\x26"
+                         "\x5c\x48\x38\x6d\x1c\x32\xb2\x7d"
+                         "\x05\x87\xc2\x1e\x7e\x2d\xd4\x33"
+                         "\xcc\x06\xdb\xe7\x82\x29\x63\xd1"
+                         "\x52\x84\x4f\xee\x27\xe8\x02\xd4"
+                         "\x34\x3c\x69\xc2\xbd\x20\xe6\x7a",
+               .ilen   = 512,
+               .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
+                         "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
+                         "\x10\x11\x12\x13\x14\x15\x16\x17"
+                         "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
+                         "\x20\x21\x22\x23\x24\x25\x26\x27"
+                         "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
+                         "\x30\x31\x32\x33\x34\x35\x36\x37"
+                         "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
+                         "\x40\x41\x42\x43\x44\x45\x46\x47"
+                         "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
+                         "\x50\x51\x52\x53\x54\x55\x56\x57"
+                         "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
+                         "\x60\x61\x62\x63\x64\x65\x66\x67"
+                         "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
+                         "\x70\x71\x72\x73\x74\x75\x76\x77"
+                         "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
+                         "\x80\x81\x82\x83\x84\x85\x86\x87"
+                         "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
+                         "\x90\x91\x92\x93\x94\x95\x96\x97"
+                         "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
+                         "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
+                         "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
+                         "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
+                         "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
+                         "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
+                         "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
+                         "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
+                         "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
+                         "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
+                         "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
+                         "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
+                         "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
+                         "\x00\x01\x02\x03\x04\x05\x06\x07"
+                         "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
+                         "\x10\x11\x12\x13\x14\x15\x16\x17"
+                         "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
+                         "\x20\x21\x22\x23\x24\x25\x26\x27"
+                         "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
+                         "\x30\x31\x32\x33\x34\x35\x36\x37"
+                         "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
+                         "\x40\x41\x42\x43\x44\x45\x46\x47"
+                         "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
+                         "\x50\x51\x52\x53\x54\x55\x56\x57"
+                         "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
+                         "\x60\x61\x62\x63\x64\x65\x66\x67"
+                         "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
+                         "\x70\x71\x72\x73\x74\x75\x76\x77"
+                         "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
+                         "\x80\x81\x82\x83\x84\x85\x86\x87"
+                         "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
+                         "\x90\x91\x92\x93\x94\x95\x96\x97"
+                         "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
+                         "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
+                         "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
+                         "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
+                         "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
+                         "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
+                         "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
+                         "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
+                         "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
+                         "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
+                         "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
+                         "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
+                         "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
+               .rlen   = 512,
+       }, {
+               .key    = "\x27\x18\x28\x18\x28\x45\x90\x45"
+                         "\x23\x53\x60\x28\x74\x71\x35\x26"
+                         "\x62\x49\x77\x57\x24\x70\x93\x69"
+                         "\x99\x59\x57\x49\x66\x96\x76\x27"
+                         "\x31\x41\x59\x26\x53\x58\x97\x93"
+                         "\x23\x84\x62\x64\x33\x83\x27\x95"
+                         "\x02\x88\x41\x97\x16\x93\x99\x37"
+                         "\x51\x05\x82\x09\x74\x94\x45\x92",
+               .klen   = 64,
+               .iv     = "\xff\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .input  = "\x49\xcd\xb8\xbf\x2f\x73\x37\x28"
+                         "\x9a\x7f\x6e\x57\x55\xb8\x07\x88"
+                         "\x4a\x0d\x8b\x55\x60\xed\xb6\x7b"
+                         "\xf1\x74\xac\x96\x05\x7b\x32\xca"
+                         "\xd1\x4e\xf1\x58\x29\x16\x24\x6c"
+                         "\xf2\xb3\xe4\x88\x84\xac\x4d\xee"
+                         "\x97\x07\x82\xf0\x07\x12\x38\x0a"
+                         "\x67\x62\xaf\xfd\x85\x9f\x0a\x55"
+                         "\xa5\x20\xc5\x60\xe4\x68\x53\xa4"
+                         "\x0e\x2e\x65\xe3\xe4\x0c\x30\x7c"
+                         "\x1c\x01\x4f\x55\xa9\x13\xeb\x25"
+                         "\x21\x87\xbc\xd3\xe7\x67\x4f\x38"
+                         "\xa8\x14\x25\x71\xe9\x2e\x4c\x21"
+                         "\x41\x82\x0c\x45\x39\x35\xa8\x75"
+                         "\x03\x29\x01\x84\x8c\xab\x48\xbe"
+                         "\x11\x56\x22\x67\xb7\x67\x1a\x09"
+                         "\xa1\x72\x25\x41\x3c\x39\x65\x80"
+                         "\x7d\x2f\xf8\x2c\x73\x04\x58\x9d"
+                         "\xdd\x16\x8b\x63\x70\x4e\xc5\x17"
+                         "\x21\xe0\x84\x51\x4b\x6f\x05\x52"
+                         "\xe3\x63\x34\xfa\xa4\xaf\x33\x20"
+                         "\xc1\xae\x32\xc4\xb8\x2b\xdb\x76"
+                         "\xd9\x02\x31\x2f\xa3\xc6\xd0\x7b"
+                         "\xaf\x1b\x84\xe3\x9b\xbf\xa6\xe0"
+                         "\xb8\x8a\x13\x88\x71\xf4\x11\xa5"
+                         "\xe9\xa9\x10\x33\xe0\xbe\x49\x89"
+                         "\x41\x22\xf5\x9d\x80\x3e\x3b\x76"
+                         "\x01\x16\x50\x6e\x7c\x6a\x81\xe9"
+                         "\x13\x2c\xde\xb2\x5f\x79\xba\xb2"
+                         "\xb1\x75\xae\xd2\x07\x98\x4b\x69"
+                         "\xae\x7d\x5b\x90\xc2\x6c\xe6\x98"
+                         "\xd3\x4c\xa1\xa3\x9c\xc9\x33\x6a"
+                         "\x0d\x23\xb1\x79\x25\x13\x4b\xe5"
+                         "\xaf\x93\x20\x5c\x7f\x06\x7a\x34"
+                         "\x0b\x78\xe3\x67\x26\xe0\xad\x95"
+                         "\xc5\x4e\x26\x22\xcf\x73\x77\x62"
+                         "\x3e\x10\xd7\x90\x4b\x52\x1c\xc9"
+                         "\xef\x38\x52\x18\x0e\x29\x7e\xef"
+                         "\x34\xfe\x31\x95\xc5\xbc\xa8\xe2"
+                         "\xa8\x4e\x9f\xea\xa6\xf0\xfe\x5d"
+                         "\xc5\x39\x86\xed\x2f\x6d\xa0\xfe"
+                         "\x96\xcd\x41\x10\x78\x4e\x0c\xc9"
+                         "\xc3\x6d\x0f\xb7\xe8\xe0\x62\xab"
+                         "\x8b\xf1\x21\x89\xa1\x12\xaa\xfa"
+                         "\x9d\x70\xbe\x4c\xa8\x98\x89\x01"
+                         "\xb9\xe2\x61\xde\x0c\x4a\x0b\xaa"
+                         "\x89\xf5\x14\x79\x18\x8f\x3b\x0d"
+                         "\x21\x17\xf8\x59\x15\x24\x64\x22"
+                         "\x57\x48\x80\xd5\x3d\x92\x30\x07"
+                         "\xd9\xa1\x4a\x23\x16\x43\x48\x0e"
+                         "\x2b\x2d\x1b\x87\xef\x7e\xbd\xfa"
+                         "\x49\xbc\x7e\x68\x6e\xa8\x46\x95"
+                         "\xad\x5e\xfe\x0a\xa8\xd3\x1a\x5d"
+                         "\x6b\x84\xf3\x00\xba\x52\x05\x02"
+                         "\xe3\x96\x4e\xb6\x79\x3f\x43\xd3"
+                         "\x4d\x3f\xd6\xab\x0a\xc4\x75\x2d"
+                         "\xd1\x08\xc3\x6a\xc8\x37\x29\xa0"
+                         "\xcc\x9a\x05\xdd\x5c\xe1\xff\x66"
+                         "\xf2\x7a\x1d\xf2\xaf\xa9\x48\x89"
+                         "\xf5\x21\x0f\x02\x48\x83\x74\xbf"
+                         "\x2e\xe6\x93\x7b\xa0\xf4\xb1\x2b"
+                         "\xb1\x02\x0a\x5c\x79\x19\x3b\x75"
+                         "\xb7\x16\xd8\x12\x5c\xcd\x7d\x4e"
+                         "\xd5\xc6\x99\xcc\x4e\x6c\x94\x95",
+               .ilen   = 512,
+               .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
+                         "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
+                         "\x10\x11\x12\x13\x14\x15\x16\x17"
+                         "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
+                         "\x20\x21\x22\x23\x24\x25\x26\x27"
+                         "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
+                         "\x30\x31\x32\x33\x34\x35\x36\x37"
+                         "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
+                         "\x40\x41\x42\x43\x44\x45\x46\x47"
+                         "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
+                         "\x50\x51\x52\x53\x54\x55\x56\x57"
+                         "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
+                         "\x60\x61\x62\x63\x64\x65\x66\x67"
+                         "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
+                         "\x70\x71\x72\x73\x74\x75\x76\x77"
+                         "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
+                         "\x80\x81\x82\x83\x84\x85\x86\x87"
+                         "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
+                         "\x90\x91\x92\x93\x94\x95\x96\x97"
+                         "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
+                         "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
+                         "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
+                         "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
+                         "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
+                         "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
+                         "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
+                         "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
+                         "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
+                         "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
+                         "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
+                         "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
+                         "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
+                         "\x00\x01\x02\x03\x04\x05\x06\x07"
+                         "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
+                         "\x10\x11\x12\x13\x14\x15\x16\x17"
+                         "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
+                         "\x20\x21\x22\x23\x24\x25\x26\x27"
+                         "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
+                         "\x30\x31\x32\x33\x34\x35\x36\x37"
+                         "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
+                         "\x40\x41\x42\x43\x44\x45\x46\x47"
+                         "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
+                         "\x50\x51\x52\x53\x54\x55\x56\x57"
+                         "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
+                         "\x60\x61\x62\x63\x64\x65\x66\x67"
+                         "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
+                         "\x70\x71\x72\x73\x74\x75\x76\x77"
+                         "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
+                         "\x80\x81\x82\x83\x84\x85\x86\x87"
+                         "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
+                         "\x90\x91\x92\x93\x94\x95\x96\x97"
+                         "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
+                         "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
+                         "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
+                         "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
+                         "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
+                         "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
+                         "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
+                         "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
+                         "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
+                         "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
+                         "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
+                         "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
+                         "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
+               .rlen   = 512,
+       },
 };
 
 /*