infiniband: pass rdma_cm module to netlink_dump_start
[pandora-kernel.git] / crypto / testmgr.h
index f8179e0..76d7f6c 100644 (file)
@@ -53,6 +53,7 @@ struct cipher_testvec {
        char *result;
        unsigned short tap[MAX_TAP];
        int np;
+       unsigned char also_non_np;
        unsigned char fail;
        unsigned char wk; /* weak key flag */
        unsigned char klen;
@@ -2468,6 +2469,9 @@ static struct cipher_testvec bf_enc_tv_template[] = {
                          "\xC2\xF4\x6D\xFF\xF6\xCD\x6B\x40"
                          "\xE1\xB3\xBF\xD4\x38\x2B\xC8\x3B",
                .rlen   = 40,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 40 - 8, 8 },
        },
 };
 
@@ -2541,6 +2545,9 @@ static struct cipher_testvec bf_dec_tv_template[] = {
                          "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
                          "\x1E\x92\x29\xC0\x34\xCB\x62\xF9",
                .rlen   = 40,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 40 - 8, 8 },
        },
 };
 
@@ -2579,6 +2586,9 @@ static struct cipher_testvec bf_cbc_enc_tv_template[] = {
                          "\x1B\xD9\x02\xB6\x48\xB0\x87\x25"
                          "\x01\x9C\x93\x63\x51\x60\x82\xD2",
                .rlen   = 40,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 40 - 8, 8 },
        },
 };
 
@@ -2617,6 +2627,9 @@ static struct cipher_testvec bf_cbc_dec_tv_template[] = {
                          "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
                          "\x1E\x92\x29\xC0\x34\xCB\x62\xF9",
                .rlen   = 40,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 40 - 8, 8 },
        },
 };
 
@@ -2661,6 +2674,144 @@ static struct cipher_testvec bf_ctr_enc_tv_template[] = {
                          "\xE4\x1F\x5E\xA5\x89\xAC\x32\xBC"
                          "\x3D\xA7\xE9",
                .rlen   = 43,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 43 - 8, 8 },
+       }, { /* 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     = "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFD",
+               .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\x81\x18\xAF\x23\xBA"
+                         "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
+                         "\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
+                         "\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
+                         "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
+                         "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
+                         "\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
+                         "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
+                         "\x29\xC0\x57\xEE\x62\xF9\x90\x04"
+                         "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
+                         "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
+                         "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
+                         "\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
+                         "\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
+                         "\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
+                         "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
+                         "\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
+                         "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
+                         "\x57\xEE\x85\x1C\x90\x27\xBE\x32"
+                         "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
+                         "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
+                         "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
+                         "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
+                         "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
+                         "\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
+                         "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
+                         "\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
+                         "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
+                         "\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
+                         "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
+                         "\x69\x00\x74\x0B\xA2\x16\xAD\x44"
+                         "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
+                         "\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
+                         "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
+                         "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
+                         "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
+                         "\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
+                         "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
+                         "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
+                         "\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
+                         "\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
+                         "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
+                         "\x58\xEF\x86\x1D\x91\x28\xBF\x33"
+                         "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
+                         "\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
+                         "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
+                         "\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
+                         "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
+                         "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
+                         "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
+                         "\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
+                         "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
+                         "\x86\x1D\xB4\x28\xBF\x56\xED\x61"
+                         "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
+                         "\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
+                         "\xDC\x50\xE7\x7E\x15\x89\x20\xB7"
+                         "\x2B\xC2\x59\xF0\x64\xFB\x92\x06",
+               .ilen   = 504,
+               .result = "\x5F\x58\x6E\x60\x51\x6E\xDC\x3D"
+                         "\xD1\xBB\xF7\xB7\xFD\x04\x44\x82"
+                         "\xDC\x9F\x4B\x02\xF1\xD2\x5A\x6F"
+                         "\x25\xF9\x27\x21\xF2\xD2\x9A\x01"
+                         "\xBD\xAD\x3D\x93\x87\xCA\x0D\xFE"
+                         "\xB7\x2C\x17\x1F\x42\x8C\x13\xB2"
+                         "\x62\x44\x72\xB9\x5D\xC0\xF8\x37"
+                         "\xDF\xEA\x78\x81\x8F\xA6\x34\xB2"
+                         "\x07\x09\x7C\xB9\x3A\xA0\x2B\x18"
+                         "\x34\x6A\x9D\x3D\xA5\xEB\xF4\x60"
+                         "\xF8\x98\xA2\x39\x81\x23\x6C\xA9"
+                         "\x70\xCA\xCC\x45\xD8\x1F\xDF\x44"
+                         "\x2A\x67\x7A\x88\x28\xDC\x36\x83"
+                         "\x18\xD7\x48\x43\x17\x2B\x1B\xE6"
+                         "\x0B\x82\x59\x14\x26\x67\x08\x09"
+                         "\x5B\x5D\x38\xD0\x81\xCE\x54\x2A"
+                         "\xCD\x22\x94\x42\xF5\xBA\x74\x7E"
+                         "\xD9\x00\x40\xA9\x0D\x0B\xBD\x8E"
+                         "\xC4\x8E\x5E\x17\x8F\x48\xE2\xB8"
+                         "\xF4\xCC\x19\x76\xAB\x48\x29\xAA"
+                         "\x81\xD5\xCE\xD5\x8A\x3B\xC9\x21"
+                         "\xEF\x50\x4F\x04\x02\xBF\xE1\x1F"
+                         "\x59\x28\x1A\xE4\x18\x16\xA0\x29"
+                         "\xBF\x34\xA9\x2D\x28\x83\xC0\x5E"
+                         "\xEA\x44\xC4\x6E\xAB\x24\x79\x9D"
+                         "\x2D\xA1\xE8\x55\xCA\x74\xFC\xBD"
+                         "\xFE\xDD\xDA\xA5\xFB\x34\x90\x31"
+                         "\x0E\x62\x28\x9B\xDC\xD7\xA1\xBB"
+                         "\xF0\x1A\xB3\xE2\xD0\xFA\xBD\xE8"
+                         "\x5C\x5A\x10\x67\xF6\x6A\x17\x3F"
+                         "\xC5\xE9\x09\x08\xDD\x22\x77\x42"
+                         "\x26\x6A\x6A\x7A\x3F\x87\x80\x0C"
+                         "\xF0\xFF\x15\x8E\x84\x86\xC0\x10"
+                         "\x0F\x8D\x33\x06\xB8\x72\xA4\x47"
+                         "\x6B\xED\x2E\x05\x94\x6C\x5C\x5B"
+                         "\x13\xF6\x77\xEE\x3B\x16\xDF\xC2"
+                         "\x63\x66\x07\x6D\x3F\x6C\x51\x7C"
+                         "\x1C\xAC\x80\xB6\x58\x48\xB7\x9D"
+                         "\xB4\x19\xD8\x19\x45\x66\x27\x02"
+                         "\xA1\xA9\x99\xF3\x1F\xE5\xA7\x1D"
+                         "\x31\xE7\x1B\x0D\xFF\xBB\xB5\xA1"
+                         "\xF5\x9C\x45\x1E\x18\x19\xA1\xE7"
+                         "\xC2\xF1\xBF\x68\xC3\xEC\xCF\x53"
+                         "\x67\xA6\x2B\x7D\x3C\x6D\x24\xC3"
+                         "\xE8\xE6\x07\x5A\x09\xE0\x32\xA8"
+                         "\x52\xF6\xE9\xED\x0E\xC6\x0A\x6A"
+                         "\xFC\x60\x2A\xE0\x93\xCE\xB8\x2E"
+                         "\xA2\xA8\x0E\x79\x9E\x34\x5D\x37"
+                         "\x6F\x12\xFE\x48\x7B\xE7\xB9\x22"
+                         "\x29\xE8\xD7\xBE\x5D\xD1\x8B\xD9"
+                         "\x91\x51\x4E\x71\xF2\x98\x85\x16"
+                         "\x25\x7A\x76\x8A\x51\x0E\x65\x14"
+                         "\x81\xB5\x3A\x37\xFD\xEC\xB5\x8A"
+                         "\xE1\xCF\x41\x72\x14\x29\x4C\xF0"
+                         "\x20\xD9\x9A\xC5\x66\xA4\x03\x76"
+                         "\x5B\xA4\x15\x4F\x0E\x64\x39\x40"
+                         "\x25\xF9\x20\x22\xF5\x88\xF5\xBA"
+                         "\xE4\xDF\x45\x61\xBF\x8D\x7A\x24"
+                         "\x4B\x92\x71\xD9\x2F\x77\xA7\x95"
+                         "\xA8\x7F\x61\xD5\xA4\x57\xB0\xFB"
+                         "\xB5\x77\xBA\x1C\xEE\x71\xFA\xB0"
+                         "\x16\x4C\x18\x6B\xF2\x69\xA0\x07"
+                         "\xEF\xBE\xEC\x69\xAC\xA8\x63\x9E",
+               .rlen   = 504,
        },
 };
 
@@ -2705,6 +2856,144 @@ static struct cipher_testvec bf_ctr_dec_tv_template[] = {
                          "\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
                          "\x6D\x04\x9B",
                .rlen   = 43,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 43 - 8, 8 },
+       }, { /* 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     = "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFD",
+               .input  = "\x5F\x58\x6E\x60\x51\x6E\xDC\x3D"
+                         "\xD1\xBB\xF7\xB7\xFD\x04\x44\x82"
+                         "\xDC\x9F\x4B\x02\xF1\xD2\x5A\x6F"
+                         "\x25\xF9\x27\x21\xF2\xD2\x9A\x01"
+                         "\xBD\xAD\x3D\x93\x87\xCA\x0D\xFE"
+                         "\xB7\x2C\x17\x1F\x42\x8C\x13\xB2"
+                         "\x62\x44\x72\xB9\x5D\xC0\xF8\x37"
+                         "\xDF\xEA\x78\x81\x8F\xA6\x34\xB2"
+                         "\x07\x09\x7C\xB9\x3A\xA0\x2B\x18"
+                         "\x34\x6A\x9D\x3D\xA5\xEB\xF4\x60"
+                         "\xF8\x98\xA2\x39\x81\x23\x6C\xA9"
+                         "\x70\xCA\xCC\x45\xD8\x1F\xDF\x44"
+                         "\x2A\x67\x7A\x88\x28\xDC\x36\x83"
+                         "\x18\xD7\x48\x43\x17\x2B\x1B\xE6"
+                         "\x0B\x82\x59\x14\x26\x67\x08\x09"
+                         "\x5B\x5D\x38\xD0\x81\xCE\x54\x2A"
+                         "\xCD\x22\x94\x42\xF5\xBA\x74\x7E"
+                         "\xD9\x00\x40\xA9\x0D\x0B\xBD\x8E"
+                         "\xC4\x8E\x5E\x17\x8F\x48\xE2\xB8"
+                         "\xF4\xCC\x19\x76\xAB\x48\x29\xAA"
+                         "\x81\xD5\xCE\xD5\x8A\x3B\xC9\x21"
+                         "\xEF\x50\x4F\x04\x02\xBF\xE1\x1F"
+                         "\x59\x28\x1A\xE4\x18\x16\xA0\x29"
+                         "\xBF\x34\xA9\x2D\x28\x83\xC0\x5E"
+                         "\xEA\x44\xC4\x6E\xAB\x24\x79\x9D"
+                         "\x2D\xA1\xE8\x55\xCA\x74\xFC\xBD"
+                         "\xFE\xDD\xDA\xA5\xFB\x34\x90\x31"
+                         "\x0E\x62\x28\x9B\xDC\xD7\xA1\xBB"
+                         "\xF0\x1A\xB3\xE2\xD0\xFA\xBD\xE8"
+                         "\x5C\x5A\x10\x67\xF6\x6A\x17\x3F"
+                         "\xC5\xE9\x09\x08\xDD\x22\x77\x42"
+                         "\x26\x6A\x6A\x7A\x3F\x87\x80\x0C"
+                         "\xF0\xFF\x15\x8E\x84\x86\xC0\x10"
+                         "\x0F\x8D\x33\x06\xB8\x72\xA4\x47"
+                         "\x6B\xED\x2E\x05\x94\x6C\x5C\x5B"
+                         "\x13\xF6\x77\xEE\x3B\x16\xDF\xC2"
+                         "\x63\x66\x07\x6D\x3F\x6C\x51\x7C"
+                         "\x1C\xAC\x80\xB6\x58\x48\xB7\x9D"
+                         "\xB4\x19\xD8\x19\x45\x66\x27\x02"
+                         "\xA1\xA9\x99\xF3\x1F\xE5\xA7\x1D"
+                         "\x31\xE7\x1B\x0D\xFF\xBB\xB5\xA1"
+                         "\xF5\x9C\x45\x1E\x18\x19\xA1\xE7"
+                         "\xC2\xF1\xBF\x68\xC3\xEC\xCF\x53"
+                         "\x67\xA6\x2B\x7D\x3C\x6D\x24\xC3"
+                         "\xE8\xE6\x07\x5A\x09\xE0\x32\xA8"
+                         "\x52\xF6\xE9\xED\x0E\xC6\x0A\x6A"
+                         "\xFC\x60\x2A\xE0\x93\xCE\xB8\x2E"
+                         "\xA2\xA8\x0E\x79\x9E\x34\x5D\x37"
+                         "\x6F\x12\xFE\x48\x7B\xE7\xB9\x22"
+                         "\x29\xE8\xD7\xBE\x5D\xD1\x8B\xD9"
+                         "\x91\x51\x4E\x71\xF2\x98\x85\x16"
+                         "\x25\x7A\x76\x8A\x51\x0E\x65\x14"
+                         "\x81\xB5\x3A\x37\xFD\xEC\xB5\x8A"
+                         "\xE1\xCF\x41\x72\x14\x29\x4C\xF0"
+                         "\x20\xD9\x9A\xC5\x66\xA4\x03\x76"
+                         "\x5B\xA4\x15\x4F\x0E\x64\x39\x40"
+                         "\x25\xF9\x20\x22\xF5\x88\xF5\xBA"
+                         "\xE4\xDF\x45\x61\xBF\x8D\x7A\x24"
+                         "\x4B\x92\x71\xD9\x2F\x77\xA7\x95"
+                         "\xA8\x7F\x61\xD5\xA4\x57\xB0\xFB"
+                         "\xB5\x77\xBA\x1C\xEE\x71\xFA\xB0"
+                         "\x16\x4C\x18\x6B\xF2\x69\xA0\x07"
+                         "\xEF\xBE\xEC\x69\xAC\xA8\x63\x9E",
+               .ilen   = 504,
+               .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\x81\x18\xAF\x23\xBA"
+                         "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
+                         "\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
+                         "\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
+                         "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
+                         "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
+                         "\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
+                         "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
+                         "\x29\xC0\x57\xEE\x62\xF9\x90\x04"
+                         "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
+                         "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
+                         "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
+                         "\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
+                         "\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
+                         "\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
+                         "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
+                         "\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
+                         "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
+                         "\x57\xEE\x85\x1C\x90\x27\xBE\x32"
+                         "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
+                         "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
+                         "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
+                         "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
+                         "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
+                         "\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
+                         "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
+                         "\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
+                         "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
+                         "\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
+                         "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
+                         "\x69\x00\x74\x0B\xA2\x16\xAD\x44"
+                         "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
+                         "\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
+                         "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
+                         "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
+                         "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
+                         "\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
+                         "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
+                         "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
+                         "\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
+                         "\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
+                         "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
+                         "\x58\xEF\x86\x1D\x91\x28\xBF\x33"
+                         "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
+                         "\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
+                         "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
+                         "\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
+                         "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
+                         "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
+                         "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
+                         "\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
+                         "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
+                         "\x86\x1D\xB4\x28\xBF\x56\xED\x61"
+                         "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
+                         "\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
+                         "\xDC\x50\xE7\x7E\x15\x89\x20\xB7"
+                         "\x2B\xC2\x59\xF0\x64\xFB\x92\x06",
+               .rlen   = 504,
        },
 };
 
@@ -2884,6 +3173,9 @@ static struct cipher_testvec tf_enc_tv_template[] = {
                          "\x58\x33\x9B\x78\xC7\x58\x48\x6B"
                          "\x2C\x75\x64\xC4\xCA\xC1\x7E\xD5",
                .rlen   = 496,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 496 - 16, 16 },
        },
 };
 
@@ -3049,6 +3341,9 @@ static struct cipher_testvec tf_dec_tv_template[] = {
                          "\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
                          "\xDC\x50\xE7\x7E\x15\x89\x20\xB7",
                .rlen   = 496,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 496 - 16, 16 },
        },
 };
 
@@ -3229,6 +3524,9 @@ static struct cipher_testvec tf_cbc_enc_tv_template[] = {
                          "\x30\x70\x56\xA4\x37\xDD\x7C\xC0"
                          "\x0A\xA3\x30\x10\x26\x25\x41\x2C",
                .rlen   = 496,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 496 - 16, 16 },
        },
 };
 
@@ -3409,6 +3707,9 @@ static struct cipher_testvec tf_cbc_dec_tv_template[] = {
                          "\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
                          "\xDC\x50\xE7\x7E\x15\x89\x20\xB7",
                .rlen   = 496,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 496 - 16, 16 },
        },
 };
 
@@ -3547,6 +3848,140 @@ static struct cipher_testvec tf_ctr_enc_tv_template[] = {
                          "\xB9\x32\xE2\xC1\x82\xAC\xFE\xCC"
                          "\xC5\xC9\x7F\x9E\xCF\x33\x7A\xDF",
                .rlen   = 496,
+       }, { /* 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     = "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
+                         "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFD",
+               .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\x81\x18\xAF\x23\xBA"
+                         "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
+                         "\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
+                         "\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
+                         "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
+                         "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
+                         "\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
+                         "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
+                         "\x29\xC0\x57\xEE\x62\xF9\x90\x04"
+                         "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
+                         "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
+                         "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
+                         "\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
+                         "\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
+                         "\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
+                         "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
+                         "\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
+                         "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
+                         "\x57\xEE\x85\x1C\x90\x27\xBE\x32"
+                         "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
+                         "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
+                         "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
+                         "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
+                         "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
+                         "\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
+                         "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
+                         "\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
+                         "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
+                         "\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
+                         "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
+                         "\x69\x00\x74\x0B\xA2\x16\xAD\x44"
+                         "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
+                         "\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
+                         "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
+                         "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
+                         "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
+                         "\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
+                         "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
+                         "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
+                         "\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
+                         "\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
+                         "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
+                         "\x58\xEF\x86\x1D\x91\x28\xBF\x33"
+                         "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
+                         "\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
+                         "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
+                         "\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
+                         "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
+                         "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
+                         "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
+                         "\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
+                         "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
+                         "\x86\x1D\xB4\x28\xBF\x56\xED\x61"
+                         "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
+                         "\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
+                         "\xDC\x50\xE7\x7E\x15\x89\x20\xB7",
+               .ilen   = 496,
+               .result = "\xEB\x44\xAF\x49\x27\xB8\xFB\x44"
+                         "\x4C\xA6\xC3\x0C\x8B\xD0\x01\x0C"
+                         "\x53\xC8\x16\x38\xDE\x40\x4F\x91"
+                         "\x25\x6D\x4C\xA0\x9A\x87\x1E\xDA"
+                         "\x88\x7E\x89\xE9\x67\x2B\x83\xA2"
+                         "\x5F\x2E\x23\x3E\x45\xB9\x77\x7B"
+                         "\xA6\x7E\x47\x36\x81\x9F\x9B\xF3"
+                         "\xE0\xF0\xD7\x47\xA9\xC8\xEF\x33"
+                         "\x0C\x43\xFE\x67\x50\x0A\x2C\x3E"
+                         "\xA0\xE1\x25\x8E\x80\x07\x4A\xC0"
+                         "\x64\x89\x9F\x6A\x27\x96\x07\xA6"
+                         "\x9B\xC8\x1B\x21\x60\xAE\x5D\x01"
+                         "\xE2\xCD\xC8\xAA\x6C\x9D\x1C\x34"
+                         "\x39\x18\x09\xA4\x82\x59\x78\xE7"
+                         "\xFC\x59\x65\xF2\x94\xFF\xFB\xE2"
+                         "\x3C\xDA\xB1\x90\x95\xBF\x91\xE3"
+                         "\xE6\x87\x31\x9E\x16\x85\xAD\xB1"
+                         "\x4C\xAE\x43\x4D\x19\x58\xB5\x5E"
+                         "\x2E\xF5\x09\xAA\x39\xF4\xC0\xB3"
+                         "\xD4\x4D\xDB\x73\x7A\xD4\xF1\xBF"
+                         "\x89\x16\x4D\x2D\xA2\x26\x33\x72"
+                         "\x18\x33\x7E\xD6\xD2\x16\xA4\x54"
+                         "\xF4\x8C\xB3\x52\xDF\x21\x9C\xEB"
+                         "\xBF\x49\xD3\xF9\x05\x06\xCB\xD2"
+                         "\xA9\xD2\x3B\x6E\x19\x8C\xBC\x19"
+                         "\xAB\x89\xD6\xD8\xCD\x56\x89\x5E"
+                         "\xAC\x00\xE3\x50\x63\x4A\x80\x9A"
+                         "\x05\xBC\x50\x39\xD3\x32\xD9\x0D"
+                         "\xE3\x20\x0D\x75\x54\xEC\xE6\x31"
+                         "\x14\xB9\x3A\x59\x00\x43\x37\x8E"
+                         "\x8C\x5A\x79\x62\x14\x76\x8A\xAE"
+                         "\x8F\xCC\xA1\x6C\x38\x78\xDD\x2D"
+                         "\x8B\x6D\xEA\xBD\x7B\x25\xFF\x60"
+                         "\xC9\x87\xB1\x79\x1E\xA5\x86\x68"
+                         "\x81\xB4\xE2\xC1\x05\x7D\x3A\x73"
+                         "\xD0\xDA\x75\x77\x9E\x05\x27\xF1"
+                         "\x08\xA9\x66\x64\x6C\xBC\x82\x17"
+                         "\x2C\x23\x5F\x62\x4D\x02\x1A\x58"
+                         "\xE7\xB7\x23\x6D\xE2\x20\xDA\xEF"
+                         "\xB4\xB3\x3F\xB2\x2B\x69\x98\x83"
+                         "\x95\x87\x13\x57\x60\xD7\xB5\xB1"
+                         "\xEE\x0A\x2F\x95\x36\x4C\x76\x5D"
+                         "\x5F\xD9\x19\xED\xB9\xA5\x48\xBF"
+                         "\xC8\xAB\x0F\x71\xCC\x61\x8E\x0A"
+                         "\xD0\x29\x44\xA8\xB9\xC1\xE8\xC8"
+                         "\xC9\xA8\x28\x81\xFB\x50\xF2\xF0"
+                         "\x26\xAE\x39\xB8\x91\xCD\xA8\xAC"
+                         "\xDE\x55\x1B\x50\x14\x53\x44\x17"
+                         "\x54\x46\xFC\xB1\xE4\x07\x6B\x9A"
+                         "\x01\x14\xF0\x2E\x2E\xDB\x46\x1B"
+                         "\x1A\x09\x97\xA9\xB6\x97\x79\x06"
+                         "\xFB\xCB\x85\xCF\xDD\xA1\x41\xB1"
+                         "\x00\xAA\xF7\xE0\x89\x73\xFB\xE5"
+                         "\xBF\x84\xDB\xC9\xCD\xC4\xA2\x0D"
+                         "\x3B\xAC\xF9\xDF\x96\xBF\x88\x23"
+                         "\x41\x67\xA1\x24\x99\x7E\xCC\x9B"
+                         "\x02\x8F\x6A\x49\xF6\x25\xBA\x7A"
+                         "\xF4\x78\xFD\x79\x62\x63\x4F\x14"
+                         "\xD6\x11\x11\x04\x05\x5F\x7E\xEA"
+                         "\x4C\xB6\xF8\xF4\x5F\x48\x52\x54"
+                         "\x94\x63\xA8\x4E\xCF\xD2\x1B\x1B"
+                         "\x22\x18\x6A\xAF\x6E\x3E\xE1\x0D",
+               .rlen   = 496,
        }, { /* Generated with Crypto++ */
                .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
                          "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
@@ -3683,6 +4118,9 @@ static struct cipher_testvec tf_ctr_enc_tv_template[] = {
                          "\xC5\xC9\x7F\x9E\xCF\x33\x7A\xDF"
                          "\x6C\x82\x9D",
                .rlen   = 499,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 499 - 16, 16 },
        },
 };
 
@@ -3827,45 +4265,179 @@ static struct cipher_testvec tf_ctr_dec_tv_template[] = {
                          "\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  = "\xDF\xDD\x69\xFA\xB0\x2E\xFD\xFE"
-                         "\x70\x9E\xC5\x4B\xC9\xD4\xA1\x30"
-                         "\x26\x9B\x89\xA1\xEE\x43\xE0\x52"
-                         "\x55\x17\x4E\xC7\x0E\x33\x1F\xF1"
-                         "\x9F\x8D\x40\x9F\x24\xFD\x92\xA0"
-                         "\xBC\x8F\x35\xDD\x67\x38\xD8\xAA"
-                         "\xCF\xF8\x48\xCA\xFB\xE4\x5C\x60"
-                         "\x01\x41\x21\x12\x38\xAB\x52\x4F"
-                         "\xA8\x57\x20\xE0\x21\x6A\x17\x0D"
-                         "\x0E\xF9\x8E\x49\x42\x00\x3C\x94"
-                         "\x14\xC0\xD0\x8D\x8A\x98\xEB\x29"
-                         "\xEC\xAE\x96\x44\xC0\x3C\x48\xDC"
-                         "\x29\x35\x25\x2F\xE7\x11\x6C\x68"
-                         "\xC8\x67\x0A\x2F\xF4\x07\xBE\xF9"
-                         "\x2C\x31\x87\x40\xAB\xB2\xB6\xFA"
-                         "\xD2\xC9\x6D\x5C\x50\xE9\xE6\x7E"
-                         "\xE3\x0A\xD2\xD5\x6D\x8D\x64\x9E"
-                         "\x70\xCE\x03\x76\xDD\xE0\xF0\x8C"
-                         "\x84\x86\x8B\x6A\xFE\xC7\xF9\x69"
-                         "\x2E\xFE\xFC\xC2\xC4\x1A\x55\x58"
-                         "\xB3\xBE\xE2\x7E\xED\x39\x42\x6C"
-                         "\xB4\x42\x97\x9A\xEC\xE1\x0A\x06"
-                         "\x02\xC5\x03\x9D\xC4\x48\x15\x66"
-                         "\x35\x6A\xC2\xC9\xA2\x26\x30\xBB"
-                         "\xDB\x2D\xC8\x08\x2B\xA0\x29\x1A"
-                         "\x23\x61\x48\xEA\x80\x04\x27\xAA"
-                         "\x69\x49\xE8\xE8\x4A\x83\x6B\x5A"
-                         "\xCA\x7C\xD3\xB1\xB5\x0B\xCC\x23"
-                         "\x74\x1F\xA9\x87\xCD\xED\xC0\x2D"
-                         "\xBF\xEB\xCF\x16\x2D\x2A\x2E\x1D"
-                         "\x96\xBA\x36\x11\x45\x41\xDA\xCE"
-                         "\xA4\x48\x80\x8B\x06\xF4\x98\x89"
-                         "\x8B\x23\x08\x53\xF4\xD4\x5A\x24"
-                         "\x8B\xF8\x43\x73\xD1\xEE\xC4\xB0"
-                         "\xF8\xFE\x09\x0C\x75\x05\x38\x0B"
-                         "\x7C\x81\xDE\x9D\xE4\x61\x37\x63"
-                         "\x63\xAD\x12\xD2\x04\xB9\xCE\x45"
+               .iv     = "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
+                         "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFD",
+               .input  = "\xEB\x44\xAF\x49\x27\xB8\xFB\x44"
+                         "\x4C\xA6\xC3\x0C\x8B\xD0\x01\x0C"
+                         "\x53\xC8\x16\x38\xDE\x40\x4F\x91"
+                         "\x25\x6D\x4C\xA0\x9A\x87\x1E\xDA"
+                         "\x88\x7E\x89\xE9\x67\x2B\x83\xA2"
+                         "\x5F\x2E\x23\x3E\x45\xB9\x77\x7B"
+                         "\xA6\x7E\x47\x36\x81\x9F\x9B\xF3"
+                         "\xE0\xF0\xD7\x47\xA9\xC8\xEF\x33"
+                         "\x0C\x43\xFE\x67\x50\x0A\x2C\x3E"
+                         "\xA0\xE1\x25\x8E\x80\x07\x4A\xC0"
+                         "\x64\x89\x9F\x6A\x27\x96\x07\xA6"
+                         "\x9B\xC8\x1B\x21\x60\xAE\x5D\x01"
+                         "\xE2\xCD\xC8\xAA\x6C\x9D\x1C\x34"
+                         "\x39\x18\x09\xA4\x82\x59\x78\xE7"
+                         "\xFC\x59\x65\xF2\x94\xFF\xFB\xE2"
+                         "\x3C\xDA\xB1\x90\x95\xBF\x91\xE3"
+                         "\xE6\x87\x31\x9E\x16\x85\xAD\xB1"
+                         "\x4C\xAE\x43\x4D\x19\x58\xB5\x5E"
+                         "\x2E\xF5\x09\xAA\x39\xF4\xC0\xB3"
+                         "\xD4\x4D\xDB\x73\x7A\xD4\xF1\xBF"
+                         "\x89\x16\x4D\x2D\xA2\x26\x33\x72"
+                         "\x18\x33\x7E\xD6\xD2\x16\xA4\x54"
+                         "\xF4\x8C\xB3\x52\xDF\x21\x9C\xEB"
+                         "\xBF\x49\xD3\xF9\x05\x06\xCB\xD2"
+                         "\xA9\xD2\x3B\x6E\x19\x8C\xBC\x19"
+                         "\xAB\x89\xD6\xD8\xCD\x56\x89\x5E"
+                         "\xAC\x00\xE3\x50\x63\x4A\x80\x9A"
+                         "\x05\xBC\x50\x39\xD3\x32\xD9\x0D"
+                         "\xE3\x20\x0D\x75\x54\xEC\xE6\x31"
+                         "\x14\xB9\x3A\x59\x00\x43\x37\x8E"
+                         "\x8C\x5A\x79\x62\x14\x76\x8A\xAE"
+                         "\x8F\xCC\xA1\x6C\x38\x78\xDD\x2D"
+                         "\x8B\x6D\xEA\xBD\x7B\x25\xFF\x60"
+                         "\xC9\x87\xB1\x79\x1E\xA5\x86\x68"
+                         "\x81\xB4\xE2\xC1\x05\x7D\x3A\x73"
+                         "\xD0\xDA\x75\x77\x9E\x05\x27\xF1"
+                         "\x08\xA9\x66\x64\x6C\xBC\x82\x17"
+                         "\x2C\x23\x5F\x62\x4D\x02\x1A\x58"
+                         "\xE7\xB7\x23\x6D\xE2\x20\xDA\xEF"
+                         "\xB4\xB3\x3F\xB2\x2B\x69\x98\x83"
+                         "\x95\x87\x13\x57\x60\xD7\xB5\xB1"
+                         "\xEE\x0A\x2F\x95\x36\x4C\x76\x5D"
+                         "\x5F\xD9\x19\xED\xB9\xA5\x48\xBF"
+                         "\xC8\xAB\x0F\x71\xCC\x61\x8E\x0A"
+                         "\xD0\x29\x44\xA8\xB9\xC1\xE8\xC8"
+                         "\xC9\xA8\x28\x81\xFB\x50\xF2\xF0"
+                         "\x26\xAE\x39\xB8\x91\xCD\xA8\xAC"
+                         "\xDE\x55\x1B\x50\x14\x53\x44\x17"
+                         "\x54\x46\xFC\xB1\xE4\x07\x6B\x9A"
+                         "\x01\x14\xF0\x2E\x2E\xDB\x46\x1B"
+                         "\x1A\x09\x97\xA9\xB6\x97\x79\x06"
+                         "\xFB\xCB\x85\xCF\xDD\xA1\x41\xB1"
+                         "\x00\xAA\xF7\xE0\x89\x73\xFB\xE5"
+                         "\xBF\x84\xDB\xC9\xCD\xC4\xA2\x0D"
+                         "\x3B\xAC\xF9\xDF\x96\xBF\x88\x23"
+                         "\x41\x67\xA1\x24\x99\x7E\xCC\x9B"
+                         "\x02\x8F\x6A\x49\xF6\x25\xBA\x7A"
+                         "\xF4\x78\xFD\x79\x62\x63\x4F\x14"
+                         "\xD6\x11\x11\x04\x05\x5F\x7E\xEA"
+                         "\x4C\xB6\xF8\xF4\x5F\x48\x52\x54"
+                         "\x94\x63\xA8\x4E\xCF\xD2\x1B\x1B"
+                         "\x22\x18\x6A\xAF\x6E\x3E\xE1\x0D",
+               .ilen   = 496,
+               .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\x81\x18\xAF\x23\xBA"
+                         "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
+                         "\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
+                         "\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
+                         "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
+                         "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
+                         "\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
+                         "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
+                         "\x29\xC0\x57\xEE\x62\xF9\x90\x04"
+                         "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
+                         "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
+                         "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
+                         "\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
+                         "\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
+                         "\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
+                         "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
+                         "\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
+                         "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
+                         "\x57\xEE\x85\x1C\x90\x27\xBE\x32"
+                         "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
+                         "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
+                         "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
+                         "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
+                         "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
+                         "\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
+                         "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
+                         "\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
+                         "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
+                         "\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
+                         "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
+                         "\x69\x00\x74\x0B\xA2\x16\xAD\x44"
+                         "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
+                         "\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
+                         "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
+                         "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
+                         "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
+                         "\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
+                         "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
+                         "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
+                         "\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
+                         "\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
+                         "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
+                         "\x58\xEF\x86\x1D\x91\x28\xBF\x33"
+                         "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
+                         "\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
+                         "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
+                         "\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
+                         "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
+                         "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
+                         "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
+                         "\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
+                         "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
+                         "\x86\x1D\xB4\x28\xBF\x56\xED\x61"
+                         "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
+                         "\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
+                         "\xDC\x50\xE7\x7E\x15\x89\x20\xB7",
+               .rlen   = 496,
+       }, { /* 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  = "\xDF\xDD\x69\xFA\xB0\x2E\xFD\xFE"
+                         "\x70\x9E\xC5\x4B\xC9\xD4\xA1\x30"
+                         "\x26\x9B\x89\xA1\xEE\x43\xE0\x52"
+                         "\x55\x17\x4E\xC7\x0E\x33\x1F\xF1"
+                         "\x9F\x8D\x40\x9F\x24\xFD\x92\xA0"
+                         "\xBC\x8F\x35\xDD\x67\x38\xD8\xAA"
+                         "\xCF\xF8\x48\xCA\xFB\xE4\x5C\x60"
+                         "\x01\x41\x21\x12\x38\xAB\x52\x4F"
+                         "\xA8\x57\x20\xE0\x21\x6A\x17\x0D"
+                         "\x0E\xF9\x8E\x49\x42\x00\x3C\x94"
+                         "\x14\xC0\xD0\x8D\x8A\x98\xEB\x29"
+                         "\xEC\xAE\x96\x44\xC0\x3C\x48\xDC"
+                         "\x29\x35\x25\x2F\xE7\x11\x6C\x68"
+                         "\xC8\x67\x0A\x2F\xF4\x07\xBE\xF9"
+                         "\x2C\x31\x87\x40\xAB\xB2\xB6\xFA"
+                         "\xD2\xC9\x6D\x5C\x50\xE9\xE6\x7E"
+                         "\xE3\x0A\xD2\xD5\x6D\x8D\x64\x9E"
+                         "\x70\xCE\x03\x76\xDD\xE0\xF0\x8C"
+                         "\x84\x86\x8B\x6A\xFE\xC7\xF9\x69"
+                         "\x2E\xFE\xFC\xC2\xC4\x1A\x55\x58"
+                         "\xB3\xBE\xE2\x7E\xED\x39\x42\x6C"
+                         "\xB4\x42\x97\x9A\xEC\xE1\x0A\x06"
+                         "\x02\xC5\x03\x9D\xC4\x48\x15\x66"
+                         "\x35\x6A\xC2\xC9\xA2\x26\x30\xBB"
+                         "\xDB\x2D\xC8\x08\x2B\xA0\x29\x1A"
+                         "\x23\x61\x48\xEA\x80\x04\x27\xAA"
+                         "\x69\x49\xE8\xE8\x4A\x83\x6B\x5A"
+                         "\xCA\x7C\xD3\xB1\xB5\x0B\xCC\x23"
+                         "\x74\x1F\xA9\x87\xCD\xED\xC0\x2D"
+                         "\xBF\xEB\xCF\x16\x2D\x2A\x2E\x1D"
+                         "\x96\xBA\x36\x11\x45\x41\xDA\xCE"
+                         "\xA4\x48\x80\x8B\x06\xF4\x98\x89"
+                         "\x8B\x23\x08\x53\xF4\xD4\x5A\x24"
+                         "\x8B\xF8\x43\x73\xD1\xEE\xC4\xB0"
+                         "\xF8\xFE\x09\x0C\x75\x05\x38\x0B"
+                         "\x7C\x81\xDE\x9D\xE4\x61\x37\x63"
+                         "\x63\xAD\x12\xD2\x04\xB9\xCE\x45"
                          "\x5A\x1A\x6E\xB3\x78\x2A\xA4\x74"
                          "\x86\xD0\xE3\xFF\xDA\x38\x9C\xB5"
                          "\xB8\xB1\xDB\x38\x2F\xC5\x6A\xB4"
@@ -3957,6 +4529,9 @@ static struct cipher_testvec tf_ctr_dec_tv_template[] = {
                          "\xDC\x50\xE7\x7E\x15\x89\x20\xB7"
                          "\x2B\xC2\x59",
                .rlen   = 499,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 499 - 16, 16 },
        },
 };
 
@@ -4206,6 +4781,9 @@ static struct cipher_testvec tf_lrw_enc_tv_template[] = {
                          "\x80\x18\xc4\x6c\x03\xd3\xb7\xba"
                          "\x11\xd7\xb8\x6e\xea\xe1\x80\x30",
                .rlen   = 512,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 512 - 16, 16 },
        },
 };
 
@@ -4456,6 +5034,9 @@ static struct cipher_testvec tf_lrw_dec_tv_template[] = {
                          "\xe9\x2e\xc4\x29\x0f\x84\xdb\xc4"
                          "\x21\xc4\xc2\x75\x67\x89\x37\x0a",
                .rlen   = 512,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 512 - 16, 16 },
        },
 };
 
@@ -4795,6 +5376,9 @@ static struct cipher_testvec tf_xts_enc_tv_template[] = {
                          "\xa4\x05\x0b\xb2\xb3\xa8\x30\x97"
                          "\x37\x30\xe1\x91\x8d\xb3\x2a\xff",
                .rlen   = 512,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 512 - 16, 16 },
        },
 };
 
@@ -5135,6 +5719,9 @@ static struct cipher_testvec tf_xts_dec_tv_template[] = {
                          "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
                          "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
                .rlen   = 512,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 512 - 16, 16 },
        },
 };
 
@@ -5242,6 +5829,9 @@ static struct cipher_testvec serpent_enc_tv_template[] = {
                          "\x30\xD4\x2C\xF2\x8E\x06\x4B\x39"
                          "\xB3\x12\x1D\xB3\x17\x46\xE6\xD6",
                .rlen   = 144,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 144 - 16, 16 },
        },
 };
 
@@ -5377,6 +5967,9 @@ static struct cipher_testvec serpent_dec_tv_template[] = {
                          "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
                          "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A",
                .rlen   = 144,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 144 - 16, 16 },
        },
 };
 
@@ -5468,6 +6061,9 @@ static struct cipher_testvec serpent_cbc_enc_tv_template[] = {
                          "\x27\xDF\x89\x1D\x86\x3E\xF7\x5A"
                          "\xF6\xE3\x0F\xC7\x6B\x4C\x96\x7C",
                .rlen   = 144,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 144 - 16, 16 },
        },
 };
 
@@ -5518,6 +6114,9 @@ static struct cipher_testvec serpent_cbc_dec_tv_template[] = {
                          "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
                          "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A",
                .rlen   = 144,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 144 - 16, 16 },
        },
 };
 
@@ -5616,6 +6215,143 @@ static struct cipher_testvec serpent_ctr_enc_tv_template[] = {
                          "\x5D\xE1\x4F\xA1\xEA\xB3\xCA\xB9"
                          "\xE6\xD0\x97",
                .rlen   = 147,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 147 - 16, 16 },
+       }, { /* 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     = "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
+                         "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFD",
+               .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\x81\x18\xAF\x23\xBA"
+                         "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
+                         "\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
+                         "\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
+                         "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
+                         "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
+                         "\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
+                         "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
+                         "\x29\xC0\x57\xEE\x62\xF9\x90\x04"
+                         "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
+                         "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
+                         "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
+                         "\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
+                         "\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
+                         "\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
+                         "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
+                         "\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
+                         "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
+                         "\x57\xEE\x85\x1C\x90\x27\xBE\x32"
+                         "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
+                         "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
+                         "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
+                         "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
+                         "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
+                         "\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
+                         "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
+                         "\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
+                         "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
+                         "\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
+                         "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
+                         "\x69\x00\x74\x0B\xA2\x16\xAD\x44"
+                         "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
+                         "\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
+                         "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
+                         "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
+                         "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
+                         "\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
+                         "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
+                         "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
+                         "\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
+                         "\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
+                         "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
+                         "\x58\xEF\x86\x1D\x91\x28\xBF\x33"
+                         "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
+                         "\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
+                         "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
+                         "\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
+                         "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
+                         "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
+                         "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
+                         "\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
+                         "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
+                         "\x86\x1D\xB4\x28\xBF\x56\xED\x61"
+                         "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
+                         "\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
+                         "\xDC\x50\xE7\x7E\x15\x89\x20\xB7",
+               .ilen   = 496,
+               .result = "\x06\x9A\xF8\xB4\x53\x88\x62\xFC"
+                         "\x68\xB8\x2E\xDF\xC1\x05\x0F\x3D"
+                         "\xAF\x4D\x95\xAE\xC4\xE9\x1C\xDC"
+                         "\xF6\x2B\x8F\x90\x89\xF6\x7E\x1A"
+                         "\xA6\xB9\xE4\xF4\xFA\xCA\xE5\x7E"
+                         "\x71\x28\x06\x4F\xE8\x08\x39\xDA"
+                         "\xA5\x0E\xC8\xC0\xB8\x16\xE5\x69"
+                         "\xE5\xCA\xEC\x4F\x63\x2C\xC0\x9B"
+                         "\x9F\x3E\x39\x79\xF0\xCD\x64\x35"
+                         "\x4A\xD3\xC8\xA9\x31\xCD\x48\x5B"
+                         "\x92\x3D\x8F\x3F\x96\xBD\xB3\x18"
+                         "\x74\x2A\x5D\x29\x3F\x57\x8F\xE2"
+                         "\x67\x9A\xE0\xE5\xD4\x4A\xE2\x47"
+                         "\xBC\xF6\xEB\x14\xF3\x8C\x20\xC2"
+                         "\x7D\xE2\x43\x81\x86\x72\x2E\xB1"
+                         "\x39\xF6\x95\xE1\x1F\xCB\x76\x33"
+                         "\x5B\x7D\x23\x0F\x3A\x67\x2A\x2F"
+                         "\xB9\x37\x9D\xDD\x1F\x16\xA1\x3C"
+                         "\x70\xFE\x52\xAA\x93\x3C\xC4\x46"
+                         "\xB1\xE5\xFF\xDA\xAF\xE2\x84\xFE"
+                         "\x25\x92\xB2\x63\xBD\x49\x77\xB4"
+                         "\x22\xA4\x6A\xD5\x04\xE0\x45\x58"
+                         "\x1C\x34\x96\x7C\x03\x0C\x13\xA2"
+                         "\x05\x22\xE2\xCB\x5A\x35\x03\x09"
+                         "\x40\xD2\x82\x05\xCA\x58\x73\xF2"
+                         "\x29\x5E\x01\x47\x13\x32\x78\xBE"
+                         "\x06\xB0\x51\xDB\x6C\x31\xA0\x1C"
+                         "\x74\xBC\x8D\x25\xDF\xF8\x65\xD1"
+                         "\x38\x35\x11\x26\x4A\xB4\x06\x32"
+                         "\xFA\xD2\x07\x77\xB3\x74\x98\x80"
+                         "\x61\x59\xA8\x9F\xF3\x6F\x2A\xBF"
+                         "\xE6\xA5\x9A\xC4\x6B\xA6\x49\x6F"
+                         "\xBC\x47\xD9\xFB\xC6\xEF\x25\x65"
+                         "\x96\xAC\x9F\xE4\x81\x4B\xD8\xBA"
+                         "\xD6\x9B\xC9\x6D\x58\x40\x81\x02"
+                         "\x73\x44\x4E\x43\x6E\x37\xBB\x11"
+                         "\xE3\xF9\xB8\x2F\xEC\x76\x34\xEA"
+                         "\x90\xCD\xB7\x2E\x0E\x32\x71\xE8"
+                         "\xBB\x4E\x0B\x98\xA4\x17\x17\x5B"
+                         "\x07\xB5\x82\x3A\xC4\xE8\x42\x51"
+                         "\x5A\x4C\x4E\x7D\xBF\xC4\xC0\x4F"
+                         "\x68\xB8\xC6\x4A\x32\x6F\x0B\xD7"
+                         "\x85\xED\x6B\xFB\x72\xD2\xA5\x8F"
+                         "\xBF\xF9\xAC\x59\x50\xA8\x08\x70"
+                         "\xEC\xBD\x0A\xBF\xE5\x87\xA1\xC2"
+                         "\x92\x14\x78\xAF\xE8\xEA\x2E\xDD"
+                         "\xC1\x03\x9A\xAA\x89\x8B\x32\x46"
+                         "\x5B\x18\x27\xBA\x46\xAA\x64\xDE"
+                         "\xE3\xD5\xA3\xFC\x7B\x5B\x61\xDB"
+                         "\x7E\xDA\xEC\x30\x17\x19\xF8\x80"
+                         "\xB5\x5E\x27\xB5\x37\x3A\x1F\x28"
+                         "\x07\x73\xC3\x63\xCE\xFF\x8C\xFE"
+                         "\x81\x4E\xF8\x24\xF3\xB8\xC7\xE8"
+                         "\x16\x9A\xCC\x58\x2F\x88\x1C\x4B"
+                         "\xBB\x33\xA2\x73\xF0\x1C\x89\x0E"
+                         "\xDC\x34\x27\x89\x98\xCE\x1C\xA2"
+                         "\xD8\xB8\x90\xBE\xEC\x72\x28\x13"
+                         "\xAC\x7B\xF1\xD0\x7F\x7A\x28\x50"
+                         "\xB7\x99\x65\x8A\xC9\xC6\x21\x34"
+                         "\x7F\x67\x9D\xB7\x2C\xCC\xF5\x17"
+                         "\x2B\x89\xAC\xB0\xD7\x1E\x47\xB0"
+                         "\x61\xAF\xD4\x63\x6D\xB8\x2D\x20",
+               .rlen   = 496,
        },
 };
 
@@ -5714,68 +6450,205 @@ static struct cipher_testvec serpent_ctr_dec_tv_template[] = {
                          "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
                          "\xF1\x65\xFC",
                .rlen   = 147,
-       },
-};
-
-static struct cipher_testvec serpent_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 = "\x6f\xbf\xd4\xa4\x5d\x71\x16\x79"
-                         "\x63\x9c\xa6\x8e\x40\xbe\x0d\x8a",
-               .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 = "\xfd\xb2\x66\x98\x80\x96\x55\xad"
-                         "\x08\x94\x54\x9c\x21\x7c\x69\xe3",
-               .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",
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 147 - 16, 16 },
+       }, { /* 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     = "\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 = "\x14\x5e\x3d\x70\xc0\x6e\x9c\x34"
-                         "\x5b\x5e\xcf\x0f\xe4\x8c\x21\x5c",
-               .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 = "\x25\x39\xaa\xa5\xf0\x65\xc8\xdc"
-                         "\x5d\x45\x95\x30\x8f\xff\x2f\x1b",
-               .rlen   = 16,
+               .iv     = "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
+                         "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFD",
+               .input  = "\x06\x9A\xF8\xB4\x53\x88\x62\xFC"
+                         "\x68\xB8\x2E\xDF\xC1\x05\x0F\x3D"
+                         "\xAF\x4D\x95\xAE\xC4\xE9\x1C\xDC"
+                         "\xF6\x2B\x8F\x90\x89\xF6\x7E\x1A"
+                         "\xA6\xB9\xE4\xF4\xFA\xCA\xE5\x7E"
+                         "\x71\x28\x06\x4F\xE8\x08\x39\xDA"
+                         "\xA5\x0E\xC8\xC0\xB8\x16\xE5\x69"
+                         "\xE5\xCA\xEC\x4F\x63\x2C\xC0\x9B"
+                         "\x9F\x3E\x39\x79\xF0\xCD\x64\x35"
+                         "\x4A\xD3\xC8\xA9\x31\xCD\x48\x5B"
+                         "\x92\x3D\x8F\x3F\x96\xBD\xB3\x18"
+                         "\x74\x2A\x5D\x29\x3F\x57\x8F\xE2"
+                         "\x67\x9A\xE0\xE5\xD4\x4A\xE2\x47"
+                         "\xBC\xF6\xEB\x14\xF3\x8C\x20\xC2"
+                         "\x7D\xE2\x43\x81\x86\x72\x2E\xB1"
+                         "\x39\xF6\x95\xE1\x1F\xCB\x76\x33"
+                         "\x5B\x7D\x23\x0F\x3A\x67\x2A\x2F"
+                         "\xB9\x37\x9D\xDD\x1F\x16\xA1\x3C"
+                         "\x70\xFE\x52\xAA\x93\x3C\xC4\x46"
+                         "\xB1\xE5\xFF\xDA\xAF\xE2\x84\xFE"
+                         "\x25\x92\xB2\x63\xBD\x49\x77\xB4"
+                         "\x22\xA4\x6A\xD5\x04\xE0\x45\x58"
+                         "\x1C\x34\x96\x7C\x03\x0C\x13\xA2"
+                         "\x05\x22\xE2\xCB\x5A\x35\x03\x09"
+                         "\x40\xD2\x82\x05\xCA\x58\x73\xF2"
+                         "\x29\x5E\x01\x47\x13\x32\x78\xBE"
+                         "\x06\xB0\x51\xDB\x6C\x31\xA0\x1C"
+                         "\x74\xBC\x8D\x25\xDF\xF8\x65\xD1"
+                         "\x38\x35\x11\x26\x4A\xB4\x06\x32"
+                         "\xFA\xD2\x07\x77\xB3\x74\x98\x80"
+                         "\x61\x59\xA8\x9F\xF3\x6F\x2A\xBF"
+                         "\xE6\xA5\x9A\xC4\x6B\xA6\x49\x6F"
+                         "\xBC\x47\xD9\xFB\xC6\xEF\x25\x65"
+                         "\x96\xAC\x9F\xE4\x81\x4B\xD8\xBA"
+                         "\xD6\x9B\xC9\x6D\x58\x40\x81\x02"
+                         "\x73\x44\x4E\x43\x6E\x37\xBB\x11"
+                         "\xE3\xF9\xB8\x2F\xEC\x76\x34\xEA"
+                         "\x90\xCD\xB7\x2E\x0E\x32\x71\xE8"
+                         "\xBB\x4E\x0B\x98\xA4\x17\x17\x5B"
+                         "\x07\xB5\x82\x3A\xC4\xE8\x42\x51"
+                         "\x5A\x4C\x4E\x7D\xBF\xC4\xC0\x4F"
+                         "\x68\xB8\xC6\x4A\x32\x6F\x0B\xD7"
+                         "\x85\xED\x6B\xFB\x72\xD2\xA5\x8F"
+                         "\xBF\xF9\xAC\x59\x50\xA8\x08\x70"
+                         "\xEC\xBD\x0A\xBF\xE5\x87\xA1\xC2"
+                         "\x92\x14\x78\xAF\xE8\xEA\x2E\xDD"
+                         "\xC1\x03\x9A\xAA\x89\x8B\x32\x46"
+                         "\x5B\x18\x27\xBA\x46\xAA\x64\xDE"
+                         "\xE3\xD5\xA3\xFC\x7B\x5B\x61\xDB"
+                         "\x7E\xDA\xEC\x30\x17\x19\xF8\x80"
+                         "\xB5\x5E\x27\xB5\x37\x3A\x1F\x28"
+                         "\x07\x73\xC3\x63\xCE\xFF\x8C\xFE"
+                         "\x81\x4E\xF8\x24\xF3\xB8\xC7\xE8"
+                         "\x16\x9A\xCC\x58\x2F\x88\x1C\x4B"
+                         "\xBB\x33\xA2\x73\xF0\x1C\x89\x0E"
+                         "\xDC\x34\x27\x89\x98\xCE\x1C\xA2"
+                         "\xD8\xB8\x90\xBE\xEC\x72\x28\x13"
+                         "\xAC\x7B\xF1\xD0\x7F\x7A\x28\x50"
+                         "\xB7\x99\x65\x8A\xC9\xC6\x21\x34"
+                         "\x7F\x67\x9D\xB7\x2C\xCC\xF5\x17"
+                         "\x2B\x89\xAC\xB0\xD7\x1E\x47\xB0"
+                         "\x61\xAF\xD4\x63\x6D\xB8\x2D\x20",
+               .ilen   = 496,
+               .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\x81\x18\xAF\x23\xBA"
+                         "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
+                         "\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
+                         "\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
+                         "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
+                         "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
+                         "\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
+                         "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
+                         "\x29\xC0\x57\xEE\x62\xF9\x90\x04"
+                         "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
+                         "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
+                         "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
+                         "\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
+                         "\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
+                         "\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
+                         "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
+                         "\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
+                         "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
+                         "\x57\xEE\x85\x1C\x90\x27\xBE\x32"
+                         "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
+                         "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
+                         "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
+                         "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
+                         "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
+                         "\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
+                         "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
+                         "\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
+                         "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
+                         "\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
+                         "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
+                         "\x69\x00\x74\x0B\xA2\x16\xAD\x44"
+                         "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
+                         "\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
+                         "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
+                         "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
+                         "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
+                         "\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
+                         "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
+                         "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
+                         "\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
+                         "\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
+                         "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
+                         "\x58\xEF\x86\x1D\x91\x28\xBF\x33"
+                         "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
+                         "\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
+                         "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
+                         "\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
+                         "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
+                         "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
+                         "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
+                         "\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
+                         "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
+                         "\x86\x1D\xB4\x28\xBF\x56\xED\x61"
+                         "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
+                         "\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
+                         "\xDC\x50\xE7\x7E\x15\x89\x20\xB7",
+               .rlen   = 496,
+       },
+};
+
+static struct cipher_testvec serpent_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 = "\x6f\xbf\xd4\xa4\x5d\x71\x16\x79"
+                         "\x63\x9c\xa6\x8e\x40\xbe\x0d\x8a",
+               .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 = "\xfd\xb2\x66\x98\x80\x96\x55\xad"
+                         "\x08\x94\x54\x9c\x21\x7c\x69\xe3",
+               .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 = "\x14\x5e\x3d\x70\xc0\x6e\x9c\x34"
+                         "\x5b\x5e\xcf\x0f\xe4\x8c\x21\x5c",
+               .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 = "\x25\x39\xaa\xa5\xf0\x65\xc8\xdc"
+                         "\x5d\x45\x95\x30\x8f\xff\x2f\x1b",
+               .rlen   = 16,
        }, {
                .key    = "\x8a\xd4\xee\x10\x2f\xbd\x81\xff"
                          "\xf8\x86\xce\xac\x93\xc5\xad\xc6"
@@ -5963,6 +6836,9 @@ static struct cipher_testvec serpent_lrw_enc_tv_template[] = {
                          "\x5c\xc6\x84\xfe\x7c\xcb\x26\xfd"
                          "\xd9\x51\x0f\xd7\x94\x2f\xc5\xa7",
                .rlen   = 512,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 512 - 16, 16 },
        },
 };
 
@@ -6213,6 +7089,9 @@ static struct cipher_testvec serpent_lrw_dec_tv_template[] = {
                          "\xe9\x2e\xc4\x29\x0f\x84\xdb\xc4"
                          "\x21\xc4\xc2\x75\x67\x89\x37\x0a",
                .rlen   = 512,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 512 - 16, 16 },
        },
 };
 
@@ -6552,6 +7431,9 @@ static struct cipher_testvec serpent_xts_enc_tv_template[] = {
                          "\xaf\x43\x0b\xc5\x20\x41\x92\x20"
                          "\xd4\xa0\x91\x98\x11\x5f\x4d\xb1",
                .rlen   = 512,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 512 - 16, 16 },
        },
 };
 
@@ -6892,12 +7774,23 @@ static struct cipher_testvec serpent_xts_dec_tv_template[] = {
                          "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
                          "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
                .rlen   = 512,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 512 - 16, 16 },
        },
 };
 
 /* Cast6 test vectors from RFC 2612 */
-#define CAST6_ENC_TEST_VECTORS 3
-#define CAST6_DEC_TEST_VECTORS  3
+#define CAST6_ENC_TEST_VECTORS         4
+#define CAST6_DEC_TEST_VECTORS         4
+#define CAST6_CBC_ENC_TEST_VECTORS     1
+#define CAST6_CBC_DEC_TEST_VECTORS     1
+#define CAST6_CTR_ENC_TEST_VECTORS     2
+#define CAST6_CTR_DEC_TEST_VECTORS     2
+#define CAST6_LRW_ENC_TEST_VECTORS     1
+#define CAST6_LRW_DEC_TEST_VECTORS     1
+#define CAST6_XTS_ENC_TEST_VECTORS     1
+#define CAST6_XTS_DEC_TEST_VECTORS     1
 
 static struct cipher_testvec cast6_enc_tv_template[] = {
        {
@@ -6930,6 +7823,143 @@ static struct cipher_testvec cast6_enc_tv_template[] = {
                .result = "\x4f\x6a\x20\x38\x28\x68\x97\xb9"
                          "\xc9\x87\x01\x36\x55\x33\x17\xfa",
                .rlen   = 16,
+       }, { /* Generated from TF test vectors */
+               .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\x81\x18\xAF\x23\xBA"
+                         "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
+                         "\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
+                         "\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
+                         "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
+                         "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
+                         "\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
+                         "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
+                         "\x29\xC0\x57\xEE\x62\xF9\x90\x04"
+                         "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
+                         "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
+                         "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
+                         "\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
+                         "\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
+                         "\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
+                         "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
+                         "\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
+                         "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
+                         "\x57\xEE\x85\x1C\x90\x27\xBE\x32"
+                         "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
+                         "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
+                         "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
+                         "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
+                         "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
+                         "\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
+                         "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
+                         "\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
+                         "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
+                         "\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
+                         "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
+                         "\x69\x00\x74\x0B\xA2\x16\xAD\x44"
+                         "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
+                         "\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
+                         "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
+                         "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
+                         "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
+                         "\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
+                         "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
+                         "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
+                         "\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
+                         "\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
+                         "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
+                         "\x58\xEF\x86\x1D\x91\x28\xBF\x33"
+                         "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
+                         "\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
+                         "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
+                         "\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
+                         "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
+                         "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
+                         "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
+                         "\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
+                         "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
+                         "\x86\x1D\xB4\x28\xBF\x56\xED\x61"
+                         "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
+                         "\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
+                         "\xDC\x50\xE7\x7E\x15\x89\x20\xB7",
+               .ilen   = 496,
+               .result = "\xC3\x70\x22\x32\xF5\x80\xCB\x54"
+                         "\xFC\x30\xE0\xF6\xEB\x39\x57\xA6"
+                         "\xB6\xB9\xC5\xA4\x91\x55\x14\x97"
+                         "\xC1\x20\xFF\x6C\x5C\xF0\x67\xEA"
+                         "\x2F\xED\xD8\xC9\xFB\x38\x3F\xFE"
+                         "\x93\xBE\xDC\x00\xD3\x7F\xAD\x4C"
+                         "\x5A\x08\x92\xD1\x47\x0C\xFA\x6C"
+                         "\xD0\x6A\x99\x10\x72\xF8\x47\x62"
+                         "\x81\x42\xF8\xD8\xF5\xBB\x94\x08"
+                         "\xAA\x97\xA2\x8B\x69\xB3\xD2\x7E"
+                         "\xBC\xB5\x00\x0C\xE5\x44\x4B\x58"
+                         "\xE8\x63\xDC\xB3\xC4\xE5\x23\x12"
+                         "\x5A\x72\x85\x47\x8B\xEC\x9F\x26"
+                         "\x84\xB6\xED\x10\x33\x63\x9B\x5F"
+                         "\x4D\x53\xEE\x94\x45\x8B\x60\x58"
+                         "\x86\x20\xF9\x1E\x82\x08\x3E\x58"
+                         "\x60\x1B\x34\x19\x02\xBE\x4E\x09"
+                         "\xBB\x7C\x15\xCC\x60\x27\x55\x7A"
+                         "\x12\xB8\xD8\x08\x89\x3C\xA6\xF3"
+                         "\xF1\xDD\xA7\x07\xA3\x12\x85\x28"
+                         "\xE9\x57\xAC\x80\x0C\x5C\x0F\x3A"
+                         "\x5D\xC2\x91\xC7\x90\xE4\x8C\x43"
+                         "\x92\xE4\x7C\x26\x69\x4D\x83\x68"
+                         "\x14\x96\x42\x47\xBD\xA9\xE4\x8A"
+                         "\x33\x19\xEB\x54\x8E\x0D\x4B\x6E"
+                         "\x91\x51\xB5\x36\x08\xDE\x1C\x06"
+                         "\x03\xBD\xDE\x81\x26\xF7\x99\xC2"
+                         "\xBA\xF7\x6D\x87\x0D\xE4\xA6\xCF"
+                         "\xC1\xF5\x27\x05\xB8\x02\x57\x72"
+                         "\xE6\x42\x13\x0B\xC6\x47\x05\x74"
+                         "\x24\x15\xF7\x0D\xC2\x23\x9D\xB9"
+                         "\x3C\x77\x18\x93\xBA\xB4\xFC\x8C"
+                         "\x98\x82\x67\x67\xB4\xD7\xD3\x43"
+                         "\x23\x08\x02\xB7\x9B\x99\x05\xFB"
+                         "\xD3\xB5\x00\x0A\xA9\x9D\x66\xD6"
+                         "\x2E\x49\x58\xD0\xA8\x57\x29\x7F"
+                         "\x0A\x0E\x7D\xFC\x92\x83\xCC\x67"
+                         "\xA2\xB1\x70\x3A\x8F\x87\x4A\x8D"
+                         "\x17\xE2\x58\x2B\x88\x0D\x68\x62"
+                         "\xBF\x35\xD1\x6F\xC0\xF0\x18\x62"
+                         "\xB2\xC7\x2D\x58\xC7\x16\xDE\x08"
+                         "\xEB\x84\x1D\x25\xA7\x38\x94\x06"
+                         "\x93\x9D\xF8\xFE\x88\x71\xE7\x84"
+                         "\x2C\xA0\x38\xA3\x1D\x48\xCF\x29"
+                         "\x0B\xBC\xD8\x50\x99\x1A\x26\xFB"
+                         "\x8E\x75\x3D\x73\xEB\x6A\xED\x29"
+                         "\xE0\x8E\xED\xFC\xFE\x6F\xF6\xBA"
+                         "\x41\xE2\x10\x4C\x01\x8B\x69\x2B"
+                         "\x25\x3F\x4D\x70\x7B\x92\xD6\x3B"
+                         "\xAC\xF9\x77\x18\xD9\x6A\x30\xA6"
+                         "\x2E\xFA\x30\xFF\xC8\xD5\x1D\x06"
+                         "\x59\x28\x1D\x86\x43\x04\x5D\x3B"
+                         "\x99\x4C\x04\x5A\x21\x17\x8B\x76"
+                         "\x8F\x72\xCB\xA1\x9C\x29\x4C\xC3"
+                         "\x65\xA2\x58\x2A\xC5\x66\x24\xBF"
+                         "\xBA\xE6\x0C\xDD\x34\x24\x74\xC8"
+                         "\x84\x0A\x66\x2C\xBE\x8F\x32\xA9"
+                         "\xE7\xE4\xA1\xD7\xDA\xAB\x23\x1E"
+                         "\xEB\xEE\x6C\x94\x6F\x9C\x2E\xD1"
+                         "\x49\x2C\xF3\xD4\x90\xCC\x93\x4C"
+                         "\x84\x52\x6D\x68\xDE\xC6\x64\xB2"
+                         "\x11\x74\x93\x57\xB4\x7E\xC6\x00",
+               .rlen   = 496,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 496 - 16, 16 },
        },
 };
 
@@ -6964,293 +7994,1618 @@ static struct cipher_testvec cast6_dec_tv_template[] = {
                .ilen   = 16,
                .result = zeroed_string,
                .rlen   = 16,
-       },
-};
-
-
-/*
- * AES test vectors.
- */
-#define AES_ENC_TEST_VECTORS 3
-#define AES_DEC_TEST_VECTORS 3
-#define AES_CBC_ENC_TEST_VECTORS 4
-#define AES_CBC_DEC_TEST_VECTORS 4
-#define HMAC_SHA1_AES_CBC_ENC_TEST_VECTORS 7
-#define HMAC_SHA256_AES_CBC_ENC_TEST_VECTORS 7
-#define HMAC_SHA512_AES_CBC_ENC_TEST_VECTORS 7
-#define AES_LRW_ENC_TEST_VECTORS 8
-#define AES_LRW_DEC_TEST_VECTORS 8
-#define AES_XTS_ENC_TEST_VECTORS 5
-#define AES_XTS_DEC_TEST_VECTORS 5
-#define AES_CTR_ENC_TEST_VECTORS 3
-#define AES_CTR_DEC_TEST_VECTORS 3
-#define AES_OFB_ENC_TEST_VECTORS 1
-#define AES_OFB_DEC_TEST_VECTORS 1
-#define AES_CTR_3686_ENC_TEST_VECTORS 7
-#define AES_CTR_3686_DEC_TEST_VECTORS 6
-#define AES_GCM_ENC_TEST_VECTORS 9
-#define AES_GCM_DEC_TEST_VECTORS 8
-#define AES_GCM_4106_ENC_TEST_VECTORS 7
-#define AES_GCM_4106_DEC_TEST_VECTORS 7
-#define AES_CCM_ENC_TEST_VECTORS 7
-#define AES_CCM_DEC_TEST_VECTORS 7
-#define AES_CCM_4309_ENC_TEST_VECTORS 7
-#define AES_CCM_4309_DEC_TEST_VECTORS 10
-
-static struct cipher_testvec aes_enc_tv_template[] = {
-       { /* From FIPS-197 */
-               .key    = "\x00\x01\x02\x03\x04\x05\x06\x07"
-                         "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
-               .klen   = 16,
-               .input  = "\x00\x11\x22\x33\x44\x55\x66\x77"
-                         "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
-               .ilen   = 16,
-               .result = "\x69\xc4\xe0\xd8\x6a\x7b\x04\x30"
-                         "\xd8\xcd\xb7\x80\x70\xb4\xc5\x5a",
-               .rlen   = 16,
-       }, {
-               .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  = "\x00\x11\x22\x33\x44\x55\x66\x77"
-                         "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
-               .ilen   = 16,
-               .result = "\xdd\xa9\x7c\xa4\x86\x4c\xdf\xe0"
-                         "\x6e\xaf\x70\xa0\xec\x0d\x71\x91",
-               .rlen   = 16,
-       }, {
-               .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",
+       }, { /* Generated from TF test vectors */
+               .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,
-               .input  = "\x00\x11\x22\x33\x44\x55\x66\x77"
-                         "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
-               .ilen   = 16,
-               .result = "\x8e\xa2\xb7\xca\x51\x67\x45\xbf"
-                         "\xea\xfc\x49\x90\x4b\x49\x60\x89",
-               .rlen   = 16,
+               .iv     = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F"
+                         "\xC4\x29\x8E\xF3\x35\x9A\xFF\x64",
+               .input  = "\xC3\x70\x22\x32\xF5\x80\xCB\x54"
+                         "\xFC\x30\xE0\xF6\xEB\x39\x57\xA6"
+                         "\xB6\xB9\xC5\xA4\x91\x55\x14\x97"
+                         "\xC1\x20\xFF\x6C\x5C\xF0\x67\xEA"
+                         "\x2F\xED\xD8\xC9\xFB\x38\x3F\xFE"
+                         "\x93\xBE\xDC\x00\xD3\x7F\xAD\x4C"
+                         "\x5A\x08\x92\xD1\x47\x0C\xFA\x6C"
+                         "\xD0\x6A\x99\x10\x72\xF8\x47\x62"
+                         "\x81\x42\xF8\xD8\xF5\xBB\x94\x08"
+                         "\xAA\x97\xA2\x8B\x69\xB3\xD2\x7E"
+                         "\xBC\xB5\x00\x0C\xE5\x44\x4B\x58"
+                         "\xE8\x63\xDC\xB3\xC4\xE5\x23\x12"
+                         "\x5A\x72\x85\x47\x8B\xEC\x9F\x26"
+                         "\x84\xB6\xED\x10\x33\x63\x9B\x5F"
+                         "\x4D\x53\xEE\x94\x45\x8B\x60\x58"
+                         "\x86\x20\xF9\x1E\x82\x08\x3E\x58"
+                         "\x60\x1B\x34\x19\x02\xBE\x4E\x09"
+                         "\xBB\x7C\x15\xCC\x60\x27\x55\x7A"
+                         "\x12\xB8\xD8\x08\x89\x3C\xA6\xF3"
+                         "\xF1\xDD\xA7\x07\xA3\x12\x85\x28"
+                         "\xE9\x57\xAC\x80\x0C\x5C\x0F\x3A"
+                         "\x5D\xC2\x91\xC7\x90\xE4\x8C\x43"
+                         "\x92\xE4\x7C\x26\x69\x4D\x83\x68"
+                         "\x14\x96\x42\x47\xBD\xA9\xE4\x8A"
+                         "\x33\x19\xEB\x54\x8E\x0D\x4B\x6E"
+                         "\x91\x51\xB5\x36\x08\xDE\x1C\x06"
+                         "\x03\xBD\xDE\x81\x26\xF7\x99\xC2"
+                         "\xBA\xF7\x6D\x87\x0D\xE4\xA6\xCF"
+                         "\xC1\xF5\x27\x05\xB8\x02\x57\x72"
+                         "\xE6\x42\x13\x0B\xC6\x47\x05\x74"
+                         "\x24\x15\xF7\x0D\xC2\x23\x9D\xB9"
+                         "\x3C\x77\x18\x93\xBA\xB4\xFC\x8C"
+                         "\x98\x82\x67\x67\xB4\xD7\xD3\x43"
+                         "\x23\x08\x02\xB7\x9B\x99\x05\xFB"
+                         "\xD3\xB5\x00\x0A\xA9\x9D\x66\xD6"
+                         "\x2E\x49\x58\xD0\xA8\x57\x29\x7F"
+                         "\x0A\x0E\x7D\xFC\x92\x83\xCC\x67"
+                         "\xA2\xB1\x70\x3A\x8F\x87\x4A\x8D"
+                         "\x17\xE2\x58\x2B\x88\x0D\x68\x62"
+                         "\xBF\x35\xD1\x6F\xC0\xF0\x18\x62"
+                         "\xB2\xC7\x2D\x58\xC7\x16\xDE\x08"
+                         "\xEB\x84\x1D\x25\xA7\x38\x94\x06"
+                         "\x93\x9D\xF8\xFE\x88\x71\xE7\x84"
+                         "\x2C\xA0\x38\xA3\x1D\x48\xCF\x29"
+                         "\x0B\xBC\xD8\x50\x99\x1A\x26\xFB"
+                         "\x8E\x75\x3D\x73\xEB\x6A\xED\x29"
+                         "\xE0\x8E\xED\xFC\xFE\x6F\xF6\xBA"
+                         "\x41\xE2\x10\x4C\x01\x8B\x69\x2B"
+                         "\x25\x3F\x4D\x70\x7B\x92\xD6\x3B"
+                         "\xAC\xF9\x77\x18\xD9\x6A\x30\xA6"
+                         "\x2E\xFA\x30\xFF\xC8\xD5\x1D\x06"
+                         "\x59\x28\x1D\x86\x43\x04\x5D\x3B"
+                         "\x99\x4C\x04\x5A\x21\x17\x8B\x76"
+                         "\x8F\x72\xCB\xA1\x9C\x29\x4C\xC3"
+                         "\x65\xA2\x58\x2A\xC5\x66\x24\xBF"
+                         "\xBA\xE6\x0C\xDD\x34\x24\x74\xC8"
+                         "\x84\x0A\x66\x2C\xBE\x8F\x32\xA9"
+                         "\xE7\xE4\xA1\xD7\xDA\xAB\x23\x1E"
+                         "\xEB\xEE\x6C\x94\x6F\x9C\x2E\xD1"
+                         "\x49\x2C\xF3\xD4\x90\xCC\x93\x4C"
+                         "\x84\x52\x6D\x68\xDE\xC6\x64\xB2"
+                         "\x11\x74\x93\x57\xB4\x7E\xC6\x00",
+               .ilen   = 496,
+               .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\x81\x18\xAF\x23\xBA"
+                         "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
+                         "\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
+                         "\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
+                         "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
+                         "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
+                         "\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
+                         "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
+                         "\x29\xC0\x57\xEE\x62\xF9\x90\x04"
+                         "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
+                         "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
+                         "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
+                         "\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
+                         "\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
+                         "\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
+                         "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
+                         "\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
+                         "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
+                         "\x57\xEE\x85\x1C\x90\x27\xBE\x32"
+                         "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
+                         "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
+                         "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
+                         "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
+                         "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
+                         "\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
+                         "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
+                         "\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
+                         "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
+                         "\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
+                         "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
+                         "\x69\x00\x74\x0B\xA2\x16\xAD\x44"
+                         "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
+                         "\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
+                         "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
+                         "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
+                         "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
+                         "\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
+                         "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
+                         "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
+                         "\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
+                         "\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
+                         "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
+                         "\x58\xEF\x86\x1D\x91\x28\xBF\x33"
+                         "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
+                         "\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
+                         "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
+                         "\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
+                         "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
+                         "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
+                         "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
+                         "\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
+                         "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
+                         "\x86\x1D\xB4\x28\xBF\x56\xED\x61"
+                         "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
+                         "\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
+                         "\xDC\x50\xE7\x7E\x15\x89\x20\xB7",
+               .rlen   = 496,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 496 - 16, 16 },
        },
 };
 
-static struct cipher_testvec aes_dec_tv_template[] = {
-       { /* From FIPS-197 */
-               .key    = "\x00\x01\x02\x03\x04\x05\x06\x07"
-                         "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
-               .klen   = 16,
-               .input  = "\x69\xc4\xe0\xd8\x6a\x7b\x04\x30"
-                         "\xd8\xcd\xb7\x80\x70\xb4\xc5\x5a",
-               .ilen   = 16,
-               .result = "\x00\x11\x22\x33\x44\x55\x66\x77"
-                         "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
-               .rlen   = 16,
-       }, {
-               .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  = "\xdd\xa9\x7c\xa4\x86\x4c\xdf\xe0"
-                         "\x6e\xaf\x70\xa0\xec\x0d\x71\x91",
-               .ilen   = 16,
-               .result = "\x00\x11\x22\x33\x44\x55\x66\x77"
-                         "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
-               .rlen   = 16,
-       }, {
-               .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",
+static struct cipher_testvec cast6_cbc_enc_tv_template[] = {
+       { /* Generated from TF test vectors */
+               .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
+                         "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
+                         "\x27\x04\xE1\x27\x04\xE1\xBE\x9B"
+                         "\x78\xBE\x9B\x78\x55\x32\x0F\x55",
                .klen   = 32,
-               .input  = "\x8e\xa2\xb7\xca\x51\x67\x45\xbf"
-                         "\xea\xfc\x49\x90\x4b\x49\x60\x89",
-               .ilen   = 16,
-               .result = "\x00\x11\x22\x33\x44\x55\x66\x77"
-                         "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
-               .rlen   = 16,
+               .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\x81\x18\xAF\x23\xBA"
+                         "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
+                         "\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
+                         "\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
+                         "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
+                         "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
+                         "\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
+                         "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
+                         "\x29\xC0\x57\xEE\x62\xF9\x90\x04"
+                         "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
+                         "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
+                         "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
+                         "\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
+                         "\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
+                         "\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
+                         "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
+                         "\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
+                         "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
+                         "\x57\xEE\x85\x1C\x90\x27\xBE\x32"
+                         "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
+                         "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
+                         "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
+                         "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
+                         "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
+                         "\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
+                         "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
+                         "\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
+                         "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
+                         "\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
+                         "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
+                         "\x69\x00\x74\x0B\xA2\x16\xAD\x44"
+                         "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
+                         "\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
+                         "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
+                         "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
+                         "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
+                         "\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
+                         "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
+                         "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
+                         "\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
+                         "\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
+                         "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
+                         "\x58\xEF\x86\x1D\x91\x28\xBF\x33"
+                         "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
+                         "\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
+                         "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
+                         "\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
+                         "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
+                         "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
+                         "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
+                         "\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
+                         "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
+                         "\x86\x1D\xB4\x28\xBF\x56\xED\x61"
+                         "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
+                         "\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
+                         "\xDC\x50\xE7\x7E\x15\x89\x20\xB7",
+               .ilen   = 496,
+               .result = "\xDF\x77\x68\x96\xC7\xBA\xF8\xE2"
+                         "\x0E\x24\x99\x1A\xAA\xF3\xC6\x9F"
+                         "\xA0\x73\xB3\x70\xC3\x68\x64\x70"
+                         "\xAD\x33\x02\xFB\x88\x74\xAA\x78"
+                         "\xC7\x47\x1A\x18\x61\x2D\xAC\x9F"
+                         "\x7E\x6F\xDF\x05\x13\x76\xA6\x72"
+                         "\xB7\x13\x09\x0F\x7D\x38\xDF\x25"
+                         "\x4E\xFD\x50\x45\xFA\x35\x6A\xC0"
+                         "\x57\x95\xE1\x21\x26\x10\x9A\x21"
+                         "\xA1\x8A\x51\x05\xD1\xB1\x78\x35"
+                         "\x98\xF5\xAE\xC0\xC1\x8B\x94\xFF"
+                         "\xD0\x69\x3F\x42\xC2\x01\xA7\x9B"
+                         "\x23\x16\x47\x72\x81\x13\x3A\x72"
+                         "\xEC\xD9\x40\x88\x00\x9C\xB0\xA8"
+                         "\x9C\xAC\xCE\x11\x73\x7B\x63\x3E"
+                         "\xA3\x63\x98\x7D\x35\xE4\xD9\x83"
+                         "\xE2\xD0\x52\x87\x0C\x1F\xB0\xB3"
+                         "\x41\x1A\x93\x8D\x76\x31\x9F\xF2"
+                         "\xFE\x09\xA3\x8F\x22\x6A\x3B\xB9"
+                         "\x6C\x9E\xE4\xA1\xA0\xC4\xE7\xA1"
+                         "\x21\x9C\x1A\xCA\x65\xDE\x44\x03"
+                         "\x99\xF2\xD2\x39\xE3\x3F\x0F\x37"
+                         "\x53\x50\x23\xA4\x81\x6E\xDA\xFB"
+                         "\xF8\x7B\x01\xD7\xB2\x32\x9C\xB8"
+                         "\xB1\x0E\x99\x17\xB5\x38\xF9\xD7"
+                         "\x86\x2D\x6E\x94\x5C\x99\x9D\xB3"
+                         "\xD3\x63\x4B\x2A\x7D\x44\x6A\xB2"
+                         "\xC1\x03\xE6\x5A\x37\xD8\x64\x18"
+                         "\xAA\x32\xCE\x29\xED\xC0\xA2\xCB"
+                         "\x8D\xAF\xCD\xBE\x8F\xB6\xEC\xB4"
+                         "\x89\x05\x81\x6E\x71\x4F\xC3\x28"
+                         "\x10\xC1\x62\xC4\x41\xE9\xD2\x39"
+                         "\xF3\x22\x39\x12\x2C\xC2\x95\x2D"
+                         "\xBF\x93\x58\x4B\x04\xD1\x8D\x57"
+                         "\xAE\xEB\x60\x03\x56\x35\xAD\x5A"
+                         "\xE9\xC3\xFF\x4E\x31\xE1\x37\xF8"
+                         "\x7D\xEE\x65\x8A\xB6\x88\x1A\x3E"
+                         "\x07\x09\x82\xBA\xF0\x80\x8A\xD0"
+                         "\xA0\x3F\x6A\xE9\x24\x87\x19\x65"
+                         "\x73\x3F\x12\x91\x47\x54\xBA\x39"
+                         "\x30\x5B\x1E\xE5\xC2\xF9\x3F\xEF"
+                         "\xD6\x75\xF9\xB8\x7C\x8B\x05\x76"
+                         "\xEE\xB7\x08\x25\x4B\xB6\x7B\x47"
+                         "\x72\xC0\x4C\xD4\xDA\xE0\x75\xF1"
+                         "\x7C\xE8\x94\x9E\x16\x6E\xB8\x12"
+                         "\xA1\xC1\x6E\x3B\x1C\x59\x41\x2D"
+                         "\x23\xFA\x7D\x77\xB8\x46\x75\xFE"
+                         "\x4F\x10\xD3\x09\x60\xA1\x36\x96"
+                         "\x5B\xC2\xDC\x6E\x84\x7D\x9B\x14"
+                         "\x80\x21\x83\x58\x3C\x76\xFD\x28"
+                         "\x1D\xF9\x93\x13\xD7\x0E\x62\x14"
+                         "\x5A\xC5\x4E\x08\xA5\x56\xA4\x3C"
+                         "\x68\x93\x44\x70\xDF\xCF\x4A\x51"
+                         "\x0B\x81\x29\x41\xE5\x62\x4D\x36"
+                         "\xB3\xEA\x94\xA6\xB9\xDD\x3F\x09"
+                         "\x62\x34\xA0\x6A\x7E\x7D\xF5\xF6"
+                         "\x01\x91\xB4\x27\xDA\x59\xD6\x17"
+                         "\x56\x4D\x82\x62\x37\xA3\x48\x01"
+                         "\x99\x91\x77\xB2\x08\x6B\x2C\x37"
+                         "\xC5\x5C\xAD\xB6\x07\xB6\x84\xF3"
+                         "\x4D\x59\x7D\xC5\x28\x69\xFA\x92"
+                         "\x22\x46\x89\x2D\x0F\x2B\x08\x24",
+               .rlen   = 496,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 496 - 16, 16 },
        },
 };
 
-static struct cipher_testvec aes_cbc_enc_tv_template[] = {
-       { /* From RFC 3602 */
-               .key    = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
-                         "\x51\x2e\x03\xd5\x34\x12\x00\x06",
-               .klen   = 16,
-               .iv     = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
-                         "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
-               .input  = "Single block msg",
-               .ilen   = 16,
-               .result = "\xe3\x53\x77\x9c\x10\x79\xae\xb8"
-                         "\x27\x08\x94\x2d\xbe\x77\x18\x1a",
-               .rlen   = 16,
-       }, {
-               .key    = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
-                         "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
-               .klen   = 16,
-               .iv     = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
-                         "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
-               .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",
-               .ilen   = 32,
-               .result = "\xd2\x96\xcd\x94\xc2\xcc\xcf\x8a"
-                         "\x3a\x86\x30\x28\xb5\xe1\xdc\x0a"
-                         "\x75\x86\x60\x2d\x25\x3c\xff\xf9"
-                         "\x1b\x82\x66\xbe\xa6\xd6\x1a\xb1",
-               .rlen   = 32,
-       }, { /* From NIST SP800-38A */
-               .key    = "\x8e\x73\xb0\xf7\xda\x0e\x64\x52"
-                         "\xc8\x10\xf3\x2b\x80\x90\x79\xe5"
-                         "\x62\xf8\xea\xd2\x52\x2c\x6b\x7b",
-               .klen   = 24,
-               .iv     = "\x00\x01\x02\x03\x04\x05\x06\x07"
-                         "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
-               .input  = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
-                         "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
-                         "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
-                         "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
-                         "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
-                         "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
-                         "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
-                         "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
-               .ilen   = 64,
-               .result = "\x4f\x02\x1d\xb2\x43\xbc\x63\x3d"
-                         "\x71\x78\x18\x3a\x9f\xa0\x71\xe8"
-                         "\xb4\xd9\xad\xa9\xad\x7d\xed\xf4"
-                         "\xe5\xe7\x38\x76\x3f\x69\x14\x5a"
-                         "\x57\x1b\x24\x20\x12\xfb\x7a\xe0"
-                         "\x7f\xa9\xba\xac\x3d\xf1\x02\xe0"
-                         "\x08\xb0\xe2\x79\x88\x59\x88\x81"
-                         "\xd9\x20\xa9\xe6\x4f\x56\x15\xcd",
-               .rlen   = 64,
-       }, {
-               .key    = "\x60\x3d\xeb\x10\x15\xca\x71\xbe"
-                         "\x2b\x73\xae\xf0\x85\x7d\x77\x81"
-                         "\x1f\x35\x2c\x07\x3b\x61\x08\xd7"
-                         "\x2d\x98\x10\xa3\x09\x14\xdf\xf4",
+static struct cipher_testvec cast6_cbc_dec_tv_template[] = {
+       { /* Generated from TF test vectors */
+               .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
+                         "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
+                         "\x27\x04\xE1\x27\x04\xE1\xBE\x9B"
+                         "\x78\xBE\x9B\x78\x55\x32\x0F\x55",
                .klen   = 32,
-               .iv     = "\x00\x01\x02\x03\x04\x05\x06\x07"
-                         "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
-               .input  = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
-                         "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
-                         "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
-                         "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
-                         "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
-                         "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
-                         "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
-                         "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
-               .ilen   = 64,
-               .result = "\xf5\x8c\x4c\x04\xd6\xe5\xf1\xba"
-                         "\x77\x9e\xab\xfb\x5f\x7b\xfb\xd6"
-                         "\x9c\xfc\x4e\x96\x7e\xdb\x80\x8d"
-                         "\x67\x9f\x77\x7b\xc6\x70\x2c\x7d"
-                         "\x39\xf2\x33\x69\xa9\xd9\xba\xcf"
-                         "\xa5\x30\xe2\x63\x04\x23\x14\x61"
-                         "\xb2\xeb\x05\xe2\xc3\x9b\xe9\xfc"
-                         "\xda\x6c\x19\x07\x8c\x6a\x9d\x1b",
-               .rlen   = 64,
+               .iv     = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F"
+                         "\xC4\x29\x8E\xF3\x35\x9A\xFF\x64",
+               .input  = "\xDF\x77\x68\x96\xC7\xBA\xF8\xE2"
+                         "\x0E\x24\x99\x1A\xAA\xF3\xC6\x9F"
+                         "\xA0\x73\xB3\x70\xC3\x68\x64\x70"
+                         "\xAD\x33\x02\xFB\x88\x74\xAA\x78"
+                         "\xC7\x47\x1A\x18\x61\x2D\xAC\x9F"
+                         "\x7E\x6F\xDF\x05\x13\x76\xA6\x72"
+                         "\xB7\x13\x09\x0F\x7D\x38\xDF\x25"
+                         "\x4E\xFD\x50\x45\xFA\x35\x6A\xC0"
+                         "\x57\x95\xE1\x21\x26\x10\x9A\x21"
+                         "\xA1\x8A\x51\x05\xD1\xB1\x78\x35"
+                         "\x98\xF5\xAE\xC0\xC1\x8B\x94\xFF"
+                         "\xD0\x69\x3F\x42\xC2\x01\xA7\x9B"
+                         "\x23\x16\x47\x72\x81\x13\x3A\x72"
+                         "\xEC\xD9\x40\x88\x00\x9C\xB0\xA8"
+                         "\x9C\xAC\xCE\x11\x73\x7B\x63\x3E"
+                         "\xA3\x63\x98\x7D\x35\xE4\xD9\x83"
+                         "\xE2\xD0\x52\x87\x0C\x1F\xB0\xB3"
+                         "\x41\x1A\x93\x8D\x76\x31\x9F\xF2"
+                         "\xFE\x09\xA3\x8F\x22\x6A\x3B\xB9"
+                         "\x6C\x9E\xE4\xA1\xA0\xC4\xE7\xA1"
+                         "\x21\x9C\x1A\xCA\x65\xDE\x44\x03"
+                         "\x99\xF2\xD2\x39\xE3\x3F\x0F\x37"
+                         "\x53\x50\x23\xA4\x81\x6E\xDA\xFB"
+                         "\xF8\x7B\x01\xD7\xB2\x32\x9C\xB8"
+                         "\xB1\x0E\x99\x17\xB5\x38\xF9\xD7"
+                         "\x86\x2D\x6E\x94\x5C\x99\x9D\xB3"
+                         "\xD3\x63\x4B\x2A\x7D\x44\x6A\xB2"
+                         "\xC1\x03\xE6\x5A\x37\xD8\x64\x18"
+                         "\xAA\x32\xCE\x29\xED\xC0\xA2\xCB"
+                         "\x8D\xAF\xCD\xBE\x8F\xB6\xEC\xB4"
+                         "\x89\x05\x81\x6E\x71\x4F\xC3\x28"
+                         "\x10\xC1\x62\xC4\x41\xE9\xD2\x39"
+                         "\xF3\x22\x39\x12\x2C\xC2\x95\x2D"
+                         "\xBF\x93\x58\x4B\x04\xD1\x8D\x57"
+                         "\xAE\xEB\x60\x03\x56\x35\xAD\x5A"
+                         "\xE9\xC3\xFF\x4E\x31\xE1\x37\xF8"
+                         "\x7D\xEE\x65\x8A\xB6\x88\x1A\x3E"
+                         "\x07\x09\x82\xBA\xF0\x80\x8A\xD0"
+                         "\xA0\x3F\x6A\xE9\x24\x87\x19\x65"
+                         "\x73\x3F\x12\x91\x47\x54\xBA\x39"
+                         "\x30\x5B\x1E\xE5\xC2\xF9\x3F\xEF"
+                         "\xD6\x75\xF9\xB8\x7C\x8B\x05\x76"
+                         "\xEE\xB7\x08\x25\x4B\xB6\x7B\x47"
+                         "\x72\xC0\x4C\xD4\xDA\xE0\x75\xF1"
+                         "\x7C\xE8\x94\x9E\x16\x6E\xB8\x12"
+                         "\xA1\xC1\x6E\x3B\x1C\x59\x41\x2D"
+                         "\x23\xFA\x7D\x77\xB8\x46\x75\xFE"
+                         "\x4F\x10\xD3\x09\x60\xA1\x36\x96"
+                         "\x5B\xC2\xDC\x6E\x84\x7D\x9B\x14"
+                         "\x80\x21\x83\x58\x3C\x76\xFD\x28"
+                         "\x1D\xF9\x93\x13\xD7\x0E\x62\x14"
+                         "\x5A\xC5\x4E\x08\xA5\x56\xA4\x3C"
+                         "\x68\x93\x44\x70\xDF\xCF\x4A\x51"
+                         "\x0B\x81\x29\x41\xE5\x62\x4D\x36"
+                         "\xB3\xEA\x94\xA6\xB9\xDD\x3F\x09"
+                         "\x62\x34\xA0\x6A\x7E\x7D\xF5\xF6"
+                         "\x01\x91\xB4\x27\xDA\x59\xD6\x17"
+                         "\x56\x4D\x82\x62\x37\xA3\x48\x01"
+                         "\x99\x91\x77\xB2\x08\x6B\x2C\x37"
+                         "\xC5\x5C\xAD\xB6\x07\xB6\x84\xF3"
+                         "\x4D\x59\x7D\xC5\x28\x69\xFA\x92"
+                         "\x22\x46\x89\x2D\x0F\x2B\x08\x24",
+               .ilen   = 496,
+               .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\x81\x18\xAF\x23\xBA"
+                         "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
+                         "\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
+                         "\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
+                         "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
+                         "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
+                         "\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
+                         "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
+                         "\x29\xC0\x57\xEE\x62\xF9\x90\x04"
+                         "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
+                         "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
+                         "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
+                         "\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
+                         "\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
+                         "\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
+                         "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
+                         "\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
+                         "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
+                         "\x57\xEE\x85\x1C\x90\x27\xBE\x32"
+                         "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
+                         "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
+                         "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
+                         "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
+                         "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
+                         "\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
+                         "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
+                         "\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
+                         "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
+                         "\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
+                         "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
+                         "\x69\x00\x74\x0B\xA2\x16\xAD\x44"
+                         "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
+                         "\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
+                         "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
+                         "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
+                         "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
+                         "\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
+                         "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
+                         "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
+                         "\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
+                         "\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
+                         "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
+                         "\x58\xEF\x86\x1D\x91\x28\xBF\x33"
+                         "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
+                         "\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
+                         "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
+                         "\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
+                         "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
+                         "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
+                         "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
+                         "\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
+                         "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
+                         "\x86\x1D\xB4\x28\xBF\x56\xED\x61"
+                         "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
+                         "\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
+                         "\xDC\x50\xE7\x7E\x15\x89\x20\xB7",
+               .rlen   = 496,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 496 - 16, 16 },
        },
 };
 
-static struct cipher_testvec aes_cbc_dec_tv_template[] = {
-       { /* From RFC 3602 */
-               .key    = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
-                         "\x51\x2e\x03\xd5\x34\x12\x00\x06",
-               .klen   = 16,
-               .iv     = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
-                         "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
-               .input  = "\xe3\x53\x77\x9c\x10\x79\xae\xb8"
-                         "\x27\x08\x94\x2d\xbe\x77\x18\x1a",
-               .ilen   = 16,
-               .result = "Single block msg",
-               .rlen   = 16,
-       }, {
-               .key    = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
-                         "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
-               .klen   = 16,
-               .iv     = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
-                         "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
-               .input  = "\xd2\x96\xcd\x94\xc2\xcc\xcf\x8a"
-                         "\x3a\x86\x30\x28\xb5\xe1\xdc\x0a"
-                         "\x75\x86\x60\x2d\x25\x3c\xff\xf9"
-                         "\x1b\x82\x66\xbe\xa6\xd6\x1a\xb1",
-               .ilen   = 32,
-               .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",
-               .rlen   = 32,
-       }, { /* From NIST SP800-38A */
-               .key    = "\x8e\x73\xb0\xf7\xda\x0e\x64\x52"
-                         "\xc8\x10\xf3\x2b\x80\x90\x79\xe5"
-                         "\x62\xf8\xea\xd2\x52\x2c\x6b\x7b",
-               .klen   = 24,
-               .iv     = "\x00\x01\x02\x03\x04\x05\x06\x07"
-                         "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
-               .input  = "\x4f\x02\x1d\xb2\x43\xbc\x63\x3d"
-                         "\x71\x78\x18\x3a\x9f\xa0\x71\xe8"
-                         "\xb4\xd9\xad\xa9\xad\x7d\xed\xf4"
-                         "\xe5\xe7\x38\x76\x3f\x69\x14\x5a"
-                         "\x57\x1b\x24\x20\x12\xfb\x7a\xe0"
-                         "\x7f\xa9\xba\xac\x3d\xf1\x02\xe0"
-                         "\x08\xb0\xe2\x79\x88\x59\x88\x81"
-                         "\xd9\x20\xa9\xe6\x4f\x56\x15\xcd",
-               .ilen   = 64,
-               .result = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
-                         "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
-                         "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
-                         "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
-                         "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
-                         "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
-                         "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
-                         "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
-               .rlen   = 64,
-       }, {
-               .key    = "\x60\x3d\xeb\x10\x15\xca\x71\xbe"
-                         "\x2b\x73\xae\xf0\x85\x7d\x77\x81"
-                         "\x1f\x35\x2c\x07\x3b\x61\x08\xd7"
-                         "\x2d\x98\x10\xa3\x09\x14\xdf\xf4",
+static struct cipher_testvec cast6_ctr_enc_tv_template[] = {
+       { /* Generated from TF test vectors */
+               .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
+                         "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
+                         "\x27\x04\xE1\x27\x04\xE1\xBE\x9B"
+                         "\x78\xBE\x9B\x78\x55\x32\x0F\x55",
                .klen   = 32,
-               .iv     = "\x00\x01\x02\x03\x04\x05\x06\x07"
-                         "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
-               .input  = "\xf5\x8c\x4c\x04\xd6\xe5\xf1\xba"
-                         "\x77\x9e\xab\xfb\x5f\x7b\xfb\xd6"
-                         "\x9c\xfc\x4e\x96\x7e\xdb\x80\x8d"
-                         "\x67\x9f\x77\x7b\xc6\x70\x2c\x7d"
-                         "\x39\xf2\x33\x69\xa9\xd9\xba\xcf"
-                         "\xa5\x30\xe2\x63\x04\x23\x14\x61"
-                         "\xb2\xeb\x05\xe2\xc3\x9b\xe9\xfc"
-                         "\xda\x6c\x19\x07\x8c\x6a\x9d\x1b",
-               .ilen   = 64,
-               .result = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
-                         "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
-                         "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
-                         "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
-                         "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
-                         "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
-                         "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
-                         "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
-               .rlen   = 64,
+               .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",
+               .ilen   = 17,
+               .result = "\x26\x0A\xF1\xE2\x3F\x8A\xEF\xA3"
+                         "\x53\x9A\x5E\x1B\x2A\x1A\xC6\x0A"
+                         "\x57",
+               .rlen   = 17,
+       }, { /* Generated from TF test vectors */
+               .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\x81\x18\xAF\x23\xBA"
+                         "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
+                         "\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
+                         "\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
+                         "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
+                         "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
+                         "\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
+                         "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
+                         "\x29\xC0\x57\xEE\x62\xF9\x90\x04"
+                         "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
+                         "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
+                         "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
+                         "\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
+                         "\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
+                         "\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
+                         "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
+                         "\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
+                         "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
+                         "\x57\xEE\x85\x1C\x90\x27\xBE\x32"
+                         "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
+                         "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
+                         "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
+                         "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
+                         "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
+                         "\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
+                         "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
+                         "\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
+                         "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
+                         "\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
+                         "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
+                         "\x69\x00\x74\x0B\xA2\x16\xAD\x44"
+                         "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
+                         "\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
+                         "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
+                         "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
+                         "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
+                         "\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
+                         "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
+                         "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
+                         "\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
+                         "\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
+                         "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
+                         "\x58\xEF\x86\x1D\x91\x28\xBF\x33"
+                         "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
+                         "\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
+                         "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
+                         "\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
+                         "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
+                         "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
+                         "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
+                         "\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
+                         "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
+                         "\x86\x1D\xB4\x28\xBF\x56\xED\x61"
+                         "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
+                         "\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
+                         "\xDC\x50\xE7\x7E\x15\x89\x20\xB7",
+               .ilen   = 496,
+               .result = "\x26\x0A\xF1\xE2\x3F\x8A\xEF\xA3"
+                         "\x53\x9A\x5E\x1B\x2A\x1A\xC6\x0A"
+                         "\x57\xA3\xEF\x47\x2A\xE8\x88\xA7"
+                         "\x3C\xD0\xEC\xB9\x94\x50\x7D\x56"
+                         "\xBC\xE1\xC1\xF5\xE1\xEE\x12\xF8"
+                         "\x4F\x03\x82\x3A\x93\x6B\x4C\xD3"
+                         "\xE3\xF3\xFA\xC2\x23\x55\x98\x20"
+                         "\x49\x76\x9B\x6B\xC1\x23\xBF\xE5"
+                         "\xD4\xC4\x2F\x61\xE1\x67\x2A\x30"
+                         "\x6F\x29\xCA\x54\xF8\x1B\xA6\x7D"
+                         "\x66\x45\xEE\xC8\x19\xBE\x50\xF0"
+                         "\x5F\x65\xF8\x1E\x4D\x07\x87\xD9"
+                         "\xD3\xD9\x1B\x09\x89\xFD\x42\xC5"
+                         "\xDB\xEB\x86\xF1\x67\x04\x0F\x5C"
+                         "\x81\xDF\x82\x12\xC7\x4C\x1B\x07"
+                         "\xDE\xE6\xFA\x29\x86\xD1\xB0\xBA"
+                         "\x3D\x6A\x69\x76\xEC\x0F\xB4\xE6"
+                         "\xCD\xA7\xF8\xA8\xB8\xE0\x33\xF5"
+                         "\x49\x61\x22\x52\x64\x8C\x46\x41"
+                         "\x1F\x48\x5F\x4F\xA2\x89\x36\x17"
+                         "\x20\xF8\x2F\x8F\x4B\xFA\xF2\xC0"
+                         "\x1E\x18\xA2\xF8\xB7\x6D\x98\xE3"
+                         "\x00\x14\x15\x59\xC1\x30\x64\xAF"
+                         "\xA8\x01\x38\xAB\xD4\x8B\xEC\x7C"
+                         "\x44\x9A\xC6\x2C\x2E\x2B\x2B\xF4"
+                         "\x02\x37\xC4\x69\xEF\x36\xC1\xF3"
+                         "\xA0\xFB\xFE\x29\xAD\x39\xCF\xD0"
+                         "\x51\x73\xA3\x22\x42\x41\xAB\xD2"
+                         "\x0F\x50\x14\xB9\x54\xD3\xD4\xFA"
+                         "\xBF\xC9\xBB\xCE\xC4\x1D\x2D\xAF"
+                         "\xC9\x3F\x07\x87\x42\x4B\x3A\x54"
+                         "\x34\x8E\x37\xA3\x03\x6F\x65\x66"
+                         "\xDB\x44\xC3\xE8\xD7\xDD\x7D\xDD"
+                         "\x61\xB4\x2B\x80\xA3\x98\x13\xF5"
+                         "\x5A\xD3\x34\x58\xC3\x6E\xF6\xB8"
+                         "\x0A\xC6\x50\x01\x8E\xD5\x6C\x7D"
+                         "\xFE\x16\xB6\xCF\xFC\x51\x40\xAE"
+                         "\xB3\x15\xAC\x90\x6F\x0B\x28\x3A"
+                         "\x60\x40\x38\x90\x20\x46\xC7\xB3"
+                         "\x0B\x12\x6D\x3B\x15\x14\xF9\xF4"
+                         "\x11\x41\x76\x6B\xB3\x60\x82\x3C"
+                         "\x84\xFB\x08\x2E\x92\x25\xCB\x79"
+                         "\x6F\x58\xC5\x94\x00\x00\x47\xB6"
+                         "\x9E\xDC\x0F\x29\x70\x46\x20\x76"
+                         "\x65\x75\x66\x5C\x00\x96\xB3\xE1"
+                         "\x0B\xA7\x11\x8B\x2E\x61\x4E\x45"
+                         "\x73\xFC\x91\xAB\x79\x41\x23\x14"
+                         "\x13\xB6\x72\x6C\x46\xB3\x03\x11"
+                         "\xE4\xF1\xEE\xC9\x7A\xCF\x96\x32"
+                         "\xB6\xF0\x8B\x97\xB4\xCF\x82\xB7"
+                         "\x15\x48\x44\x99\x09\xF6\xE0\xD7"
+                         "\xBC\xF1\x5B\x91\x4F\x30\x22\xA2"
+                         "\x45\xC4\x68\x55\xC2\xBE\xA7\xD2"
+                         "\x12\x53\x35\x9C\xF9\xE7\x35\x5D"
+                         "\x81\xE4\x86\x42\xC3\x58\xFB\xF0"
+                         "\x38\x9B\x8E\x5A\xEF\x83\x33\x0F"
+                         "\x00\x4E\x3F\x9F\xF5\x84\x62\xC4"
+                         "\x19\x35\x88\x22\x45\x59\x0E\x8F"
+                         "\xEC\x27\xDD\x4A\xA4\x1F\xBC\x41"
+                         "\x9B\x66\x8D\x32\xBA\x81\x34\x87"
+                         "\x0E\x74\x33\x30\x62\xB9\x89\xDF"
+                         "\xF9\xC5\xDD\x27\xB3\x39\xCB\xCB",
+               .rlen   = 496,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 496 - 16, 16 },
        },
 };
 
-static struct aead_testvec hmac_sha1_aes_cbc_enc_tv_template[] = {
-       { /* RFC 3602 Case 1 */
-#ifdef __LITTLE_ENDIAN
-               .key    = "\x08\x00"            /* rta length */
-                         "\x01\x00"            /* rta type */
-#else
-               .key    = "\x00\x08"            /* rta length */
-                         "\x00\x01"            /* rta type */
-#endif
-                         "\x00\x00\x00\x10"    /* enc key length */
-                         "\x00\x00\x00\x00\x00\x00\x00\x00"
-                         "\x00\x00\x00\x00\x00\x00\x00\x00"
-                         "\x00\x00\x00\x00"
-                         "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
-                         "\x51\x2e\x03\xd5\x34\x12\x00\x06",
-               .klen   = 8 + 20 + 16,
+static struct cipher_testvec cast6_ctr_dec_tv_template[] = {
+       { /* Generated from TF test vectors */
+               .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
+                         "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
+                         "\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  = "\x26\x0A\xF1\xE2\x3F\x8A\xEF\xA3"
+                         "\x53\x9A\x5E\x1B\x2A\x1A\xC6\x0A"
+                         "\x57",
+               .ilen   = 17,
+               .result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
+                         "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
+                         "\x3A",
+               .rlen   = 17,
+       }, { /* Generated from TF test vectors */
+               .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  = "\x26\x0A\xF1\xE2\x3F\x8A\xEF\xA3"
+                         "\x53\x9A\x5E\x1B\x2A\x1A\xC6\x0A"
+                         "\x57\xA3\xEF\x47\x2A\xE8\x88\xA7"
+                         "\x3C\xD0\xEC\xB9\x94\x50\x7D\x56"
+                         "\xBC\xE1\xC1\xF5\xE1\xEE\x12\xF8"
+                         "\x4F\x03\x82\x3A\x93\x6B\x4C\xD3"
+                         "\xE3\xF3\xFA\xC2\x23\x55\x98\x20"
+                         "\x49\x76\x9B\x6B\xC1\x23\xBF\xE5"
+                         "\xD4\xC4\x2F\x61\xE1\x67\x2A\x30"
+                         "\x6F\x29\xCA\x54\xF8\x1B\xA6\x7D"
+                         "\x66\x45\xEE\xC8\x19\xBE\x50\xF0"
+                         "\x5F\x65\xF8\x1E\x4D\x07\x87\xD9"
+                         "\xD3\xD9\x1B\x09\x89\xFD\x42\xC5"
+                         "\xDB\xEB\x86\xF1\x67\x04\x0F\x5C"
+                         "\x81\xDF\x82\x12\xC7\x4C\x1B\x07"
+                         "\xDE\xE6\xFA\x29\x86\xD1\xB0\xBA"
+                         "\x3D\x6A\x69\x76\xEC\x0F\xB4\xE6"
+                         "\xCD\xA7\xF8\xA8\xB8\xE0\x33\xF5"
+                         "\x49\x61\x22\x52\x64\x8C\x46\x41"
+                         "\x1F\x48\x5F\x4F\xA2\x89\x36\x17"
+                         "\x20\xF8\x2F\x8F\x4B\xFA\xF2\xC0"
+                         "\x1E\x18\xA2\xF8\xB7\x6D\x98\xE3"
+                         "\x00\x14\x15\x59\xC1\x30\x64\xAF"
+                         "\xA8\x01\x38\xAB\xD4\x8B\xEC\x7C"
+                         "\x44\x9A\xC6\x2C\x2E\x2B\x2B\xF4"
+                         "\x02\x37\xC4\x69\xEF\x36\xC1\xF3"
+                         "\xA0\xFB\xFE\x29\xAD\x39\xCF\xD0"
+                         "\x51\x73\xA3\x22\x42\x41\xAB\xD2"
+                         "\x0F\x50\x14\xB9\x54\xD3\xD4\xFA"
+                         "\xBF\xC9\xBB\xCE\xC4\x1D\x2D\xAF"
+                         "\xC9\x3F\x07\x87\x42\x4B\x3A\x54"
+                         "\x34\x8E\x37\xA3\x03\x6F\x65\x66"
+                         "\xDB\x44\xC3\xE8\xD7\xDD\x7D\xDD"
+                         "\x61\xB4\x2B\x80\xA3\x98\x13\xF5"
+                         "\x5A\xD3\x34\x58\xC3\x6E\xF6\xB8"
+                         "\x0A\xC6\x50\x01\x8E\xD5\x6C\x7D"
+                         "\xFE\x16\xB6\xCF\xFC\x51\x40\xAE"
+                         "\xB3\x15\xAC\x90\x6F\x0B\x28\x3A"
+                         "\x60\x40\x38\x90\x20\x46\xC7\xB3"
+                         "\x0B\x12\x6D\x3B\x15\x14\xF9\xF4"
+                         "\x11\x41\x76\x6B\xB3\x60\x82\x3C"
+                         "\x84\xFB\x08\x2E\x92\x25\xCB\x79"
+                         "\x6F\x58\xC5\x94\x00\x00\x47\xB6"
+                         "\x9E\xDC\x0F\x29\x70\x46\x20\x76"
+                         "\x65\x75\x66\x5C\x00\x96\xB3\xE1"
+                         "\x0B\xA7\x11\x8B\x2E\x61\x4E\x45"
+                         "\x73\xFC\x91\xAB\x79\x41\x23\x14"
+                         "\x13\xB6\x72\x6C\x46\xB3\x03\x11"
+                         "\xE4\xF1\xEE\xC9\x7A\xCF\x96\x32"
+                         "\xB6\xF0\x8B\x97\xB4\xCF\x82\xB7"
+                         "\x15\x48\x44\x99\x09\xF6\xE0\xD7"
+                         "\xBC\xF1\x5B\x91\x4F\x30\x22\xA2"
+                         "\x45\xC4\x68\x55\xC2\xBE\xA7\xD2"
+                         "\x12\x53\x35\x9C\xF9\xE7\x35\x5D"
+                         "\x81\xE4\x86\x42\xC3\x58\xFB\xF0"
+                         "\x38\x9B\x8E\x5A\xEF\x83\x33\x0F"
+                         "\x00\x4E\x3F\x9F\xF5\x84\x62\xC4"
+                         "\x19\x35\x88\x22\x45\x59\x0E\x8F"
+                         "\xEC\x27\xDD\x4A\xA4\x1F\xBC\x41"
+                         "\x9B\x66\x8D\x32\xBA\x81\x34\x87"
+                         "\x0E\x74\x33\x30\x62\xB9\x89\xDF"
+                         "\xF9\xC5\xDD\x27\xB3\x39\xCB\xCB",
+               .ilen   = 496,
+               .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\x81\x18\xAF\x23\xBA"
+                         "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
+                         "\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
+                         "\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
+                         "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
+                         "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
+                         "\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
+                         "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
+                         "\x29\xC0\x57\xEE\x62\xF9\x90\x04"
+                         "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
+                         "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
+                         "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
+                         "\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
+                         "\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
+                         "\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
+                         "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
+                         "\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
+                         "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
+                         "\x57\xEE\x85\x1C\x90\x27\xBE\x32"
+                         "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
+                         "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
+                         "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
+                         "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
+                         "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
+                         "\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
+                         "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
+                         "\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
+                         "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
+                         "\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
+                         "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
+                         "\x69\x00\x74\x0B\xA2\x16\xAD\x44"
+                         "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
+                         "\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
+                         "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
+                         "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
+                         "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
+                         "\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
+                         "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
+                         "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
+                         "\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
+                         "\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
+                         "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
+                         "\x58\xEF\x86\x1D\x91\x28\xBF\x33"
+                         "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
+                         "\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
+                         "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
+                         "\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
+                         "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
+                         "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
+                         "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
+                         "\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
+                         "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
+                         "\x86\x1D\xB4\x28\xBF\x56\xED\x61"
+                         "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
+                         "\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
+                         "\xDC\x50\xE7\x7E\x15\x89\x20\xB7",
+               .rlen   = 496,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 496 - 16, 16 },
+       },
+};
+
+static struct cipher_testvec cast6_lrw_enc_tv_template[] = {
+       { /* Generated from TF test vectors */
+               .key    = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
+                         "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
+                         "\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 = "\x55\x25\x09\x8B\xB5\xD5\xF8\xBF"
+                         "\x37\x4A\xFE\x3C\x47\xD8\xE6\xEB"
+                         "\xCA\xA4\x9B\xB0\xAB\x6D\x64\xCA"
+                         "\x58\xB6\x73\xF0\xD7\x52\x34\xEF"
+                         "\xFB\x3E\x96\x81\xB7\x71\x34\xA4"
+                         "\x55\x20\xBE\x39\x5A\x2B\xF9\xD1"
+                         "\x65\x0B\xDA\xD3\x7E\xB3\xA6\xF7"
+                         "\x2E\x0B\x5A\x52\xDB\x39\x8C\x9B"
+                         "\x61\x17\x5F\xAF\xB6\x5A\xC8\x08"
+                         "\xA7\xB7\x2A\x11\x7C\x97\x38\x9D"
+                         "\x59\x0E\x66\x59\x5E\xD8\x8B\xCE"
+                         "\x70\xE0\xC3\x42\xB0\x8C\x0F\xBA"
+                         "\xB2\x0D\x81\xB6\xBE\x61\x1C\x2D"
+                         "\x7E\xEA\x91\x25\xAC\xEC\xF8\x28"
+                         "\x80\x1D\xF0\x30\xBA\x62\x77\x7D"
+                         "\xDB\x15\x69\xDF\xFA\x2A\x81\x64"
+                         "\x95\x5B\xA4\x7F\x3E\x4F\xE3\x30"
+                         "\xB0\x5C\xC2\x05\xF8\xF0\x29\xE7"
+                         "\x0A\xA0\x66\xB2\x5D\x0F\x39\x2B"
+                         "\xB4\xB3\x00\xA9\xD0\xAB\x63\x61"
+                         "\x5E\xDB\xFC\x11\x74\x25\x96\x65"
+                         "\xE8\xE2\x34\x57\x77\x15\x5E\x70"
+                         "\xFF\x10\x90\xC3\x64\xF0\x11\x0A"
+                         "\x63\x3A\xD3\x55\x92\x15\x4B\x0C"
+                         "\xC7\x08\x89\x17\x3B\x99\xAD\x63"
+                         "\xE7\x06\xDF\x52\xBC\x15\x64\x45"
+                         "\x9D\x7A\xFB\x69\xBC\x2D\x6E\xA9"
+                         "\x35\xD9\xD8\xF5\x0C\xC4\xA2\x23"
+                         "\x9C\x18\x8B\xA8\x8C\xFE\xF8\x0E"
+                         "\xBD\xAB\x60\x1A\x51\x17\x54\x27"
+                         "\xB6\xE8\xBE\x0F\xA9\xA5\x82\x19"
+                         "\x2F\x6F\x20\xA7\x47\xED\x74\x6C"
+                         "\x4E\xC1\xF8\x8C\x14\xF3\xBB\x1F"
+                         "\xED\x4D\x8F\x7C\x37\xEF\x19\xA1"
+                         "\x07\x16\xDE\x76\xCC\x5E\x94\x02"
+                         "\xFB\xBF\xE4\x81\x50\xCE\xFC\x0F"
+                         "\x9E\xCF\x3D\xF6\x67\x00\xBF\xA7"
+                         "\x6E\x21\x58\x36\x06\xDE\xB3\xD4"
+                         "\xA2\xFA\xD8\x4E\xE0\xB9\x7F\x23"
+                         "\x51\x21\x2B\x32\x68\xAA\xF8\xA8"
+                         "\x93\x08\xB5\x6D\xE6\x43\x2C\xB7"
+                         "\x31\xB2\x0F\xD0\xA2\x51\xC0\x25"
+                         "\x30\xC7\x10\x3F\x97\x27\x01\x8E"
+                         "\xFA\xD8\x4F\x78\xD8\x2E\x1D\xEB"
+                         "\xA1\x37\x52\x0F\x7B\x5E\x87\xA8"
+                         "\x22\xE2\xE6\x92\xA7\x5F\x11\x32"
+                         "\xCC\x93\x34\xFC\xD1\x7E\xAE\x54"
+                         "\xBC\x6A\x1B\x91\xD1\x2E\x21\xEC"
+                         "\x5D\xF1\xC4\xF1\x55\x20\xBF\xE5"
+                         "\x96\x3D\x69\x91\x20\x4E\xF2\x61"
+                         "\xDA\x77\xFE\xEE\xC3\x74\x57\x2A"
+                         "\x78\x39\xB0\xE0\xCF\x12\x56\xD6"
+                         "\x05\xDC\xF9\x19\x66\x44\x1D\xF9"
+                         "\x82\x37\xD4\xC2\x60\xB6\x31\xDF"
+                         "\x0C\xAF\xBC\x8B\x55\x9A\xC8\x2D"
+                         "\xAB\xA7\x88\x7B\x41\xE8\x29\xC9"
+                         "\x9B\x8D\xA7\x00\x86\x25\xB6\x14"
+                         "\xF5\x13\x73\xD7\x4B\x6B\x83\xF3"
+                         "\xAF\x96\x00\xE4\xB7\x3C\x65\xA6"
+                         "\x15\xB7\x94\x7D\x4E\x70\x4C\x75"
+                         "\xF3\xB4\x02\xA9\x17\x1C\x7A\x0A"
+                         "\xC0\xD5\x33\x11\x56\xDE\xDC\xF5"
+                         "\x8D\xD9\xCD\x3B\x22\x67\x18\xC7"
+                         "\xC4\xF5\x99\x61\xBC\xBB\x5B\x46",
+               .rlen   = 512,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 512 - 16, 16 },
+       },
+};
+
+static struct cipher_testvec cast6_lrw_dec_tv_template[] = {
+       { /* Generated from TF test vectors */
+               .key    = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
+                         "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
+                         "\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  = "\x55\x25\x09\x8B\xB5\xD5\xF8\xBF"
+                         "\x37\x4A\xFE\x3C\x47\xD8\xE6\xEB"
+                         "\xCA\xA4\x9B\xB0\xAB\x6D\x64\xCA"
+                         "\x58\xB6\x73\xF0\xD7\x52\x34\xEF"
+                         "\xFB\x3E\x96\x81\xB7\x71\x34\xA4"
+                         "\x55\x20\xBE\x39\x5A\x2B\xF9\xD1"
+                         "\x65\x0B\xDA\xD3\x7E\xB3\xA6\xF7"
+                         "\x2E\x0B\x5A\x52\xDB\x39\x8C\x9B"
+                         "\x61\x17\x5F\xAF\xB6\x5A\xC8\x08"
+                         "\xA7\xB7\x2A\x11\x7C\x97\x38\x9D"
+                         "\x59\x0E\x66\x59\x5E\xD8\x8B\xCE"
+                         "\x70\xE0\xC3\x42\xB0\x8C\x0F\xBA"
+                         "\xB2\x0D\x81\xB6\xBE\x61\x1C\x2D"
+                         "\x7E\xEA\x91\x25\xAC\xEC\xF8\x28"
+                         "\x80\x1D\xF0\x30\xBA\x62\x77\x7D"
+                         "\xDB\x15\x69\xDF\xFA\x2A\x81\x64"
+                         "\x95\x5B\xA4\x7F\x3E\x4F\xE3\x30"
+                         "\xB0\x5C\xC2\x05\xF8\xF0\x29\xE7"
+                         "\x0A\xA0\x66\xB2\x5D\x0F\x39\x2B"
+                         "\xB4\xB3\x00\xA9\xD0\xAB\x63\x61"
+                         "\x5E\xDB\xFC\x11\x74\x25\x96\x65"
+                         "\xE8\xE2\x34\x57\x77\x15\x5E\x70"
+                         "\xFF\x10\x90\xC3\x64\xF0\x11\x0A"
+                         "\x63\x3A\xD3\x55\x92\x15\x4B\x0C"
+                         "\xC7\x08\x89\x17\x3B\x99\xAD\x63"
+                         "\xE7\x06\xDF\x52\xBC\x15\x64\x45"
+                         "\x9D\x7A\xFB\x69\xBC\x2D\x6E\xA9"
+                         "\x35\xD9\xD8\xF5\x0C\xC4\xA2\x23"
+                         "\x9C\x18\x8B\xA8\x8C\xFE\xF8\x0E"
+                         "\xBD\xAB\x60\x1A\x51\x17\x54\x27"
+                         "\xB6\xE8\xBE\x0F\xA9\xA5\x82\x19"
+                         "\x2F\x6F\x20\xA7\x47\xED\x74\x6C"
+                         "\x4E\xC1\xF8\x8C\x14\xF3\xBB\x1F"
+                         "\xED\x4D\x8F\x7C\x37\xEF\x19\xA1"
+                         "\x07\x16\xDE\x76\xCC\x5E\x94\x02"
+                         "\xFB\xBF\xE4\x81\x50\xCE\xFC\x0F"
+                         "\x9E\xCF\x3D\xF6\x67\x00\xBF\xA7"
+                         "\x6E\x21\x58\x36\x06\xDE\xB3\xD4"
+                         "\xA2\xFA\xD8\x4E\xE0\xB9\x7F\x23"
+                         "\x51\x21\x2B\x32\x68\xAA\xF8\xA8"
+                         "\x93\x08\xB5\x6D\xE6\x43\x2C\xB7"
+                         "\x31\xB2\x0F\xD0\xA2\x51\xC0\x25"
+                         "\x30\xC7\x10\x3F\x97\x27\x01\x8E"
+                         "\xFA\xD8\x4F\x78\xD8\x2E\x1D\xEB"
+                         "\xA1\x37\x52\x0F\x7B\x5E\x87\xA8"
+                         "\x22\xE2\xE6\x92\xA7\x5F\x11\x32"
+                         "\xCC\x93\x34\xFC\xD1\x7E\xAE\x54"
+                         "\xBC\x6A\x1B\x91\xD1\x2E\x21\xEC"
+                         "\x5D\xF1\xC4\xF1\x55\x20\xBF\xE5"
+                         "\x96\x3D\x69\x91\x20\x4E\xF2\x61"
+                         "\xDA\x77\xFE\xEE\xC3\x74\x57\x2A"
+                         "\x78\x39\xB0\xE0\xCF\x12\x56\xD6"
+                         "\x05\xDC\xF9\x19\x66\x44\x1D\xF9"
+                         "\x82\x37\xD4\xC2\x60\xB6\x31\xDF"
+                         "\x0C\xAF\xBC\x8B\x55\x9A\xC8\x2D"
+                         "\xAB\xA7\x88\x7B\x41\xE8\x29\xC9"
+                         "\x9B\x8D\xA7\x00\x86\x25\xB6\x14"
+                         "\xF5\x13\x73\xD7\x4B\x6B\x83\xF3"
+                         "\xAF\x96\x00\xE4\xB7\x3C\x65\xA6"
+                         "\x15\xB7\x94\x7D\x4E\x70\x4C\x75"
+                         "\xF3\xB4\x02\xA9\x17\x1C\x7A\x0A"
+                         "\xC0\xD5\x33\x11\x56\xDE\xDC\xF5"
+                         "\x8D\xD9\xCD\x3B\x22\x67\x18\xC7"
+                         "\xC4\xF5\x99\x61\xBC\xBB\x5B\x46",
+               .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,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 512 - 16, 16 },
+       },
+};
+
+static struct cipher_testvec cast6_xts_enc_tv_template[] = {
+       { /* Generated from TF test vectors */
+               .key    = "\x27\x18\x28\x18\x28\x45\x90\x45"
+                         "\x23\x53\x60\x28\x74\x71\x35\x26"
+                         "\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 = "\xDE\x6F\x22\xA5\xE8\x39\xE8\x78"
+                         "\x88\x5A\x4F\x8D\x82\x76\x52\x6D"
+                         "\xB2\x41\x16\xF4\x2B\xA6\xEB\xF6"
+                         "\xE2\xC5\x62\x8D\x61\xA1\x01\xED"
+                         "\xD9\x38\x01\xC1\x43\x63\x4E\x88"
+                         "\xC9\x4B\x5A\x88\x80\xB7\x5C\x71"
+                         "\x47\xEE\x11\xD8\xB7\x2D\x5D\x13"
+                         "\x1A\xB1\x68\x5B\x61\xA7\xA9\x81"
+                         "\x8B\x83\xA1\x6A\xAA\x36\xD6\xB6"
+                         "\x60\x54\x09\x32\xFE\x6A\x76\x2E"
+                         "\x28\xFF\xD5\xD6\xDD\x1D\x45\x7D"
+                         "\xF0\x8B\xF3\x32\x4E\x6C\x12\xCB"
+                         "\xB8\x25\x70\xF8\x40\xBC\x90\x1B"
+                         "\x11\xC3\x59\xAF\xF0\x2F\x92\xDD"
+                         "\xD3\x3B\xCF\x60\xA1\x78\x94\x57"
+                         "\xAF\x76\xC1\x67\xA6\x3C\xCD\x98"
+                         "\xB1\xF7\x27\xB9\xA3\xBD\x10\xEA"
+                         "\xCD\x8B\xC2\xF2\x14\xF2\xB2\x67"
+                         "\x05\xDD\x1D\x58\x6E\x2F\x95\x08"
+                         "\x3A\xF8\x78\x76\x82\x56\xA7\xEC"
+                         "\x51\x4B\x85\x77\xC2\x4C\x4A\x34"
+                         "\x71\x38\x17\x91\x44\xE8\xFC\x65"
+                         "\x99\x0D\x52\x91\xEE\xF8\xEF\x27"
+                         "\x2A\x9E\x6E\x78\xC4\x26\x87\xF4"
+                         "\x8A\xF0\x2D\x04\xE8\x14\x92\x5D"
+                         "\x59\x22\x9B\x29\x5C\x18\xF0\xC3"
+                         "\x47\xF3\x76\xD8\xE4\xF3\x1B\xD1"
+                         "\x70\xA3\x0D\xB5\x70\x02\x1D\xA3"
+                         "\x91\x3B\x49\x73\x18\xAB\xD4\xC9"
+                         "\xC3\x1E\xEF\x1F\xFE\xD5\x59\x8A"
+                         "\xD7\xF6\xC9\x71\x67\x79\xD7\x0E"
+                         "\xBE\x1F\x8E\xEC\x55\x7E\x4F\x24"
+                         "\xE6\x87\xEA\xFE\x96\x25\x67\x8E"
+                         "\x93\x03\xFA\xFF\xCE\xAF\xB2\x3C"
+                         "\x6F\xEB\x57\xFB\xD3\x28\x87\xA9"
+                         "\xCE\xC2\xF5\x9C\xC6\x67\xB5\x97"
+                         "\x49\xF7\x04\xCB\xEF\x84\x98\x33"
+                         "\xAF\x38\xD3\x04\x1C\x24\x71\x38"
+                         "\xC7\x71\xDD\x43\x0D\x12\x4A\x18"
+                         "\xBA\xC4\xAF\xBA\xB2\x5B\xEB\x95"
+                         "\x02\x43\x5D\xCE\x19\xCC\xCD\x66"
+                         "\x91\x0B\x8C\x7F\x51\xC4\xBF\x3C"
+                         "\x8B\xF1\xCC\xAA\x29\xD7\x87\xCB"
+                         "\x3E\xC5\xF3\xC9\x75\xE8\xA3\x5B"
+                         "\x30\x45\xA9\xB7\xAF\x80\x64\x6F"
+                         "\x75\x4A\xA7\xC0\x6D\x19\x6B\xDE"
+                         "\x17\xDE\x6D\xEA\x87\x9F\x95\xAE"
+                         "\xF5\x3C\xEE\x54\xB8\x27\x84\xF8"
+                         "\x97\xA3\xE1\x6F\x38\x24\x34\x88"
+                         "\xCE\xBD\x32\x52\xE0\x00\x6C\x94"
+                         "\xC9\xD7\x5D\x37\x81\x33\x2E\x7F"
+                         "\x4F\x7E\x2E\x0D\x94\xBD\xEA\x59"
+                         "\x34\x39\xA8\x35\x12\xB7\xBC\xAC"
+                         "\xEA\x52\x9C\x78\x02\x6D\x92\x36"
+                         "\xFB\x59\x2B\xA4\xEA\x7B\x1B\x83"
+                         "\xE1\x4D\x5E\x2A\x7E\x92\xB1\x64"
+                         "\xDE\xE0\x27\x4B\x0A\x6F\x4C\xE3"
+                         "\xB0\xEB\x31\xE4\x69\x95\xAB\x35"
+                         "\x8B\x2C\xF5\x6B\x7F\xF1\xA2\x82"
+                         "\xF8\xD9\x47\x82\xA9\x82\x03\x91"
+                         "\x69\x1F\xBE\x4C\xE7\xC7\x34\x2F"
+                         "\x45\x72\x80\x17\x81\xBD\x9D\x62"
+                         "\xA1\xAC\xE8\xCF\xC6\x74\xCF\xDC"
+                         "\x22\x60\x4E\xE8\xA4\x5D\x85\xB9",
+               .rlen   = 512,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 512 - 16, 16 },
+       },
+};
+
+static struct cipher_testvec cast6_xts_dec_tv_template[] = {
+       { /* Generated from TF test vectors */
+               .key    = "\x27\x18\x28\x18\x28\x45\x90\x45"
+                         "\x23\x53\x60\x28\x74\x71\x35\x26"
+                         "\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  = "\xDE\x6F\x22\xA5\xE8\x39\xE8\x78"
+                         "\x88\x5A\x4F\x8D\x82\x76\x52\x6D"
+                         "\xB2\x41\x16\xF4\x2B\xA6\xEB\xF6"
+                         "\xE2\xC5\x62\x8D\x61\xA1\x01\xED"
+                         "\xD9\x38\x01\xC1\x43\x63\x4E\x88"
+                         "\xC9\x4B\x5A\x88\x80\xB7\x5C\x71"
+                         "\x47\xEE\x11\xD8\xB7\x2D\x5D\x13"
+                         "\x1A\xB1\x68\x5B\x61\xA7\xA9\x81"
+                         "\x8B\x83\xA1\x6A\xAA\x36\xD6\xB6"
+                         "\x60\x54\x09\x32\xFE\x6A\x76\x2E"
+                         "\x28\xFF\xD5\xD6\xDD\x1D\x45\x7D"
+                         "\xF0\x8B\xF3\x32\x4E\x6C\x12\xCB"
+                         "\xB8\x25\x70\xF8\x40\xBC\x90\x1B"
+                         "\x11\xC3\x59\xAF\xF0\x2F\x92\xDD"
+                         "\xD3\x3B\xCF\x60\xA1\x78\x94\x57"
+                         "\xAF\x76\xC1\x67\xA6\x3C\xCD\x98"
+                         "\xB1\xF7\x27\xB9\xA3\xBD\x10\xEA"
+                         "\xCD\x8B\xC2\xF2\x14\xF2\xB2\x67"
+                         "\x05\xDD\x1D\x58\x6E\x2F\x95\x08"
+                         "\x3A\xF8\x78\x76\x82\x56\xA7\xEC"
+                         "\x51\x4B\x85\x77\xC2\x4C\x4A\x34"
+                         "\x71\x38\x17\x91\x44\xE8\xFC\x65"
+                         "\x99\x0D\x52\x91\xEE\xF8\xEF\x27"
+                         "\x2A\x9E\x6E\x78\xC4\x26\x87\xF4"
+                         "\x8A\xF0\x2D\x04\xE8\x14\x92\x5D"
+                         "\x59\x22\x9B\x29\x5C\x18\xF0\xC3"
+                         "\x47\xF3\x76\xD8\xE4\xF3\x1B\xD1"
+                         "\x70\xA3\x0D\xB5\x70\x02\x1D\xA3"
+                         "\x91\x3B\x49\x73\x18\xAB\xD4\xC9"
+                         "\xC3\x1E\xEF\x1F\xFE\xD5\x59\x8A"
+                         "\xD7\xF6\xC9\x71\x67\x79\xD7\x0E"
+                         "\xBE\x1F\x8E\xEC\x55\x7E\x4F\x24"
+                         "\xE6\x87\xEA\xFE\x96\x25\x67\x8E"
+                         "\x93\x03\xFA\xFF\xCE\xAF\xB2\x3C"
+                         "\x6F\xEB\x57\xFB\xD3\x28\x87\xA9"
+                         "\xCE\xC2\xF5\x9C\xC6\x67\xB5\x97"
+                         "\x49\xF7\x04\xCB\xEF\x84\x98\x33"
+                         "\xAF\x38\xD3\x04\x1C\x24\x71\x38"
+                         "\xC7\x71\xDD\x43\x0D\x12\x4A\x18"
+                         "\xBA\xC4\xAF\xBA\xB2\x5B\xEB\x95"
+                         "\x02\x43\x5D\xCE\x19\xCC\xCD\x66"
+                         "\x91\x0B\x8C\x7F\x51\xC4\xBF\x3C"
+                         "\x8B\xF1\xCC\xAA\x29\xD7\x87\xCB"
+                         "\x3E\xC5\xF3\xC9\x75\xE8\xA3\x5B"
+                         "\x30\x45\xA9\xB7\xAF\x80\x64\x6F"
+                         "\x75\x4A\xA7\xC0\x6D\x19\x6B\xDE"
+                         "\x17\xDE\x6D\xEA\x87\x9F\x95\xAE"
+                         "\xF5\x3C\xEE\x54\xB8\x27\x84\xF8"
+                         "\x97\xA3\xE1\x6F\x38\x24\x34\x88"
+                         "\xCE\xBD\x32\x52\xE0\x00\x6C\x94"
+                         "\xC9\xD7\x5D\x37\x81\x33\x2E\x7F"
+                         "\x4F\x7E\x2E\x0D\x94\xBD\xEA\x59"
+                         "\x34\x39\xA8\x35\x12\xB7\xBC\xAC"
+                         "\xEA\x52\x9C\x78\x02\x6D\x92\x36"
+                         "\xFB\x59\x2B\xA4\xEA\x7B\x1B\x83"
+                         "\xE1\x4D\x5E\x2A\x7E\x92\xB1\x64"
+                         "\xDE\xE0\x27\x4B\x0A\x6F\x4C\xE3"
+                         "\xB0\xEB\x31\xE4\x69\x95\xAB\x35"
+                         "\x8B\x2C\xF5\x6B\x7F\xF1\xA2\x82"
+                         "\xF8\xD9\x47\x82\xA9\x82\x03\x91"
+                         "\x69\x1F\xBE\x4C\xE7\xC7\x34\x2F"
+                         "\x45\x72\x80\x17\x81\xBD\x9D\x62"
+                         "\xA1\xAC\xE8\xCF\xC6\x74\xCF\xDC"
+                         "\x22\x60\x4E\xE8\xA4\x5D\x85\xB9",
+               .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     = 2,
+               .tap    = { 512 - 16, 16 },
+       },
+};
+
+
+/*
+ * AES test vectors.
+ */
+#define AES_ENC_TEST_VECTORS 3
+#define AES_DEC_TEST_VECTORS 3
+#define AES_CBC_ENC_TEST_VECTORS 4
+#define AES_CBC_DEC_TEST_VECTORS 4
+#define HMAC_SHA1_AES_CBC_ENC_TEST_VECTORS 7
+#define HMAC_SHA256_AES_CBC_ENC_TEST_VECTORS 7
+#define HMAC_SHA512_AES_CBC_ENC_TEST_VECTORS 7
+#define AES_LRW_ENC_TEST_VECTORS 8
+#define AES_LRW_DEC_TEST_VECTORS 8
+#define AES_XTS_ENC_TEST_VECTORS 5
+#define AES_XTS_DEC_TEST_VECTORS 5
+#define AES_CTR_ENC_TEST_VECTORS 3
+#define AES_CTR_DEC_TEST_VECTORS 3
+#define AES_OFB_ENC_TEST_VECTORS 1
+#define AES_OFB_DEC_TEST_VECTORS 1
+#define AES_CTR_3686_ENC_TEST_VECTORS 7
+#define AES_CTR_3686_DEC_TEST_VECTORS 6
+#define AES_GCM_ENC_TEST_VECTORS 9
+#define AES_GCM_DEC_TEST_VECTORS 8
+#define AES_GCM_4106_ENC_TEST_VECTORS 7
+#define AES_GCM_4106_DEC_TEST_VECTORS 7
+#define AES_CCM_ENC_TEST_VECTORS 7
+#define AES_CCM_DEC_TEST_VECTORS 7
+#define AES_CCM_4309_ENC_TEST_VECTORS 7
+#define AES_CCM_4309_DEC_TEST_VECTORS 10
+
+static struct cipher_testvec aes_enc_tv_template[] = {
+       { /* From FIPS-197 */
+               .key    = "\x00\x01\x02\x03\x04\x05\x06\x07"
+                         "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
+               .klen   = 16,
+               .input  = "\x00\x11\x22\x33\x44\x55\x66\x77"
+                         "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
+               .ilen   = 16,
+               .result = "\x69\xc4\xe0\xd8\x6a\x7b\x04\x30"
+                         "\xd8\xcd\xb7\x80\x70\xb4\xc5\x5a",
+               .rlen   = 16,
+       }, {
+               .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  = "\x00\x11\x22\x33\x44\x55\x66\x77"
+                         "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
+               .ilen   = 16,
+               .result = "\xdd\xa9\x7c\xa4\x86\x4c\xdf\xe0"
+                         "\x6e\xaf\x70\xa0\xec\x0d\x71\x91",
+               .rlen   = 16,
+       }, {
+               .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  = "\x00\x11\x22\x33\x44\x55\x66\x77"
+                         "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
+               .ilen   = 16,
+               .result = "\x8e\xa2\xb7\xca\x51\x67\x45\xbf"
+                         "\xea\xfc\x49\x90\x4b\x49\x60\x89",
+               .rlen   = 16,
+       },
+};
+
+static struct cipher_testvec aes_dec_tv_template[] = {
+       { /* From FIPS-197 */
+               .key    = "\x00\x01\x02\x03\x04\x05\x06\x07"
+                         "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
+               .klen   = 16,
+               .input  = "\x69\xc4\xe0\xd8\x6a\x7b\x04\x30"
+                         "\xd8\xcd\xb7\x80\x70\xb4\xc5\x5a",
+               .ilen   = 16,
+               .result = "\x00\x11\x22\x33\x44\x55\x66\x77"
+                         "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
+               .rlen   = 16,
+       }, {
+               .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  = "\xdd\xa9\x7c\xa4\x86\x4c\xdf\xe0"
+                         "\x6e\xaf\x70\xa0\xec\x0d\x71\x91",
+               .ilen   = 16,
+               .result = "\x00\x11\x22\x33\x44\x55\x66\x77"
+                         "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
+               .rlen   = 16,
+       }, {
+               .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  = "\x8e\xa2\xb7\xca\x51\x67\x45\xbf"
+                         "\xea\xfc\x49\x90\x4b\x49\x60\x89",
+               .ilen   = 16,
+               .result = "\x00\x11\x22\x33\x44\x55\x66\x77"
+                         "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
+               .rlen   = 16,
+       },
+};
+
+static struct cipher_testvec aes_cbc_enc_tv_template[] = {
+       { /* From RFC 3602 */
+               .key    = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
+                         "\x51\x2e\x03\xd5\x34\x12\x00\x06",
+               .klen   = 16,
+               .iv     = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
+                         "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
+               .input  = "Single block msg",
+               .ilen   = 16,
+               .result = "\xe3\x53\x77\x9c\x10\x79\xae\xb8"
+                         "\x27\x08\x94\x2d\xbe\x77\x18\x1a",
+               .rlen   = 16,
+       }, {
+               .key    = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
+                         "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
+               .klen   = 16,
+               .iv     = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
+                         "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
+               .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",
+               .ilen   = 32,
+               .result = "\xd2\x96\xcd\x94\xc2\xcc\xcf\x8a"
+                         "\x3a\x86\x30\x28\xb5\xe1\xdc\x0a"
+                         "\x75\x86\x60\x2d\x25\x3c\xff\xf9"
+                         "\x1b\x82\x66\xbe\xa6\xd6\x1a\xb1",
+               .rlen   = 32,
+       }, { /* From NIST SP800-38A */
+               .key    = "\x8e\x73\xb0\xf7\xda\x0e\x64\x52"
+                         "\xc8\x10\xf3\x2b\x80\x90\x79\xe5"
+                         "\x62\xf8\xea\xd2\x52\x2c\x6b\x7b",
+               .klen   = 24,
+               .iv     = "\x00\x01\x02\x03\x04\x05\x06\x07"
+                         "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
+               .input  = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
+                         "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
+                         "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
+                         "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
+                         "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
+                         "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
+                         "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
+                         "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
+               .ilen   = 64,
+               .result = "\x4f\x02\x1d\xb2\x43\xbc\x63\x3d"
+                         "\x71\x78\x18\x3a\x9f\xa0\x71\xe8"
+                         "\xb4\xd9\xad\xa9\xad\x7d\xed\xf4"
+                         "\xe5\xe7\x38\x76\x3f\x69\x14\x5a"
+                         "\x57\x1b\x24\x20\x12\xfb\x7a\xe0"
+                         "\x7f\xa9\xba\xac\x3d\xf1\x02\xe0"
+                         "\x08\xb0\xe2\x79\x88\x59\x88\x81"
+                         "\xd9\x20\xa9\xe6\x4f\x56\x15\xcd",
+               .rlen   = 64,
+       }, {
+               .key    = "\x60\x3d\xeb\x10\x15\xca\x71\xbe"
+                         "\x2b\x73\xae\xf0\x85\x7d\x77\x81"
+                         "\x1f\x35\x2c\x07\x3b\x61\x08\xd7"
+                         "\x2d\x98\x10\xa3\x09\x14\xdf\xf4",
+               .klen   = 32,
+               .iv     = "\x00\x01\x02\x03\x04\x05\x06\x07"
+                         "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
+               .input  = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
+                         "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
+                         "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
+                         "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
+                         "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
+                         "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
+                         "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
+                         "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
+               .ilen   = 64,
+               .result = "\xf5\x8c\x4c\x04\xd6\xe5\xf1\xba"
+                         "\x77\x9e\xab\xfb\x5f\x7b\xfb\xd6"
+                         "\x9c\xfc\x4e\x96\x7e\xdb\x80\x8d"
+                         "\x67\x9f\x77\x7b\xc6\x70\x2c\x7d"
+                         "\x39\xf2\x33\x69\xa9\xd9\xba\xcf"
+                         "\xa5\x30\xe2\x63\x04\x23\x14\x61"
+                         "\xb2\xeb\x05\xe2\xc3\x9b\xe9\xfc"
+                         "\xda\x6c\x19\x07\x8c\x6a\x9d\x1b",
+               .rlen   = 64,
+       },
+};
+
+static struct cipher_testvec aes_cbc_dec_tv_template[] = {
+       { /* From RFC 3602 */
+               .key    = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
+                         "\x51\x2e\x03\xd5\x34\x12\x00\x06",
+               .klen   = 16,
+               .iv     = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
+                         "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
+               .input  = "\xe3\x53\x77\x9c\x10\x79\xae\xb8"
+                         "\x27\x08\x94\x2d\xbe\x77\x18\x1a",
+               .ilen   = 16,
+               .result = "Single block msg",
+               .rlen   = 16,
+       }, {
+               .key    = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
+                         "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
+               .klen   = 16,
+               .iv     = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
+                         "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
+               .input  = "\xd2\x96\xcd\x94\xc2\xcc\xcf\x8a"
+                         "\x3a\x86\x30\x28\xb5\xe1\xdc\x0a"
+                         "\x75\x86\x60\x2d\x25\x3c\xff\xf9"
+                         "\x1b\x82\x66\xbe\xa6\xd6\x1a\xb1",
+               .ilen   = 32,
+               .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",
+               .rlen   = 32,
+       }, { /* From NIST SP800-38A */
+               .key    = "\x8e\x73\xb0\xf7\xda\x0e\x64\x52"
+                         "\xc8\x10\xf3\x2b\x80\x90\x79\xe5"
+                         "\x62\xf8\xea\xd2\x52\x2c\x6b\x7b",
+               .klen   = 24,
+               .iv     = "\x00\x01\x02\x03\x04\x05\x06\x07"
+                         "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
+               .input  = "\x4f\x02\x1d\xb2\x43\xbc\x63\x3d"
+                         "\x71\x78\x18\x3a\x9f\xa0\x71\xe8"
+                         "\xb4\xd9\xad\xa9\xad\x7d\xed\xf4"
+                         "\xe5\xe7\x38\x76\x3f\x69\x14\x5a"
+                         "\x57\x1b\x24\x20\x12\xfb\x7a\xe0"
+                         "\x7f\xa9\xba\xac\x3d\xf1\x02\xe0"
+                         "\x08\xb0\xe2\x79\x88\x59\x88\x81"
+                         "\xd9\x20\xa9\xe6\x4f\x56\x15\xcd",
+               .ilen   = 64,
+               .result = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
+                         "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
+                         "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
+                         "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
+                         "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
+                         "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
+                         "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
+                         "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
+               .rlen   = 64,
+       }, {
+               .key    = "\x60\x3d\xeb\x10\x15\xca\x71\xbe"
+                         "\x2b\x73\xae\xf0\x85\x7d\x77\x81"
+                         "\x1f\x35\x2c\x07\x3b\x61\x08\xd7"
+                         "\x2d\x98\x10\xa3\x09\x14\xdf\xf4",
+               .klen   = 32,
+               .iv     = "\x00\x01\x02\x03\x04\x05\x06\x07"
+                         "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
+               .input  = "\xf5\x8c\x4c\x04\xd6\xe5\xf1\xba"
+                         "\x77\x9e\xab\xfb\x5f\x7b\xfb\xd6"
+                         "\x9c\xfc\x4e\x96\x7e\xdb\x80\x8d"
+                         "\x67\x9f\x77\x7b\xc6\x70\x2c\x7d"
+                         "\x39\xf2\x33\x69\xa9\xd9\xba\xcf"
+                         "\xa5\x30\xe2\x63\x04\x23\x14\x61"
+                         "\xb2\xeb\x05\xe2\xc3\x9b\xe9\xfc"
+                         "\xda\x6c\x19\x07\x8c\x6a\x9d\x1b",
+               .ilen   = 64,
+               .result = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
+                         "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
+                         "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
+                         "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
+                         "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
+                         "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
+                         "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
+                         "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
+               .rlen   = 64,
+       },
+};
+
+static struct aead_testvec hmac_sha1_aes_cbc_enc_tv_template[] = {
+       { /* RFC 3602 Case 1 */
+#ifdef __LITTLE_ENDIAN
+               .key    = "\x08\x00"            /* rta length */
+                         "\x01\x00"            /* rta type */
+#else
+               .key    = "\x00\x08"            /* rta length */
+                         "\x00\x01"            /* rta type */
+#endif
+                         "\x00\x00\x00\x10"    /* enc key length */
+                         "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00"
+                         "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
+                         "\x51\x2e\x03\xd5\x34\x12\x00\x06",
+               .klen   = 8 + 20 + 16,
                .iv     = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
                          "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
                .input  = "Single block msg",
@@ -8313,6 +10668,9 @@ static struct cipher_testvec aes_lrw_enc_tv_template[] = {
                          "\xcd\x7e\x2b\x5d\x43\xea\x42\xe7"
                          "\x74\x3f\x7d\x58\x88\x75\xde\x3e",
                .rlen   = 512,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 512 - 16, 16 },
        }
 };
 
@@ -8564,6 +10922,9 @@ static struct cipher_testvec aes_lrw_dec_tv_template[] = {
                          "\xe9\x2e\xc4\x29\x0f\x84\xdb\xc4"
                          "\x21\xc4\xc2\x75\x67\x89\x37\x0a",
                .rlen   = 512,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 512 - 16, 16 },
        }
 };
 
@@ -8905,6 +11266,9 @@ static struct cipher_testvec aes_xts_enc_tv_template[] = {
                          "\xc4\xf3\x6f\xfd\xa9\xfc\xea\x70"
                          "\xb9\xc6\xe6\x93\xe1\x48\xc1\x51",
                .rlen   = 512,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 512 - 16, 16 },
        }
 };
 
@@ -9246,7 +11610,9 @@ static struct cipher_testvec aes_xts_dec_tv_template[] = {
                          "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
                          "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
                .rlen   = 512,
-
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 512 - 16, 16 },
        }
 };
 
@@ -11691,494 +14057,1344 @@ static struct aead_testvec aes_ccm_rfc4309_enc_tv_template[] = {
                          "\xa4\xbe\xd9\xf2\x1a\x6d\x22\xa8",
                .rlen   = 48,
        }, {
-               .key    = "\x1e\x2c\x7e\x01\x41\x9a\xef\xc0"
-                         "\x0d\x58\x96\x6e\x5c\xa2\x4b\xd3"
-                         "\x4f\xa3\x19",
-               .klen   = 19,
-               .iv     = "\xd3\x01\x5a\xd8\x30\x60\x15\x56",
-               .assoc  = "\xda\xe6\x28\x9c\x45\x2d\xfd\x63"
-                         "\x5e\xda\x4c\xb6\xe6\xfc\xf9\xb7"
-                         "\x0c\x56\xcb\xe4\xe0\x05\x7a\xe1"
-                         "\x0a\x63\x09\x78\xbc\x2c\x55\xde",
+               .key    = "\x1e\x2c\x7e\x01\x41\x9a\xef\xc0"
+                         "\x0d\x58\x96\x6e\x5c\xa2\x4b\xd3"
+                         "\x4f\xa3\x19",
+               .klen   = 19,
+               .iv     = "\xd3\x01\x5a\xd8\x30\x60\x15\x56",
+               .assoc  = "\xda\xe6\x28\x9c\x45\x2d\xfd\x63"
+                         "\x5e\xda\x4c\xb6\xe6\xfc\xf9\xb7"
+                         "\x0c\x56\xcb\xe4\xe0\x05\x7a\xe1"
+                         "\x0a\x63\x09\x78\xbc\x2c\x55\xde",
+               .alen   = 32,
+               .input  = "\x87\xa3\x36\xfd\x96\xb3\x93\x78"
+                         "\xa9\x28\x63\xba\x12\xa3\x14\x85"
+                         "\x57\x1e\x06\xc9\x7b\x21\xef\x76"
+                         "\x7f\x38\x7e\x8e\x29\xa4\x3e\x7e",
+               .ilen   = 32,
+               .result = "\x8a\x1e\x11\xf0\x02\x6b\xe2\x19"
+                         "\xfc\x70\xc4\x6d\x8e\xb7\x99\xab"
+                         "\xc5\x4b\xa2\xac\xd3\xf3\x48\xff"
+                         "\x3b\xb5\xce\x53\xef\xde\xbb\x02"
+                         "\xa9\x86\x15\x6c\x13\xfe\xda\x0a"
+                         "\x22\xb8\x29\x3d\xd8\x39\x9a\x23",
+               .rlen   = 48,
+       }, {
+               .key    = "\xf4\x6b\xc2\x75\x62\xfe\xb4\xe1"
+                         "\xa3\xf0\xff\xdd\x4e\x4b\x12\x75"
+                         "\x53\x14\x73\x66\x8d\x88\xf6\x80"
+                         "\xa0\x20\x35",
+               .klen   = 27,
+               .iv     = "\x26\xf2\x21\x8d\x50\x20\xda\xe2",
+               .assoc  = "\x5b\x9e\x13\x67\x02\x5e\xef\xc1"
+                         "\x6c\xf9\xd7\x1e\x52\x8f\x7a\x47"
+                         "\xe9\xd4\xcf\x20\x14\x6e\xf0\x2d"
+                         "\xd8\x9e\x2b\x56\x10\x23\x56\xe7",
+               .alen   = 32,
+               .ilen   = 0,
+               .result = "\x36\xea\x7a\x70\x08\xdc\x6a\xbc"
+                         "\xad\x0c\x7a\x63\xf6\x61\xfd\x9b",
+               .rlen   = 16,
+       }, {
+               .key    = "\x56\xdf\x5c\x8f\x26\x3f\x0e\x42"
+                         "\xef\x7a\xd3\xce\xfc\x84\x60\x62"
+                         "\xca\xb4\x40\xaf\x5f\xc9\xc9\x01"
+                         "\xd6\x3c\x8c",
+               .klen   = 27,
+               .iv     = "\x86\x84\xb6\xcd\xef\x09\x2e\x94",
+               .assoc  = "\x02\x65\x78\x3c\xe9\x21\x30\x91"
+                         "\xb1\xb9\xda\x76\x9a\x78\x6d\x95"
+                         "\xf2\x88\x32\xa3\xf2\x50\xcb\x4c"
+                         "\xe3\x00\x73\x69\x84\x69\x87\x79",
+               .alen   = 32,
+               .input  = "\x9f\xd2\x02\x4b\x52\x49\x31\x3c"
+                         "\x43\x69\x3a\x2d\x8e\x70\xad\x7e"
+                         "\xe0\xe5\x46\x09\x80\x89\x13\xb2"
+                         "\x8c\x8b\xd9\x3f\x86\xfb\xb5\x6b",
+               .ilen   = 32,
+               .result = "\x39\xdf\x7c\x3c\x5a\x29\xb9\x62"
+                         "\x5d\x51\xc2\x16\xd8\xbd\x06\x9f"
+                         "\x9b\x6a\x09\x70\xc1\x51\x83\xc2"
+                         "\x66\x88\x1d\x4f\x9a\xda\xe0\x1e"
+                         "\xc7\x79\x11\x58\xe5\x6b\x20\x40"
+                         "\x7a\xea\x46\x42\x8b\xe4\x6f\xe1",
+               .rlen   = 48,
+       }, {
+               .key    = "\xe0\x8d\x99\x71\x60\xd7\x97\x1a"
+                         "\xbd\x01\x99\xd5\x8a\xdf\x71\x3a"
+                         "\xd3\xdf\x24\x4b\x5e\x3d\x4b\x4e"
+                         "\x30\x7a\xb9\xd8\x53\x0a\x5e\x2b"
+                         "\x1e\x29\x91",
+               .klen   = 35,
+               .iv     = "\xad\x8e\xc1\x53\x0a\xcf\x2d\xbe",
+               .assoc  = "\x19\xb6\x1f\x57\xc4\xf3\xf0\x8b"
+                         "\x78\x2b\x94\x02\x29\x0f\x42\x27"
+                         "\x6b\x75\xcb\x98\x34\x08\x7e\x79"
+                         "\xe4\x3e\x49\x0d\x84\x8b\x22\x87",
+               .alen   = 32,
+               .input  = "\xe1\xd9\xd8\x13\xeb\x3a\x75\x3f"
+                         "\x9d\xbd\x5f\x66\xbe\xdc\xbb\x66"
+                         "\xbf\x17\x99\x62\x4a\x39\x27\x1f"
+                         "\x1d\xdc\x24\xae\x19\x2f\x98\x4c",
+               .ilen   = 32,
+               .result = "\x19\xb8\x61\x33\x45\x2b\x43\x96"
+                         "\x6f\x51\xd0\x20\x30\x7d\x9b\xc6"
+                         "\x26\x3d\xf8\xc9\x65\x16\xa8\x9f"
+                         "\xf0\x62\x17\x34\xf2\x1e\x8d\x75"
+                         "\x4e\x13\xcc\xc0\xc3\x2a\x54\x2d",
+               .rlen   = 40,
+       }, {
+               .key    = "\x7c\xc8\x18\x3b\x8d\x99\xe0\x7c"
+                         "\x45\x41\xb8\xbd\x5c\xa7\xc2\x32"
+                         "\x8a\xb8\x02\x59\xa4\xfe\xa9\x2c"
+                         "\x09\x75\x9a\x9b\x3c\x9b\x27\x39"
+                         "\xf9\xd9\x4e",
+               .klen   = 35,
+               .iv     = "\x63\xb5\x3d\x9d\x43\xf6\x1e\x50",
+               .assoc  = "\x57\xf5\x6b\x8b\x57\x5c\x3d\x3b"
+                         "\x13\x02\x01\x0c\x83\x4c\x96\x35"
+                         "\x8e\xd6\x39\xcf\x7d\x14\x9b\x94"
+                         "\xb0\x39\x36\xe6\x8f\x57\xe0\x13",
+               .alen   = 32,
+               .input  = "\x3b\x6c\x29\x36\xb6\xef\x07\xa6"
+                         "\x83\x72\x07\x4f\xcf\xfa\x66\x89"
+                         "\x5f\xca\xb1\xba\xd5\x8f\x2c\x27"
+                         "\x30\xdb\x75\x09\x93\xd4\x65\xe4",
+               .ilen   = 32,
+               .result = "\xb0\x88\x5a\x33\xaa\xe5\xc7\x1d"
+                         "\x85\x23\xc7\xc6\x2f\xf4\x1e\x3d"
+                         "\xcc\x63\x44\x25\x07\x78\x4f\x9e"
+                         "\x96\xb8\x88\xeb\xbc\x48\x1f\x06"
+                         "\x39\xaf\x39\xac\xd8\x4a\x80\x39"
+                         "\x7b\x72\x8a\xf7",
+               .rlen   = 44,
+       }, {
+               .key    = "\xab\xd0\xe9\x33\x07\x26\xe5\x83"
+                         "\x8c\x76\x95\xd4\xb6\xdc\xf3\x46"
+                         "\xf9\x8f\xad\xe3\x02\x13\x83\x77"
+                         "\x3f\xb0\xf1\xa1\xa1\x22\x0f\x2b"
+                         "\x24\xa7\x8b",
+               .klen   = 35,
+               .iv     = "\x07\xcb\xcc\x0e\xe6\x33\xbf\xf5",
+               .assoc  = "\xd4\xdb\x30\x1d\x03\xfe\xfd\x5f"
+                         "\x87\xd4\x8c\xb6\xb6\xf1\x7a\x5d"
+                         "\xab\x90\x65\x8d\x8e\xca\x4d\x4f"
+                         "\x16\x0c\x40\x90\x4b\xc7\x36\x73",
+               .alen   = 32,
+               .input  = "\xf5\xc6\x7d\x48\xc1\xb7\xe6\x92"
+                         "\x97\x5a\xca\xc4\xa9\x6d\xf9\x3d"
+                         "\x6c\xde\xbc\xf1\x90\xea\x6a\xb2"
+                         "\x35\x86\x36\xaf\x5c\xfe\x4b\x3a",
+               .ilen   = 32,
+               .result = "\x83\x6f\x40\x87\x72\xcf\xc1\x13"
+                         "\xef\xbb\x80\x21\x04\x6c\x58\x09"
+                         "\x07\x1b\xfc\xdf\xc0\x3f\x5b\xc7"
+                         "\xe0\x79\xa8\x6e\x71\x7c\x3f\xcf"
+                         "\x5c\xda\xb2\x33\xe5\x13\xe2\x0d"
+                         "\x74\xd1\xef\xb5\x0f\x3a\xb5\xf8",
+               .rlen   = 48,
+       },
+};
+
+static struct aead_testvec aes_ccm_rfc4309_dec_tv_template[] = {
+       {
+               .key    = "\xab\x2f\x8a\x74\xb7\x1c\xd2\xb1"
+                         "\xff\x80\x2e\x48\x7d\x82\xf8\xb9"
+                         "\xc6\xfb\x7d",
+               .klen   = 19,
+               .iv     = "\x80\x0d\x13\xab\xd8\xa6\xb2\xd8",
+               .alen   = 0,
+               .input  = "\xd5\xe8\x93\x9f\xc7\x89\x2e\x2b",
+               .ilen   = 8,
+               .result = "\x00",
+               .rlen   = 0,
+               .novrfy = 1,
+       }, {
+               .key    = "\xab\x2f\x8a\x74\xb7\x1c\xd2\xb1"
+                         "\xff\x80\x2e\x48\x7d\x82\xf8\xb9"
+                         "\xaf\x94\x87",
+               .klen   = 19,
+               .iv     = "\x78\x35\x82\x81\x7f\x88\x94\x68",
+               .alen   = 0,
+               .input  = "\x41\x3c\xb8\x87\x73\xcb\xf3\xf3",
+               .ilen   = 8,
+               .result = "\x00",
+               .rlen   = 0,
+       }, {
+               .key    = "\x61\x0e\x8c\xae\xe3\x23\xb6\x38"
+                         "\x76\x1c\xf6\x3a\x67\xa3\x9c\xd8"
+                         "\xc6\xfb\x7d",
+               .klen   = 19,
+               .iv     = "\x80\x0d\x13\xab\xd8\xa6\xb2\xd8",
+               .assoc  = "\xf3\x94\x87\x78\x35\x82\x81\x7f"
+                         "\x88\x94\x68\xb1\x78\x6b\x2b\xd6"
+                         "\x04\x1f\x4e\xed\x78\xd5\x33\x66"
+                         "\xd8\x94\x99\x91\x81\x54\x62\x57",
+               .alen   = 32,
+               .input  = "\xf0\x7c\x29\x02\xae\x1c\x2f\x55"
+                         "\xd0\xd1\x3d\x1a\xa3\x6d\xe4\x0a"
+                         "\x86\xb0\x87\x6b\x62\x33\x8c\x34"
+                         "\xce\xab\x57\xcc\x79\x0b\xe0\x6f"
+                         "\x5c\x3e\x48\x1f\x6c\x46\xf7\x51"
+                         "\x8b\x84\x83\x2a\xc1\x05\xb8\xc5",
+               .ilen   = 48,
+               .result = "\x50\x82\x3e\x07\xe2\x1e\xb6\xfb"
+                         "\x33\xe4\x73\xce\xd2\xfb\x95\x79"
+                         "\xe8\xb4\xb5\x77\x11\x10\x62\x6f"
+                         "\x6a\x82\xd1\x13\xec\xf5\xd0\x48",
+               .rlen   = 32,
+               .novrfy = 1,
+       }, {
+               .key    = "\x61\x0e\x8c\xae\xe3\x23\xb6\x38"
+                         "\x76\x1c\xf6\x3a\x67\xa3\x9c\xd8"
+                         "\x05\xe0\xc9",
+               .klen   = 19,
+               .iv     = "\x0f\xed\x34\xea\x97\xd4\x3b\xdf",
+               .assoc  = "\x49\x5c\x50\x1f\x1d\x94\xcc\x81"
+                         "\xba\xb7\xb6\x03\xaf\xa5\xc1\xa1"
+                         "\xd8\x5c\x42\x68\xe0\x6c\xda\x89"
+                         "\x05\xac\x56\xac\x1b\x2a\xd3\x86",
+               .alen   = 32,
+               .input  = "\x39\xbe\x7d\x15\x62\x77\xf3\x3c"
+                         "\xad\x83\x52\x6d\x71\x03\x25\x1c"
+                         "\xed\x81\x3a\x9a\x16\x7d\x19\x80"
+                         "\x72\x04\x72\xd0\xf6\xff\x05\x0f"
+                         "\xb7\x14\x30\x00\x32\x9e\xa0\xa6"
+                         "\x9e\x5a\x18\xa1\xb8\xfe\xdb\xd3",
+               .ilen   = 48,
+               .result = "\x75\x05\xbe\xc2\xd9\x1e\xde\x60"
+                         "\x47\x3d\x8c\x7d\xbd\xb5\xd9\xb7"
+                         "\xf2\xae\x61\x05\x8f\x82\x24\x3f"
+                         "\x9c\x67\x91\xe1\x38\x4f\xe4\x0c",
+               .rlen   = 32,
+       }, {
+               .key    = "\x39\xbb\xa7\xbe\x59\x97\x9e\x73"
+                         "\xa2\xbc\x6b\x98\xd7\x75\x7f\xe3"
+                         "\xa4\x48\x93\x39\x26\x71\x4a\xc6"
+                         "\xee\x49\x83",
+               .klen   = 27,
+               .iv     = "\xe9\xa9\xff\xe9\x57\xba\xfd\x9e",
+               .assoc  = "\x44\xa6\x2c\x05\xe9\xe1\x43\xb1"
+                         "\x58\x7c\xf2\x5c\x6d\x39\x0a\x64"
+                         "\xa4\xf0\x13\x05\xd1\x77\x99\x67"
+                         "\x11\xc4\xc6\xdb\x00\x56\x36\x61",
                .alen   = 32,
-               .input  = "\x87\xa3\x36\xfd\x96\xb3\x93\x78"
-                         "\xa9\x28\x63\xba\x12\xa3\x14\x85"
-                         "\x57\x1e\x06\xc9\x7b\x21\xef\x76"
-                         "\x7f\x38\x7e\x8e\x29\xa4\x3e\x7e",
-               .ilen   = 32,
-               .result = "\x8a\x1e\x11\xf0\x02\x6b\xe2\x19"
-                         "\xfc\x70\xc4\x6d\x8e\xb7\x99\xab"
-                         "\xc5\x4b\xa2\xac\xd3\xf3\x48\xff"
-                         "\x3b\xb5\xce\x53\xef\xde\xbb\x02"
-                         "\xa9\x86\x15\x6c\x13\xfe\xda\x0a"
-                         "\x22\xb8\x29\x3d\xd8\x39\x9a\x23",
-               .rlen   = 48,
+               .input  = "\x71\x99\xfa\xf4\x44\x12\x68\x9b",
+               .ilen   = 8,
+               .result = "\x00",
+               .rlen   = 0,
        }, {
-               .key    = "\xf4\x6b\xc2\x75\x62\xfe\xb4\xe1"
-                         "\xa3\xf0\xff\xdd\x4e\x4b\x12\x75"
-                         "\x53\x14\x73\x66\x8d\x88\xf6\x80"
-                         "\xa0\x20\x35",
+               .key    = "\x58\x5d\xa0\x96\x65\x1a\x04\xd7"
+                         "\x96\xe5\xc5\x68\xaa\x95\x35\xe0"
+                         "\x29\xa0\xba\x9e\x48\x78\xd1\xba"
+                         "\xee\x49\x83",
                .klen   = 27,
-               .iv     = "\x26\xf2\x21\x8d\x50\x20\xda\xe2",
-               .assoc  = "\x5b\x9e\x13\x67\x02\x5e\xef\xc1"
-                         "\x6c\xf9\xd7\x1e\x52\x8f\x7a\x47"
-                         "\xe9\xd4\xcf\x20\x14\x6e\xf0\x2d"
-                         "\xd8\x9e\x2b\x56\x10\x23\x56\xe7",
+               .iv     = "\xe9\xa9\xff\xe9\x57\xba\xfd\x9e",
+               .assoc  = "\x44\xa6\x2c\x05\xe9\xe1\x43\xb1"
+                         "\x58\x7c\xf2\x5c\x6d\x39\x0a\x64"
+                         "\xa4\xf0\x13\x05\xd1\x77\x99\x67"
+                         "\x11\xc4\xc6\xdb\x00\x56\x36\x61",
                .alen   = 32,
-               .ilen   = 0,
-               .result = "\x36\xea\x7a\x70\x08\xdc\x6a\xbc"
-                         "\xad\x0c\x7a\x63\xf6\x61\xfd\x9b",
-               .rlen   = 16,
+               .input  = "\xfb\xe5\x5d\x34\xbe\xe5\xe8\xe7"
+                         "\x5a\xef\x2f\xbf\x1f\x7f\xd4\xb2"
+                         "\x66\xca\x61\x1e\x96\x7a\x61\xb3"
+                         "\x1c\x16\x45\x52\xba\x04\x9c\x9f"
+                         "\xb1\xd2\x40\xbc\x52\x7c\x6f\xb1",
+               .ilen   = 40,
+               .result = "\x85\x34\x66\x42\xc8\x92\x0f\x36"
+                         "\x58\xe0\x6b\x91\x3c\x98\x5c\xbb"
+                         "\x0a\x85\xcc\x02\xad\x7a\x96\xe9"
+                         "\x65\x43\xa4\xc3\x0f\xdc\x55\x81",
+               .rlen   = 32,
        }, {
-               .key    = "\x56\xdf\x5c\x8f\x26\x3f\x0e\x42"
-                         "\xef\x7a\xd3\xce\xfc\x84\x60\x62"
-                         "\xca\xb4\x40\xaf\x5f\xc9\xc9\x01"
-                         "\xd6\x3c\x8c",
+               .key    = "\x58\x5d\xa0\x96\x65\x1a\x04\xd7"
+                         "\x96\xe5\xc5\x68\xaa\x95\x35\xe0"
+                         "\x29\xa0\xba\x9e\x48\x78\xd1\xba"
+                         "\xd1\xfc\x57",
                .klen   = 27,
-               .iv     = "\x86\x84\xb6\xcd\xef\x09\x2e\x94",
-               .assoc  = "\x02\x65\x78\x3c\xe9\x21\x30\x91"
-                         "\xb1\xb9\xda\x76\x9a\x78\x6d\x95"
-                         "\xf2\x88\x32\xa3\xf2\x50\xcb\x4c"
-                         "\xe3\x00\x73\x69\x84\x69\x87\x79",
+               .iv     = "\x9c\xfe\xb8\x9c\xad\x71\xaa\x1f",
+               .assoc  = "\x86\x67\xa5\xa9\x14\x5f\x0d\xc6"
+                         "\xff\x14\xc7\x44\xbf\x6c\x3a\xc3"
+                         "\xff\xb6\x81\xbd\xe2\xd5\x06\xc7"
+                         "\x3c\xa1\x52\x13\x03\x8a\x23\x3a",
                .alen   = 32,
-               .input  = "\x9f\xd2\x02\x4b\x52\x49\x31\x3c"
-                         "\x43\x69\x3a\x2d\x8e\x70\xad\x7e"
-                         "\xe0\xe5\x46\x09\x80\x89\x13\xb2"
-                         "\x8c\x8b\xd9\x3f\x86\xfb\xb5\x6b",
-               .ilen   = 32,
-               .result = "\x39\xdf\x7c\x3c\x5a\x29\xb9\x62"
-                         "\x5d\x51\xc2\x16\xd8\xbd\x06\x9f"
-                         "\x9b\x6a\x09\x70\xc1\x51\x83\xc2"
-                         "\x66\x88\x1d\x4f\x9a\xda\xe0\x1e"
-                         "\xc7\x79\x11\x58\xe5\x6b\x20\x40"
-                         "\x7a\xea\x46\x42\x8b\xe4\x6f\xe1",
-               .rlen   = 48,
+               .input  = "\x3f\x66\xb0\x9d\xe5\x4b\x38\x00"
+                         "\xc6\x0e\x6e\xe5\xd6\x98\xa6\x37"
+                         "\x8c\x26\x33\xc6\xb2\xa2\x17\xfa"
+                         "\x64\x19\xc0\x30\xd7\xfc\x14\x6b"
+                         "\xe3\x33\xc2\x04\xb0\x37\xbe\x3f"
+                         "\xa9\xb4\x2d\x68\x03\xa3\x44\xef",
+               .ilen   = 48,
+               .result = "\x02\x87\x4d\x28\x80\x6e\xb2\xed"
+                         "\x99\x2a\xa8\xca\x04\x25\x45\x90"
+                         "\x1d\xdd\x5a\xd9\xe4\xdb\x9c\x9c"
+                         "\x49\xe9\x01\xfe\xa7\x80\x6d\x6b",
+               .rlen   = 32,
+               .novrfy = 1,
        }, {
-               .key    = "\xe0\x8d\x99\x71\x60\xd7\x97\x1a"
-                         "\xbd\x01\x99\xd5\x8a\xdf\x71\x3a"
-                         "\xd3\xdf\x24\x4b\x5e\x3d\x4b\x4e"
-                         "\x30\x7a\xb9\xd8\x53\x0a\x5e\x2b"
-                         "\x1e\x29\x91",
+               .key    = "\xa4\x4b\x54\x29\x0a\xb8\x6d\x01"
+                         "\x5b\x80\x2a\xcf\x25\xc4\xb7\x5c"
+                         "\x20\x2c\xad\x30\xc2\x2b\x41\xfb"
+                         "\x0e\x85\xbc\x33\xad\x0f\x2b\xff"
+                         "\xee\x49\x83",
                .klen   = 35,
-               .iv     = "\xad\x8e\xc1\x53\x0a\xcf\x2d\xbe",
-               .assoc  = "\x19\xb6\x1f\x57\xc4\xf3\xf0\x8b"
-                         "\x78\x2b\x94\x02\x29\x0f\x42\x27"
-                         "\x6b\x75\xcb\x98\x34\x08\x7e\x79"
-                         "\xe4\x3e\x49\x0d\x84\x8b\x22\x87",
-               .alen   = 32,
-               .input  = "\xe1\xd9\xd8\x13\xeb\x3a\x75\x3f"
-                         "\x9d\xbd\x5f\x66\xbe\xdc\xbb\x66"
-                         "\xbf\x17\x99\x62\x4a\x39\x27\x1f"
-                         "\x1d\xdc\x24\xae\x19\x2f\x98\x4c",
-               .ilen   = 32,
-               .result = "\x19\xb8\x61\x33\x45\x2b\x43\x96"
-                         "\x6f\x51\xd0\x20\x30\x7d\x9b\xc6"
-                         "\x26\x3d\xf8\xc9\x65\x16\xa8\x9f"
-                         "\xf0\x62\x17\x34\xf2\x1e\x8d\x75"
-                         "\x4e\x13\xcc\xc0\xc3\x2a\x54\x2d",
-               .rlen   = 40,
+               .iv     = "\xe9\xa9\xff\xe9\x57\xba\xfd\x9e",
+               .alen   = 0,
+               .input  = "\x1f\xb8\x8f\xa3\xdd\x54\x00\xf2",
+               .ilen   = 8,
+               .result = "\x00",
+               .rlen   = 0,
        }, {
-               .key    = "\x7c\xc8\x18\x3b\x8d\x99\xe0\x7c"
-                         "\x45\x41\xb8\xbd\x5c\xa7\xc2\x32"
-                         "\x8a\xb8\x02\x59\xa4\xfe\xa9\x2c"
-                         "\x09\x75\x9a\x9b\x3c\x9b\x27\x39"
-                         "\xf9\xd9\x4e",
+               .key    = "\x39\xbb\xa7\xbe\x59\x97\x9e\x73"
+                         "\xa2\xbc\x6b\x98\xd7\x75\x7f\xe3"
+                         "\xa4\x48\x93\x39\x26\x71\x4a\xc6"
+                         "\xae\x8f\x11\x4c\xc2\x9c\x4a\xbb"
+                         "\x85\x34\x66",
                .klen   = 35,
-               .iv     = "\x63\xb5\x3d\x9d\x43\xf6\x1e\x50",
-               .assoc  = "\x57\xf5\x6b\x8b\x57\x5c\x3d\x3b"
-                         "\x13\x02\x01\x0c\x83\x4c\x96\x35"
-                         "\x8e\xd6\x39\xcf\x7d\x14\x9b\x94"
-                         "\xb0\x39\x36\xe6\x8f\x57\xe0\x13",
+               .iv     = "\x42\xc8\x92\x0f\x36\x58\xe0\x6b",
+               .alen   = 0,
+               .input  = "\x48\x01\x5e\x02\x24\x04\x66\x47"
+                         "\xa1\xea\x6f\xaf\xe8\xfc\xfb\xdd"
+                         "\xa5\xa9\x87\x8d\x84\xee\x2e\x77"
+                         "\xbb\x86\xb9\xf5\x5c\x6c\xff\xf6"
+                         "\x72\xc3\x8e\xf7\x70\xb1\xb2\x07"
+                         "\xbc\xa8\xa3\xbd\x83\x7c\x1d\x2a",
+               .ilen   = 48,
+               .result = "\xdc\x56\xf2\x71\xb0\xb1\xa0\x6c"
+                         "\xf0\x97\x3a\xfb\x6d\xe7\x32\x99"
+                         "\x3e\xaf\x70\x5e\xb2\x4d\xea\x39"
+                         "\x89\xd4\x75\x7a\x63\xb1\xda\x93",
+               .rlen   = 32,
+               .novrfy = 1,
+       }, {
+               .key    = "\x58\x5d\xa0\x96\x65\x1a\x04\xd7"
+                         "\x96\xe5\xc5\x68\xaa\x95\x35\xe0"
+                         "\x29\xa0\xba\x9e\x48\x78\xd1\xba"
+                         "\x0d\x1a\x53\x3b\xb5\xe3\xf8\x8b"
+                         "\xcf\x76\x3f",
+               .klen   = 35,
+               .iv     = "\xd9\x95\x75\x8f\x44\x89\x40\x7b",
+               .assoc  = "\x8f\x86\x6c\x4d\x1d\xc5\x39\x88"
+                         "\xc8\xf3\x5c\x52\x10\x63\x6f\x2b"
+                         "\x8a\x2a\xc5\x6f\x30\x23\x58\x7b"
+                         "\xfb\x36\x03\x11\xb4\xd9\xf2\xfe",
                .alen   = 32,
-               .input  = "\x3b\x6c\x29\x36\xb6\xef\x07\xa6"
-                         "\x83\x72\x07\x4f\xcf\xfa\x66\x89"
-                         "\x5f\xca\xb1\xba\xd5\x8f\x2c\x27"
-                         "\x30\xdb\x75\x09\x93\xd4\x65\xe4",
-               .ilen   = 32,
-               .result = "\xb0\x88\x5a\x33\xaa\xe5\xc7\x1d"
-                         "\x85\x23\xc7\xc6\x2f\xf4\x1e\x3d"
-                         "\xcc\x63\x44\x25\x07\x78\x4f\x9e"
-                         "\x96\xb8\x88\xeb\xbc\x48\x1f\x06"
-                         "\x39\xaf\x39\xac\xd8\x4a\x80\x39"
-                         "\x7b\x72\x8a\xf7",
-               .rlen   = 44,
+               .input  = "\x48\x58\xd6\xf3\xad\x63\x58\xbf"
+                         "\xae\xc7\x5e\xae\x83\x8f\x7b\xe4"
+                         "\x78\x5c\x4c\x67\x71\x89\x94\xbf"
+                         "\x47\xf1\x63\x7e\x1c\x59\xbd\xc5"
+                         "\x7f\x44\x0a\x0c\x01\x18\x07\x92"
+                         "\xe1\xd3\x51\xce\x32\x6d\x0c\x5b",
+               .ilen   = 48,
+               .result = "\xc2\x54\xc8\xde\x78\x87\x77\x40"
+                         "\x49\x71\xe4\xb7\xe7\xcb\x76\x61"
+                         "\x0a\x41\xb9\xe9\xc0\x76\x54\xab"
+                         "\x04\x49\x3b\x19\x93\x57\x25\x5d",
+               .rlen   = 32,
+       },
+};
+
+/*
+ * ANSI X9.31 Continuous Pseudo-Random Number Generator (AES mode)
+ * test vectors, taken from Appendix B.2.9 and B.2.10:
+ *     http://csrc.nist.gov/groups/STM/cavp/documents/rng/RNGVS.pdf
+ * Only AES-128 is supported at this time.
+ */
+#define ANSI_CPRNG_AES_TEST_VECTORS    6
+
+static struct cprng_testvec ansi_cprng_aes_tv_template[] = {
+       {
+               .key    = "\xf3\xb1\x66\x6d\x13\x60\x72\x42"
+                         "\xed\x06\x1c\xab\xb8\xd4\x62\x02",
+               .klen   = 16,
+               .dt     = "\xe6\xb3\xbe\x78\x2a\x23\xfa\x62"
+                         "\xd7\x1d\x4a\xfb\xb0\xe9\x22\xf9",
+               .dtlen  = 16,
+               .v      = "\x80\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .vlen   = 16,
+               .result = "\x59\x53\x1e\xd1\x3b\xb0\xc0\x55"
+                         "\x84\x79\x66\x85\xc1\x2f\x76\x41",
+               .rlen   = 16,
+               .loops  = 1,
+       }, {
+               .key    = "\xf3\xb1\x66\x6d\x13\x60\x72\x42"
+                         "\xed\x06\x1c\xab\xb8\xd4\x62\x02",
+               .klen   = 16,
+               .dt     = "\xe6\xb3\xbe\x78\x2a\x23\xfa\x62"
+                         "\xd7\x1d\x4a\xfb\xb0\xe9\x22\xfa",
+               .dtlen  = 16,
+               .v      = "\xc0\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .vlen   = 16,
+               .result = "\x7c\x22\x2c\xf4\xca\x8f\xa2\x4c"
+                         "\x1c\x9c\xb6\x41\xa9\xf3\x22\x0d",
+               .rlen   = 16,
+               .loops  = 1,
        }, {
-               .key    = "\xab\xd0\xe9\x33\x07\x26\xe5\x83"
-                         "\x8c\x76\x95\xd4\xb6\xdc\xf3\x46"
-                         "\xf9\x8f\xad\xe3\x02\x13\x83\x77"
-                         "\x3f\xb0\xf1\xa1\xa1\x22\x0f\x2b"
-                         "\x24\xa7\x8b",
-               .klen   = 35,
-               .iv     = "\x07\xcb\xcc\x0e\xe6\x33\xbf\xf5",
-               .assoc  = "\xd4\xdb\x30\x1d\x03\xfe\xfd\x5f"
-                         "\x87\xd4\x8c\xb6\xb6\xf1\x7a\x5d"
-                         "\xab\x90\x65\x8d\x8e\xca\x4d\x4f"
-                         "\x16\x0c\x40\x90\x4b\xc7\x36\x73",
-               .alen   = 32,
-               .input  = "\xf5\xc6\x7d\x48\xc1\xb7\xe6\x92"
-                         "\x97\x5a\xca\xc4\xa9\x6d\xf9\x3d"
-                         "\x6c\xde\xbc\xf1\x90\xea\x6a\xb2"
-                         "\x35\x86\x36\xaf\x5c\xfe\x4b\x3a",
-               .ilen   = 32,
-               .result = "\x83\x6f\x40\x87\x72\xcf\xc1\x13"
-                         "\xef\xbb\x80\x21\x04\x6c\x58\x09"
-                         "\x07\x1b\xfc\xdf\xc0\x3f\x5b\xc7"
-                         "\xe0\x79\xa8\x6e\x71\x7c\x3f\xcf"
-                         "\x5c\xda\xb2\x33\xe5\x13\xe2\x0d"
-                         "\x74\xd1\xef\xb5\x0f\x3a\xb5\xf8",
-               .rlen   = 48,
+               .key    = "\xf3\xb1\x66\x6d\x13\x60\x72\x42"
+                         "\xed\x06\x1c\xab\xb8\xd4\x62\x02",
+               .klen   = 16,
+               .dt     = "\xe6\xb3\xbe\x78\x2a\x23\xfa\x62"
+                         "\xd7\x1d\x4a\xfb\xb0\xe9\x22\xfb",
+               .dtlen  = 16,
+               .v      = "\xe0\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .vlen   = 16,
+               .result = "\x8a\xaa\x00\x39\x66\x67\x5b\xe5"
+                         "\x29\x14\x28\x81\xa9\x4d\x4e\xc7",
+               .rlen   = 16,
+               .loops  = 1,
+       }, {
+               .key    = "\xf3\xb1\x66\x6d\x13\x60\x72\x42"
+                         "\xed\x06\x1c\xab\xb8\xd4\x62\x02",
+               .klen   = 16,
+               .dt     = "\xe6\xb3\xbe\x78\x2a\x23\xfa\x62"
+                         "\xd7\x1d\x4a\xfb\xb0\xe9\x22\xfc",
+               .dtlen  = 16,
+               .v      = "\xf0\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .vlen   = 16,
+               .result = "\x88\xdd\xa4\x56\x30\x24\x23\xe5"
+                         "\xf6\x9d\xa5\x7e\x7b\x95\xc7\x3a",
+               .rlen   = 16,
+               .loops  = 1,
+       }, {
+               .key    = "\xf3\xb1\x66\x6d\x13\x60\x72\x42"
+                         "\xed\x06\x1c\xab\xb8\xd4\x62\x02",
+               .klen   = 16,
+               .dt     = "\xe6\xb3\xbe\x78\x2a\x23\xfa\x62"
+                         "\xd7\x1d\x4a\xfb\xb0\xe9\x22\xfd",
+               .dtlen  = 16,
+               .v      = "\xf8\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .vlen   = 16,
+               .result = "\x05\x25\x92\x46\x61\x79\xd2\xcb"
+                         "\x78\xc4\x0b\x14\x0a\x5a\x9a\xc8",
+               .rlen   = 16,
+               .loops  = 1,
+       }, {    /* Monte Carlo Test */
+               .key    = "\x9f\x5b\x51\x20\x0b\xf3\x34\xb5"
+                         "\xd8\x2b\xe8\xc3\x72\x55\xc8\x48",
+               .klen   = 16,
+               .dt     = "\x63\x76\xbb\xe5\x29\x02\xba\x3b"
+                         "\x67\xc9\x25\xfa\x70\x1f\x11\xac",
+               .dtlen  = 16,
+               .v      = "\x57\x2c\x8e\x76\x87\x26\x47\x97"
+                         "\x7e\x74\xfb\xdd\xc4\x95\x01\xd1",
+               .vlen   = 16,
+               .result = "\x48\xe9\xbd\x0d\x06\xee\x18\xfb"
+                         "\xe4\x57\x90\xd5\xc3\xfc\x9b\x73",
+               .rlen   = 16,
+               .loops  = 10000,
        },
 };
 
-static struct aead_testvec aes_ccm_rfc4309_dec_tv_template[] = {
+/* Cast5 test vectors from RFC 2144 */
+#define CAST5_ENC_TEST_VECTORS         4
+#define CAST5_DEC_TEST_VECTORS         4
+#define CAST5_CBC_ENC_TEST_VECTORS     1
+#define CAST5_CBC_DEC_TEST_VECTORS     1
+#define CAST5_CTR_ENC_TEST_VECTORS     2
+#define CAST5_CTR_DEC_TEST_VECTORS     2
+
+static struct cipher_testvec cast5_enc_tv_template[] = {
        {
-               .key    = "\xab\x2f\x8a\x74\xb7\x1c\xd2\xb1"
-                         "\xff\x80\x2e\x48\x7d\x82\xf8\xb9"
-                         "\xc6\xfb\x7d",
-               .klen   = 19,
-               .iv     = "\x80\x0d\x13\xab\xd8\xa6\xb2\xd8",
-               .alen   = 0,
-               .input  = "\xd5\xe8\x93\x9f\xc7\x89\x2e\x2b",
+               .key    = "\x01\x23\x45\x67\x12\x34\x56\x78"
+                         "\x23\x45\x67\x89\x34\x56\x78\x9a",
+               .klen   = 16,
+               .input  = "\x01\x23\x45\x67\x89\xab\xcd\xef",
                .ilen   = 8,
-               .result = "\x00",
-               .rlen   = 0,
-               .novrfy = 1,
+               .result = "\x23\x8b\x4f\xe5\x84\x7e\x44\xb2",
+               .rlen   = 8,
        }, {
-               .key    = "\xab\x2f\x8a\x74\xb7\x1c\xd2\xb1"
-                         "\xff\x80\x2e\x48\x7d\x82\xf8\xb9"
-                         "\xaf\x94\x87",
-               .klen   = 19,
-               .iv     = "\x78\x35\x82\x81\x7f\x88\x94\x68",
-               .alen   = 0,
-               .input  = "\x41\x3c\xb8\x87\x73\xcb\xf3\xf3",
+               .key    = "\x01\x23\x45\x67\x12\x34\x56\x78"
+                         "\x23\x45",
+               .klen   = 10,
+               .input  = "\x01\x23\x45\x67\x89\xab\xcd\xef",
                .ilen   = 8,
-               .result = "\x00",
-               .rlen   = 0,
-       }, {
-               .key    = "\x61\x0e\x8c\xae\xe3\x23\xb6\x38"
-                         "\x76\x1c\xf6\x3a\x67\xa3\x9c\xd8"
-                         "\xc6\xfb\x7d",
-               .klen   = 19,
-               .iv     = "\x80\x0d\x13\xab\xd8\xa6\xb2\xd8",
-               .assoc  = "\xf3\x94\x87\x78\x35\x82\x81\x7f"
-                         "\x88\x94\x68\xb1\x78\x6b\x2b\xd6"
-                         "\x04\x1f\x4e\xed\x78\xd5\x33\x66"
-                         "\xd8\x94\x99\x91\x81\x54\x62\x57",
-               .alen   = 32,
-               .input  = "\xf0\x7c\x29\x02\xae\x1c\x2f\x55"
-                         "\xd0\xd1\x3d\x1a\xa3\x6d\xe4\x0a"
-                         "\x86\xb0\x87\x6b\x62\x33\x8c\x34"
-                         "\xce\xab\x57\xcc\x79\x0b\xe0\x6f"
-                         "\x5c\x3e\x48\x1f\x6c\x46\xf7\x51"
-                         "\x8b\x84\x83\x2a\xc1\x05\xb8\xc5",
-               .ilen   = 48,
-               .result = "\x50\x82\x3e\x07\xe2\x1e\xb6\xfb"
-                         "\x33\xe4\x73\xce\xd2\xfb\x95\x79"
-                         "\xe8\xb4\xb5\x77\x11\x10\x62\x6f"
-                         "\x6a\x82\xd1\x13\xec\xf5\xd0\x48",
-               .rlen   = 32,
-               .novrfy = 1,
-       }, {
-               .key    = "\x61\x0e\x8c\xae\xe3\x23\xb6\x38"
-                         "\x76\x1c\xf6\x3a\x67\xa3\x9c\xd8"
-                         "\x05\xe0\xc9",
-               .klen   = 19,
-               .iv     = "\x0f\xed\x34\xea\x97\xd4\x3b\xdf",
-               .assoc  = "\x49\x5c\x50\x1f\x1d\x94\xcc\x81"
-                         "\xba\xb7\xb6\x03\xaf\xa5\xc1\xa1"
-                         "\xd8\x5c\x42\x68\xe0\x6c\xda\x89"
-                         "\x05\xac\x56\xac\x1b\x2a\xd3\x86",
-               .alen   = 32,
-               .input  = "\x39\xbe\x7d\x15\x62\x77\xf3\x3c"
-                         "\xad\x83\x52\x6d\x71\x03\x25\x1c"
-                         "\xed\x81\x3a\x9a\x16\x7d\x19\x80"
-                         "\x72\x04\x72\xd0\xf6\xff\x05\x0f"
-                         "\xb7\x14\x30\x00\x32\x9e\xa0\xa6"
-                         "\x9e\x5a\x18\xa1\xb8\xfe\xdb\xd3",
-               .ilen   = 48,
-               .result = "\x75\x05\xbe\xc2\xd9\x1e\xde\x60"
-                         "\x47\x3d\x8c\x7d\xbd\xb5\xd9\xb7"
-                         "\xf2\xae\x61\x05\x8f\x82\x24\x3f"
-                         "\x9c\x67\x91\xe1\x38\x4f\xe4\x0c",
-               .rlen   = 32,
+               .result = "\xeb\x6a\x71\x1a\x2c\x02\x27\x1b",
+               .rlen   = 8,
        }, {
-               .key    = "\x39\xbb\xa7\xbe\x59\x97\x9e\x73"
-                         "\xa2\xbc\x6b\x98\xd7\x75\x7f\xe3"
-                         "\xa4\x48\x93\x39\x26\x71\x4a\xc6"
-                         "\xee\x49\x83",
-               .klen   = 27,
-               .iv     = "\xe9\xa9\xff\xe9\x57\xba\xfd\x9e",
-               .assoc  = "\x44\xa6\x2c\x05\xe9\xe1\x43\xb1"
-                         "\x58\x7c\xf2\x5c\x6d\x39\x0a\x64"
-                         "\xa4\xf0\x13\x05\xd1\x77\x99\x67"
-                         "\x11\xc4\xc6\xdb\x00\x56\x36\x61",
-               .alen   = 32,
-               .input  = "\x71\x99\xfa\xf4\x44\x12\x68\x9b",
+               .key    = "\x01\x23\x45\x67\x12",
+               .klen   = 5,
+               .input  = "\x01\x23\x45\x67\x89\xab\xcd\xef",
+               .ilen   = 8,
+               .result = "\x7a\xc8\x16\xd1\x6e\x9b\x30\x2e",
+               .rlen   = 8,
+       }, { /* Generated from TF test vectors */
+               .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
+                         "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A",
+               .klen   = 16,
+               .iv     = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F",
+               .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\x81\x18\xAF\x23\xBA"
+                         "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
+                         "\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
+                         "\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
+                         "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
+                         "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
+                         "\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
+                         "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
+                         "\x29\xC0\x57\xEE\x62\xF9\x90\x04"
+                         "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
+                         "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
+                         "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
+                         "\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
+                         "\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
+                         "\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
+                         "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
+                         "\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
+                         "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
+                         "\x57\xEE\x85\x1C\x90\x27\xBE\x32"
+                         "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
+                         "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
+                         "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
+                         "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
+                         "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
+                         "\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
+                         "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
+                         "\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
+                         "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
+                         "\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
+                         "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
+                         "\x69\x00\x74\x0B\xA2\x16\xAD\x44"
+                         "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
+                         "\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
+                         "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
+                         "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
+                         "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
+                         "\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
+                         "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
+                         "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
+                         "\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
+                         "\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
+                         "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
+                         "\x58\xEF\x86\x1D\x91\x28\xBF\x33"
+                         "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
+                         "\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
+                         "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
+                         "\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
+                         "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
+                         "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
+                         "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
+                         "\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
+                         "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
+                         "\x86\x1D\xB4\x28\xBF\x56\xED\x61"
+                         "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
+                         "\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
+                         "\xDC\x50\xE7\x7E\x15\x89\x20\xB7",
+               .ilen   = 496,
+               .result = "\x8D\xFC\x81\x9C\xCB\xAA\x5A\x1C"
+                         "\x7E\x95\xCF\x40\xAB\x4D\x6F\xEA"
+                         "\xD3\xD9\xB0\x9A\xB7\xC7\xE0\x2E"
+                         "\xD1\x39\x34\x92\x8F\xFA\x14\xF1"
+                         "\xD5\xD2\x7B\x59\x1F\x35\x28\xC2"
+                         "\x20\xD9\x42\x06\xC9\x0B\x10\x04"
+                         "\xF8\x79\xCD\x32\x86\x75\x4C\xB6"
+                         "\x7B\x1C\x52\xB1\x91\x64\x22\x4B"
+                         "\x13\xC7\xAE\x98\x0E\xB5\xCF\x6F"
+                         "\x3F\xF4\x43\x96\x73\x0D\xA2\x05"
+                         "\xDB\xFD\x28\x90\x2C\x56\xB9\x37"
+                         "\x5B\x69\x0C\xAD\x84\x67\xFF\x15"
+                         "\x4A\xD4\xA7\xD3\xDD\x99\x47\x3A"
+                         "\xED\x34\x35\x78\x6B\x91\xC9\x32"
+                         "\xE1\xBF\xBC\xB4\x04\x85\x6A\x39"
+                         "\xC0\xBA\x51\xD0\x0F\x4E\xD1\xE2"
+                         "\x1C\xFD\x0E\x05\x07\xF4\x10\xED"
+                         "\xA2\x17\xFF\xF5\x64\xC6\x1A\x22"
+                         "\xAD\x78\xE7\xD7\x11\xE9\x99\xB9"
+                         "\xAA\xEC\x6F\xF8\x3B\xBF\xCE\x77"
+                         "\x93\xE8\xAD\x1D\x50\x6C\xAE\xBC"
+                         "\xBA\x5C\x80\xD1\x91\x65\x51\x1B"
+                         "\xE8\x0A\xCD\x99\x96\x71\x3D\xB6"
+                         "\x78\x75\x37\x55\xC1\xF5\x90\x40"
+                         "\x34\xF4\x7E\xC8\xCC\x3A\x5F\x6E"
+                         "\x36\xA1\xA1\xC2\x3A\x72\x42\x8E"
+                         "\x0E\x37\x88\xE8\xCE\x83\xCB\xAD"
+                         "\xE0\x69\x77\x50\xC7\x0C\x99\xCA"
+                         "\x19\x5B\x30\x25\x9A\xEF\x9B\x0C"
+                         "\xEF\x8F\x74\x4C\xCF\x49\x4E\xB9"
+                         "\xC5\xAE\x9E\x2E\x78\x9A\xB9\x48"
+                         "\xD5\x81\xE4\x37\x1D\xBF\x27\xD9"
+                         "\xC5\xD6\x65\x43\x45\x8C\xBB\xB6"
+                         "\x55\xF4\x06\xBB\x49\x53\x8B\x1B"
+                         "\x07\xA9\x96\x69\x5B\xCB\x0F\xBC"
+                         "\x93\x85\x90\x0F\x0A\x68\x40\x2A"
+                         "\x95\xED\x2D\x88\xBF\x71\xD0\xBB"
+                         "\xEC\xB0\x77\x6C\x79\xFC\x3C\x05"
+                         "\x49\x3F\xB8\x24\xEF\x8E\x09\xA2"
+                         "\x1D\xEF\x92\x02\x96\xD4\x7F\xC8"
+                         "\x03\xB2\xCA\xDB\x17\x5C\x52\xCF"
+                         "\xDD\x70\x37\x63\xAA\xA5\x83\x20"
+                         "\x52\x02\xF6\xB9\xE7\x6E\x0A\xB6"
+                         "\x79\x03\xA0\xDA\xA3\x79\x21\xBD"
+                         "\xE3\x37\x3A\xC0\xF7\x2C\x32\xBE"
+                         "\x8B\xE8\xA6\x00\xC7\x32\xD5\x06"
+                         "\xBB\xE3\xAB\x06\x21\x82\xB8\x32"
+                         "\x31\x34\x2A\xA7\x1F\x64\x99\xBF"
+                         "\xFA\xDA\x3D\x75\xF7\x48\xD5\x48"
+                         "\x4B\x52\x7E\xF6\x7C\xAB\x67\x59"
+                         "\xC5\xDC\xA8\xC6\x63\x85\x4A\xDF"
+                         "\xF0\x40\x5F\xCF\xE3\x58\x52\x67"
+                         "\x7A\x24\x32\xC5\xEC\x9E\xA9\x6F"
+                         "\x58\x56\xDD\x94\x1F\x71\x8D\xF4"
+                         "\x6E\xFF\x2C\xA7\xA5\xD8\xBA\xAF"
+                         "\x1D\x8B\xA2\x46\xB5\xC4\x9F\x57"
+                         "\x8D\xD8\xB3\x3C\x02\x0D\xBB\x84"
+                         "\xC7\xBD\xB4\x9A\x6E\xBB\xB1\x37"
+                         "\x95\x79\xC4\xA7\xEA\x1D\xDC\x33"
+                         "\x5D\x0B\x3F\x03\x8F\x30\xF9\xAE"
+                         "\x4F\xFE\x24\x9C\x9A\x02\xE5\x57"
+                         "\xF5\xBC\x25\xD6\x02\x56\x57\x1C",
+               .rlen   = 496,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 496 - 16, 16 },
+       },
+};
+
+static struct cipher_testvec cast5_dec_tv_template[] = {
+       {
+               .key    = "\x01\x23\x45\x67\x12\x34\x56\x78"
+                         "\x23\x45\x67\x89\x34\x56\x78\x9a",
+               .klen   = 16,
+               .input  = "\x23\x8b\x4f\xe5\x84\x7e\x44\xb2",
                .ilen   = 8,
-               .result = "\x00",
-               .rlen   = 0,
-       }, {
-               .key    = "\x58\x5d\xa0\x96\x65\x1a\x04\xd7"
-                         "\x96\xe5\xc5\x68\xaa\x95\x35\xe0"
-                         "\x29\xa0\xba\x9e\x48\x78\xd1\xba"
-                         "\xee\x49\x83",
-               .klen   = 27,
-               .iv     = "\xe9\xa9\xff\xe9\x57\xba\xfd\x9e",
-               .assoc  = "\x44\xa6\x2c\x05\xe9\xe1\x43\xb1"
-                         "\x58\x7c\xf2\x5c\x6d\x39\x0a\x64"
-                         "\xa4\xf0\x13\x05\xd1\x77\x99\x67"
-                         "\x11\xc4\xc6\xdb\x00\x56\x36\x61",
-               .alen   = 32,
-               .input  = "\xfb\xe5\x5d\x34\xbe\xe5\xe8\xe7"
-                         "\x5a\xef\x2f\xbf\x1f\x7f\xd4\xb2"
-                         "\x66\xca\x61\x1e\x96\x7a\x61\xb3"
-                         "\x1c\x16\x45\x52\xba\x04\x9c\x9f"
-                         "\xb1\xd2\x40\xbc\x52\x7c\x6f\xb1",
-               .ilen   = 40,
-               .result = "\x85\x34\x66\x42\xc8\x92\x0f\x36"
-                         "\x58\xe0\x6b\x91\x3c\x98\x5c\xbb"
-                         "\x0a\x85\xcc\x02\xad\x7a\x96\xe9"
-                         "\x65\x43\xa4\xc3\x0f\xdc\x55\x81",
-               .rlen   = 32,
-       }, {
-               .key    = "\x58\x5d\xa0\x96\x65\x1a\x04\xd7"
-                         "\x96\xe5\xc5\x68\xaa\x95\x35\xe0"
-                         "\x29\xa0\xba\x9e\x48\x78\xd1\xba"
-                         "\xd1\xfc\x57",
-               .klen   = 27,
-               .iv     = "\x9c\xfe\xb8\x9c\xad\x71\xaa\x1f",
-               .assoc  = "\x86\x67\xa5\xa9\x14\x5f\x0d\xc6"
-                         "\xff\x14\xc7\x44\xbf\x6c\x3a\xc3"
-                         "\xff\xb6\x81\xbd\xe2\xd5\x06\xc7"
-                         "\x3c\xa1\x52\x13\x03\x8a\x23\x3a",
-               .alen   = 32,
-               .input  = "\x3f\x66\xb0\x9d\xe5\x4b\x38\x00"
-                         "\xc6\x0e\x6e\xe5\xd6\x98\xa6\x37"
-                         "\x8c\x26\x33\xc6\xb2\xa2\x17\xfa"
-                         "\x64\x19\xc0\x30\xd7\xfc\x14\x6b"
-                         "\xe3\x33\xc2\x04\xb0\x37\xbe\x3f"
-                         "\xa9\xb4\x2d\x68\x03\xa3\x44\xef",
-               .ilen   = 48,
-               .result = "\x02\x87\x4d\x28\x80\x6e\xb2\xed"
-                         "\x99\x2a\xa8\xca\x04\x25\x45\x90"
-                         "\x1d\xdd\x5a\xd9\xe4\xdb\x9c\x9c"
-                         "\x49\xe9\x01\xfe\xa7\x80\x6d\x6b",
-               .rlen   = 32,
-               .novrfy = 1,
+               .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
+               .rlen   = 8,
        }, {
-               .key    = "\xa4\x4b\x54\x29\x0a\xb8\x6d\x01"
-                         "\x5b\x80\x2a\xcf\x25\xc4\xb7\x5c"
-                         "\x20\x2c\xad\x30\xc2\x2b\x41\xfb"
-                         "\x0e\x85\xbc\x33\xad\x0f\x2b\xff"
-                         "\xee\x49\x83",
-               .klen   = 35,
-               .iv     = "\xe9\xa9\xff\xe9\x57\xba\xfd\x9e",
-               .alen   = 0,
-               .input  = "\x1f\xb8\x8f\xa3\xdd\x54\x00\xf2",
+               .key    = "\x01\x23\x45\x67\x12\x34\x56\x78"
+                         "\x23\x45",
+               .klen   = 10,
+               .input  = "\xeb\x6a\x71\x1a\x2c\x02\x27\x1b",
                .ilen   = 8,
-               .result = "\x00",
-               .rlen   = 0,
-       }, {
-               .key    = "\x39\xbb\xa7\xbe\x59\x97\x9e\x73"
-                         "\xa2\xbc\x6b\x98\xd7\x75\x7f\xe3"
-                         "\xa4\x48\x93\x39\x26\x71\x4a\xc6"
-                         "\xae\x8f\x11\x4c\xc2\x9c\x4a\xbb"
-                         "\x85\x34\x66",
-               .klen   = 35,
-               .iv     = "\x42\xc8\x92\x0f\x36\x58\xe0\x6b",
-               .alen   = 0,
-               .input  = "\x48\x01\x5e\x02\x24\x04\x66\x47"
-                         "\xa1\xea\x6f\xaf\xe8\xfc\xfb\xdd"
-                         "\xa5\xa9\x87\x8d\x84\xee\x2e\x77"
-                         "\xbb\x86\xb9\xf5\x5c\x6c\xff\xf6"
-                         "\x72\xc3\x8e\xf7\x70\xb1\xb2\x07"
-                         "\xbc\xa8\xa3\xbd\x83\x7c\x1d\x2a",
-               .ilen   = 48,
-               .result = "\xdc\x56\xf2\x71\xb0\xb1\xa0\x6c"
-                         "\xf0\x97\x3a\xfb\x6d\xe7\x32\x99"
-                         "\x3e\xaf\x70\x5e\xb2\x4d\xea\x39"
-                         "\x89\xd4\x75\x7a\x63\xb1\xda\x93",
-               .rlen   = 32,
-               .novrfy = 1,
+               .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
+               .rlen   = 8,
        }, {
-               .key    = "\x58\x5d\xa0\x96\x65\x1a\x04\xd7"
-                         "\x96\xe5\xc5\x68\xaa\x95\x35\xe0"
-                         "\x29\xa0\xba\x9e\x48\x78\xd1\xba"
-                         "\x0d\x1a\x53\x3b\xb5\xe3\xf8\x8b"
-                         "\xcf\x76\x3f",
-               .klen   = 35,
-               .iv     = "\xd9\x95\x75\x8f\x44\x89\x40\x7b",
-               .assoc  = "\x8f\x86\x6c\x4d\x1d\xc5\x39\x88"
-                         "\xc8\xf3\x5c\x52\x10\x63\x6f\x2b"
-                         "\x8a\x2a\xc5\x6f\x30\x23\x58\x7b"
-                         "\xfb\x36\x03\x11\xb4\xd9\xf2\xfe",
-               .alen   = 32,
-               .input  = "\x48\x58\xd6\xf3\xad\x63\x58\xbf"
-                         "\xae\xc7\x5e\xae\x83\x8f\x7b\xe4"
-                         "\x78\x5c\x4c\x67\x71\x89\x94\xbf"
-                         "\x47\xf1\x63\x7e\x1c\x59\xbd\xc5"
-                         "\x7f\x44\x0a\x0c\x01\x18\x07\x92"
-                         "\xe1\xd3\x51\xce\x32\x6d\x0c\x5b",
-               .ilen   = 48,
-               .result = "\xc2\x54\xc8\xde\x78\x87\x77\x40"
-                         "\x49\x71\xe4\xb7\xe7\xcb\x76\x61"
-                         "\x0a\x41\xb9\xe9\xc0\x76\x54\xab"
-                         "\x04\x49\x3b\x19\x93\x57\x25\x5d",
-               .rlen   = 32,
+               .key    = "\x01\x23\x45\x67\x12",
+               .klen   = 5,
+               .input  = "\x7a\xc8\x16\xd1\x6e\x9b\x30\x2e",
+               .ilen   = 8,
+               .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
+               .rlen   = 8,
+       }, { /* Generated from TF test vectors */
+               .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
+                         "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A",
+               .klen   = 16,
+               .iv     = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F",
+               .input  = "\x8D\xFC\x81\x9C\xCB\xAA\x5A\x1C"
+                         "\x7E\x95\xCF\x40\xAB\x4D\x6F\xEA"
+                         "\xD3\xD9\xB0\x9A\xB7\xC7\xE0\x2E"
+                         "\xD1\x39\x34\x92\x8F\xFA\x14\xF1"
+                         "\xD5\xD2\x7B\x59\x1F\x35\x28\xC2"
+                         "\x20\xD9\x42\x06\xC9\x0B\x10\x04"
+                         "\xF8\x79\xCD\x32\x86\x75\x4C\xB6"
+                         "\x7B\x1C\x52\xB1\x91\x64\x22\x4B"
+                         "\x13\xC7\xAE\x98\x0E\xB5\xCF\x6F"
+                         "\x3F\xF4\x43\x96\x73\x0D\xA2\x05"
+                         "\xDB\xFD\x28\x90\x2C\x56\xB9\x37"
+                         "\x5B\x69\x0C\xAD\x84\x67\xFF\x15"
+                         "\x4A\xD4\xA7\xD3\xDD\x99\x47\x3A"
+                         "\xED\x34\x35\x78\x6B\x91\xC9\x32"
+                         "\xE1\xBF\xBC\xB4\x04\x85\x6A\x39"
+                         "\xC0\xBA\x51\xD0\x0F\x4E\xD1\xE2"
+                         "\x1C\xFD\x0E\x05\x07\xF4\x10\xED"
+                         "\xA2\x17\xFF\xF5\x64\xC6\x1A\x22"
+                         "\xAD\x78\xE7\xD7\x11\xE9\x99\xB9"
+                         "\xAA\xEC\x6F\xF8\x3B\xBF\xCE\x77"
+                         "\x93\xE8\xAD\x1D\x50\x6C\xAE\xBC"
+                         "\xBA\x5C\x80\xD1\x91\x65\x51\x1B"
+                         "\xE8\x0A\xCD\x99\x96\x71\x3D\xB6"
+                         "\x78\x75\x37\x55\xC1\xF5\x90\x40"
+                         "\x34\xF4\x7E\xC8\xCC\x3A\x5F\x6E"
+                         "\x36\xA1\xA1\xC2\x3A\x72\x42\x8E"
+                         "\x0E\x37\x88\xE8\xCE\x83\xCB\xAD"
+                         "\xE0\x69\x77\x50\xC7\x0C\x99\xCA"
+                         "\x19\x5B\x30\x25\x9A\xEF\x9B\x0C"
+                         "\xEF\x8F\x74\x4C\xCF\x49\x4E\xB9"
+                         "\xC5\xAE\x9E\x2E\x78\x9A\xB9\x48"
+                         "\xD5\x81\xE4\x37\x1D\xBF\x27\xD9"
+                         "\xC5\xD6\x65\x43\x45\x8C\xBB\xB6"
+                         "\x55\xF4\x06\xBB\x49\x53\x8B\x1B"
+                         "\x07\xA9\x96\x69\x5B\xCB\x0F\xBC"
+                         "\x93\x85\x90\x0F\x0A\x68\x40\x2A"
+                         "\x95\xED\x2D\x88\xBF\x71\xD0\xBB"
+                         "\xEC\xB0\x77\x6C\x79\xFC\x3C\x05"
+                         "\x49\x3F\xB8\x24\xEF\x8E\x09\xA2"
+                         "\x1D\xEF\x92\x02\x96\xD4\x7F\xC8"
+                         "\x03\xB2\xCA\xDB\x17\x5C\x52\xCF"
+                         "\xDD\x70\x37\x63\xAA\xA5\x83\x20"
+                         "\x52\x02\xF6\xB9\xE7\x6E\x0A\xB6"
+                         "\x79\x03\xA0\xDA\xA3\x79\x21\xBD"
+                         "\xE3\x37\x3A\xC0\xF7\x2C\x32\xBE"
+                         "\x8B\xE8\xA6\x00\xC7\x32\xD5\x06"
+                         "\xBB\xE3\xAB\x06\x21\x82\xB8\x32"
+                         "\x31\x34\x2A\xA7\x1F\x64\x99\xBF"
+                         "\xFA\xDA\x3D\x75\xF7\x48\xD5\x48"
+                         "\x4B\x52\x7E\xF6\x7C\xAB\x67\x59"
+                         "\xC5\xDC\xA8\xC6\x63\x85\x4A\xDF"
+                         "\xF0\x40\x5F\xCF\xE3\x58\x52\x67"
+                         "\x7A\x24\x32\xC5\xEC\x9E\xA9\x6F"
+                         "\x58\x56\xDD\x94\x1F\x71\x8D\xF4"
+                         "\x6E\xFF\x2C\xA7\xA5\xD8\xBA\xAF"
+                         "\x1D\x8B\xA2\x46\xB5\xC4\x9F\x57"
+                         "\x8D\xD8\xB3\x3C\x02\x0D\xBB\x84"
+                         "\xC7\xBD\xB4\x9A\x6E\xBB\xB1\x37"
+                         "\x95\x79\xC4\xA7\xEA\x1D\xDC\x33"
+                         "\x5D\x0B\x3F\x03\x8F\x30\xF9\xAE"
+                         "\x4F\xFE\x24\x9C\x9A\x02\xE5\x57"
+                         "\xF5\xBC\x25\xD6\x02\x56\x57\x1C",
+               .ilen   = 496,
+               .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\x81\x18\xAF\x23\xBA"
+                         "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
+                         "\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
+                         "\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
+                         "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
+                         "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
+                         "\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
+                         "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
+                         "\x29\xC0\x57\xEE\x62\xF9\x90\x04"
+                         "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
+                         "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
+                         "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
+                         "\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
+                         "\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
+                         "\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
+                         "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
+                         "\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
+                         "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
+                         "\x57\xEE\x85\x1C\x90\x27\xBE\x32"
+                         "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
+                         "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
+                         "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
+                         "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
+                         "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
+                         "\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
+                         "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
+                         "\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
+                         "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
+                         "\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
+                         "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
+                         "\x69\x00\x74\x0B\xA2\x16\xAD\x44"
+                         "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
+                         "\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
+                         "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
+                         "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
+                         "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
+                         "\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
+                         "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
+                         "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
+                         "\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
+                         "\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
+                         "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
+                         "\x58\xEF\x86\x1D\x91\x28\xBF\x33"
+                         "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
+                         "\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
+                         "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
+                         "\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
+                         "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
+                         "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
+                         "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
+                         "\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
+                         "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
+                         "\x86\x1D\xB4\x28\xBF\x56\xED\x61"
+                         "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
+                         "\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
+                         "\xDC\x50\xE7\x7E\x15\x89\x20\xB7",
+               .rlen   = 496,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 496 - 16, 16 },
+       },
+};
+
+static struct cipher_testvec cast5_cbc_enc_tv_template[] = {
+       { /* Generated from TF test vectors */
+               .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
+                         "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A",
+               .klen   = 16,
+               .iv     = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F",
+               .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\x81\x18\xAF\x23\xBA"
+                         "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
+                         "\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
+                         "\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
+                         "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
+                         "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
+                         "\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
+                         "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
+                         "\x29\xC0\x57\xEE\x62\xF9\x90\x04"
+                         "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
+                         "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
+                         "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
+                         "\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
+                         "\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
+                         "\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
+                         "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
+                         "\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
+                         "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
+                         "\x57\xEE\x85\x1C\x90\x27\xBE\x32"
+                         "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
+                         "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
+                         "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
+                         "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
+                         "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
+                         "\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
+                         "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
+                         "\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
+                         "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
+                         "\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
+                         "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
+                         "\x69\x00\x74\x0B\xA2\x16\xAD\x44"
+                         "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
+                         "\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
+                         "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
+                         "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
+                         "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
+                         "\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
+                         "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
+                         "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
+                         "\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
+                         "\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
+                         "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
+                         "\x58\xEF\x86\x1D\x91\x28\xBF\x33"
+                         "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
+                         "\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
+                         "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
+                         "\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
+                         "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
+                         "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
+                         "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
+                         "\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
+                         "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
+                         "\x86\x1D\xB4\x28\xBF\x56\xED\x61"
+                         "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
+                         "\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
+                         "\xDC\x50\xE7\x7E\x15\x89\x20\xB7",
+               .ilen   = 496,
+               .result = "\x05\x28\xCE\x61\x90\x80\xE1\x78"
+                         "\xB9\x2A\x97\x7C\xB0\x83\xD8\x1A"
+                         "\xDE\x58\x7F\xD7\xFD\x72\xB8\xFB"
+                         "\xDA\xF0\x6E\x77\x14\x47\x82\xBA"
+                         "\x29\x0E\x25\x6E\xB4\x39\xD9\x7F"
+                         "\x05\xA7\xA7\x3A\xC1\x5D\x9E\x39"
+                         "\xA7\xFB\x0D\x05\x00\xF3\x58\x67"
+                         "\x60\xEC\x73\x77\x46\x85\x9B\x6A"
+                         "\x08\x3E\xBE\x59\xFB\xE4\x96\x34"
+                         "\xB4\x05\x49\x1A\x97\x43\xAD\xA0"
+                         "\xA9\x1E\x6E\x74\xF1\x94\xEC\xA8"
+                         "\xB5\x8A\x20\xEA\x89\x6B\x19\xAA"
+                         "\xA7\xF1\x33\x67\x90\x23\x0D\xEE"
+                         "\x81\xD5\x78\x4F\xD3\x63\xEA\x46"
+                         "\xB5\xB2\x6E\xBB\xCA\x76\x06\x10"
+                         "\x96\x2A\x0A\xBA\xF9\x41\x5A\x1D"
+                         "\x36\x7C\x56\x14\x54\x83\xFA\xA1"
+                         "\x27\xDD\xBA\x8A\x90\x29\xD6\xA6"
+                         "\xFA\x48\x3E\x1E\x23\x6E\x98\xA8"
+                         "\xA7\xD9\x67\x92\x5C\x13\xB4\x71"
+                         "\xA8\xAA\x89\x4A\xA4\xB3\x49\x7C"
+                         "\x7D\x7F\xCE\x6F\x29\x2E\x7E\x37"
+                         "\xC8\x52\x60\xD9\xE7\xCA\x60\x98"
+                         "\xED\xCD\xE8\x60\x83\xAD\x34\x4D"
+                         "\x96\x4A\x99\x2B\xB7\x14\x75\x66"
+                         "\x6C\x2C\x1A\xBA\x4B\xBB\x49\x56"
+                         "\xE1\x86\xA2\x0E\xD0\xF0\x07\xD3"
+                         "\x18\x38\x09\x9C\x0E\x8B\x86\x07"
+                         "\x90\x12\x37\x49\x27\x98\x69\x18"
+                         "\xB0\xCC\xFB\xD3\xBD\x04\xA0\x85"
+                         "\x4B\x22\x97\x07\xB6\x97\xE9\x95"
+                         "\x0F\x88\x36\xA9\x44\x00\xC6\xE9"
+                         "\x27\x53\x5C\x5B\x1F\xD3\xE2\xEE"
+                         "\xD0\xCD\x63\x30\xA9\xC0\xDD\x49"
+                         "\xFE\x16\xA4\x07\x0D\xE2\x5D\x97"
+                         "\xDE\x89\xBA\x2E\xF3\xA9\x5E\xBE"
+                         "\x03\x55\x0E\x02\x41\x4A\x45\x06"
+                         "\xBE\xEA\x32\xF2\xDC\x91\x5C\x20"
+                         "\x94\x02\x30\xD2\xFC\x29\xFA\x8E"
+                         "\x34\xA0\x31\xB8\x34\xBA\xAE\x54"
+                         "\xB5\x88\x1F\xDC\x43\xDC\x22\x9F"
+                         "\xDC\xCE\xD3\xFA\xA4\xA8\xBC\x8A"
+                         "\xC7\x5A\x43\x21\xA5\xB1\xDB\xC3"
+                         "\x84\x3B\xB4\x9B\xB5\xA7\xF1\x0A"
+                         "\xB6\x37\x21\x19\x55\xC2\xBD\x99"
+                         "\x49\x24\xBB\x7C\xB3\x8E\xEF\xD2"
+                         "\x3A\xCF\xA0\x31\x28\x0E\x25\xA2"
+                         "\x11\xB4\x18\x17\x1A\x65\x92\x56"
+                         "\xE8\xE0\x52\x9C\x61\x18\x2A\xB1"
+                         "\x1A\x01\x22\x45\x17\x62\x52\x6C"
+                         "\x91\x44\xCF\x98\xC7\xC0\x79\x26"
+                         "\x32\x66\x6F\x23\x7F\x94\x36\x88"
+                         "\x3C\xC9\xD0\xB7\x45\x30\x31\x86"
+                         "\x3D\xC6\xA3\x98\x62\x84\x1A\x8B"
+                         "\x16\x88\xC7\xA3\xE9\x4F\xE0\x86"
+                         "\xA4\x93\xA8\x34\x5A\xCA\xDF\xCA"
+                         "\x46\x38\xD2\xF4\xE0\x2D\x1E\xC9"
+                         "\x7C\xEF\x53\xB7\x60\x72\x41\xBF"
+                         "\x29\x00\x87\x02\xAF\x44\x4C\xB7"
+                         "\x8C\xF5\x3F\x19\xF4\x80\x45\xA7"
+                         "\x15\x5F\xDB\xE9\xB1\x83\xD2\xE6"
+                         "\x1D\x18\x66\x44\x5B\x8F\x14\xEB",
+               .rlen   = 496,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 496 - 16, 16 },
        },
 };
 
-/*
- * ANSI X9.31 Continuous Pseudo-Random Number Generator (AES mode)
- * test vectors, taken from Appendix B.2.9 and B.2.10:
- *     http://csrc.nist.gov/groups/STM/cavp/documents/rng/RNGVS.pdf
- * Only AES-128 is supported at this time.
- */
-#define ANSI_CPRNG_AES_TEST_VECTORS    6
-
-static struct cprng_testvec ansi_cprng_aes_tv_template[] = {
-       {
-               .key    = "\xf3\xb1\x66\x6d\x13\x60\x72\x42"
-                         "\xed\x06\x1c\xab\xb8\xd4\x62\x02",
-               .klen   = 16,
-               .dt     = "\xe6\xb3\xbe\x78\x2a\x23\xfa\x62"
-                         "\xd7\x1d\x4a\xfb\xb0\xe9\x22\xf9",
-               .dtlen  = 16,
-               .v      = "\x80\x00\x00\x00\x00\x00\x00\x00"
-                         "\x00\x00\x00\x00\x00\x00\x00\x00",
-               .vlen   = 16,
-               .result = "\x59\x53\x1e\xd1\x3b\xb0\xc0\x55"
-                         "\x84\x79\x66\x85\xc1\x2f\x76\x41",
-               .rlen   = 16,
-               .loops  = 1,
-       }, {
-               .key    = "\xf3\xb1\x66\x6d\x13\x60\x72\x42"
-                         "\xed\x06\x1c\xab\xb8\xd4\x62\x02",
-               .klen   = 16,
-               .dt     = "\xe6\xb3\xbe\x78\x2a\x23\xfa\x62"
-                         "\xd7\x1d\x4a\xfb\xb0\xe9\x22\xfa",
-               .dtlen  = 16,
-               .v      = "\xc0\x00\x00\x00\x00\x00\x00\x00"
-                         "\x00\x00\x00\x00\x00\x00\x00\x00",
-               .vlen   = 16,
-               .result = "\x7c\x22\x2c\xf4\xca\x8f\xa2\x4c"
-                         "\x1c\x9c\xb6\x41\xa9\xf3\x22\x0d",
-               .rlen   = 16,
-               .loops  = 1,
-       }, {
-               .key    = "\xf3\xb1\x66\x6d\x13\x60\x72\x42"
-                         "\xed\x06\x1c\xab\xb8\xd4\x62\x02",
-               .klen   = 16,
-               .dt     = "\xe6\xb3\xbe\x78\x2a\x23\xfa\x62"
-                         "\xd7\x1d\x4a\xfb\xb0\xe9\x22\xfb",
-               .dtlen  = 16,
-               .v      = "\xe0\x00\x00\x00\x00\x00\x00\x00"
-                         "\x00\x00\x00\x00\x00\x00\x00\x00",
-               .vlen   = 16,
-               .result = "\x8a\xaa\x00\x39\x66\x67\x5b\xe5"
-                         "\x29\x14\x28\x81\xa9\x4d\x4e\xc7",
-               .rlen   = 16,
-               .loops  = 1,
-       }, {
-               .key    = "\xf3\xb1\x66\x6d\x13\x60\x72\x42"
-                         "\xed\x06\x1c\xab\xb8\xd4\x62\x02",
-               .klen   = 16,
-               .dt     = "\xe6\xb3\xbe\x78\x2a\x23\xfa\x62"
-                         "\xd7\x1d\x4a\xfb\xb0\xe9\x22\xfc",
-               .dtlen  = 16,
-               .v      = "\xf0\x00\x00\x00\x00\x00\x00\x00"
-                         "\x00\x00\x00\x00\x00\x00\x00\x00",
-               .vlen   = 16,
-               .result = "\x88\xdd\xa4\x56\x30\x24\x23\xe5"
-                         "\xf6\x9d\xa5\x7e\x7b\x95\xc7\x3a",
-               .rlen   = 16,
-               .loops  = 1,
-       }, {
-               .key    = "\xf3\xb1\x66\x6d\x13\x60\x72\x42"
-                         "\xed\x06\x1c\xab\xb8\xd4\x62\x02",
-               .klen   = 16,
-               .dt     = "\xe6\xb3\xbe\x78\x2a\x23\xfa\x62"
-                         "\xd7\x1d\x4a\xfb\xb0\xe9\x22\xfd",
-               .dtlen  = 16,
-               .v      = "\xf8\x00\x00\x00\x00\x00\x00\x00"
-                         "\x00\x00\x00\x00\x00\x00\x00\x00",
-               .vlen   = 16,
-               .result = "\x05\x25\x92\x46\x61\x79\xd2\xcb"
-                         "\x78\xc4\x0b\x14\x0a\x5a\x9a\xc8",
-               .rlen   = 16,
-               .loops  = 1,
-       }, {    /* Monte Carlo Test */
-               .key    = "\x9f\x5b\x51\x20\x0b\xf3\x34\xb5"
-                         "\xd8\x2b\xe8\xc3\x72\x55\xc8\x48",
+static struct cipher_testvec cast5_cbc_dec_tv_template[] = {
+       { /* Generated from TF test vectors */
+               .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
+                         "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A",
                .klen   = 16,
-               .dt     = "\x63\x76\xbb\xe5\x29\x02\xba\x3b"
-                         "\x67\xc9\x25\xfa\x70\x1f\x11\xac",
-               .dtlen  = 16,
-               .v      = "\x57\x2c\x8e\x76\x87\x26\x47\x97"
-                         "\x7e\x74\xfb\xdd\xc4\x95\x01\xd1",
-               .vlen   = 16,
-               .result = "\x48\xe9\xbd\x0d\x06\xee\x18\xfb"
-                         "\xe4\x57\x90\xd5\xc3\xfc\x9b\x73",
-               .rlen   = 16,
-               .loops  = 10000,
+               .iv     = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F",
+               .input  = "\x05\x28\xCE\x61\x90\x80\xE1\x78"
+                         "\xB9\x2A\x97\x7C\xB0\x83\xD8\x1A"
+                         "\xDE\x58\x7F\xD7\xFD\x72\xB8\xFB"
+                         "\xDA\xF0\x6E\x77\x14\x47\x82\xBA"
+                         "\x29\x0E\x25\x6E\xB4\x39\xD9\x7F"
+                         "\x05\xA7\xA7\x3A\xC1\x5D\x9E\x39"
+                         "\xA7\xFB\x0D\x05\x00\xF3\x58\x67"
+                         "\x60\xEC\x73\x77\x46\x85\x9B\x6A"
+                         "\x08\x3E\xBE\x59\xFB\xE4\x96\x34"
+                         "\xB4\x05\x49\x1A\x97\x43\xAD\xA0"
+                         "\xA9\x1E\x6E\x74\xF1\x94\xEC\xA8"
+                         "\xB5\x8A\x20\xEA\x89\x6B\x19\xAA"
+                         "\xA7\xF1\x33\x67\x90\x23\x0D\xEE"
+                         "\x81\xD5\x78\x4F\xD3\x63\xEA\x46"
+                         "\xB5\xB2\x6E\xBB\xCA\x76\x06\x10"
+                         "\x96\x2A\x0A\xBA\xF9\x41\x5A\x1D"
+                         "\x36\x7C\x56\x14\x54\x83\xFA\xA1"
+                         "\x27\xDD\xBA\x8A\x90\x29\xD6\xA6"
+                         "\xFA\x48\x3E\x1E\x23\x6E\x98\xA8"
+                         "\xA7\xD9\x67\x92\x5C\x13\xB4\x71"
+                         "\xA8\xAA\x89\x4A\xA4\xB3\x49\x7C"
+                         "\x7D\x7F\xCE\x6F\x29\x2E\x7E\x37"
+                         "\xC8\x52\x60\xD9\xE7\xCA\x60\x98"
+                         "\xED\xCD\xE8\x60\x83\xAD\x34\x4D"
+                         "\x96\x4A\x99\x2B\xB7\x14\x75\x66"
+                         "\x6C\x2C\x1A\xBA\x4B\xBB\x49\x56"
+                         "\xE1\x86\xA2\x0E\xD0\xF0\x07\xD3"
+                         "\x18\x38\x09\x9C\x0E\x8B\x86\x07"
+                         "\x90\x12\x37\x49\x27\x98\x69\x18"
+                         "\xB0\xCC\xFB\xD3\xBD\x04\xA0\x85"
+                         "\x4B\x22\x97\x07\xB6\x97\xE9\x95"
+                         "\x0F\x88\x36\xA9\x44\x00\xC6\xE9"
+                         "\x27\x53\x5C\x5B\x1F\xD3\xE2\xEE"
+                         "\xD0\xCD\x63\x30\xA9\xC0\xDD\x49"
+                         "\xFE\x16\xA4\x07\x0D\xE2\x5D\x97"
+                         "\xDE\x89\xBA\x2E\xF3\xA9\x5E\xBE"
+                         "\x03\x55\x0E\x02\x41\x4A\x45\x06"
+                         "\xBE\xEA\x32\xF2\xDC\x91\x5C\x20"
+                         "\x94\x02\x30\xD2\xFC\x29\xFA\x8E"
+                         "\x34\xA0\x31\xB8\x34\xBA\xAE\x54"
+                         "\xB5\x88\x1F\xDC\x43\xDC\x22\x9F"
+                         "\xDC\xCE\xD3\xFA\xA4\xA8\xBC\x8A"
+                         "\xC7\x5A\x43\x21\xA5\xB1\xDB\xC3"
+                         "\x84\x3B\xB4\x9B\xB5\xA7\xF1\x0A"
+                         "\xB6\x37\x21\x19\x55\xC2\xBD\x99"
+                         "\x49\x24\xBB\x7C\xB3\x8E\xEF\xD2"
+                         "\x3A\xCF\xA0\x31\x28\x0E\x25\xA2"
+                         "\x11\xB4\x18\x17\x1A\x65\x92\x56"
+                         "\xE8\xE0\x52\x9C\x61\x18\x2A\xB1"
+                         "\x1A\x01\x22\x45\x17\x62\x52\x6C"
+                         "\x91\x44\xCF\x98\xC7\xC0\x79\x26"
+                         "\x32\x66\x6F\x23\x7F\x94\x36\x88"
+                         "\x3C\xC9\xD0\xB7\x45\x30\x31\x86"
+                         "\x3D\xC6\xA3\x98\x62\x84\x1A\x8B"
+                         "\x16\x88\xC7\xA3\xE9\x4F\xE0\x86"
+                         "\xA4\x93\xA8\x34\x5A\xCA\xDF\xCA"
+                         "\x46\x38\xD2\xF4\xE0\x2D\x1E\xC9"
+                         "\x7C\xEF\x53\xB7\x60\x72\x41\xBF"
+                         "\x29\x00\x87\x02\xAF\x44\x4C\xB7"
+                         "\x8C\xF5\x3F\x19\xF4\x80\x45\xA7"
+                         "\x15\x5F\xDB\xE9\xB1\x83\xD2\xE6"
+                         "\x1D\x18\x66\x44\x5B\x8F\x14\xEB",
+               .ilen   = 496,
+               .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\x81\x18\xAF\x23\xBA"
+                         "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
+                         "\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
+                         "\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
+                         "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
+                         "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
+                         "\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
+                         "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
+                         "\x29\xC0\x57\xEE\x62\xF9\x90\x04"
+                         "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
+                         "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
+                         "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
+                         "\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
+                         "\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
+                         "\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
+                         "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
+                         "\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
+                         "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
+                         "\x57\xEE\x85\x1C\x90\x27\xBE\x32"
+                         "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
+                         "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
+                         "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
+                         "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
+                         "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
+                         "\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
+                         "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
+                         "\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
+                         "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
+                         "\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
+                         "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
+                         "\x69\x00\x74\x0B\xA2\x16\xAD\x44"
+                         "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
+                         "\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
+                         "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
+                         "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
+                         "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
+                         "\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
+                         "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
+                         "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
+                         "\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
+                         "\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
+                         "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
+                         "\x58\xEF\x86\x1D\x91\x28\xBF\x33"
+                         "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
+                         "\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
+                         "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
+                         "\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
+                         "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
+                         "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
+                         "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
+                         "\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
+                         "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
+                         "\x86\x1D\xB4\x28\xBF\x56\xED\x61"
+                         "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
+                         "\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
+                         "\xDC\x50\xE7\x7E\x15\x89\x20\xB7",
+               .rlen   = 496,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 496 - 16, 16 },
        },
 };
 
-/* Cast5 test vectors from RFC 2144 */
-#define CAST5_ENC_TEST_VECTORS 3
-#define CAST5_DEC_TEST_VECTORS 3
-
-static struct cipher_testvec cast5_enc_tv_template[] = {
-       {
-               .key    = "\x01\x23\x45\x67\x12\x34\x56\x78"
-                         "\x23\x45\x67\x89\x34\x56\x78\x9a",
+static struct cipher_testvec cast5_ctr_enc_tv_template[] = {
+       { /* Generated from TF test vectors */
+               .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
+                         "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A",
                .klen   = 16,
-               .input  = "\x01\x23\x45\x67\x89\xab\xcd\xef",
-               .ilen   = 8,
-               .result = "\x23\x8b\x4f\xe5\x84\x7e\x44\xb2",
-               .rlen   = 8,
-       }, {
-               .key    = "\x01\x23\x45\x67\x12\x34\x56\x78"
-                         "\x23\x45",
-               .klen   = 10,
-               .input  = "\x01\x23\x45\x67\x89\xab\xcd\xef",
-               .ilen   = 8,
-               .result = "\xeb\x6a\x71\x1a\x2c\x02\x27\x1b",
-               .rlen   = 8,
-       }, {
-               .key    = "\x01\x23\x45\x67\x12",
-               .klen   = 5,
-               .input  = "\x01\x23\x45\x67\x89\xab\xcd\xef",
-               .ilen   = 8,
-               .result = "\x7a\xc8\x16\xd1\x6e\x9b\x30\x2e",
-               .rlen   = 8,
+               .iv     = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F",
+               .input  = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
+                         "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
+                         "\x3A",
+               .ilen   = 17,
+               .result = "\xFF\xC4\x2E\x82\x3D\xF8\xA8\x39"
+                         "\x7C\x52\xC4\xD3\xBB\x62\xC6\xA8"
+                         "\x0C",
+               .rlen   = 17,
+       }, { /* Generated from TF test vectors */
+               .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
+                         "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A",
+               .klen   = 16,
+               .iv     = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F",
+               .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\x81\x18\xAF\x23\xBA"
+                         "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
+                         "\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
+                         "\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
+                         "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
+                         "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
+                         "\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
+                         "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
+                         "\x29\xC0\x57\xEE\x62\xF9\x90\x04"
+                         "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
+                         "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
+                         "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
+                         "\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
+                         "\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
+                         "\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
+                         "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
+                         "\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
+                         "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
+                         "\x57\xEE\x85\x1C\x90\x27\xBE\x32"
+                         "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
+                         "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
+                         "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
+                         "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
+                         "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
+                         "\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
+                         "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
+                         "\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
+                         "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
+                         "\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
+                         "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
+                         "\x69\x00\x74\x0B\xA2\x16\xAD\x44"
+                         "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
+                         "\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
+                         "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
+                         "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
+                         "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
+                         "\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
+                         "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
+                         "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
+                         "\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
+                         "\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
+                         "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
+                         "\x58\xEF\x86\x1D\x91\x28\xBF\x33"
+                         "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
+                         "\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
+                         "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
+                         "\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
+                         "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
+                         "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
+                         "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
+                         "\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
+                         "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
+                         "\x86\x1D\xB4\x28\xBF\x56\xED\x61"
+                         "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
+                         "\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
+                         "\xDC\x50\xE7\x7E\x15\x89\x20\xB7",
+               .ilen   = 496,
+               .result = "\xFF\xC4\x2E\x82\x3D\xF8\xA8\x39"
+                         "\x7C\x52\xC4\xD3\xBB\x62\xC6\xA8"
+                         "\x0C\x63\xA5\x55\xE3\xF8\x1C\x7F"
+                         "\xDC\x59\xF9\xA0\x52\xAD\x83\xDF"
+                         "\xD5\x3B\x53\x4A\xAA\x1F\x49\x44"
+                         "\xE8\x20\xCC\xF8\x97\xE6\xE0\x3C"
+                         "\x5A\xD2\x83\xEC\xEE\x25\x3F\xCF"
+                         "\x0D\xC2\x79\x80\x99\x6E\xFF\x7B"
+                         "\x64\xB0\x7B\x86\x29\x1D\x9F\x17"
+                         "\x10\xA5\xA5\xEB\x16\x55\x9E\xE3"
+                         "\x88\x18\x52\x56\x48\x58\xD1\x6B"
+                         "\xE8\x74\x6E\x48\xB0\x2E\x69\x63"
+                         "\x32\xAA\xAC\x26\x55\x45\x94\xDE"
+                         "\x30\x26\x26\xE6\x08\x82\x2F\x5F"
+                         "\xA7\x15\x94\x07\x75\x2D\xC6\x3A"
+                         "\x1B\xA0\x39\xFB\xBA\xB9\x06\x56"
+                         "\xF6\x9F\xF1\x2F\x9B\xF3\x89\x8B"
+                         "\x08\xC8\x9D\x5E\x6B\x95\x09\xC7"
+                         "\x98\xB7\x62\xA4\x1D\x25\xFA\xC5"
+                         "\x62\xC8\x5D\x6B\xB4\x85\x88\x7F"
+                         "\x3B\x29\xF9\xB4\x32\x62\x69\xBF"
+                         "\x32\xB8\xEB\xFD\x0E\x26\xAA\xA3"
+                         "\x44\x67\x90\x20\xAC\x41\xDF\x43"
+                         "\xC6\xC7\x19\x9F\x2C\x28\x74\xEB"
+                         "\x3E\x7F\x7A\x80\x5B\xE4\x08\x60"
+                         "\xC7\xC9\x71\x34\x44\xCE\x05\xFD"
+                         "\xA8\x91\xA8\x44\x5E\xD3\x89\x2C"
+                         "\xAE\x59\x0F\x07\x88\x79\x53\x26"
+                         "\xAF\xAC\xCB\x1D\x6F\x08\x25\x62"
+                         "\xD0\x82\x65\x66\xE4\x2A\x29\x1C"
+                         "\x9C\x64\x5F\x49\x9D\xF8\x62\xF9"
+                         "\xED\xC4\x13\x52\x75\xDC\xE4\xF9"
+                         "\x68\x0F\x8A\xCD\xA6\x8D\x75\xAA"
+                         "\x49\xA1\x86\x86\x37\x5C\x6B\x3D"
+                         "\x56\xE5\x6F\xBE\x27\xC0\x10\xF8"
+                         "\x3C\x4D\x17\x35\x14\xDC\x1C\xA0"
+                         "\x6E\xAE\xD1\x10\xDD\x83\x06\xC2"
+                         "\x23\xD3\xC7\x27\x15\x04\x2C\x27"
+                         "\xDD\x1F\x2E\x97\x09\x9C\x33\x7D"
+                         "\xAC\x50\x1B\x2E\xC9\x52\x0C\x14"
+                         "\x4B\x78\xC4\xDE\x07\x6A\x12\x02"
+                         "\x6E\xD7\x4B\x91\xB9\x88\x4D\x02"
+                         "\xC3\xB5\x04\xBC\xE0\x67\xCA\x18"
+                         "\x22\xA1\xAE\x9A\x21\xEF\xB2\x06"
+                         "\x35\xCD\xEC\x37\x70\x2D\xFC\x1E"
+                         "\xA8\x31\xE7\xFC\xE5\x8E\x88\x66"
+                         "\x16\xB5\xC8\x45\x21\x37\xBD\x24"
+                         "\xA9\xD5\x36\x12\x9F\x6E\x67\x80"
+                         "\x87\x54\xD5\xAF\x97\xE1\x15\xA7"
+                         "\x11\xF0\x63\x7B\xE1\x44\x14\x1C"
+                         "\x06\x32\x05\x8C\x6C\xDB\x9B\x36"
+                         "\x6A\x6B\xAD\x3A\x27\x55\x20\x4C"
+                         "\x76\x36\x43\xE8\x16\x60\xB5\xF3"
+                         "\xDF\x5A\xC6\xA5\x69\x78\x59\x51"
+                         "\x54\x68\x65\x06\x84\xDE\x3D\xAE"
+                         "\x38\x91\xBD\xCC\xA2\x8A\xEC\xE6"
+                         "\x9E\x83\xAE\x1E\x8E\x34\x5D\xDE"
+                         "\x91\xCE\x8F\xED\x40\xF7\xC8\x8B"
+                         "\x9A\x13\x4C\xAD\x89\x97\x9E\xD1"
+                         "\x91\x01\xD7\x21\x23\x28\x1E\xCC"
+                         "\x8C\x98\xDB\xDE\xFC\x72\x94\xAA"
+                         "\xC0\x0D\x96\xAA\x23\xF8\xFE\x13",
+               .rlen   = 496,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 496 - 16, 16 },
        },
 };
 
-static struct cipher_testvec cast5_dec_tv_template[] = {
-       {
-               .key    = "\x01\x23\x45\x67\x12\x34\x56\x78"
-                         "\x23\x45\x67\x89\x34\x56\x78\x9a",
+static struct cipher_testvec cast5_ctr_dec_tv_template[] = {
+       { /* Generated from TF test vectors */
+               .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
+                         "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A",
                .klen   = 16,
-               .input  = "\x23\x8b\x4f\xe5\x84\x7e\x44\xb2",
-               .ilen   = 8,
-               .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
-               .rlen   = 8,
-       }, {
-               .key    = "\x01\x23\x45\x67\x12\x34\x56\x78"
-                         "\x23\x45",
-               .klen   = 10,
-               .input  = "\xeb\x6a\x71\x1a\x2c\x02\x27\x1b",
-               .ilen   = 8,
-               .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
-               .rlen   = 8,
-       }, {
-               .key    = "\x01\x23\x45\x67\x12",
-               .klen   = 5,
-               .input  = "\x7a\xc8\x16\xd1\x6e\x9b\x30\x2e",
-               .ilen   = 8,
-               .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
-               .rlen   = 8,
+               .iv     = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F",
+               .input  = "\xFF\xC4\x2E\x82\x3D\xF8\xA8\x39"
+                         "\x7C\x52\xC4\xD3\xBB\x62\xC6\xA8"
+                         "\x0C",
+               .ilen   = 17,
+               .result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
+                         "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
+                         "\x3A",
+               .rlen   = 17,
+       }, { /* Generated from TF test vectors */
+               .key    = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
+                         "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A",
+               .klen   = 16,
+               .iv     = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F",
+               .input  = "\xFF\xC4\x2E\x82\x3D\xF8\xA8\x39"
+                         "\x7C\x52\xC4\xD3\xBB\x62\xC6\xA8"
+                         "\x0C\x63\xA5\x55\xE3\xF8\x1C\x7F"
+                         "\xDC\x59\xF9\xA0\x52\xAD\x83\xDF"
+                         "\xD5\x3B\x53\x4A\xAA\x1F\x49\x44"
+                         "\xE8\x20\xCC\xF8\x97\xE6\xE0\x3C"
+                         "\x5A\xD2\x83\xEC\xEE\x25\x3F\xCF"
+                         "\x0D\xC2\x79\x80\x99\x6E\xFF\x7B"
+                         "\x64\xB0\x7B\x86\x29\x1D\x9F\x17"
+                         "\x10\xA5\xA5\xEB\x16\x55\x9E\xE3"
+                         "\x88\x18\x52\x56\x48\x58\xD1\x6B"
+                         "\xE8\x74\x6E\x48\xB0\x2E\x69\x63"
+                         "\x32\xAA\xAC\x26\x55\x45\x94\xDE"
+                         "\x30\x26\x26\xE6\x08\x82\x2F\x5F"
+                         "\xA7\x15\x94\x07\x75\x2D\xC6\x3A"
+                         "\x1B\xA0\x39\xFB\xBA\xB9\x06\x56"
+                         "\xF6\x9F\xF1\x2F\x9B\xF3\x89\x8B"
+                         "\x08\xC8\x9D\x5E\x6B\x95\x09\xC7"
+                         "\x98\xB7\x62\xA4\x1D\x25\xFA\xC5"
+                         "\x62\xC8\x5D\x6B\xB4\x85\x88\x7F"
+                         "\x3B\x29\xF9\xB4\x32\x62\x69\xBF"
+                         "\x32\xB8\xEB\xFD\x0E\x26\xAA\xA3"
+                         "\x44\x67\x90\x20\xAC\x41\xDF\x43"
+                         "\xC6\xC7\x19\x9F\x2C\x28\x74\xEB"
+                         "\x3E\x7F\x7A\x80\x5B\xE4\x08\x60"
+                         "\xC7\xC9\x71\x34\x44\xCE\x05\xFD"
+                         "\xA8\x91\xA8\x44\x5E\xD3\x89\x2C"
+                         "\xAE\x59\x0F\x07\x88\x79\x53\x26"
+                         "\xAF\xAC\xCB\x1D\x6F\x08\x25\x62"
+                         "\xD0\x82\x65\x66\xE4\x2A\x29\x1C"
+                         "\x9C\x64\x5F\x49\x9D\xF8\x62\xF9"
+                         "\xED\xC4\x13\x52\x75\xDC\xE4\xF9"
+                         "\x68\x0F\x8A\xCD\xA6\x8D\x75\xAA"
+                         "\x49\xA1\x86\x86\x37\x5C\x6B\x3D"
+                         "\x56\xE5\x6F\xBE\x27\xC0\x10\xF8"
+                         "\x3C\x4D\x17\x35\x14\xDC\x1C\xA0"
+                         "\x6E\xAE\xD1\x10\xDD\x83\x06\xC2"
+                         "\x23\xD3\xC7\x27\x15\x04\x2C\x27"
+                         "\xDD\x1F\x2E\x97\x09\x9C\x33\x7D"
+                         "\xAC\x50\x1B\x2E\xC9\x52\x0C\x14"
+                         "\x4B\x78\xC4\xDE\x07\x6A\x12\x02"
+                         "\x6E\xD7\x4B\x91\xB9\x88\x4D\x02"
+                         "\xC3\xB5\x04\xBC\xE0\x67\xCA\x18"
+                         "\x22\xA1\xAE\x9A\x21\xEF\xB2\x06"
+                         "\x35\xCD\xEC\x37\x70\x2D\xFC\x1E"
+                         "\xA8\x31\xE7\xFC\xE5\x8E\x88\x66"
+                         "\x16\xB5\xC8\x45\x21\x37\xBD\x24"
+                         "\xA9\xD5\x36\x12\x9F\x6E\x67\x80"
+                         "\x87\x54\xD5\xAF\x97\xE1\x15\xA7"
+                         "\x11\xF0\x63\x7B\xE1\x44\x14\x1C"
+                         "\x06\x32\x05\x8C\x6C\xDB\x9B\x36"
+                         "\x6A\x6B\xAD\x3A\x27\x55\x20\x4C"
+                         "\x76\x36\x43\xE8\x16\x60\xB5\xF3"
+                         "\xDF\x5A\xC6\xA5\x69\x78\x59\x51"
+                         "\x54\x68\x65\x06\x84\xDE\x3D\xAE"
+                         "\x38\x91\xBD\xCC\xA2\x8A\xEC\xE6"
+                         "\x9E\x83\xAE\x1E\x8E\x34\x5D\xDE"
+                         "\x91\xCE\x8F\xED\x40\xF7\xC8\x8B"
+                         "\x9A\x13\x4C\xAD\x89\x97\x9E\xD1"
+                         "\x91\x01\xD7\x21\x23\x28\x1E\xCC"
+                         "\x8C\x98\xDB\xDE\xFC\x72\x94\xAA"
+                         "\xC0\x0D\x96\xAA\x23\xF8\xFE\x13",
+               .ilen   = 496,
+               .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\x81\x18\xAF\x23\xBA"
+                         "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
+                         "\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
+                         "\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
+                         "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
+                         "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
+                         "\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
+                         "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
+                         "\x29\xC0\x57\xEE\x62\xF9\x90\x04"
+                         "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
+                         "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
+                         "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
+                         "\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
+                         "\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
+                         "\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
+                         "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
+                         "\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
+                         "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
+                         "\x57\xEE\x85\x1C\x90\x27\xBE\x32"
+                         "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
+                         "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
+                         "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
+                         "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
+                         "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
+                         "\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
+                         "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
+                         "\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
+                         "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
+                         "\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
+                         "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
+                         "\x69\x00\x74\x0B\xA2\x16\xAD\x44"
+                         "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
+                         "\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
+                         "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
+                         "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
+                         "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
+                         "\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
+                         "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
+                         "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
+                         "\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
+                         "\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
+                         "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
+                         "\x58\xEF\x86\x1D\x91\x28\xBF\x33"
+                         "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
+                         "\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
+                         "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
+                         "\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
+                         "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
+                         "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
+                         "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
+                         "\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
+                         "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
+                         "\x86\x1D\xB4\x28\xBF\x56\xED\x61"
+                         "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
+                         "\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
+                         "\xDC\x50\xE7\x7E\x15\x89\x20\xB7",
+               .rlen   = 496,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 496 - 16, 16 },
        },
 };
 
@@ -13096,6 +16312,9 @@ static struct cipher_testvec camellia_enc_tv_template[] = {
                          "\x0D\xD0\xFD\xC4\x65\xA5\x69\xB9"
                          "\xF1\xF6\xB1\xA5\xB2\x75\x4F\x8A",
                .rlen   = 48,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 48 - 16, 16 },
        },
 };
 
@@ -13154,6 +16373,9 @@ static struct cipher_testvec camellia_dec_tv_template[] = {
                          "\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
                          "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48",
                .rlen   = 48,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 48 - 16, 16 },
        },
 };
 
@@ -13208,6 +16430,9 @@ static struct cipher_testvec camellia_cbc_enc_tv_template[] = {
                          "\xB9\xF9\xC2\x27\x6A\xB6\x31\x27"
                          "\xA6\xAD\xEF\xE5\x5D\xE4\x02\x01",
                .rlen   = 48,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 48 - 16, 16 },
        },
 };
 
@@ -13262,6 +16487,9 @@ static struct cipher_testvec camellia_cbc_dec_tv_template[] = {
                          "\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
                          "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48",
                .rlen   = 48,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 48 - 16, 16 },
        },
 };
 
@@ -13313,6 +16541,143 @@ static struct cipher_testvec camellia_ctr_enc_tv_template[] = {
                          "\x60\xFC\xE8\x94\xE8\xB5\x09\x2C"
                          "\x1E\x43\xEF",
                .rlen   = 51,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 51 - 16, 16 },
+       }, { /* 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     = "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
+                         "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFD",
+               .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\x81\x18\xAF\x23\xBA"
+                         "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
+                         "\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
+                         "\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
+                         "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
+                         "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
+                         "\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
+                         "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
+                         "\x29\xC0\x57\xEE\x62\xF9\x90\x04"
+                         "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
+                         "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
+                         "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
+                         "\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
+                         "\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
+                         "\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
+                         "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
+                         "\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
+                         "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
+                         "\x57\xEE\x85\x1C\x90\x27\xBE\x32"
+                         "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
+                         "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
+                         "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
+                         "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
+                         "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
+                         "\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
+                         "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
+                         "\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
+                         "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
+                         "\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
+                         "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
+                         "\x69\x00\x74\x0B\xA2\x16\xAD\x44"
+                         "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
+                         "\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
+                         "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
+                         "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
+                         "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
+                         "\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
+                         "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
+                         "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
+                         "\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
+                         "\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
+                         "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
+                         "\x58\xEF\x86\x1D\x91\x28\xBF\x33"
+                         "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
+                         "\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
+                         "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
+                         "\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
+                         "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
+                         "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
+                         "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
+                         "\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
+                         "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
+                         "\x86\x1D\xB4\x28\xBF\x56\xED\x61"
+                         "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
+                         "\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
+                         "\xDC\x50\xE7\x7E\x15\x89\x20\xB7",
+               .ilen   = 496,
+               .result = "\x85\x79\x6C\x8B\x2B\x6D\x14\xF9"
+                         "\xA6\x83\xB6\x80\x5B\x3A\xF3\x7E"
+                         "\x30\x29\xEB\x1F\xDC\x19\x5F\xEB"
+                         "\xF7\xC4\x27\x04\x51\x87\xD7\x6F"
+                         "\xB8\x4E\x07\xFB\xAC\x3B\x08\xB4"
+                         "\x4D\xCB\xE8\xE1\x71\x7D\x4F\x48"
+                         "\xCD\x81\x64\xA5\xC4\x07\x1A\x9A"
+                         "\x4B\x62\x90\x0E\xC8\xB3\x2B\x6B"
+                         "\x8F\x9C\x6E\x72\x4B\xBA\xEF\x07"
+                         "\x2C\x56\x07\x5E\x37\x30\x60\xA9"
+                         "\xE3\xEF\xD6\x69\xE1\xA1\x77\x64"
+                         "\x93\x75\x7A\xB7\x7A\x3B\xE9\x43"
+                         "\x23\x35\x95\x91\x80\x8A\xC7\xCF"
+                         "\xC3\xD5\xBF\xE7\xFE\x4C\x06\x6B"
+                         "\x05\x19\x48\xE2\x62\xBA\x4F\xF2"
+                         "\xFB\xEE\xE4\xCB\x79\x9D\xA3\x10"
+                         "\x1D\x29\x8C\x1D\x7A\x88\x5A\xDD"
+                         "\x4E\xB6\x18\xAA\xCD\xE6\x33\x96"
+                         "\xD9\x0F\x90\x5A\x78\x76\x4D\x77"
+                         "\x3C\x20\x89\x3B\xA3\xF9\x07\xFD"
+                         "\xE4\xE8\x20\x2D\x15\x0A\x63\x49"
+                         "\xF5\x4F\x89\xD8\xDE\xA1\x28\x78"
+                         "\x28\x07\x09\x1B\x03\x94\x1D\x4B"
+                         "\x82\x28\x1E\x1D\x95\xBA\xAC\x85"
+                         "\x71\x6E\x3C\x18\x4B\x77\x74\x79"
+                         "\xBF\x67\x0A\x53\x3C\x94\xD9\x60"
+                         "\xE9\x6D\x40\x34\xA0\x2A\x53\x5D"
+                         "\x27\xD5\x47\xF9\xC3\x4B\x27\x29"
+                         "\xE4\x76\x9C\x3F\xA7\x1C\x87\xFC"
+                         "\x6E\x0F\xCF\x9B\x60\xF0\xF0\x8B"
+                         "\x70\x1C\x84\x81\x72\x4D\xB4\x98"
+                         "\x23\x62\xE7\x6A\x2B\xFC\xA5\xB2"
+                         "\xFF\xF5\x71\x07\xCD\x90\x23\x13"
+                         "\x19\xD7\x79\x36\x6C\x9D\x55\x8B"
+                         "\x93\x78\x86\x05\x69\x46\xD0\xC5"
+                         "\x39\x09\xEB\x79\xEF\xFA\x9F\xAE"
+                         "\xF3\xD5\x44\xC3\xFD\x86\xD2\x7C"
+                         "\x83\x4B\xD8\x75\x9C\x18\x04\x7B"
+                         "\x73\xAD\x72\xA4\xF6\xAB\xCF\x4B"
+                         "\xCC\x01\x45\x90\xA6\x43\x05\x0C"
+                         "\x6C\x4F\x62\x77\x57\x97\x9F\xEE"
+                         "\x75\xA7\x3C\x38\xD1\x0F\x3D\x0E"
+                         "\x2C\x43\x98\xFB\x13\x65\x73\xE4"
+                         "\x3C\x1E\xD6\x90\x08\xF7\xE0\x99"
+                         "\x3B\xF1\x9D\x6C\x48\xA9\x0E\x32"
+                         "\x17\xC2\xCC\x20\xA1\x19\x26\xAA"
+                         "\xE0\x75\x2F\xFB\x54\x66\x0A\xDF"
+                         "\xB5\xF2\x1F\xC1\x34\x3C\x30\x56"
+                         "\xE8\xDC\xF7\x92\x6B\xBF\x17\x24"
+                         "\xEC\x94\xB5\x3B\xD6\xCE\xA2\x54"
+                         "\x10\x7F\x50\xDE\x69\x77\xD5\x37"
+                         "\xFE\x9C\x10\x83\xC5\xEB\xC9\x53"
+                         "\xB7\xF3\xC4\x20\xAF\x0A\x7E\x57"
+                         "\x3A\xE6\x75\xFE\x89\x00\x6E\x48"
+                         "\xFB\x99\x17\x2C\xF6\x64\x40\x95"
+                         "\x5E\xDC\x7A\xA6\x70\xC7\xF4\xDD"
+                         "\x52\x05\x24\x34\xF9\x0E\xC8\x64"
+                         "\x6D\xE2\xD8\x80\x53\x31\x4C\xFE"
+                         "\xB4\x3A\x5F\x19\xCF\x42\x1B\x22"
+                         "\x0B\x2D\x7B\xF1\xC5\x43\xF7\x5E"
+                         "\x12\xA8\x01\x64\x16\x0B\x26\x5A"
+                         "\x0C\x95\x0F\x40\xC5\x5A\x06\x7C",
+               .rlen   = 496,
        },
 };
 
@@ -13364,8 +16729,144 @@ static struct cipher_testvec camellia_ctr_dec_tv_template[] = {
                          "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48"
                          "\xDF\x76\x0D",
                .rlen   = 51,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 51 - 16, 16 },
+       }, { /* 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     = "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
+                         "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFD",
+               .input  = "\x85\x79\x6C\x8B\x2B\x6D\x14\xF9"
+                         "\xA6\x83\xB6\x80\x5B\x3A\xF3\x7E"
+                         "\x30\x29\xEB\x1F\xDC\x19\x5F\xEB"
+                         "\xF7\xC4\x27\x04\x51\x87\xD7\x6F"
+                         "\xB8\x4E\x07\xFB\xAC\x3B\x08\xB4"
+                         "\x4D\xCB\xE8\xE1\x71\x7D\x4F\x48"
+                         "\xCD\x81\x64\xA5\xC4\x07\x1A\x9A"
+                         "\x4B\x62\x90\x0E\xC8\xB3\x2B\x6B"
+                         "\x8F\x9C\x6E\x72\x4B\xBA\xEF\x07"
+                         "\x2C\x56\x07\x5E\x37\x30\x60\xA9"
+                         "\xE3\xEF\xD6\x69\xE1\xA1\x77\x64"
+                         "\x93\x75\x7A\xB7\x7A\x3B\xE9\x43"
+                         "\x23\x35\x95\x91\x80\x8A\xC7\xCF"
+                         "\xC3\xD5\xBF\xE7\xFE\x4C\x06\x6B"
+                         "\x05\x19\x48\xE2\x62\xBA\x4F\xF2"
+                         "\xFB\xEE\xE4\xCB\x79\x9D\xA3\x10"
+                         "\x1D\x29\x8C\x1D\x7A\x88\x5A\xDD"
+                         "\x4E\xB6\x18\xAA\xCD\xE6\x33\x96"
+                         "\xD9\x0F\x90\x5A\x78\x76\x4D\x77"
+                         "\x3C\x20\x89\x3B\xA3\xF9\x07\xFD"
+                         "\xE4\xE8\x20\x2D\x15\x0A\x63\x49"
+                         "\xF5\x4F\x89\xD8\xDE\xA1\x28\x78"
+                         "\x28\x07\x09\x1B\x03\x94\x1D\x4B"
+                         "\x82\x28\x1E\x1D\x95\xBA\xAC\x85"
+                         "\x71\x6E\x3C\x18\x4B\x77\x74\x79"
+                         "\xBF\x67\x0A\x53\x3C\x94\xD9\x60"
+                         "\xE9\x6D\x40\x34\xA0\x2A\x53\x5D"
+                         "\x27\xD5\x47\xF9\xC3\x4B\x27\x29"
+                         "\xE4\x76\x9C\x3F\xA7\x1C\x87\xFC"
+                         "\x6E\x0F\xCF\x9B\x60\xF0\xF0\x8B"
+                         "\x70\x1C\x84\x81\x72\x4D\xB4\x98"
+                         "\x23\x62\xE7\x6A\x2B\xFC\xA5\xB2"
+                         "\xFF\xF5\x71\x07\xCD\x90\x23\x13"
+                         "\x19\xD7\x79\x36\x6C\x9D\x55\x8B"
+                         "\x93\x78\x86\x05\x69\x46\xD0\xC5"
+                         "\x39\x09\xEB\x79\xEF\xFA\x9F\xAE"
+                         "\xF3\xD5\x44\xC3\xFD\x86\xD2\x7C"
+                         "\x83\x4B\xD8\x75\x9C\x18\x04\x7B"
+                         "\x73\xAD\x72\xA4\xF6\xAB\xCF\x4B"
+                         "\xCC\x01\x45\x90\xA6\x43\x05\x0C"
+                         "\x6C\x4F\x62\x77\x57\x97\x9F\xEE"
+                         "\x75\xA7\x3C\x38\xD1\x0F\x3D\x0E"
+                         "\x2C\x43\x98\xFB\x13\x65\x73\xE4"
+                         "\x3C\x1E\xD6\x90\x08\xF7\xE0\x99"
+                         "\x3B\xF1\x9D\x6C\x48\xA9\x0E\x32"
+                         "\x17\xC2\xCC\x20\xA1\x19\x26\xAA"
+                         "\xE0\x75\x2F\xFB\x54\x66\x0A\xDF"
+                         "\xB5\xF2\x1F\xC1\x34\x3C\x30\x56"
+                         "\xE8\xDC\xF7\x92\x6B\xBF\x17\x24"
+                         "\xEC\x94\xB5\x3B\xD6\xCE\xA2\x54"
+                         "\x10\x7F\x50\xDE\x69\x77\xD5\x37"
+                         "\xFE\x9C\x10\x83\xC5\xEB\xC9\x53"
+                         "\xB7\xF3\xC4\x20\xAF\x0A\x7E\x57"
+                         "\x3A\xE6\x75\xFE\x89\x00\x6E\x48"
+                         "\xFB\x99\x17\x2C\xF6\x64\x40\x95"
+                         "\x5E\xDC\x7A\xA6\x70\xC7\xF4\xDD"
+                         "\x52\x05\x24\x34\xF9\x0E\xC8\x64"
+                         "\x6D\xE2\xD8\x80\x53\x31\x4C\xFE"
+                         "\xB4\x3A\x5F\x19\xCF\x42\x1B\x22"
+                         "\x0B\x2D\x7B\xF1\xC5\x43\xF7\x5E"
+                         "\x12\xA8\x01\x64\x16\x0B\x26\x5A"
+                         "\x0C\x95\x0F\x40\xC5\x5A\x06\x7C",
+               .ilen   = 496,
+               .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\x81\x18\xAF\x23\xBA"
+                         "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
+                         "\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
+                         "\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
+                         "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
+                         "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
+                         "\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
+                         "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
+                         "\x29\xC0\x57\xEE\x62\xF9\x90\x04"
+                         "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
+                         "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
+                         "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
+                         "\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
+                         "\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
+                         "\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
+                         "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
+                         "\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
+                         "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
+                         "\x57\xEE\x85\x1C\x90\x27\xBE\x32"
+                         "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
+                         "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
+                         "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
+                         "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
+                         "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
+                         "\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
+                         "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
+                         "\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
+                         "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
+                         "\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
+                         "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
+                         "\x69\x00\x74\x0B\xA2\x16\xAD\x44"
+                         "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
+                         "\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
+                         "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
+                         "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
+                         "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
+                         "\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
+                         "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
+                         "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
+                         "\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
+                         "\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
+                         "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
+                         "\x58\xEF\x86\x1D\x91\x28\xBF\x33"
+                         "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
+                         "\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
+                         "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
+                         "\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
+                         "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
+                         "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
+                         "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
+                         "\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
+                         "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
+                         "\x86\x1D\xB4\x28\xBF\x56\xED\x61"
+                         "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
+                         "\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
+                         "\xDC\x50\xE7\x7E\x15\x89\x20\xB7",
+               .rlen   = 496,
        },
-
 };
 
 static struct cipher_testvec camellia_lrw_enc_tv_template[] = {
@@ -13614,6 +17115,9 @@ static struct cipher_testvec camellia_lrw_enc_tv_template[] = {
                          "\xb2\x1a\xd8\x4c\xbd\x1d\x10\xe9"
                          "\x5a\xa8\x92\x7f\xba\xe6\x0c\x95",
                .rlen   = 512,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 512 - 16, 16 },
        },
 };
 
@@ -13864,6 +17368,9 @@ static struct cipher_testvec camellia_lrw_dec_tv_template[] = {
                          "\xe9\x2e\xc4\x29\x0f\x84\xdb\xc4"
                          "\x21\xc4\xc2\x75\x67\x89\x37\x0a",
                .rlen   = 512,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 512 - 16, 16 },
        },
 };
 
@@ -14203,6 +17710,9 @@ static struct cipher_testvec camellia_xts_enc_tv_template[] = {
                          "\xb7\x16\xd8\x12\x5c\xcd\x7d\x4e"
                          "\xd5\xc6\x99\xcc\x4e\x6c\x94\x95",
                .rlen   = 512,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 512 - 16, 16 },
        },
 };
 
@@ -14543,6 +18053,9 @@ static struct cipher_testvec camellia_xts_dec_tv_template[] = {
                          "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
                          "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
                .rlen   = 512,
+               .also_non_np = 1,
+               .np     = 2,
+               .tap    = { 512 - 16, 16 },
        },
 };