[RAMEN9610-21029]ALSA: core: Fix card races between register and disconnect
[GitHub/MotorolaMobilityLLC/kernel-slsi.git] / crypto / testmgr.h
index fbc0fab5e79e6267b91a43067ff490f54bee1b78..b0de033a529986b391ca6c6a2ff3889afdf7d0fa 100644 (file)
@@ -13706,6 +13706,1492 @@ static const struct cipher_testvec serpent_xts_dec_tv_template[] = {
        },
 };
 
+/*
+ * Speck test vectors taken from the original paper:
+ * "The Simon and Speck Families of Lightweight Block Ciphers"
+ * https://eprint.iacr.org/2013/404.pdf
+ *
+ * Note that the paper does not make byte and word order clear.  But it was
+ * confirmed with the authors that the intended orders are little endian byte
+ * order and (y, x) word order.  Equivalently, the printed test vectors, when
+ * looking at only the bytes (ignoring the whitespace that divides them into
+ * words), are backwards: the left-most byte is actually the one with the
+ * highest memory address, while the right-most byte is actually the one with
+ * the lowest memory address.
+ */
+
+static const struct cipher_testvec speck128_enc_tv_template[] = {
+       { /* Speck128/128 */
+               .key    = "\x00\x01\x02\x03\x04\x05\x06\x07"
+                         "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
+               .klen   = 16,
+               .input  = "\x20\x6d\x61\x64\x65\x20\x69\x74"
+                         "\x20\x65\x71\x75\x69\x76\x61\x6c",
+               .ilen   = 16,
+               .result = "\x18\x0d\x57\x5c\xdf\xfe\x60\x78"
+                         "\x65\x32\x78\x79\x51\x98\x5d\xa6",
+               .rlen   = 16,
+       }, { /* Speck128/192 */
+               .key    = "\x00\x01\x02\x03\x04\x05\x06\x07"
+                         "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
+                         "\x10\x11\x12\x13\x14\x15\x16\x17",
+               .klen   = 24,
+               .input  = "\x65\x6e\x74\x20\x74\x6f\x20\x43"
+                         "\x68\x69\x65\x66\x20\x48\x61\x72",
+               .ilen   = 16,
+               .result = "\x86\x18\x3c\xe0\x5d\x18\xbc\xf9"
+                         "\x66\x55\x13\x13\x3a\xcf\xe4\x1b",
+               .rlen   = 16,
+       }, { /* Speck128/256 */
+               .key    = "\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",
+               .klen   = 32,
+               .input  = "\x70\x6f\x6f\x6e\x65\x72\x2e\x20"
+                         "\x49\x6e\x20\x74\x68\x6f\x73\x65",
+               .ilen   = 16,
+               .result = "\x43\x8f\x18\x9c\x8d\xb4\xee\x4e"
+                         "\x3e\xf5\xc0\x05\x04\x01\x09\x41",
+               .rlen   = 16,
+       },
+};
+
+static const struct cipher_testvec speck128_dec_tv_template[] = {
+       { /* Speck128/128 */
+               .key    = "\x00\x01\x02\x03\x04\x05\x06\x07"
+                         "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
+               .klen   = 16,
+               .input  = "\x18\x0d\x57\x5c\xdf\xfe\x60\x78"
+                         "\x65\x32\x78\x79\x51\x98\x5d\xa6",
+               .ilen   = 16,
+               .result = "\x20\x6d\x61\x64\x65\x20\x69\x74"
+                         "\x20\x65\x71\x75\x69\x76\x61\x6c",
+               .rlen   = 16,
+       }, { /* Speck128/192 */
+               .key    = "\x00\x01\x02\x03\x04\x05\x06\x07"
+                         "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
+                         "\x10\x11\x12\x13\x14\x15\x16\x17",
+               .klen   = 24,
+               .input  = "\x86\x18\x3c\xe0\x5d\x18\xbc\xf9"
+                         "\x66\x55\x13\x13\x3a\xcf\xe4\x1b",
+               .ilen   = 16,
+               .result = "\x65\x6e\x74\x20\x74\x6f\x20\x43"
+                         "\x68\x69\x65\x66\x20\x48\x61\x72",
+               .rlen   = 16,
+       }, { /* Speck128/256 */
+               .key    = "\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",
+               .klen   = 32,
+               .input  = "\x43\x8f\x18\x9c\x8d\xb4\xee\x4e"
+                         "\x3e\xf5\xc0\x05\x04\x01\x09\x41",
+               .ilen   = 16,
+               .result = "\x70\x6f\x6f\x6e\x65\x72\x2e\x20"
+                         "\x49\x6e\x20\x74\x68\x6f\x73\x65",
+               .rlen   = 16,
+       },
+};
+
+/*
+ * Speck128-XTS test vectors, taken from the AES-XTS test vectors with the
+ * result recomputed with Speck128 as the cipher
+ */
+
+static const struct cipher_testvec speck128_xts_enc_tv_template[] = {
+       {
+               .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 = "\xbe\xa0\xe7\x03\xd7\xfe\xab\x62"
+                         "\x3b\x99\x4a\x64\x74\x77\xac\xed"
+                         "\xd8\xf4\xa6\xcf\xae\xb9\x07\x42"
+                         "\x51\xd9\xb6\x1d\xe0\x5e\xbc\x54",
+               .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 = "\xfb\x53\x81\x75\x6f\x9f\x34\xad"
+                         "\x7e\x01\xed\x7b\xcc\xda\x4e\x4a"
+                         "\xd4\x84\xa4\x53\xd5\x88\x73\x1b"
+                         "\xfd\xcb\xae\x0d\xf3\x04\xee\xe6",
+               .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 = "\x21\x52\x84\x15\xd1\xf7\x21\x55"
+                         "\xd9\x75\x4a\xd3\xc5\xdb\x9f\x7d"
+                         "\xda\x63\xb2\xf1\x82\xb0\x89\x59"
+                         "\x86\xd4\xaa\xaa\xdd\xff\x4f\x92",
+               .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 = "\x57\xb5\xf8\x71\x6e\x6d\xdd\x82"
+                         "\x53\xd0\xed\x2d\x30\xc1\x20\xef"
+                         "\x70\x67\x5e\xff\x09\x70\xbb\xc1"
+                         "\x3a\x7b\x48\x26\xd9\x0b\xf4\x48"
+                         "\xbe\xce\xb1\xc7\xb2\x67\xc4\xa7"
+                         "\x76\xf8\x36\x30\xb7\xb4\x9a\xd9"
+                         "\xf5\x9d\xd0\x7b\xc1\x06\x96\x44"
+                         "\x19\xc5\x58\x84\x63\xb9\x12\x68"
+                         "\x68\xc7\xaa\x18\x98\xf2\x1f\x5c"
+                         "\x39\xa6\xd8\x32\x2b\xc3\x51\xfd"
+                         "\x74\x79\x2e\xb4\x44\xd7\x69\xc4"
+                         "\xfc\x29\xe6\xed\x26\x1e\xa6\x9d"
+                         "\x1c\xbe\x00\x0e\x7f\x3a\xca\xfb"
+                         "\x6d\x13\x65\xa0\xf9\x31\x12\xe2"
+                         "\x26\xd1\xec\x2b\x0a\x8b\x59\x99"
+                         "\xa7\x49\xa0\x0e\x09\x33\x85\x50"
+                         "\xc3\x23\xca\x7a\xdd\x13\x45\x5f"
+                         "\xde\x4c\xa7\xcb\x00\x8a\x66\x6f"
+                         "\xa2\xb6\xb1\x2e\xe1\xa0\x18\xf6"
+                         "\xad\xf3\xbd\xeb\xc7\xef\x55\x4f"
+                         "\x79\x91\x8d\x36\x13\x7b\xd0\x4a"
+                         "\x6c\x39\xfb\x53\xb8\x6f\x02\x51"
+                         "\xa5\x20\xac\x24\x1c\x73\x59\x73"
+                         "\x58\x61\x3a\x87\x58\xb3\x20\x56"
+                         "\x39\x06\x2b\x4d\xd3\x20\x2b\x89"
+                         "\x3f\xa2\xf0\x96\xeb\x7f\xa4\xcd"
+                         "\x11\xae\xbd\xcb\x3a\xb4\xd9\x91"
+                         "\x09\x35\x71\x50\x65\xac\x92\xe3"
+                         "\x7b\x32\xc0\x7a\xdd\xd4\xc3\x92"
+                         "\x6f\xeb\x79\xde\x6f\xd3\x25\xc9"
+                         "\xcd\x63\xf5\x1e\x7a\x3b\x26\x9d"
+                         "\x77\x04\x80\xa9\xbf\x38\xb5\xbd"
+                         "\xb8\x05\x07\xbd\xfd\xab\x7b\xf8"
+                         "\x2a\x26\xcc\x49\x14\x6d\x55\x01"
+                         "\x06\x94\xd8\xb2\x2d\x53\x83\x1b"
+                         "\x8f\xd4\xdd\x57\x12\x7e\x18\xba"
+                         "\x8e\xe2\x4d\x80\xef\x7e\x6b\x9d"
+                         "\x24\xa9\x60\xa4\x97\x85\x86\x2a"
+                         "\x01\x00\x09\xf1\xcb\x4a\x24\x1c"
+                         "\xd8\xf6\xe6\x5b\xe7\x5d\xf2\xc4"
+                         "\x97\x1c\x10\xc6\x4d\x66\x4f\x98"
+                         "\x87\x30\xac\xd5\xea\x73\x49\x10"
+                         "\x80\xea\xe5\x5f\x4d\x5f\x03\x33"
+                         "\x66\x02\x35\x3d\x60\x06\x36\x4f"
+                         "\x14\x1c\xd8\x07\x1f\x78\xd0\xf8"
+                         "\x4f\x6c\x62\x7c\x15\xa5\x7c\x28"
+                         "\x7c\xcc\xeb\x1f\xd1\x07\x90\x93"
+                         "\x7e\xc2\xa8\x3a\x80\xc0\xf5\x30"
+                         "\xcc\x75\xcf\x16\x26\xa9\x26\x3b"
+                         "\xe7\x68\x2f\x15\x21\x5b\xe4\x00"
+                         "\xbd\x48\x50\xcd\x75\x70\xc4\x62"
+                         "\xbb\x41\xfb\x89\x4a\x88\x3b\x3b"
+                         "\x51\x66\x02\x69\x04\x97\x36\xd4"
+                         "\x75\xae\x0b\xa3\x42\xf8\xca\x79"
+                         "\x8f\x93\xe9\xcc\x38\xbd\xd6\xd2"
+                         "\xf9\x70\x4e\xc3\x6a\x8e\x25\xbd"
+                         "\xea\x15\x5a\xa0\x85\x7e\x81\x0d"
+                         "\x03\xe7\x05\x39\xf5\x05\x26\xee"
+                         "\xec\xaa\x1f\x3d\xc9\x98\x76\x01"
+                         "\x2c\xf4\xfc\xa3\x88\x77\x38\xc4"
+                         "\x50\x65\x50\x6d\x04\x1f\xdf\x5a"
+                         "\xaa\xf2\x01\xa9\xc1\x8d\xee\xca"
+                         "\x47\x26\xef\x39\xb8\xb4\xf2\xd1"
+                         "\xd6\xbb\x1b\x2a\xc1\x34\x14\xcf",
+               .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 = "\xc5\x85\x2a\x4b\x73\xe4\xf6\xf1"
+                         "\x7e\xf9\xf6\xe9\xa3\x73\x36\xcb"
+                         "\xaa\xb6\x22\xb0\x24\x6e\x3d\x73"
+                         "\x92\x99\xde\xd3\x76\xed\xcd\x63"
+                         "\x64\x3a\x22\x57\xc1\x43\x49\xd4"
+                         "\x79\x36\x31\x19\x62\xae\x10\x7e"
+                         "\x7d\xcf\x7a\xe2\x6b\xce\x27\xfa"
+                         "\xdc\x3d\xd9\x83\xd3\x42\x4c\xe0"
+                         "\x1b\xd6\x1d\x1a\x6f\xd2\x03\x00"
+                         "\xfc\x81\x99\x8a\x14\x62\xf5\x7e"
+                         "\x0d\xe7\x12\xe8\x17\x9d\x0b\xec"
+                         "\xe2\xf7\xc9\xa7\x63\xd1\x79\xb6"
+                         "\x62\x62\x37\xfe\x0a\x4c\x4a\x37"
+                         "\x70\xc7\x5e\x96\x5f\xbc\x8e\x9e"
+                         "\x85\x3c\x4f\x26\x64\x85\xbc\x68"
+                         "\xb0\xe0\x86\x5e\x26\x41\xce\x11"
+                         "\x50\xda\x97\x14\xe9\x9e\xc7\x6d"
+                         "\x3b\xdc\x43\xde\x2b\x27\x69\x7d"
+                         "\xfc\xb0\x28\xbd\x8f\xb1\xc6\x31"
+                         "\x14\x4d\xf0\x74\x37\xfd\x07\x25"
+                         "\x96\x55\xe5\xfc\x9e\x27\x2a\x74"
+                         "\x1b\x83\x4d\x15\x83\xac\x57\xa0"
+                         "\xac\xa5\xd0\x38\xef\x19\x56\x53"
+                         "\x25\x4b\xfc\xce\x04\x23\xe5\x6b"
+                         "\xf6\xc6\x6c\x32\x0b\xb3\x12\xc5"
+                         "\xed\x22\x34\x1c\x5d\xed\x17\x06"
+                         "\x36\xa3\xe6\x77\xb9\x97\x46\xb8"
+                         "\xe9\x3f\x7e\xc7\xbc\x13\x5c\xdc"
+                         "\x6e\x3f\x04\x5e\xd1\x59\xa5\x82"
+                         "\x35\x91\x3d\x1b\xe4\x97\x9f\x92"
+                         "\x1c\x5e\x5f\x6f\x41\xd4\x62\xa1"
+                         "\x8d\x39\xfc\x42\xfb\x38\x80\xb9"
+                         "\x0a\xe3\xcc\x6a\x93\xd9\x7a\xb1"
+                         "\xe9\x69\xaf\x0a\x6b\x75\x38\xa7"
+                         "\xa1\xbf\xf7\xda\x95\x93\x4b\x78"
+                         "\x19\xf5\x94\xf9\xd2\x00\x33\x37"
+                         "\xcf\xf5\x9e\x9c\xf3\xcc\xa6\xee"
+                         "\x42\xb2\x9e\x2c\x5f\x48\x23\x26"
+                         "\x15\x25\x17\x03\x3d\xfe\x2c\xfc"
+                         "\xeb\xba\xda\xe0\x00\x05\xb6\xa6"
+                         "\x07\xb3\xe8\x36\x5b\xec\x5b\xbf"
+                         "\xd6\x5b\x00\x74\xc6\x97\xf1\x6a"
+                         "\x49\xa1\xc3\xfa\x10\x52\xb9\x14"
+                         "\xad\xb7\x73\xf8\x78\x12\xc8\x59"
+                         "\x17\x80\x4c\x57\x39\xf1\x6d\x80"
+                         "\x25\x77\x0f\x5e\x7d\xf0\xaf\x21"
+                         "\xec\xce\xb7\xc8\x02\x8a\xed\x53"
+                         "\x2c\x25\x68\x2e\x1f\x85\x5e\x67"
+                         "\xd1\x07\x7a\x3a\x89\x08\xe0\x34"
+                         "\xdc\xdb\x26\xb4\x6b\x77\xfc\x40"
+                         "\x31\x15\x72\xa0\xf0\x73\xd9\x3b"
+                         "\xd5\xdb\xfe\xfc\x8f\xa9\x44\xa2"
+                         "\x09\x9f\xc6\x33\xe5\xe2\x88\xe8"
+                         "\xf3\xf0\x1a\xf4\xce\x12\x0f\xd6"
+                         "\xf7\x36\xe6\xa4\xf4\x7a\x10\x58"
+                         "\xcc\x1f\x48\x49\x65\x47\x75\xe9"
+                         "\x28\xe1\x65\x7b\xf2\xc4\xb5\x07"
+                         "\xf2\xec\x76\xd8\x8f\x09\xf3\x16"
+                         "\xa1\x51\x89\x3b\xeb\x96\x42\xac"
+                         "\x65\xe0\x67\x63\x29\xdc\xb4\x7d"
+                         "\xf2\x41\x51\x6a\xcb\xde\x3c\xfb"
+                         "\x66\x8d\x13\xca\xe0\x59\x2a\x00"
+                         "\xc9\x53\x4c\xe6\x9e\xe2\x73\xd5"
+                         "\x67\x19\xb2\xbd\x9a\x63\xd7\x5c",
+               .rlen   = 512,
+               .also_non_np = 1,
+               .np     = 3,
+               .tap    = { 512 - 20, 4, 16 },
+       }
+};
+
+static const struct cipher_testvec speck128_xts_dec_tv_template[] = {
+       {
+               .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  = "\xbe\xa0\xe7\x03\xd7\xfe\xab\x62"
+                         "\x3b\x99\x4a\x64\x74\x77\xac\xed"
+                         "\xd8\xf4\xa6\xcf\xae\xb9\x07\x42"
+                         "\x51\xd9\xb6\x1d\xe0\x5e\xbc\x54",
+               .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  = "\xfb\x53\x81\x75\x6f\x9f\x34\xad"
+                         "\x7e\x01\xed\x7b\xcc\xda\x4e\x4a"
+                         "\xd4\x84\xa4\x53\xd5\x88\x73\x1b"
+                         "\xfd\xcb\xae\x0d\xf3\x04\xee\xe6",
+               .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  = "\x21\x52\x84\x15\xd1\xf7\x21\x55"
+                         "\xd9\x75\x4a\xd3\xc5\xdb\x9f\x7d"
+                         "\xda\x63\xb2\xf1\x82\xb0\x89\x59"
+                         "\x86\xd4\xaa\xaa\xdd\xff\x4f\x92",
+               .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  = "\x57\xb5\xf8\x71\x6e\x6d\xdd\x82"
+                         "\x53\xd0\xed\x2d\x30\xc1\x20\xef"
+                         "\x70\x67\x5e\xff\x09\x70\xbb\xc1"
+                         "\x3a\x7b\x48\x26\xd9\x0b\xf4\x48"
+                         "\xbe\xce\xb1\xc7\xb2\x67\xc4\xa7"
+                         "\x76\xf8\x36\x30\xb7\xb4\x9a\xd9"
+                         "\xf5\x9d\xd0\x7b\xc1\x06\x96\x44"
+                         "\x19\xc5\x58\x84\x63\xb9\x12\x68"
+                         "\x68\xc7\xaa\x18\x98\xf2\x1f\x5c"
+                         "\x39\xa6\xd8\x32\x2b\xc3\x51\xfd"
+                         "\x74\x79\x2e\xb4\x44\xd7\x69\xc4"
+                         "\xfc\x29\xe6\xed\x26\x1e\xa6\x9d"
+                         "\x1c\xbe\x00\x0e\x7f\x3a\xca\xfb"
+                         "\x6d\x13\x65\xa0\xf9\x31\x12\xe2"
+                         "\x26\xd1\xec\x2b\x0a\x8b\x59\x99"
+                         "\xa7\x49\xa0\x0e\x09\x33\x85\x50"
+                         "\xc3\x23\xca\x7a\xdd\x13\x45\x5f"
+                         "\xde\x4c\xa7\xcb\x00\x8a\x66\x6f"
+                         "\xa2\xb6\xb1\x2e\xe1\xa0\x18\xf6"
+                         "\xad\xf3\xbd\xeb\xc7\xef\x55\x4f"
+                         "\x79\x91\x8d\x36\x13\x7b\xd0\x4a"
+                         "\x6c\x39\xfb\x53\xb8\x6f\x02\x51"
+                         "\xa5\x20\xac\x24\x1c\x73\x59\x73"
+                         "\x58\x61\x3a\x87\x58\xb3\x20\x56"
+                         "\x39\x06\x2b\x4d\xd3\x20\x2b\x89"
+                         "\x3f\xa2\xf0\x96\xeb\x7f\xa4\xcd"
+                         "\x11\xae\xbd\xcb\x3a\xb4\xd9\x91"
+                         "\x09\x35\x71\x50\x65\xac\x92\xe3"
+                         "\x7b\x32\xc0\x7a\xdd\xd4\xc3\x92"
+                         "\x6f\xeb\x79\xde\x6f\xd3\x25\xc9"
+                         "\xcd\x63\xf5\x1e\x7a\x3b\x26\x9d"
+                         "\x77\x04\x80\xa9\xbf\x38\xb5\xbd"
+                         "\xb8\x05\x07\xbd\xfd\xab\x7b\xf8"
+                         "\x2a\x26\xcc\x49\x14\x6d\x55\x01"
+                         "\x06\x94\xd8\xb2\x2d\x53\x83\x1b"
+                         "\x8f\xd4\xdd\x57\x12\x7e\x18\xba"
+                         "\x8e\xe2\x4d\x80\xef\x7e\x6b\x9d"
+                         "\x24\xa9\x60\xa4\x97\x85\x86\x2a"
+                         "\x01\x00\x09\xf1\xcb\x4a\x24\x1c"
+                         "\xd8\xf6\xe6\x5b\xe7\x5d\xf2\xc4"
+                         "\x97\x1c\x10\xc6\x4d\x66\x4f\x98"
+                         "\x87\x30\xac\xd5\xea\x73\x49\x10"
+                         "\x80\xea\xe5\x5f\x4d\x5f\x03\x33"
+                         "\x66\x02\x35\x3d\x60\x06\x36\x4f"
+                         "\x14\x1c\xd8\x07\x1f\x78\xd0\xf8"
+                         "\x4f\x6c\x62\x7c\x15\xa5\x7c\x28"
+                         "\x7c\xcc\xeb\x1f\xd1\x07\x90\x93"
+                         "\x7e\xc2\xa8\x3a\x80\xc0\xf5\x30"
+                         "\xcc\x75\xcf\x16\x26\xa9\x26\x3b"
+                         "\xe7\x68\x2f\x15\x21\x5b\xe4\x00"
+                         "\xbd\x48\x50\xcd\x75\x70\xc4\x62"
+                         "\xbb\x41\xfb\x89\x4a\x88\x3b\x3b"
+                         "\x51\x66\x02\x69\x04\x97\x36\xd4"
+                         "\x75\xae\x0b\xa3\x42\xf8\xca\x79"
+                         "\x8f\x93\xe9\xcc\x38\xbd\xd6\xd2"
+                         "\xf9\x70\x4e\xc3\x6a\x8e\x25\xbd"
+                         "\xea\x15\x5a\xa0\x85\x7e\x81\x0d"
+                         "\x03\xe7\x05\x39\xf5\x05\x26\xee"
+                         "\xec\xaa\x1f\x3d\xc9\x98\x76\x01"
+                         "\x2c\xf4\xfc\xa3\x88\x77\x38\xc4"
+                         "\x50\x65\x50\x6d\x04\x1f\xdf\x5a"
+                         "\xaa\xf2\x01\xa9\xc1\x8d\xee\xca"
+                         "\x47\x26\xef\x39\xb8\xb4\xf2\xd1"
+                         "\xd6\xbb\x1b\x2a\xc1\x34\x14\xcf",
+               .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  = "\xc5\x85\x2a\x4b\x73\xe4\xf6\xf1"
+                         "\x7e\xf9\xf6\xe9\xa3\x73\x36\xcb"
+                         "\xaa\xb6\x22\xb0\x24\x6e\x3d\x73"
+                         "\x92\x99\xde\xd3\x76\xed\xcd\x63"
+                         "\x64\x3a\x22\x57\xc1\x43\x49\xd4"
+                         "\x79\x36\x31\x19\x62\xae\x10\x7e"
+                         "\x7d\xcf\x7a\xe2\x6b\xce\x27\xfa"
+                         "\xdc\x3d\xd9\x83\xd3\x42\x4c\xe0"
+                         "\x1b\xd6\x1d\x1a\x6f\xd2\x03\x00"
+                         "\xfc\x81\x99\x8a\x14\x62\xf5\x7e"
+                         "\x0d\xe7\x12\xe8\x17\x9d\x0b\xec"
+                         "\xe2\xf7\xc9\xa7\x63\xd1\x79\xb6"
+                         "\x62\x62\x37\xfe\x0a\x4c\x4a\x37"
+                         "\x70\xc7\x5e\x96\x5f\xbc\x8e\x9e"
+                         "\x85\x3c\x4f\x26\x64\x85\xbc\x68"
+                         "\xb0\xe0\x86\x5e\x26\x41\xce\x11"
+                         "\x50\xda\x97\x14\xe9\x9e\xc7\x6d"
+                         "\x3b\xdc\x43\xde\x2b\x27\x69\x7d"
+                         "\xfc\xb0\x28\xbd\x8f\xb1\xc6\x31"
+                         "\x14\x4d\xf0\x74\x37\xfd\x07\x25"
+                         "\x96\x55\xe5\xfc\x9e\x27\x2a\x74"
+                         "\x1b\x83\x4d\x15\x83\xac\x57\xa0"
+                         "\xac\xa5\xd0\x38\xef\x19\x56\x53"
+                         "\x25\x4b\xfc\xce\x04\x23\xe5\x6b"
+                         "\xf6\xc6\x6c\x32\x0b\xb3\x12\xc5"
+                         "\xed\x22\x34\x1c\x5d\xed\x17\x06"
+                         "\x36\xa3\xe6\x77\xb9\x97\x46\xb8"
+                         "\xe9\x3f\x7e\xc7\xbc\x13\x5c\xdc"
+                         "\x6e\x3f\x04\x5e\xd1\x59\xa5\x82"
+                         "\x35\x91\x3d\x1b\xe4\x97\x9f\x92"
+                         "\x1c\x5e\x5f\x6f\x41\xd4\x62\xa1"
+                         "\x8d\x39\xfc\x42\xfb\x38\x80\xb9"
+                         "\x0a\xe3\xcc\x6a\x93\xd9\x7a\xb1"
+                         "\xe9\x69\xaf\x0a\x6b\x75\x38\xa7"
+                         "\xa1\xbf\xf7\xda\x95\x93\x4b\x78"
+                         "\x19\xf5\x94\xf9\xd2\x00\x33\x37"
+                         "\xcf\xf5\x9e\x9c\xf3\xcc\xa6\xee"
+                         "\x42\xb2\x9e\x2c\x5f\x48\x23\x26"
+                         "\x15\x25\x17\x03\x3d\xfe\x2c\xfc"
+                         "\xeb\xba\xda\xe0\x00\x05\xb6\xa6"
+                         "\x07\xb3\xe8\x36\x5b\xec\x5b\xbf"
+                         "\xd6\x5b\x00\x74\xc6\x97\xf1\x6a"
+                         "\x49\xa1\xc3\xfa\x10\x52\xb9\x14"
+                         "\xad\xb7\x73\xf8\x78\x12\xc8\x59"
+                         "\x17\x80\x4c\x57\x39\xf1\x6d\x80"
+                         "\x25\x77\x0f\x5e\x7d\xf0\xaf\x21"
+                         "\xec\xce\xb7\xc8\x02\x8a\xed\x53"
+                         "\x2c\x25\x68\x2e\x1f\x85\x5e\x67"
+                         "\xd1\x07\x7a\x3a\x89\x08\xe0\x34"
+                         "\xdc\xdb\x26\xb4\x6b\x77\xfc\x40"
+                         "\x31\x15\x72\xa0\xf0\x73\xd9\x3b"
+                         "\xd5\xdb\xfe\xfc\x8f\xa9\x44\xa2"
+                         "\x09\x9f\xc6\x33\xe5\xe2\x88\xe8"
+                         "\xf3\xf0\x1a\xf4\xce\x12\x0f\xd6"
+                         "\xf7\x36\xe6\xa4\xf4\x7a\x10\x58"
+                         "\xcc\x1f\x48\x49\x65\x47\x75\xe9"
+                         "\x28\xe1\x65\x7b\xf2\xc4\xb5\x07"
+                         "\xf2\xec\x76\xd8\x8f\x09\xf3\x16"
+                         "\xa1\x51\x89\x3b\xeb\x96\x42\xac"
+                         "\x65\xe0\x67\x63\x29\xdc\xb4\x7d"
+                         "\xf2\x41\x51\x6a\xcb\xde\x3c\xfb"
+                         "\x66\x8d\x13\xca\xe0\x59\x2a\x00"
+                         "\xc9\x53\x4c\xe6\x9e\xe2\x73\xd5"
+                         "\x67\x19\xb2\xbd\x9a\x63\xd7\x5c",
+               .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,
+               .also_non_np = 1,
+               .np     = 3,
+               .tap    = { 512 - 20, 4, 16 },
+       }
+};
+
+static const struct cipher_testvec speck64_enc_tv_template[] = {
+       { /* Speck64/96 */
+               .key    = "\x00\x01\x02\x03\x08\x09\x0a\x0b"
+                         "\x10\x11\x12\x13",
+               .klen   = 12,
+               .input  = "\x65\x61\x6e\x73\x20\x46\x61\x74",
+               .ilen   = 8,
+               .result = "\x6c\x94\x75\x41\xec\x52\x79\x9f",
+               .rlen   = 8,
+       }, { /* Speck64/128 */
+               .key    = "\x00\x01\x02\x03\x08\x09\x0a\x0b"
+                         "\x10\x11\x12\x13\x18\x19\x1a\x1b",
+               .klen   = 16,
+               .input  = "\x2d\x43\x75\x74\x74\x65\x72\x3b",
+               .ilen   = 8,
+               .result = "\x8b\x02\x4e\x45\x48\xa5\x6f\x8c",
+               .rlen   = 8,
+       },
+};
+
+static const struct cipher_testvec speck64_dec_tv_template[] = {
+       { /* Speck64/96 */
+               .key    = "\x00\x01\x02\x03\x08\x09\x0a\x0b"
+                         "\x10\x11\x12\x13",
+               .klen   = 12,
+               .input  = "\x6c\x94\x75\x41\xec\x52\x79\x9f",
+               .ilen   = 8,
+               .result = "\x65\x61\x6e\x73\x20\x46\x61\x74",
+               .rlen   = 8,
+       }, { /* Speck64/128 */
+               .key    = "\x00\x01\x02\x03\x08\x09\x0a\x0b"
+                         "\x10\x11\x12\x13\x18\x19\x1a\x1b",
+               .klen   = 16,
+               .input  = "\x8b\x02\x4e\x45\x48\xa5\x6f\x8c",
+               .ilen   = 8,
+               .result = "\x2d\x43\x75\x74\x74\x65\x72\x3b",
+               .rlen   = 8,
+       },
+};
+
+/*
+ * Speck64-XTS test vectors, taken from the AES-XTS test vectors with the result
+ * recomputed with Speck64 as the cipher, and key lengths adjusted
+ */
+
+static const struct cipher_testvec speck64_xts_enc_tv_template[] = {
+       {
+               .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",
+               .klen   = 24,
+               .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 = "\x84\xaf\x54\x07\x19\xd4\x7c\xa6"
+                         "\xe4\xfe\xdf\xc4\x1f\x34\xc3\xc2"
+                         "\x80\xf5\x72\xe7\xcd\xf0\x99\x22"
+                         "\x35\xa7\x2f\x06\xef\xdc\x51\xaa",
+               .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",
+               .klen   = 24,
+               .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 = "\x12\x56\x73\xcd\x15\x87\xa8\x59"
+                         "\xcf\x84\xae\xd9\x1c\x66\xd6\x9f"
+                         "\xb3\x12\x69\x7e\x36\xeb\x52\xff"
+                         "\x62\xdd\xba\x90\xb3\xe1\xee\x99",
+               .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",
+               .klen   = 24,
+               .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 = "\x15\x1b\xe4\x2c\xa2\x5a\x2d\x2c"
+                         "\x27\x36\xc0\xbf\x5d\xea\x36\x37"
+                         "\x2d\x1a\x88\xbc\x66\xb5\xd0\x0b"
+                         "\xa1\xbc\x19\xb2\x0f\x3b\x75\x34",
+               .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",
+               .klen   = 24,
+               .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 = "\xaf\xa1\x81\xa6\x32\xbb\x15\x8e"
+                         "\xf8\x95\x2e\xd3\xe6\xee\x7e\x09"
+                         "\x0c\x1a\xf5\x02\x97\x8b\xe3\xb3"
+                         "\x11\xc7\x39\x96\xd0\x95\xf4\x56"
+                         "\xf4\xdd\x03\x38\x01\x44\x2c\xcf"
+                         "\x88\xae\x8e\x3c\xcd\xe7\xaa\x66"
+                         "\xfe\x3d\xc6\xfb\x01\x23\x51\x43"
+                         "\xd5\xd2\x13\x86\x94\x34\xe9\x62"
+                         "\xf9\x89\xe3\xd1\x7b\xbe\xf8\xef"
+                         "\x76\x35\x04\x3f\xdb\x23\x9d\x0b"
+                         "\x85\x42\xb9\x02\xd6\xcc\xdb\x96"
+                         "\xa7\x6b\x27\xb6\xd4\x45\x8f\x7d"
+                         "\xae\xd2\x04\xd5\xda\xc1\x7e\x24"
+                         "\x8c\x73\xbe\x48\x7e\xcf\x65\x28"
+                         "\x29\xe5\xbe\x54\x30\xcb\x46\x95"
+                         "\x4f\x2e\x8a\x36\xc8\x27\xc5\xbe"
+                         "\xd0\x1a\xaf\xab\x26\xcd\x9e\x69"
+                         "\xa1\x09\x95\x71\x26\xe9\xc4\xdf"
+                         "\xe6\x31\xc3\x46\xda\xaf\x0b\x41"
+                         "\x1f\xab\xb1\x8e\xd6\xfc\x0b\xb3"
+                         "\x82\xc0\x37\x27\xfc\x91\xa7\x05"
+                         "\xfb\xc5\xdc\x2b\x74\x96\x48\x43"
+                         "\x5d\x9c\x19\x0f\x60\x63\x3a\x1f"
+                         "\x6f\xf0\x03\xbe\x4d\xfd\xc8\x4a"
+                         "\xc6\xa4\x81\x6d\xc3\x12\x2a\x5c"
+                         "\x07\xff\xf3\x72\x74\x48\xb5\x40"
+                         "\x50\xb5\xdd\x90\x43\x31\x18\x15"
+                         "\x7b\xf2\xa6\xdb\x83\xc8\x4b\x4a"
+                         "\x29\x93\x90\x8b\xda\x07\xf0\x35"
+                         "\x6d\x90\x88\x09\x4e\x83\xf5\x5b"
+                         "\x94\x12\xbb\x33\x27\x1d\x3f\x23"
+                         "\x51\xa8\x7c\x07\xa2\xae\x77\xa6"
+                         "\x50\xfd\xcc\xc0\x4f\x80\x7a\x9f"
+                         "\x66\xdd\xcd\x75\x24\x8b\x33\xf7"
+                         "\x20\xdb\x83\x9b\x4f\x11\x63\x6e"
+                         "\xcf\x37\xef\xc9\x11\x01\x5c\x45"
+                         "\x32\x99\x7c\x3c\x9e\x42\x89\xe3"
+                         "\x70\x6d\x15\x9f\xb1\xe6\xb6\x05"
+                         "\xfe\x0c\xb9\x49\x2d\x90\x6d\xcc"
+                         "\x5d\x3f\xc1\xfe\x89\x0a\x2e\x2d"
+                         "\xa0\xa8\x89\x3b\x73\x39\xa5\x94"
+                         "\x4c\xa4\xa6\xbb\xa7\x14\x46\x89"
+                         "\x10\xff\xaf\xef\xca\xdd\x4f\x80"
+                         "\xb3\xdf\x3b\xab\xd4\xe5\x5a\xc7"
+                         "\x33\xca\x00\x8b\x8b\x3f\xea\xec"
+                         "\x68\x8a\xc2\x6d\xfd\xd4\x67\x0f"
+                         "\x22\x31\xe1\x0e\xfe\x5a\x04\xd5"
+                         "\x64\xa3\xf1\x1a\x76\x28\xcc\x35"
+                         "\x36\xa7\x0a\x74\xf7\x1c\x44\x9b"
+                         "\xc7\x1b\x53\x17\x02\xea\xd1\xad"
+                         "\x13\x51\x73\xc0\xa0\xb2\x05\x32"
+                         "\xa8\xa2\x37\x2e\xe1\x7a\x3a\x19"
+                         "\x26\xb4\x6c\x62\x5d\xb3\x1a\x1d"
+                         "\x59\xda\xee\x1a\x22\x18\xda\x0d"
+                         "\x88\x0f\x55\x8b\x72\x62\xfd\xc1"
+                         "\x69\x13\xcd\x0d\x5f\xc1\x09\x52"
+                         "\xee\xd6\xe3\x84\x4d\xee\xf6\x88"
+                         "\xaf\x83\xdc\x76\xf4\xc0\x93\x3f"
+                         "\x4a\x75\x2f\xb0\x0b\x3e\xc4\x54"
+                         "\x7d\x69\x8d\x00\x62\x77\x0d\x14"
+                         "\xbe\x7c\xa6\x7d\xc5\x24\x4f\xf3"
+                         "\x50\xf7\x5f\xf4\xc2\xca\x41\x97"
+                         "\x37\xbe\x75\x74\xcd\xf0\x75\x6e"
+                         "\x25\x23\x94\xbd\xda\x8d\xb0\xd4",
+               .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",
+               .klen   = 32,
+               .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 = "\x55\xed\x71\xd3\x02\x8e\x15\x3b"
+                         "\xc6\x71\x29\x2d\x3e\x89\x9f\x59"
+                         "\x68\x6a\xcc\x8a\x56\x97\xf3\x95"
+                         "\x4e\x51\x08\xda\x2a\xf8\x6f\x3c"
+                         "\x78\x16\xea\x80\xdb\x33\x75\x94"
+                         "\xf9\x29\xc4\x2b\x76\x75\x97\xc7"
+                         "\xf2\x98\x2c\xf9\xff\xc8\xd5\x2b"
+                         "\x18\xf1\xaf\xcf\x7c\xc5\x0b\xee"
+                         "\xad\x3c\x76\x7c\xe6\x27\xa2\x2a"
+                         "\xe4\x66\xe1\xab\xa2\x39\xfc\x7c"
+                         "\xf5\xec\x32\x74\xa3\xb8\x03\x88"
+                         "\x52\xfc\x2e\x56\x3f\xa1\xf0\x9f"
+                         "\x84\x5e\x46\xed\x20\x89\xb6\x44"
+                         "\x8d\xd0\xed\x54\x47\x16\xbe\x95"
+                         "\x8a\xb3\x6b\x72\xc4\x32\x52\x13"
+                         "\x1b\xb0\x82\xbe\xac\xf9\x70\xa6"
+                         "\x44\x18\xdd\x8c\x6e\xca\x6e\x45"
+                         "\x8f\x1e\x10\x07\x57\x25\x98\x7b"
+                         "\x17\x8c\x78\xdd\x80\xa7\xd9\xd8"
+                         "\x63\xaf\xb9\x67\x57\xfd\xbc\xdb"
+                         "\x44\xe9\xc5\x65\xd1\xc7\x3b\xff"
+                         "\x20\xa0\x80\x1a\xc3\x9a\xad\x5e"
+                         "\x5d\x3b\xd3\x07\xd9\xf5\xfd\x3d"
+                         "\x4a\x8b\xa8\xd2\x6e\x7a\x51\x65"
+                         "\x6c\x8e\x95\xe0\x45\xc9\x5f\x4a"
+                         "\x09\x3c\x3d\x71\x7f\x0c\x84\x2a"
+                         "\xc8\x48\x52\x1a\xc2\xd5\xd6\x78"
+                         "\x92\x1e\xa0\x90\x2e\xea\xf0\xf3"
+                         "\xdc\x0f\xb1\xaf\x0d\x9b\x06\x2e"
+                         "\x35\x10\x30\x82\x0d\xe7\xc5\x9b"
+                         "\xde\x44\x18\xbd\x9f\xd1\x45\xa9"
+                         "\x7b\x7a\x4a\xad\x35\x65\x27\xca"
+                         "\xb2\xc3\xd4\x9b\x71\x86\x70\xee"
+                         "\xf1\x89\x3b\x85\x4b\x5b\xaa\xaf"
+                         "\xfc\x42\xc8\x31\x59\xbe\x16\x60"
+                         "\x4f\xf9\xfa\x12\xea\xd0\xa7\x14"
+                         "\xf0\x7a\xf3\xd5\x8d\xbd\x81\xef"
+                         "\x52\x7f\x29\x51\x94\x20\x67\x3c"
+                         "\xd1\xaf\x77\x9f\x22\x5a\x4e\x63"
+                         "\xe7\xff\x73\x25\xd1\xdd\x96\x8a"
+                         "\x98\x52\x6d\xf3\xac\x3e\xf2\x18"
+                         "\x6d\xf6\x0a\x29\xa6\x34\x3d\xed"
+                         "\xe3\x27\x0d\x9d\x0a\x02\x44\x7e"
+                         "\x5a\x7e\x67\x0f\x0a\x9e\xd6\xad"
+                         "\x91\xe6\x4d\x81\x8c\x5c\x59\xaa"
+                         "\xfb\xeb\x56\x53\xd2\x7d\x4c\x81"
+                         "\x65\x53\x0f\x41\x11\xbd\x98\x99"
+                         "\xf9\xc6\xfa\x51\x2e\xa3\xdd\x8d"
+                         "\x84\x98\xf9\x34\xed\x33\x2a\x1f"
+                         "\x82\xed\xc1\x73\x98\xd3\x02\xdc"
+                         "\xe6\xc2\x33\x1d\xa2\xb4\xca\x76"
+                         "\x63\x51\x34\x9d\x96\x12\xae\xce"
+                         "\x83\xc9\x76\x5e\xa4\x1b\x53\x37"
+                         "\x17\xd5\xc0\x80\x1d\x62\xf8\x3d"
+                         "\x54\x27\x74\xbb\x10\x86\x57\x46"
+                         "\x68\xe1\xed\x14\xe7\x9d\xfc\x84"
+                         "\x47\xbc\xc2\xf8\x19\x4b\x99\xcf"
+                         "\x7a\xe9\xc4\xb8\x8c\x82\x72\x4d"
+                         "\x7b\x4f\x38\x55\x36\x71\x64\xc1"
+                         "\xfc\x5c\x75\x52\x33\x02\x18\xf8"
+                         "\x17\xe1\x2b\xc2\x43\x39\xbd\x76"
+                         "\x9b\x63\x76\x32\x2f\x19\x72\x10"
+                         "\x9f\x21\x0c\xf1\x66\x50\x7f\xa5"
+                         "\x0d\x1f\x46\xe0\xba\xd3\x2f\x3c",
+               .rlen   = 512,
+               .also_non_np = 1,
+               .np     = 3,
+               .tap    = { 512 - 20, 4, 16 },
+       }
+};
+
+static const struct cipher_testvec speck64_xts_dec_tv_template[] = {
+       {
+               .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",
+               .klen   = 24,
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .input  = "\x84\xaf\x54\x07\x19\xd4\x7c\xa6"
+                         "\xe4\xfe\xdf\xc4\x1f\x34\xc3\xc2"
+                         "\x80\xf5\x72\xe7\xcd\xf0\x99\x22"
+                         "\x35\xa7\x2f\x06\xef\xdc\x51\xaa",
+               .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",
+               .klen   = 24,
+               .iv     = "\x33\x33\x33\x33\x33\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .input  = "\x12\x56\x73\xcd\x15\x87\xa8\x59"
+                         "\xcf\x84\xae\xd9\x1c\x66\xd6\x9f"
+                         "\xb3\x12\x69\x7e\x36\xeb\x52\xff"
+                         "\x62\xdd\xba\x90\xb3\xe1\xee\x99",
+               .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",
+               .klen   = 24,
+               .iv     = "\x33\x33\x33\x33\x33\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .input  = "\x15\x1b\xe4\x2c\xa2\x5a\x2d\x2c"
+                         "\x27\x36\xc0\xbf\x5d\xea\x36\x37"
+                         "\x2d\x1a\x88\xbc\x66\xb5\xd0\x0b"
+                         "\xa1\xbc\x19\xb2\x0f\x3b\x75\x34",
+               .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",
+               .klen   = 24,
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .input  = "\xaf\xa1\x81\xa6\x32\xbb\x15\x8e"
+                         "\xf8\x95\x2e\xd3\xe6\xee\x7e\x09"
+                         "\x0c\x1a\xf5\x02\x97\x8b\xe3\xb3"
+                         "\x11\xc7\x39\x96\xd0\x95\xf4\x56"
+                         "\xf4\xdd\x03\x38\x01\x44\x2c\xcf"
+                         "\x88\xae\x8e\x3c\xcd\xe7\xaa\x66"
+                         "\xfe\x3d\xc6\xfb\x01\x23\x51\x43"
+                         "\xd5\xd2\x13\x86\x94\x34\xe9\x62"
+                         "\xf9\x89\xe3\xd1\x7b\xbe\xf8\xef"
+                         "\x76\x35\x04\x3f\xdb\x23\x9d\x0b"
+                         "\x85\x42\xb9\x02\xd6\xcc\xdb\x96"
+                         "\xa7\x6b\x27\xb6\xd4\x45\x8f\x7d"
+                         "\xae\xd2\x04\xd5\xda\xc1\x7e\x24"
+                         "\x8c\x73\xbe\x48\x7e\xcf\x65\x28"
+                         "\x29\xe5\xbe\x54\x30\xcb\x46\x95"
+                         "\x4f\x2e\x8a\x36\xc8\x27\xc5\xbe"
+                         "\xd0\x1a\xaf\xab\x26\xcd\x9e\x69"
+                         "\xa1\x09\x95\x71\x26\xe9\xc4\xdf"
+                         "\xe6\x31\xc3\x46\xda\xaf\x0b\x41"
+                         "\x1f\xab\xb1\x8e\xd6\xfc\x0b\xb3"
+                         "\x82\xc0\x37\x27\xfc\x91\xa7\x05"
+                         "\xfb\xc5\xdc\x2b\x74\x96\x48\x43"
+                         "\x5d\x9c\x19\x0f\x60\x63\x3a\x1f"
+                         "\x6f\xf0\x03\xbe\x4d\xfd\xc8\x4a"
+                         "\xc6\xa4\x81\x6d\xc3\x12\x2a\x5c"
+                         "\x07\xff\xf3\x72\x74\x48\xb5\x40"
+                         "\x50\xb5\xdd\x90\x43\x31\x18\x15"
+                         "\x7b\xf2\xa6\xdb\x83\xc8\x4b\x4a"
+                         "\x29\x93\x90\x8b\xda\x07\xf0\x35"
+                         "\x6d\x90\x88\x09\x4e\x83\xf5\x5b"
+                         "\x94\x12\xbb\x33\x27\x1d\x3f\x23"
+                         "\x51\xa8\x7c\x07\xa2\xae\x77\xa6"
+                         "\x50\xfd\xcc\xc0\x4f\x80\x7a\x9f"
+                         "\x66\xdd\xcd\x75\x24\x8b\x33\xf7"
+                         "\x20\xdb\x83\x9b\x4f\x11\x63\x6e"
+                         "\xcf\x37\xef\xc9\x11\x01\x5c\x45"
+                         "\x32\x99\x7c\x3c\x9e\x42\x89\xe3"
+                         "\x70\x6d\x15\x9f\xb1\xe6\xb6\x05"
+                         "\xfe\x0c\xb9\x49\x2d\x90\x6d\xcc"
+                         "\x5d\x3f\xc1\xfe\x89\x0a\x2e\x2d"
+                         "\xa0\xa8\x89\x3b\x73\x39\xa5\x94"
+                         "\x4c\xa4\xa6\xbb\xa7\x14\x46\x89"
+                         "\x10\xff\xaf\xef\xca\xdd\x4f\x80"
+                         "\xb3\xdf\x3b\xab\xd4\xe5\x5a\xc7"
+                         "\x33\xca\x00\x8b\x8b\x3f\xea\xec"
+                         "\x68\x8a\xc2\x6d\xfd\xd4\x67\x0f"
+                         "\x22\x31\xe1\x0e\xfe\x5a\x04\xd5"
+                         "\x64\xa3\xf1\x1a\x76\x28\xcc\x35"
+                         "\x36\xa7\x0a\x74\xf7\x1c\x44\x9b"
+                         "\xc7\x1b\x53\x17\x02\xea\xd1\xad"
+                         "\x13\x51\x73\xc0\xa0\xb2\x05\x32"
+                         "\xa8\xa2\x37\x2e\xe1\x7a\x3a\x19"
+                         "\x26\xb4\x6c\x62\x5d\xb3\x1a\x1d"
+                         "\x59\xda\xee\x1a\x22\x18\xda\x0d"
+                         "\x88\x0f\x55\x8b\x72\x62\xfd\xc1"
+                         "\x69\x13\xcd\x0d\x5f\xc1\x09\x52"
+                         "\xee\xd6\xe3\x84\x4d\xee\xf6\x88"
+                         "\xaf\x83\xdc\x76\xf4\xc0\x93\x3f"
+                         "\x4a\x75\x2f\xb0\x0b\x3e\xc4\x54"
+                         "\x7d\x69\x8d\x00\x62\x77\x0d\x14"
+                         "\xbe\x7c\xa6\x7d\xc5\x24\x4f\xf3"
+                         "\x50\xf7\x5f\xf4\xc2\xca\x41\x97"
+                         "\x37\xbe\x75\x74\xcd\xf0\x75\x6e"
+                         "\x25\x23\x94\xbd\xda\x8d\xb0\xd4",
+               .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",
+               .klen   = 32,
+               .iv     = "\xff\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .input  = "\x55\xed\x71\xd3\x02\x8e\x15\x3b"
+                         "\xc6\x71\x29\x2d\x3e\x89\x9f\x59"
+                         "\x68\x6a\xcc\x8a\x56\x97\xf3\x95"
+                         "\x4e\x51\x08\xda\x2a\xf8\x6f\x3c"
+                         "\x78\x16\xea\x80\xdb\x33\x75\x94"
+                         "\xf9\x29\xc4\x2b\x76\x75\x97\xc7"
+                         "\xf2\x98\x2c\xf9\xff\xc8\xd5\x2b"
+                         "\x18\xf1\xaf\xcf\x7c\xc5\x0b\xee"
+                         "\xad\x3c\x76\x7c\xe6\x27\xa2\x2a"
+                         "\xe4\x66\xe1\xab\xa2\x39\xfc\x7c"
+                         "\xf5\xec\x32\x74\xa3\xb8\x03\x88"
+                         "\x52\xfc\x2e\x56\x3f\xa1\xf0\x9f"
+                         "\x84\x5e\x46\xed\x20\x89\xb6\x44"
+                         "\x8d\xd0\xed\x54\x47\x16\xbe\x95"
+                         "\x8a\xb3\x6b\x72\xc4\x32\x52\x13"
+                         "\x1b\xb0\x82\xbe\xac\xf9\x70\xa6"
+                         "\x44\x18\xdd\x8c\x6e\xca\x6e\x45"
+                         "\x8f\x1e\x10\x07\x57\x25\x98\x7b"
+                         "\x17\x8c\x78\xdd\x80\xa7\xd9\xd8"
+                         "\x63\xaf\xb9\x67\x57\xfd\xbc\xdb"
+                         "\x44\xe9\xc5\x65\xd1\xc7\x3b\xff"
+                         "\x20\xa0\x80\x1a\xc3\x9a\xad\x5e"
+                         "\x5d\x3b\xd3\x07\xd9\xf5\xfd\x3d"
+                         "\x4a\x8b\xa8\xd2\x6e\x7a\x51\x65"
+                         "\x6c\x8e\x95\xe0\x45\xc9\x5f\x4a"
+                         "\x09\x3c\x3d\x71\x7f\x0c\x84\x2a"
+                         "\xc8\x48\x52\x1a\xc2\xd5\xd6\x78"
+                         "\x92\x1e\xa0\x90\x2e\xea\xf0\xf3"
+                         "\xdc\x0f\xb1\xaf\x0d\x9b\x06\x2e"
+                         "\x35\x10\x30\x82\x0d\xe7\xc5\x9b"
+                         "\xde\x44\x18\xbd\x9f\xd1\x45\xa9"
+                         "\x7b\x7a\x4a\xad\x35\x65\x27\xca"
+                         "\xb2\xc3\xd4\x9b\x71\x86\x70\xee"
+                         "\xf1\x89\x3b\x85\x4b\x5b\xaa\xaf"
+                         "\xfc\x42\xc8\x31\x59\xbe\x16\x60"
+                         "\x4f\xf9\xfa\x12\xea\xd0\xa7\x14"
+                         "\xf0\x7a\xf3\xd5\x8d\xbd\x81\xef"
+                         "\x52\x7f\x29\x51\x94\x20\x67\x3c"
+                         "\xd1\xaf\x77\x9f\x22\x5a\x4e\x63"
+                         "\xe7\xff\x73\x25\xd1\xdd\x96\x8a"
+                         "\x98\x52\x6d\xf3\xac\x3e\xf2\x18"
+                         "\x6d\xf6\x0a\x29\xa6\x34\x3d\xed"
+                         "\xe3\x27\x0d\x9d\x0a\x02\x44\x7e"
+                         "\x5a\x7e\x67\x0f\x0a\x9e\xd6\xad"
+                         "\x91\xe6\x4d\x81\x8c\x5c\x59\xaa"
+                         "\xfb\xeb\x56\x53\xd2\x7d\x4c\x81"
+                         "\x65\x53\x0f\x41\x11\xbd\x98\x99"
+                         "\xf9\xc6\xfa\x51\x2e\xa3\xdd\x8d"
+                         "\x84\x98\xf9\x34\xed\x33\x2a\x1f"
+                         "\x82\xed\xc1\x73\x98\xd3\x02\xdc"
+                         "\xe6\xc2\x33\x1d\xa2\xb4\xca\x76"
+                         "\x63\x51\x34\x9d\x96\x12\xae\xce"
+                         "\x83\xc9\x76\x5e\xa4\x1b\x53\x37"
+                         "\x17\xd5\xc0\x80\x1d\x62\xf8\x3d"
+                         "\x54\x27\x74\xbb\x10\x86\x57\x46"
+                         "\x68\xe1\xed\x14\xe7\x9d\xfc\x84"
+                         "\x47\xbc\xc2\xf8\x19\x4b\x99\xcf"
+                         "\x7a\xe9\xc4\xb8\x8c\x82\x72\x4d"
+                         "\x7b\x4f\x38\x55\x36\x71\x64\xc1"
+                         "\xfc\x5c\x75\x52\x33\x02\x18\xf8"
+                         "\x17\xe1\x2b\xc2\x43\x39\xbd\x76"
+                         "\x9b\x63\x76\x32\x2f\x19\x72\x10"
+                         "\x9f\x21\x0c\xf1\x66\x50\x7f\xa5"
+                         "\x0d\x1f\x46\xe0\xba\xd3\x2f\x3c",
+               .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,
+               .also_non_np = 1,
+               .np     = 3,
+               .tap    = { 512 - 20, 4, 16 },
+       }
+};
+
 /* Cast6 test vectors from RFC 2612 */
 static const struct cipher_testvec cast6_enc_tv_template[] = {
        {