]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - crypto/testmgr.h
Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus
[karo-tx-linux.git] / crypto / testmgr.h
index 868edf11704142deec8e05c44a2edfb37661ad27..64b8a8082645da7ddb69f1dda35f52b4f746a486 100644 (file)
@@ -14504,6 +14504,9 @@ static struct cipher_testvec aes_cbc_enc_tv_template[] = {
                .result = "\xe3\x53\x77\x9c\x10\x79\xae\xb8"
                          "\x27\x08\x94\x2d\xbe\x77\x18\x1a",
                .rlen   = 16,
+               .also_non_np = 1,
+               .np     = 8,
+               .tap    = { 3, 2, 3, 2, 3, 1, 1, 1 },
        }, {
                .key    = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
                          "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
@@ -14723,6 +14726,9 @@ static struct cipher_testvec aes_cbc_dec_tv_template[] = {
                .ilen   = 16,
                .result = "Single block msg",
                .rlen   = 16,
+               .also_non_np = 1,
+               .np     = 8,
+               .tap    = { 3, 2, 3, 2, 3, 1, 1, 1 },
        }, {
                .key    = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
                          "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
@@ -15032,6 +15038,9 @@ static struct aead_testvec hmac_sha1_aes_cbc_enc_tv_temp[] = {
                .klen   = 8 + 20 + 16,
                .iv     = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
                          "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
+               .assoc  = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
+                         "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
+               .alen   = 16,
                .input  = "Single block msg",
                .ilen   = 16,
                .result = "\xe3\x53\x77\x9c\x10\x79\xae\xb8"
@@ -15057,6 +15066,9 @@ static struct aead_testvec hmac_sha1_aes_cbc_enc_tv_temp[] = {
                .klen   = 8 + 20 + 16,
                .iv     = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
                          "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
+               .assoc  = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
+                         "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
+               .alen   = 16,
                .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"
@@ -15087,6 +15099,9 @@ static struct aead_testvec hmac_sha1_aes_cbc_enc_tv_temp[] = {
                .klen   = 8 + 20 + 16,
                .iv     = "\xc7\x82\xdc\x4c\x09\x8c\x66\xcb"
                          "\xd9\xcd\x27\xd8\x25\x68\x2c\x81",
+               .assoc  = "\xc7\x82\xdc\x4c\x09\x8c\x66\xcb"
+                         "\xd9\xcd\x27\xd8\x25\x68\x2c\x81",
+               .alen   = 16,
                .input  = "This is a 48-byte message (exactly 3 AES blocks)",
                .ilen   = 48,
                .result = "\xd0\xa0\x2b\x38\x36\x45\x17\x53"
@@ -15116,6 +15131,9 @@ static struct aead_testvec hmac_sha1_aes_cbc_enc_tv_temp[] = {
                .klen   = 8 + 20 + 16,
                .iv     = "\x8c\xe8\x2e\xef\xbe\xa0\xda\x3c"
                          "\x44\x69\x9e\xd7\xdb\x51\xb7\xd9",
+               .assoc  = "\x8c\xe8\x2e\xef\xbe\xa0\xda\x3c"
+                         "\x44\x69\x9e\xd7\xdb\x51\xb7\xd9",
+               .alen   = 16,
                .input  = "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
                          "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
                          "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
@@ -15154,8 +15172,10 @@ static struct aead_testvec hmac_sha1_aes_cbc_enc_tv_temp[] = {
                .klen   = 8 + 20 + 16,
                .iv     = "\xe9\x6e\x8c\x08\xab\x46\x57\x63"
                          "\xfd\x09\x8d\x45\xdd\x3f\xf8\x93",
-               .assoc  = "\x00\x00\x43\x21\x00\x00\x00\x01",
-               .alen   = 8,
+               .assoc  = "\x00\x00\x43\x21\x00\x00\x00\x01"
+                         "\xe9\x6e\x8c\x08\xab\x46\x57\x63"
+                         "\xfd\x09\x8d\x45\xdd\x3f\xf8\x93",
+               .alen   = 24,
                .input  = "\x08\x00\x0e\xbd\xa7\x0a\x00\x00"
                          "\x8e\x9c\x08\x3d\xb9\x5b\x07\x00"
                          "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
@@ -15199,6 +15219,9 @@ static struct aead_testvec hmac_sha1_aes_cbc_enc_tv_temp[] = {
                .klen   = 8 + 20 + 24,
                .iv     = "\x00\x01\x02\x03\x04\x05\x06\x07"
                          "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
+               .assoc  = "\x00\x01\x02\x03\x04\x05\x06\x07"
+                         "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
+               .alen   = 16,
                .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"
@@ -15239,6 +15262,9 @@ static struct aead_testvec hmac_sha1_aes_cbc_enc_tv_temp[] = {
                .klen   = 8 + 20 + 32,
                .iv     = "\x00\x01\x02\x03\x04\x05\x06\x07"
                          "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
+               .assoc  = "\x00\x01\x02\x03\x04\x05\x06\x07"
+                         "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
+               .alen   = 16,
                .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"
@@ -15374,6 +15400,9 @@ static struct aead_testvec hmac_sha256_aes_cbc_enc_tv_temp[] = {
                .klen   = 8 + 32 + 16,
                .iv     = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
                          "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
+               .assoc  = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
+                         "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
+               .alen   = 16,
                .input  = "Single block msg",
                .ilen   = 16,
                .result = "\xe3\x53\x77\x9c\x10\x79\xae\xb8"
@@ -15401,6 +15430,9 @@ static struct aead_testvec hmac_sha256_aes_cbc_enc_tv_temp[] = {
                .klen   = 8 + 32 + 16,
                .iv     = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
                          "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
+               .assoc  = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
+                         "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
+               .alen   = 16,
                .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"
@@ -15433,6 +15465,9 @@ static struct aead_testvec hmac_sha256_aes_cbc_enc_tv_temp[] = {
                .klen   = 8 + 32 + 16,
                .iv     = "\xc7\x82\xdc\x4c\x09\x8c\x66\xcb"
                          "\xd9\xcd\x27\xd8\x25\x68\x2c\x81",
+               .assoc  = "\xc7\x82\xdc\x4c\x09\x8c\x66\xcb"
+                         "\xd9\xcd\x27\xd8\x25\x68\x2c\x81",
+               .alen   = 16,
                .input  = "This is a 48-byte message (exactly 3 AES blocks)",
                .ilen   = 48,
                .result = "\xd0\xa0\x2b\x38\x36\x45\x17\x53"
@@ -15464,6 +15499,9 @@ static struct aead_testvec hmac_sha256_aes_cbc_enc_tv_temp[] = {
                .klen   = 8 + 32 + 16,
                .iv     = "\x8c\xe8\x2e\xef\xbe\xa0\xda\x3c"
                          "\x44\x69\x9e\xd7\xdb\x51\xb7\xd9",
+               .assoc  = "\x8c\xe8\x2e\xef\xbe\xa0\xda\x3c"
+                         "\x44\x69\x9e\xd7\xdb\x51\xb7\xd9",
+               .alen   = 16,
                .input  = "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
                          "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
                          "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
@@ -15504,8 +15542,10 @@ static struct aead_testvec hmac_sha256_aes_cbc_enc_tv_temp[] = {
                .klen   = 8 + 32 + 16,
                .iv     = "\xe9\x6e\x8c\x08\xab\x46\x57\x63"
                          "\xfd\x09\x8d\x45\xdd\x3f\xf8\x93",
-               .assoc  = "\x00\x00\x43\x21\x00\x00\x00\x01",
-               .alen   = 8,
+               .assoc  = "\x00\x00\x43\x21\x00\x00\x00\x01"
+                         "\xe9\x6e\x8c\x08\xab\x46\x57\x63"
+                         "\xfd\x09\x8d\x45\xdd\x3f\xf8\x93",
+               .alen   = 24,
                .input  = "\x08\x00\x0e\xbd\xa7\x0a\x00\x00"
                          "\x8e\x9c\x08\x3d\xb9\x5b\x07\x00"
                          "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
@@ -15551,6 +15591,9 @@ static struct aead_testvec hmac_sha256_aes_cbc_enc_tv_temp[] = {
                .klen   = 8 + 32 + 24,
                .iv     = "\x00\x01\x02\x03\x04\x05\x06\x07"
                          "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
+               .assoc  = "\x00\x01\x02\x03\x04\x05\x06\x07"
+                         "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
+               .alen   = 16,
                .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"
@@ -15593,6 +15636,9 @@ static struct aead_testvec hmac_sha256_aes_cbc_enc_tv_temp[] = {
                .klen   = 8 + 32 + 32,
                .iv     = "\x00\x01\x02\x03\x04\x05\x06\x07"
                          "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
+               .assoc  = "\x00\x01\x02\x03\x04\x05\x06\x07"
+                         "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
+               .alen   = 16,
                .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"
@@ -15641,6 +15687,9 @@ static struct aead_testvec hmac_sha512_aes_cbc_enc_tv_temp[] = {
                .klen   = 8 + 64 + 16,
                .iv     = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
                          "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
+               .assoc  = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
+                         "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
+               .alen   = 16,
                .input  = "Single block msg",
                .ilen   = 16,
                .result = "\xe3\x53\x77\x9c\x10\x79\xae\xb8"
@@ -15676,6 +15725,9 @@ static struct aead_testvec hmac_sha512_aes_cbc_enc_tv_temp[] = {
                .klen   = 8 + 64 + 16,
                .iv     = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
                          "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
+               .assoc  = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
+                         "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
+               .alen   = 16,
                .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"
@@ -15716,6 +15768,9 @@ static struct aead_testvec hmac_sha512_aes_cbc_enc_tv_temp[] = {
                .klen   = 8 + 64 + 16,
                .iv     = "\xc7\x82\xdc\x4c\x09\x8c\x66\xcb"
                          "\xd9\xcd\x27\xd8\x25\x68\x2c\x81",
+               .assoc  = "\xc7\x82\xdc\x4c\x09\x8c\x66\xcb"
+                         "\xd9\xcd\x27\xd8\x25\x68\x2c\x81",
+               .alen   = 16,
                .input  = "This is a 48-byte message (exactly 3 AES blocks)",
                .ilen   = 48,
                .result = "\xd0\xa0\x2b\x38\x36\x45\x17\x53"
@@ -15755,6 +15810,9 @@ static struct aead_testvec hmac_sha512_aes_cbc_enc_tv_temp[] = {
                .klen   = 8 + 64 + 16,
                .iv     = "\x8c\xe8\x2e\xef\xbe\xa0\xda\x3c"
                          "\x44\x69\x9e\xd7\xdb\x51\xb7\xd9",
+               .assoc  = "\x8c\xe8\x2e\xef\xbe\xa0\xda\x3c"
+                         "\x44\x69\x9e\xd7\xdb\x51\xb7\xd9",
+               .alen   = 16,
                .input  = "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
                          "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
                          "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
@@ -15803,8 +15861,10 @@ static struct aead_testvec hmac_sha512_aes_cbc_enc_tv_temp[] = {
                .klen   = 8 + 64 + 16,
                .iv     = "\xe9\x6e\x8c\x08\xab\x46\x57\x63"
                          "\xfd\x09\x8d\x45\xdd\x3f\xf8\x93",
-               .assoc  = "\x00\x00\x43\x21\x00\x00\x00\x01",
-               .alen   = 8,
+               .assoc  = "\x00\x00\x43\x21\x00\x00\x00\x01"
+                         "\xe9\x6e\x8c\x08\xab\x46\x57\x63"
+                         "\xfd\x09\x8d\x45\xdd\x3f\xf8\x93",
+               .alen   = 24,
                .input  = "\x08\x00\x0e\xbd\xa7\x0a\x00\x00"
                          "\x8e\x9c\x08\x3d\xb9\x5b\x07\x00"
                          "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
@@ -15858,6 +15918,9 @@ static struct aead_testvec hmac_sha512_aes_cbc_enc_tv_temp[] = {
                .klen   = 8 + 64 + 24,
                .iv     = "\x00\x01\x02\x03\x04\x05\x06\x07"
                          "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
+               .assoc  = "\x00\x01\x02\x03\x04\x05\x06\x07"
+                         "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
+               .alen   = 16,
                .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"
@@ -15908,6 +15971,9 @@ static struct aead_testvec hmac_sha512_aes_cbc_enc_tv_temp[] = {
                .klen   = 8 + 64 + 32,
                .iv     = "\x00\x01\x02\x03\x04\x05\x06\x07"
                          "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
+               .assoc  = "\x00\x01\x02\x03\x04\x05\x06\x07"
+                         "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
+               .alen   = 16,
                .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"
@@ -15955,8 +16021,9 @@ static struct aead_testvec hmac_sha1_des_cbc_enc_tv_temp[] = {
                          "\xE9\xC0\xFF\x2E\x76\x0B\x64\x24",
                .klen   = 8 + 20 + 8,
                .iv     = "\x7D\x33\x88\x93\x0F\x93\xB2\x42",
-               .assoc  = "\x00\x00\x43\x21\x00\x00\x00\x01",
-               .alen   = 8,
+               .assoc  = "\x00\x00\x43\x21\x00\x00\x00\x01"
+                         "\x7D\x33\x88\x93\x0F\x93\xB2\x42",
+               .alen   = 16,
                .input  = "\x6f\x54\x20\x6f\x61\x4d\x79\x6e"
                          "\x53\x20\x63\x65\x65\x72\x73\x74"
                          "\x54\x20\x6f\x6f\x4d\x20\x6e\x61"
@@ -16015,8 +16082,9 @@ static struct aead_testvec hmac_sha224_des_cbc_enc_tv_temp[] = {
                          "\xE9\xC0\xFF\x2E\x76\x0B\x64\x24",
                .klen   = 8 + 24 + 8,
                .iv     = "\x7D\x33\x88\x93\x0F\x93\xB2\x42",
-               .assoc  = "\x00\x00\x43\x21\x00\x00\x00\x01",
-               .alen   = 8,
+               .assoc  = "\x00\x00\x43\x21\x00\x00\x00\x01"
+                         "\x7D\x33\x88\x93\x0F\x93\xB2\x42",
+               .alen   = 16,
                .input  = "\x6f\x54\x20\x6f\x61\x4d\x79\x6e"
                          "\x53\x20\x63\x65\x65\x72\x73\x74"
                          "\x54\x20\x6f\x6f\x4d\x20\x6e\x61"
@@ -16076,8 +16144,9 @@ static struct aead_testvec hmac_sha256_des_cbc_enc_tv_temp[] = {
                          "\xE9\xC0\xFF\x2E\x76\x0B\x64\x24",
                .klen   = 8 + 32 + 8,
                .iv     = "\x7D\x33\x88\x93\x0F\x93\xB2\x42",
-               .assoc  = "\x00\x00\x43\x21\x00\x00\x00\x01",
-               .alen   = 8,
+               .assoc  = "\x00\x00\x43\x21\x00\x00\x00\x01"
+                         "\x7D\x33\x88\x93\x0F\x93\xB2\x42",
+               .alen   = 16,
                .input  = "\x6f\x54\x20\x6f\x61\x4d\x79\x6e"
                          "\x53\x20\x63\x65\x65\x72\x73\x74"
                          "\x54\x20\x6f\x6f\x4d\x20\x6e\x61"
@@ -16140,8 +16209,9 @@ static struct aead_testvec hmac_sha384_des_cbc_enc_tv_temp[] = {
                          "\xE9\xC0\xFF\x2E\x76\x0B\x64\x24",
                .klen   = 8 + 48 + 8,
                .iv     = "\x7D\x33\x88\x93\x0F\x93\xB2\x42",
-               .assoc  = "\x00\x00\x43\x21\x00\x00\x00\x01",
-               .alen   = 8,
+               .assoc  = "\x00\x00\x43\x21\x00\x00\x00\x01"
+                         "\x7D\x33\x88\x93\x0F\x93\xB2\x42",
+               .alen   = 16,
                .input  = "\x6f\x54\x20\x6f\x61\x4d\x79\x6e"
                          "\x53\x20\x63\x65\x65\x72\x73\x74"
                          "\x54\x20\x6f\x6f\x4d\x20\x6e\x61"
@@ -16208,8 +16278,9 @@ static struct aead_testvec hmac_sha512_des_cbc_enc_tv_temp[] = {
                          "\xE9\xC0\xFF\x2E\x76\x0B\x64\x24",
                .klen   = 8 + 64 + 8,
                .iv     = "\x7D\x33\x88\x93\x0F\x93\xB2\x42",
-               .assoc  = "\x00\x00\x43\x21\x00\x00\x00\x01",
-               .alen   = 8,
+               .assoc  = "\x00\x00\x43\x21\x00\x00\x00\x01"
+                         "\x7D\x33\x88\x93\x0F\x93\xB2\x42",
+               .alen   = 16,
                .input  = "\x6f\x54\x20\x6f\x61\x4d\x79\x6e"
                          "\x53\x20\x63\x65\x65\x72\x73\x74"
                          "\x54\x20\x6f\x6f\x4d\x20\x6e\x61"
@@ -16275,8 +16346,9 @@ static struct aead_testvec hmac_sha1_des3_ede_cbc_enc_tv_temp[] = {
                          "\xEA\xC2\x84\xE8\x14\x95\xDB\xE8",
                .klen   = 8 + 20 + 24,
                .iv     = "\x7D\x33\x88\x93\x0F\x93\xB2\x42",
-               .assoc  = "\x00\x00\x43\x21\x00\x00\x00\x01",
-               .alen   = 8,
+               .assoc  = "\x00\x00\x43\x21\x00\x00\x00\x01"
+                         "\x7D\x33\x88\x93\x0F\x93\xB2\x42",
+               .alen   = 16,
                .input  = "\x6f\x54\x20\x6f\x61\x4d\x79\x6e"
                          "\x53\x20\x63\x65\x65\x72\x73\x74"
                  "\x54\x20\x6f\x6f\x4d\x20\x6e\x61"
@@ -16337,8 +16409,9 @@ static struct aead_testvec hmac_sha224_des3_ede_cbc_enc_tv_temp[] = {
                          "\xEA\xC2\x84\xE8\x14\x95\xDB\xE8",
                .klen   = 8 + 24 + 24,
                .iv     = "\x7D\x33\x88\x93\x0F\x93\xB2\x42",
-               .assoc  = "\x00\x00\x43\x21\x00\x00\x00\x01",
-               .alen   = 8,
+               .assoc  = "\x00\x00\x43\x21\x00\x00\x00\x01"
+                         "\x7D\x33\x88\x93\x0F\x93\xB2\x42",
+               .alen   = 16,
                .input  = "\x6f\x54\x20\x6f\x61\x4d\x79\x6e"
                          "\x53\x20\x63\x65\x65\x72\x73\x74"
                          "\x54\x20\x6f\x6f\x4d\x20\x6e\x61"
@@ -16400,8 +16473,9 @@ static struct aead_testvec hmac_sha256_des3_ede_cbc_enc_tv_temp[] = {
                          "\xEA\xC2\x84\xE8\x14\x95\xDB\xE8",
                .klen   = 8 + 32 + 24,
                .iv     = "\x7D\x33\x88\x93\x0F\x93\xB2\x42",
-               .assoc  = "\x00\x00\x43\x21\x00\x00\x00\x01",
-               .alen   = 8,
+               .assoc  = "\x00\x00\x43\x21\x00\x00\x00\x01"
+                         "\x7D\x33\x88\x93\x0F\x93\xB2\x42",
+               .alen   = 16,
                .input  = "\x6f\x54\x20\x6f\x61\x4d\x79\x6e"
                          "\x53\x20\x63\x65\x65\x72\x73\x74"
                          "\x54\x20\x6f\x6f\x4d\x20\x6e\x61"
@@ -16466,8 +16540,9 @@ static struct aead_testvec hmac_sha384_des3_ede_cbc_enc_tv_temp[] = {
                          "\xEA\xC2\x84\xE8\x14\x95\xDB\xE8",
                .klen   = 8 + 48 + 24,
                .iv     = "\x7D\x33\x88\x93\x0F\x93\xB2\x42",
-       .assoc  = "\x00\x00\x43\x21\x00\x00\x00\x01",
-               .alen   = 8,
+               .assoc  = "\x00\x00\x43\x21\x00\x00\x00\x01"
+                         "\x7D\x33\x88\x93\x0F\x93\xB2\x42",
+               .alen   = 16,
                .input  = "\x6f\x54\x20\x6f\x61\x4d\x79\x6e"
                          "\x53\x20\x63\x65\x65\x72\x73\x74"
                          "\x54\x20\x6f\x6f\x4d\x20\x6e\x61"
@@ -16536,8 +16611,9 @@ static struct aead_testvec hmac_sha512_des3_ede_cbc_enc_tv_temp[] = {
                          "\xEA\xC2\x84\xE8\x14\x95\xDB\xE8",
                .klen   = 8 + 64 + 24,
                .iv     = "\x7D\x33\x88\x93\x0F\x93\xB2\x42",
-               .assoc  = "\x00\x00\x43\x21\x00\x00\x00\x01",
-               .alen   = 8,
+               .assoc  = "\x00\x00\x43\x21\x00\x00\x00\x01"
+                         "\x7D\x33\x88\x93\x0F\x93\xB2\x42",
+               .alen   = 16,
                .input  = "\x6f\x54\x20\x6f\x61\x4d\x79\x6e"
                          "\x53\x20\x63\x65\x65\x72\x73\x74"
                          "\x54\x20\x6f\x6f\x4d\x20\x6e\x61"
@@ -20129,149 +20205,150 @@ static struct aead_testvec aes_gcm_dec_tv_template[] = {
 };
 
 static struct aead_testvec aes_gcm_rfc4106_enc_tv_template[] = {
-        { /* Generated using Crypto++ */
+       { /* Generated using Crypto++ */
                .key    = zeroed_string,
                .klen   = 20,
-                .iv     = zeroed_string,
-                .input  = zeroed_string,
-                .ilen   = 16,
-                .assoc  = zeroed_string,
-                .alen   = 8,
+               .iv     = zeroed_string,
+               .input  = zeroed_string,
+               .ilen   = 16,
+               .assoc  = zeroed_string,
+               .alen   = 16,
                .result = "\x03\x88\xDA\xCE\x60\xB6\xA3\x92"
-                          "\xF3\x28\xC2\xB9\x71\xB2\xFE\x78"
-                          "\x97\xFE\x4C\x23\x37\x42\x01\xE0"
-                          "\x81\x9F\x8D\xC5\xD7\x41\xA0\x1B",
+                         "\xF3\x28\xC2\xB9\x71\xB2\xFE\x78"
+                         "\x97\xFE\x4C\x23\x37\x42\x01\xE0"
+                         "\x81\x9F\x8D\xC5\xD7\x41\xA0\x1B",
                .rlen   = 32,
-        },{
+       },{
                .key    = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
                          "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
-                          "\x00\x00\x00\x00",
+                         "\x00\x00\x00\x00",
                .klen   = 20,
-                .iv     = "\x00\x00\x00\x00\x00\x00\x00\x01"
-                          "\x00\x00\x00\x00",
-                .input  = zeroed_string,
-                .ilen   = 16,
-                .assoc  = zeroed_string,
-                .alen   = 8,
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x01",
+               .input  = zeroed_string,
+               .ilen   = 16,
+               .assoc  = "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x01",
+               .alen   = 16,
                .result = "\xC0\x0D\x8B\x42\x0F\x8F\x34\x18"
-                          "\x88\xB1\xC5\xBC\xC5\xB6\xD6\x28"
-                          "\x6A\x9D\xDF\x11\x5E\xFE\x5E\x9D"
-                          "\x2F\x70\x44\x92\xF7\xF2\xE3\xEF",
+                         "\x88\xB1\xC5\xBC\xC5\xB6\xD6\x28"
+                         "\x6A\x9D\xDF\x11\x5E\xFE\x5E\x9D"
+                         "\x2F\x70\x44\x92\xF7\xF2\xE3\xEF",
                .rlen   = 32,
 
-        }, {
+       }, {
                .key    = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
                          "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
-                          "\x00\x00\x00\x00",
+                         "\x00\x00\x00\x00",
                .klen   = 20,
-                .iv     = zeroed_string,
-                .input  = "\x01\x01\x01\x01\x01\x01\x01\x01"
-                          "\x01\x01\x01\x01\x01\x01\x01\x01",
-                .ilen   = 16,
-                .assoc  = zeroed_string,
-                .alen   = 8,
+               .iv     = zeroed_string,
+               .input  = "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01",
+               .ilen   = 16,
+               .assoc  = zeroed_string,
+               .alen   = 16,
                .result = "\x4B\xB1\xB5\xE3\x25\x71\x70\xDE"
-                          "\x7F\xC9\x9C\xA5\x14\x19\xF2\xAC"
-                          "\x0B\x8F\x88\x69\x17\xE6\xB4\x3C"
-                          "\xB1\x68\xFD\x14\x52\x64\x61\xB2",
+                         "\x7F\xC9\x9C\xA5\x14\x19\xF2\xAC"
+                         "\x0B\x8F\x88\x69\x17\xE6\xB4\x3C"
+                         "\xB1\x68\xFD\x14\x52\x64\x61\xB2",
                .rlen   = 32,
-        }, {
+       }, {
                .key    = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
                          "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
-                          "\x00\x00\x00\x00",
+                         "\x00\x00\x00\x00",
                .klen   = 20,
-                .iv     = zeroed_string,
-                .input  = "\x01\x01\x01\x01\x01\x01\x01\x01"
-                          "\x01\x01\x01\x01\x01\x01\x01\x01",
-                .ilen   = 16,
-                .assoc  = "\x01\x01\x01\x01\x01\x01\x01\x01",
-                .alen   = 8,
+               .iv     = zeroed_string,
+               .input  = "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01",
+               .ilen   = 16,
+               .assoc  = "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .alen   = 16,
                .result = "\x4B\xB1\xB5\xE3\x25\x71\x70\xDE"
-                          "\x7F\xC9\x9C\xA5\x14\x19\xF2\xAC"
-                          "\x90\x92\xB7\xE3\x5F\xA3\x9A\x63"
-                          "\x7E\xD7\x1F\xD8\xD3\x7C\x4B\xF5",
+                         "\x7F\xC9\x9C\xA5\x14\x19\xF2\xAC"
+                         "\x90\x92\xB7\xE3\x5F\xA3\x9A\x63"
+                         "\x7E\xD7\x1F\xD8\xD3\x7C\x4B\xF5",
                .rlen   = 32,
-        }, {
+       }, {
                .key    = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
                          "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
-                          "\x00\x00\x00\x00",
+                         "\x00\x00\x00\x00",
                .klen   = 20,
-                .iv     = "\x00\x00\x00\x00\x00\x00\x00\x01"
-                          "\x00\x00\x00\x00",
-                .input  = "\x01\x01\x01\x01\x01\x01\x01\x01"
-                          "\x01\x01\x01\x01\x01\x01\x01\x01",
-                .ilen   = 16,
-                .assoc  = "\x01\x01\x01\x01\x01\x01\x01\x01",
-                .alen   = 8,
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x01",
+               .input  = "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01",
+               .ilen   = 16,
+               .assoc  = "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x00\x00\x00\x00\x00\x00\x00\x01",
+               .alen   = 16,
                .result = "\xC1\x0C\x8A\x43\x0E\x8E\x35\x19"
-                          "\x89\xB0\xC4\xBD\xC4\xB7\xD7\x29"
-                          "\x64\x50\xF9\x32\x13\xFB\x74\x61"
-                          "\xF4\xED\x52\xD3\xC5\x10\x55\x3C",
+                         "\x89\xB0\xC4\xBD\xC4\xB7\xD7\x29"
+                         "\x64\x50\xF9\x32\x13\xFB\x74\x61"
+                         "\xF4\xED\x52\xD3\xC5\x10\x55\x3C",
                .rlen   = 32,
-        }, {
+       }, {
                .key    = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
                          "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
-                          "\x00\x00\x00\x00",
+                         "\x00\x00\x00\x00",
                .klen   = 20,
-                .iv     = "\x00\x00\x00\x00\x00\x00\x00\x01"
-                          "\x00\x00\x00\x00",
-                .input  = "\x01\x01\x01\x01\x01\x01\x01\x01"
-                          "\x01\x01\x01\x01\x01\x01\x01\x01"
-                          "\x01\x01\x01\x01\x01\x01\x01\x01"
-                          "\x01\x01\x01\x01\x01\x01\x01\x01"
-                          "\x01\x01\x01\x01\x01\x01\x01\x01"
-                          "\x01\x01\x01\x01\x01\x01\x01\x01"
-                          "\x01\x01\x01\x01\x01\x01\x01\x01"
-                          "\x01\x01\x01\x01\x01\x01\x01\x01",
-                .ilen   = 64,
-                .assoc  = "\x01\x01\x01\x01\x01\x01\x01\x01",
-                .alen   = 8,
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x01",
+               .input  = "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01",
+               .ilen   = 64,
+               .assoc  = "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x00\x00\x00\x00\x00\x00\x00\x01",
+               .alen   = 16,
                .result = "\xC1\x0C\x8A\x43\x0E\x8E\x35\x19"
-                          "\x89\xB0\xC4\xBD\xC4\xB7\xD7\x29"
-                          "\x98\x14\xA1\x42\x37\x80\xFD\x90"
-                          "\x68\x12\x01\xA8\x91\x89\xB9\x83"
-                          "\x5B\x11\x77\x12\x9B\xFF\x24\x89"
-                          "\x94\x5F\x18\x12\xBA\x27\x09\x39"
-                          "\x99\x96\x76\x42\x15\x1C\xCD\xCB"
-                          "\xDC\xD3\xDA\x65\x73\xAF\x80\xCD"
-                          "\xD2\xB6\xC2\x4A\x76\xC2\x92\x85"
-                          "\xBD\xCF\x62\x98\x58\x14\xE5\xBD",
+                         "\x89\xB0\xC4\xBD\xC4\xB7\xD7\x29"
+                         "\x98\x14\xA1\x42\x37\x80\xFD\x90"
+                         "\x68\x12\x01\xA8\x91\x89\xB9\x83"
+                         "\x5B\x11\x77\x12\x9B\xFF\x24\x89"
+                         "\x94\x5F\x18\x12\xBA\x27\x09\x39"
+                         "\x99\x96\x76\x42\x15\x1C\xCD\xCB"
+                         "\xDC\xD3\xDA\x65\x73\xAF\x80\xCD"
+                         "\xD2\xB6\xC2\x4A\x76\xC2\x92\x85"
+                         "\xBD\xCF\x62\x98\x58\x14\xE5\xBD",
                .rlen   = 80,
-        }, {
+       }, {
                .key    = "\x00\x01\x02\x03\x04\x05\x06\x07"
                          "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
-                          "\x00\x00\x00\x00",
+                         "\x00\x00\x00\x00",
                .klen   = 20,
-                .iv     = "\x00\x00\x45\x67\x89\xab\xcd\xef"
-                          "\x00\x00\x00\x00",
-                .input  = "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff",
-                .ilen   = 192,
-                .assoc  = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
-                          "\xaa\xaa\xaa\xaa",
-                .alen   = 12,
+               .iv     = "\x00\x00\x45\x67\x89\xab\xcd\xef",
+               .input  = "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff",
+               .ilen   = 192,
+               .assoc  = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
+                         "\xaa\xaa\xaa\xaa\x00\x00\x45\x67"
+                         "\x89\xab\xcd\xef",
+               .alen   = 20,
                .result = "\xC1\x76\x33\x85\xE2\x9B\x5F\xDE"
                          "\xDE\x89\x3D\x42\xE7\xC9\x69\x8A"
                          "\x44\x6D\xC3\x88\x46\x2E\xC2\x01"
@@ -20316,8 +20393,9 @@ static struct aead_testvec aes_gcm_rfc4106_enc_tv_template[] = {
                          "\x00\x21\x00\x01\x01\x02\x02\x01",
                .ilen   = 72,
                .assoc  = "\x00\x00\x43\x21\x87\x65\x43\x21"
-                         "\x00\x00\x00\x00",
-               .alen   = 12,
+                         "\x00\x00\x00\x00\x49\x56\xED\x7E"
+                         "\x3B\x24\x4C\xFE",
+               .alen   = 20,
                .result = "\xFE\xCF\x53\x7E\x72\x9D\x5B\x07"
                          "\xDC\x30\xDF\x52\x8D\xD2\x2B\x76"
                          "\x8D\x1B\x98\x73\x66\x96\xA6\xFD"
@@ -20345,8 +20423,9 @@ static struct aead_testvec aes_gcm_rfc4106_enc_tv_template[] = {
                          "\x65\x72\x63\x69\x74\x79\x02\x64"
                          "\x6B\x00\x00\x01\x00\x01\x00\x01",
                .ilen   = 64,
-               .assoc  = "\x00\x00\xA5\xF8\x00\x00\x00\x0A",
-               .alen   = 8,
+               .assoc  = "\x00\x00\xA5\xF8\x00\x00\x00\x0A"
+                         "\xFA\xCE\xDB\xAD\xDE\xCA\xF8\x88",
+               .alen   = 16,
                .result = "\xDE\xB2\x2C\xD9\xB0\x7C\x72\xC1"
                          "\x6E\x3A\x65\xBE\xEB\x8D\xF3\x04"
                          "\xA5\xA5\x89\x7D\x33\xAE\x53\x0F"
@@ -20374,8 +20453,9 @@ static struct aead_testvec aes_gcm_rfc4106_enc_tv_template[] = {
                          "\x02\x04\x05\xB4\x01\x01\x04\x02"
                          "\x01\x02\x02\x01",
                .ilen   = 52,
-               .assoc  = "\x4A\x2C\xBF\xE3\x00\x00\x00\x02",
-               .alen   = 8,
+               .assoc  = "\x4A\x2C\xBF\xE3\x00\x00\x00\x02"
+                         "\x01\x02\x03\x04\x05\x06\x07\x08",
+               .alen   = 16,
                .result = "\xFF\x42\x5C\x9B\x72\x45\x99\xDF"
                          "\x7A\x3B\xCD\x51\x01\x94\xE0\x0D"
                          "\x6A\x78\x10\x7F\x1B\x0B\x1C\xBF"
@@ -20401,8 +20481,9 @@ static struct aead_testvec aes_gcm_rfc4106_enc_tv_template[] = {
                          "\x75\x76\x77\x61\x62\x63\x64\x65"
                          "\x66\x67\x68\x69\x01\x02\x02\x01",
                .ilen   = 64,
-               .assoc  = "\x00\x00\x00\x00\x00\x00\x00\x01",
-               .alen   = 8,
+               .assoc  = "\x00\x00\x00\x00\x00\x00\x00\x01"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .alen   = 16,
                .result = "\x46\x88\xDA\xF2\xF9\x73\xA3\x92"
                          "\x73\x29\x09\xC3\x31\xD5\x6D\x60"
                          "\xF6\x94\xAB\xAA\x41\x4B\x5E\x7F"
@@ -20430,8 +20511,9 @@ static struct aead_testvec aes_gcm_rfc4106_enc_tv_template[] = {
                          "\x66\x67\x68\x69\x01\x02\x02\x01",
                .ilen   = 64,
                .assoc  = "\x42\xF6\x7E\x3F\x10\x10\x10\x10"
-                         "\x10\x10\x10\x10",
-               .alen   = 12,
+                         "\x10\x10\x10\x10\x4E\x28\x00\x00"
+                         "\xA2\xFC\xA1\xA3",
+               .alen   = 20,
                .result = "\xFB\xA2\xCA\xA4\x85\x3C\xF9\xF0"
                          "\xF2\x2C\xB1\x0D\x86\xDD\x83\xB0"
                          "\xFE\xC7\x56\x91\xCF\x1A\x04\xB0"
@@ -20455,8 +20537,9 @@ static struct aead_testvec aes_gcm_rfc4106_enc_tv_template[] = {
                          "\x01\x02\x02\x01",
                .ilen   = 28,
                .assoc  = "\x42\xF6\x7E\x3F\x10\x10\x10\x10"
-                         "\x10\x10\x10\x10",
-               .alen   = 12,
+                         "\x10\x10\x10\x10\x4E\x28\x00\x00"
+                         "\xA2\xFC\xA1\xA3",
+               .alen   = 20,
                .result = "\xFB\xA2\xCA\x84\x5E\x5D\xF9\xF0"
                          "\xF2\x2C\x3E\x6E\x86\xDD\x83\x1E"
                          "\x1F\xC6\x57\x92\xCD\x1A\xF9\x13"
@@ -20477,8 +20560,9 @@ static struct aead_testvec aes_gcm_rfc4106_enc_tv_template[] = {
                          "\xCB\x71\x26\x02\xDD\x6B\xB0\x3E"
                          "\x50\x10\x16\xD0\x75\x68\x00\x01",
                .ilen   = 40,
-               .assoc  = "\x00\x00\xA5\xF8\x00\x00\x00\x0A",
-               .alen   = 8,
+               .assoc  = "\x00\x00\xA5\xF8\x00\x00\x00\x0A"
+                         "\xFA\xCE\xDB\xAD\xDE\xCA\xF8\x88",
+               .alen   = 16,
                .result = "\xA5\xB1\xF8\x06\x60\x29\xAE\xA4"
                          "\x0E\x59\x8B\x81\x22\xDE\x02\x42"
                          "\x09\x38\xB3\xAB\x33\xF8\x28\xE6"
@@ -20505,8 +20589,9 @@ static struct aead_testvec aes_gcm_rfc4106_enc_tv_template[] = {
                          "\x23\x01\x01\x01",
                .ilen   = 76,
                .assoc  = "\x00\x00\x01\x00\x00\x00\x00\x00"
-                         "\x00\x00\x00\x01",
-               .alen   = 12,
+                         "\x00\x00\x00\x01\xCA\xFE\xDE\xBA"
+                         "\xCE\xFA\xCE\x74",
+               .alen   = 20,
                .result = "\x18\xA6\xFD\x42\xF7\x2C\xBF\x4A"
                          "\xB2\xA2\xEA\x90\x1F\x73\xD8\x14"
                          "\xE3\xE7\xF2\x43\xD9\x54\x12\xE1"
@@ -20535,8 +20620,9 @@ static struct aead_testvec aes_gcm_rfc4106_enc_tv_template[] = {
                          "\x50\x10\x1F\x64\x6D\x54\x00\x01",
                .ilen   = 40,
                .assoc  = "\x17\x40\x5E\x67\x15\x6F\x31\x26"
-                         "\xDD\x0D\xB9\x9B",
-               .alen   = 12,
+                         "\xDD\x0D\xB9\x9B\x61\x6E\x64\x01"
+                         "\x69\x76\x65\x63",
+               .alen   = 20,
                .result = "\xF2\xD6\x9E\xCD\xBD\x5A\x0D\x5B"
                          "\x8D\x5E\xF3\x8B\xAD\x4D\xA5\x8D"
                          "\x1F\x27\x8F\xDE\x98\xEF\x67\x54"
@@ -20563,8 +20649,9 @@ static struct aead_testvec aes_gcm_rfc4106_enc_tv_template[] = {
                          "\x15\x01\x01\x01",
                .ilen   = 76,
                .assoc  = "\x42\xF6\x7E\x3F\x10\x10\x10\x10"
-                         "\x10\x10\x10\x10",
-               .alen   = 12,
+                         "\x10\x10\x10\x10\x4E\x28\x00\x00"
+                         "\xA2\xFC\xA1\xA3",
+               .alen   = 20,
                .result = "\xFB\xA2\xCA\xD1\x2F\xC1\xF9\xF0"
                          "\x0D\x3C\xEB\xF3\x05\x41\x0D\xB8"
                          "\x3D\x77\x84\xB6\x07\x32\x3D\x22"
@@ -20597,8 +20684,9 @@ static struct aead_testvec aes_gcm_rfc4106_enc_tv_template[] = {
                          "\x72\x72\x6F\x77\x01\x02\x02\x01",
                .ilen   = 72,
                .assoc  = "\x17\x40\x5E\x67\x15\x6F\x31\x26"
-                         "\xDD\x0D\xB9\x9B",
-               .alen   = 12,
+                         "\xDD\x0D\xB9\x9B\x61\x6E\x64\x01"
+                         "\x69\x76\x65\x63",
+               .alen   = 20,
                .result = "\xD4\xB7\xED\x86\xA1\x77\x7F\x2E"
                          "\xA1\x3D\x69\x73\xD3\x24\xC6\x9E"
                          "\x7B\x43\xF8\x26\xFB\x56\x83\x12"
@@ -20619,8 +20707,9 @@ static struct aead_testvec aes_gcm_rfc4106_enc_tv_template[] = {
                .iv     = "\x43\x45\x7E\x91\x82\x44\x3B\xC6",
                .input  = "\x01\x02\x02\x01",
                .ilen   = 4,
-               .assoc  = "\x33\x54\x67\xAE\xFF\xFF\xFF\xFF",
-               .alen   = 8,
+               .assoc  = "\x33\x54\x67\xAE\xFF\xFF\xFF\xFF"
+                         "\x43\x45\x7E\x91\x82\x44\x3B\xC6",
+               .alen   = 16,
                .result = "\x43\x7F\x86\x6B\xCB\x3F\x69\x9F"
                          "\xE9\xB0\x82\x2B\xAC\x96\x1C\x45"
                          "\x04\xBE\xF2\x70",
@@ -20636,8 +20725,9 @@ static struct aead_testvec aes_gcm_rfc4106_enc_tv_template[] = {
                          "\x62\x65\x00\x01",
                .ilen   = 20,
                .assoc  = "\x00\x00\x01\x00\x00\x00\x00\x00"
-                         "\x00\x00\x00\x01",
-               .alen   = 12,
+                         "\x00\x00\x00\x01\xCA\xFE\xDE\xBA"
+                         "\xCE\xFA\xCE\x74",
+               .alen   = 20,
                .result = "\x29\xC9\xFC\x69\xA1\x97\xD0\x38"
                          "\xCC\xDD\x14\xE2\xDD\xFC\xAA\x05"
                          "\x43\x33\x21\x64\x41\x25\x03\x52"
@@ -20661,8 +20751,9 @@ static struct aead_testvec aes_gcm_rfc4106_enc_tv_template[] = {
                          "\x01\x02\x02\x01",
                .ilen   = 52,
                .assoc  = "\x79\x6B\x69\x63\xFF\xFF\xFF\xFF"
-                         "\xFF\xFF\xFF\xFF",
-               .alen   = 12,
+                         "\xFF\xFF\xFF\xFF\x33\x30\x21\x69"
+                         "\x67\x65\x74\x6D",
+               .alen   = 20,
                .result = "\xF9\x7A\xB2\xAA\x35\x6D\x8E\xDC"
                          "\xE1\x76\x44\xAC\x8C\x78\xE2\x5D"
                          "\xD2\x4D\xED\xBB\x29\xEB\xF1\xB6"
@@ -20688,8 +20779,9 @@ static struct aead_testvec aes_gcm_rfc4106_enc_tv_template[] = {
                          "\x01\x02\x02\x01",
                .ilen   = 52,
                .assoc  = "\x3F\x7E\xF6\x42\x10\x10\x10\x10"
-                         "\x10\x10\x10\x10",
-               .alen   = 12,
+                         "\x10\x10\x10\x10\x4E\x28\x00\x00"
+                         "\xA2\xFC\xA1\xA3",
+               .alen   = 20,
                .result = "\xFB\xA2\xCA\xA8\xC6\xC5\xF9\xF0"
                          "\xF2\x2C\xA5\x4A\x06\x12\x10\xAD"
                          "\x3F\x6E\x57\x91\xCF\x1A\xCA\x21"
@@ -20712,8 +20804,9 @@ static struct aead_testvec aes_gcm_rfc4106_enc_tv_template[] = {
                          "\x71\x72\x73\x74\x01\x02\x02\x01",
                .ilen   = 32,
                .assoc  = "\x00\x00\x43\x21\x87\x65\x43\x21"
-                         "\x00\x00\x00\x07",
-               .alen   = 12,
+                         "\x00\x00\x00\x07\x48\x55\xEC\x7D"
+                         "\x3A\x23\x4B\xFD",
+               .alen   = 20,
                .result = "\x74\x75\x2E\x8A\xEB\x5D\x87\x3C"
                          "\xD7\xC0\xF4\xAC\xC3\x6C\x4B\xFF"
                          "\x84\xB7\xD7\xB9\x8F\x0C\xA8\xB6"
@@ -20725,122 +20818,122 @@ static struct aead_testvec aes_gcm_rfc4106_enc_tv_template[] = {
 };
 
 static struct aead_testvec aes_gcm_rfc4106_dec_tv_template[] = {
-        { /* Generated using Crypto++ */
+       { /* Generated using Crypto++ */
                .key    = zeroed_string,
                .klen   = 20,
-                .iv     = zeroed_string,
+               .iv     = zeroed_string,
                .input  = "\x03\x88\xDA\xCE\x60\xB6\xA3\x92"
-                          "\xF3\x28\xC2\xB9\x71\xB2\xFE\x78"
-                          "\x97\xFE\x4C\x23\x37\x42\x01\xE0"
-                          "\x81\x9F\x8D\xC5\xD7\x41\xA0\x1B",
+                         "\xF3\x28\xC2\xB9\x71\xB2\xFE\x78"
+                         "\x97\xFE\x4C\x23\x37\x42\x01\xE0"
+                         "\x81\x9F\x8D\xC5\xD7\x41\xA0\x1B",
                .ilen   = 32,
-                .assoc  = zeroed_string,
-                .alen   = 8,
-                .result = zeroed_string,
-                .rlen   = 16,
+               .assoc  = zeroed_string,
+               .alen   = 16,
+               .result = zeroed_string,
+               .rlen   = 16,
 
-        },{
+       },{
                .key    = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
                          "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
-                          "\x00\x00\x00\x00",
+                         "\x00\x00\x00\x00",
                .klen   = 20,
-                .iv     = "\x00\x00\x00\x00\x00\x00\x00\x01"
-                          "\x00\x00\x00\x00",
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x01",
                .input  = "\xC0\x0D\x8B\x42\x0F\x8F\x34\x18"
-                          "\x88\xB1\xC5\xBC\xC5\xB6\xD6\x28"
-                          "\x6A\x9D\xDF\x11\x5E\xFE\x5E\x9D"
-                          "\x2F\x70\x44\x92\xF7\xF2\xE3\xEF",
+                         "\x88\xB1\xC5\xBC\xC5\xB6\xD6\x28"
+                         "\x6A\x9D\xDF\x11\x5E\xFE\x5E\x9D"
+                         "\x2F\x70\x44\x92\xF7\xF2\xE3\xEF",
                .ilen   = 32,
-                .assoc  = zeroed_string,
-                .alen   = 8,
-                .result = zeroed_string,
-                .rlen   = 16,
-        }, {
+               .assoc  = "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x01",
+               .alen   = 16,
+               .result = zeroed_string,
+               .rlen   = 16,
+       }, {
                .key    = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
                          "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
-                          "\x00\x00\x00\x00",
+                         "\x00\x00\x00\x00",
                .klen   = 20,
-                .iv     = zeroed_string,
+               .iv     = zeroed_string,
                .input  = "\x4B\xB1\xB5\xE3\x25\x71\x70\xDE"
-                          "\x7F\xC9\x9C\xA5\x14\x19\xF2\xAC"
-                          "\x0B\x8F\x88\x69\x17\xE6\xB4\x3C"
-                          "\xB1\x68\xFD\x14\x52\x64\x61\xB2",
+                         "\x7F\xC9\x9C\xA5\x14\x19\xF2\xAC"
+                         "\x0B\x8F\x88\x69\x17\xE6\xB4\x3C"
+                         "\xB1\x68\xFD\x14\x52\x64\x61\xB2",
                .ilen   = 32,
-                .assoc  = zeroed_string,
-                .alen   = 8,
-                .result = "\x01\x01\x01\x01\x01\x01\x01\x01"
-                          "\x01\x01\x01\x01\x01\x01\x01\x01",
-                .rlen   = 16,
-        }, {
+               .assoc  = zeroed_string,
+               .alen   = 16,
+               .result = "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01",
+               .rlen   = 16,
+       }, {
                .key    = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
                          "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
-                          "\x00\x00\x00\x00",
+                         "\x00\x00\x00\x00",
                .klen   = 20,
-                .iv     = zeroed_string,
+               .iv     = zeroed_string,
                .input  = "\x4B\xB1\xB5\xE3\x25\x71\x70\xDE"
-                          "\x7F\xC9\x9C\xA5\x14\x19\xF2\xAC"
-                          "\x90\x92\xB7\xE3\x5F\xA3\x9A\x63"
-                          "\x7E\xD7\x1F\xD8\xD3\x7C\x4B\xF5",
+                         "\x7F\xC9\x9C\xA5\x14\x19\xF2\xAC"
+                         "\x90\x92\xB7\xE3\x5F\xA3\x9A\x63"
+                         "\x7E\xD7\x1F\xD8\xD3\x7C\x4B\xF5",
                .ilen   = 32,
-                .assoc  = "\x01\x01\x01\x01\x01\x01\x01\x01",
-                .alen   = 8,
-                .result = "\x01\x01\x01\x01\x01\x01\x01\x01"
-                          "\x01\x01\x01\x01\x01\x01\x01\x01",
-                .rlen   = 16,
+               .assoc  = "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .alen   = 16,
+               .result = "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01",
+               .rlen   = 16,
 
-        }, {
+       }, {
                .key    = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
                          "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
-                          "\x00\x00\x00\x00",
+                         "\x00\x00\x00\x00",
                .klen   = 20,
-                .iv     = "\x00\x00\x00\x00\x00\x00\x00\x01"
-                          "\x00\x00\x00\x00",
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x01",
                .input  = "\xC1\x0C\x8A\x43\x0E\x8E\x35\x19"
-                          "\x89\xB0\xC4\xBD\xC4\xB7\xD7\x29"
-                          "\x64\x50\xF9\x32\x13\xFB\x74\x61"
-                          "\xF4\xED\x52\xD3\xC5\x10\x55\x3C",
+                         "\x89\xB0\xC4\xBD\xC4\xB7\xD7\x29"
+                         "\x64\x50\xF9\x32\x13\xFB\x74\x61"
+                         "\xF4\xED\x52\xD3\xC5\x10\x55\x3C",
                .ilen   = 32,
-                .assoc  = "\x01\x01\x01\x01\x01\x01\x01\x01",
-                .alen   = 8,
-                .result = "\x01\x01\x01\x01\x01\x01\x01\x01"
-                          "\x01\x01\x01\x01\x01\x01\x01\x01",
-                .rlen   = 16,
-        }, {
+               .assoc  = "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x00\x00\x00\x00\x00\x00\x00\x01",
+               .alen   = 16,
+               .result = "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01",
+               .rlen   = 16,
+       }, {
                .key    = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
                          "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
-                          "\x00\x00\x00\x00",
+                         "\x00\x00\x00\x00",
                .klen   = 20,
-                .iv     = "\x00\x00\x00\x00\x00\x00\x00\x01"
-                          "\x00\x00\x00\x00",
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x01",
                .input  = "\xC1\x0C\x8A\x43\x0E\x8E\x35\x19"
-                          "\x89\xB0\xC4\xBD\xC4\xB7\xD7\x29"
-                          "\x98\x14\xA1\x42\x37\x80\xFD\x90"
-                          "\x68\x12\x01\xA8\x91\x89\xB9\x83"
-                          "\x5B\x11\x77\x12\x9B\xFF\x24\x89"
-                          "\x94\x5F\x18\x12\xBA\x27\x09\x39"
-                          "\x99\x96\x76\x42\x15\x1C\xCD\xCB"
-                          "\xDC\xD3\xDA\x65\x73\xAF\x80\xCD"
-                          "\xD2\xB6\xC2\x4A\x76\xC2\x92\x85"
-                          "\xBD\xCF\x62\x98\x58\x14\xE5\xBD",
+                         "\x89\xB0\xC4\xBD\xC4\xB7\xD7\x29"
+                         "\x98\x14\xA1\x42\x37\x80\xFD\x90"
+                         "\x68\x12\x01\xA8\x91\x89\xB9\x83"
+                         "\x5B\x11\x77\x12\x9B\xFF\x24\x89"
+                         "\x94\x5F\x18\x12\xBA\x27\x09\x39"
+                         "\x99\x96\x76\x42\x15\x1C\xCD\xCB"
+                         "\xDC\xD3\xDA\x65\x73\xAF\x80\xCD"
+                         "\xD2\xB6\xC2\x4A\x76\xC2\x92\x85"
+                         "\xBD\xCF\x62\x98\x58\x14\xE5\xBD",
                .ilen   = 80,
-                .assoc  = "\x01\x01\x01\x01\x01\x01\x01\x01",
-                .alen   = 8,
-                .result = "\x01\x01\x01\x01\x01\x01\x01\x01"
-                          "\x01\x01\x01\x01\x01\x01\x01\x01"
-                          "\x01\x01\x01\x01\x01\x01\x01\x01"
-                          "\x01\x01\x01\x01\x01\x01\x01\x01"
-                          "\x01\x01\x01\x01\x01\x01\x01\x01"
-                          "\x01\x01\x01\x01\x01\x01\x01\x01"
-                          "\x01\x01\x01\x01\x01\x01\x01\x01"
-                          "\x01\x01\x01\x01\x01\x01\x01\x01",
-                .rlen   = 64,
-        }, {
+               .assoc  = "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x00\x00\x00\x00\x00\x00\x00\x01",
+               .alen   = 16,
+               .result = "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01",
+               .rlen   = 64,
+       }, {
                .key    = "\x00\x01\x02\x03\x04\x05\x06\x07"
                          "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
-                          "\x00\x00\x00\x00",
+                         "\x00\x00\x00\x00",
                .klen   = 20,
-                .iv     = "\x00\x00\x45\x67\x89\xab\xcd\xef"
-                          "\x00\x00\x00\x00",
+               .iv     = "\x00\x00\x45\x67\x89\xab\xcd\xef",
                .input  = "\xC1\x76\x33\x85\xE2\x9B\x5F\xDE"
                          "\xDE\x89\x3D\x42\xE7\xC9\x69\x8A"
                          "\x44\x6D\xC3\x88\x46\x2E\xC2\x01"
@@ -20868,34 +20961,35 @@ static struct aead_testvec aes_gcm_rfc4106_dec_tv_template[] = {
                          "\x37\x08\x1C\xCF\xBA\x5D\x71\x46"
                          "\x80\x72\xB0\x4C\x82\x0D\x60\x3C",
                .ilen   = 208,
-                .assoc  = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
-                          "\xaa\xaa\xaa\xaa",
-                .alen   = 12,
-                .result = "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff"
-                          "\xff\xff\xff\xff\xff\xff\xff\xff",
-                .rlen   = 192,
+               .assoc  = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
+                         "\xaa\xaa\xaa\xaa\x00\x00\x45\x67"
+                         "\x89\xab\xcd\xef",
+               .alen   = 20,
+               .result = "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff",
+               .rlen   = 192,
        }, {
                .key    = "\x4C\x80\xCD\xEF\xBB\x5D\x10\xDA"
                          "\x90\x6A\xC7\x3C\x36\x13\xA6\x34"
@@ -20913,8 +21007,9 @@ static struct aead_testvec aes_gcm_rfc4106_dec_tv_template[] = {
                          "\x00\x21\x00\x01\x01\x02\x02\x01",
                .rlen   = 72,
                .assoc  = "\x00\x00\x43\x21\x87\x65\x43\x21"
-                         "\x00\x00\x00\x00",
-               .alen   = 12,
+                         "\x00\x00\x00\x00\x49\x56\xED\x7E"
+                         "\x3B\x24\x4C\xFE",
+               .alen   = 20,
                .input  = "\xFE\xCF\x53\x7E\x72\x9D\x5B\x07"
                          "\xDC\x30\xDF\x52\x8D\xD2\x2B\x76"
                          "\x8D\x1B\x98\x73\x66\x96\xA6\xFD"
@@ -20942,8 +21037,9 @@ static struct aead_testvec aes_gcm_rfc4106_dec_tv_template[] = {
                          "\x65\x72\x63\x69\x74\x79\x02\x64"
                          "\x6B\x00\x00\x01\x00\x01\x00\x01",
                .rlen   = 64,
-               .assoc  = "\x00\x00\xA5\xF8\x00\x00\x00\x0A",
-               .alen   = 8,
+               .assoc  = "\x00\x00\xA5\xF8\x00\x00\x00\x0A"
+                         "\xFA\xCE\xDB\xAD\xDE\xCA\xF8\x88",
+               .alen   = 16,
                .input  = "\xDE\xB2\x2C\xD9\xB0\x7C\x72\xC1"
                          "\x6E\x3A\x65\xBE\xEB\x8D\xF3\x04"
                          "\xA5\xA5\x89\x7D\x33\xAE\x53\x0F"
@@ -20971,8 +21067,9 @@ static struct aead_testvec aes_gcm_rfc4106_dec_tv_template[] = {
                          "\x02\x04\x05\xB4\x01\x01\x04\x02"
                          "\x01\x02\x02\x01",
                .rlen   = 52,
-               .assoc  = "\x4A\x2C\xBF\xE3\x00\x00\x00\x02",
-               .alen   = 8,
+               .assoc  = "\x4A\x2C\xBF\xE3\x00\x00\x00\x02"
+                         "\x01\x02\x03\x04\x05\x06\x07\x08",
+               .alen   = 16,
                .input  = "\xFF\x42\x5C\x9B\x72\x45\x99\xDF"
                          "\x7A\x3B\xCD\x51\x01\x94\xE0\x0D"
                          "\x6A\x78\x10\x7F\x1B\x0B\x1C\xBF"
@@ -20998,8 +21095,9 @@ static struct aead_testvec aes_gcm_rfc4106_dec_tv_template[] = {
                          "\x75\x76\x77\x61\x62\x63\x64\x65"
                          "\x66\x67\x68\x69\x01\x02\x02\x01",
                .rlen   = 64,
-               .assoc  = "\x00\x00\x00\x00\x00\x00\x00\x01",
-               .alen   = 8,
+               .assoc  = "\x00\x00\x00\x00\x00\x00\x00\x01"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .alen   = 16,
                .input  = "\x46\x88\xDA\xF2\xF9\x73\xA3\x92"
                          "\x73\x29\x09\xC3\x31\xD5\x6D\x60"
                          "\xF6\x94\xAB\xAA\x41\x4B\x5E\x7F"
@@ -21027,8 +21125,9 @@ static struct aead_testvec aes_gcm_rfc4106_dec_tv_template[] = {
                          "\x66\x67\x68\x69\x01\x02\x02\x01",
                .rlen   = 64,
                .assoc  = "\x42\xF6\x7E\x3F\x10\x10\x10\x10"
-                         "\x10\x10\x10\x10",
-               .alen   = 12,
+                         "\x10\x10\x10\x10\x4E\x28\x00\x00"
+                         "\xA2\xFC\xA1\xA3",
+               .alen   = 20,
                .input  = "\xFB\xA2\xCA\xA4\x85\x3C\xF9\xF0"
                          "\xF2\x2C\xB1\x0D\x86\xDD\x83\xB0"
                          "\xFE\xC7\x56\x91\xCF\x1A\x04\xB0"
@@ -21052,8 +21151,9 @@ static struct aead_testvec aes_gcm_rfc4106_dec_tv_template[] = {
                          "\x01\x02\x02\x01",
                .rlen   = 28,
                .assoc  = "\x42\xF6\x7E\x3F\x10\x10\x10\x10"
-                         "\x10\x10\x10\x10",
-               .alen   = 12,
+                         "\x10\x10\x10\x10\x4E\x28\x00\x00"
+                         "\xA2\xFC\xA1\xA3",
+               .alen   = 20,
                .input  = "\xFB\xA2\xCA\x84\x5E\x5D\xF9\xF0"
                          "\xF2\x2C\x3E\x6E\x86\xDD\x83\x1E"
                          "\x1F\xC6\x57\x92\xCD\x1A\xF9\x13"
@@ -21074,8 +21174,9 @@ static struct aead_testvec aes_gcm_rfc4106_dec_tv_template[] = {
                          "\xCB\x71\x26\x02\xDD\x6B\xB0\x3E"
                          "\x50\x10\x16\xD0\x75\x68\x00\x01",
                .rlen   = 40,
-               .assoc  = "\x00\x00\xA5\xF8\x00\x00\x00\x0A",
-               .alen   = 8,
+               .assoc  = "\x00\x00\xA5\xF8\x00\x00\x00\x0A"
+                         "\xFA\xCE\xDB\xAD\xDE\xCA\xF8\x88",
+               .alen   = 16,
                .input  = "\xA5\xB1\xF8\x06\x60\x29\xAE\xA4"
                          "\x0E\x59\x8B\x81\x22\xDE\x02\x42"
                          "\x09\x38\xB3\xAB\x33\xF8\x28\xE6"
@@ -21102,8 +21203,9 @@ static struct aead_testvec aes_gcm_rfc4106_dec_tv_template[] = {
                          "\x23\x01\x01\x01",
                .rlen   = 76,
                .assoc  = "\x00\x00\x01\x00\x00\x00\x00\x00"
-                         "\x00\x00\x00\x01",
-               .alen   = 12,
+                         "\x00\x00\x00\x01\xCA\xFE\xDE\xBA"
+                         "\xCE\xFA\xCE\x74",
+               .alen   = 20,
                .input  = "\x18\xA6\xFD\x42\xF7\x2C\xBF\x4A"
                          "\xB2\xA2\xEA\x90\x1F\x73\xD8\x14"
                          "\xE3\xE7\xF2\x43\xD9\x54\x12\xE1"
@@ -21132,8 +21234,9 @@ static struct aead_testvec aes_gcm_rfc4106_dec_tv_template[] = {
                          "\x50\x10\x1F\x64\x6D\x54\x00\x01",
                .rlen   = 40,
                .assoc  = "\x17\x40\x5E\x67\x15\x6F\x31\x26"
-                         "\xDD\x0D\xB9\x9B",
-               .alen   = 12,
+                         "\xDD\x0D\xB9\x9B\x61\x6E\x64\x01"
+                         "\x69\x76\x65\x63",
+               .alen   = 20,
                .input  = "\xF2\xD6\x9E\xCD\xBD\x5A\x0D\x5B"
                          "\x8D\x5E\xF3\x8B\xAD\x4D\xA5\x8D"
                          "\x1F\x27\x8F\xDE\x98\xEF\x67\x54"
@@ -21160,8 +21263,9 @@ static struct aead_testvec aes_gcm_rfc4106_dec_tv_template[] = {
                          "\x15\x01\x01\x01",
                .rlen   = 76,
                .assoc  = "\x42\xF6\x7E\x3F\x10\x10\x10\x10"
-                         "\x10\x10\x10\x10",
-               .alen   = 12,
+                         "\x10\x10\x10\x10\x4E\x28\x00\x00"
+                         "\xA2\xFC\xA1\xA3",
+               .alen   = 20,
                .input  = "\xFB\xA2\xCA\xD1\x2F\xC1\xF9\xF0"
                          "\x0D\x3C\xEB\xF3\x05\x41\x0D\xB8"
                          "\x3D\x77\x84\xB6\x07\x32\x3D\x22"
@@ -21194,8 +21298,9 @@ static struct aead_testvec aes_gcm_rfc4106_dec_tv_template[] = {
                          "\x72\x72\x6F\x77\x01\x02\x02\x01",
                .rlen   = 72,
                .assoc  = "\x17\x40\x5E\x67\x15\x6F\x31\x26"
-                         "\xDD\x0D\xB9\x9B",
-               .alen   = 12,
+                         "\xDD\x0D\xB9\x9B\x61\x6E\x64\x01"
+                         "\x69\x76\x65\x63",
+               .alen   = 20,
                .input  = "\xD4\xB7\xED\x86\xA1\x77\x7F\x2E"
                          "\xA1\x3D\x69\x73\xD3\x24\xC6\x9E"
                          "\x7B\x43\xF8\x26\xFB\x56\x83\x12"
@@ -21216,8 +21321,9 @@ static struct aead_testvec aes_gcm_rfc4106_dec_tv_template[] = {
                .iv     = "\x43\x45\x7E\x91\x82\x44\x3B\xC6",
                .result = "\x01\x02\x02\x01",
                .rlen   = 4,
-               .assoc  = "\x33\x54\x67\xAE\xFF\xFF\xFF\xFF",
-               .alen   = 8,
+               .assoc  = "\x33\x54\x67\xAE\xFF\xFF\xFF\xFF"
+                         "\x43\x45\x7E\x91\x82\x44\x3B\xC6",
+               .alen   = 16,
                .input  = "\x43\x7F\x86\x6B\xCB\x3F\x69\x9F"
                          "\xE9\xB0\x82\x2B\xAC\x96\x1C\x45"
                          "\x04\xBE\xF2\x70",
@@ -21233,8 +21339,9 @@ static struct aead_testvec aes_gcm_rfc4106_dec_tv_template[] = {
                          "\x62\x65\x00\x01",
                .rlen   = 20,
                .assoc  = "\x00\x00\x01\x00\x00\x00\x00\x00"
-                         "\x00\x00\x00\x01",
-               .alen   = 12,
+                         "\x00\x00\x00\x01\xCA\xFE\xDE\xBA"
+                         "\xCE\xFA\xCE\x74",
+               .alen   = 20,
                .input  = "\x29\xC9\xFC\x69\xA1\x97\xD0\x38"
                          "\xCC\xDD\x14\xE2\xDD\xFC\xAA\x05"
                          "\x43\x33\x21\x64\x41\x25\x03\x52"
@@ -21258,8 +21365,9 @@ static struct aead_testvec aes_gcm_rfc4106_dec_tv_template[] = {
                          "\x01\x02\x02\x01",
                .rlen   = 52,
                .assoc  = "\x79\x6B\x69\x63\xFF\xFF\xFF\xFF"
-                         "\xFF\xFF\xFF\xFF",
-               .alen   = 12,
+                         "\xFF\xFF\xFF\xFF\x33\x30\x21\x69"
+                         "\x67\x65\x74\x6D",
+               .alen   = 20,
                .input  = "\xF9\x7A\xB2\xAA\x35\x6D\x8E\xDC"
                          "\xE1\x76\x44\xAC\x8C\x78\xE2\x5D"
                          "\xD2\x4D\xED\xBB\x29\xEB\xF1\xB6"
@@ -21285,8 +21393,9 @@ static struct aead_testvec aes_gcm_rfc4106_dec_tv_template[] = {
                          "\x01\x02\x02\x01",
                .rlen   = 52,
                .assoc  = "\x3F\x7E\xF6\x42\x10\x10\x10\x10"
-                         "\x10\x10\x10\x10",
-               .alen   = 12,
+                         "\x10\x10\x10\x10\x4E\x28\x00\x00"
+                         "\xA2\xFC\xA1\xA3",
+               .alen   = 20,
                .input  = "\xFB\xA2\xCA\xA8\xC6\xC5\xF9\xF0"
                          "\xF2\x2C\xA5\x4A\x06\x12\x10\xAD"
                          "\x3F\x6E\x57\x91\xCF\x1A\xCA\x21"
@@ -21309,8 +21418,9 @@ static struct aead_testvec aes_gcm_rfc4106_dec_tv_template[] = {
                          "\x71\x72\x73\x74\x01\x02\x02\x01",
                .rlen   = 32,
                .assoc  = "\x00\x00\x43\x21\x87\x65\x43\x21"
-                         "\x00\x00\x00\x07",
-               .alen   = 12,
+                         "\x00\x00\x00\x07\x48\x55\xEC\x7D"
+                         "\x3A\x23\x4B\xFD",
+               .alen   = 20,
                .input  = "\x74\x75\x2E\x8A\xEB\x5D\x87\x3C"
                          "\xD7\xC0\xF4\xAC\xC3\x6C\x4B\xFF"
                          "\x84\xB7\xD7\xB9\x8F\x0C\xA8\xB6"
@@ -21538,10 +21648,7 @@ static struct aead_testvec aes_ccm_enc_tv_template[] = {
                          "\xba",
                .rlen   = 33,
        }, {
-               /*
-                * This is the same vector as aes_ccm_rfc4309_enc_tv_template[0]
-                * below but rewritten to use the ccm algorithm directly.
-                */
+               /* This is taken from FIPS CAVS. */
                .key    = "\x83\xac\x54\x66\xc2\xeb\xe5\x05"
                          "\x2e\x01\xd1\xfc\x5d\x82\x66\x2e",
                .klen   = 16,
@@ -21559,214 +21666,51 @@ static struct aead_testvec aes_ccm_enc_tv_template[] = {
                          "\xda\x24\xea\xd9\xa1\x39\x98\xfd"
                          "\xa4\xbe\xd9\xf2\x1a\x6d\x22\xa8",
                .rlen   = 48,
-       }
-};
-
-static struct aead_testvec aes_ccm_dec_tv_template[] = {
-       { /* From RFC 3610 */
-               .key    = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
-                         "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
-               .klen   = 16,
-               .iv     = "\x01\x00\x00\x00\x03\x02\x01\x00"
-                         "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
-               .assoc  = "\x00\x01\x02\x03\x04\x05\x06\x07",
-               .alen   = 8,
-               .input  = "\x58\x8c\x97\x9a\x61\xc6\x63\xd2"
-                         "\xf0\x66\xd0\xc2\xc0\xf9\x89\x80"
-                         "\x6d\x5f\x6b\x61\xda\xc3\x84\x17"
-                         "\xe8\xd1\x2c\xfd\xf9\x26\xe0",
-               .ilen   = 31,
-               .result = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
-                         "\x10\x11\x12\x13\x14\x15\x16\x17"
-                         "\x18\x19\x1a\x1b\x1c\x1d\x1e",
-               .rlen   = 23,
        }, {
-               .key    = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
-                         "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
+               .key    = "\x1e\x2c\x7e\x01\x41\x9a\xef\xc0"
+                         "\x0d\x58\x96\x6e\x5c\xa2\x4b\xd3",
                .klen   = 16,
-               .iv     = "\x01\x00\x00\x00\x07\x06\x05\x04"
-                         "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
-               .assoc  = "\x00\x01\x02\x03\x04\x05\x06\x07"
-                         "\x08\x09\x0a\x0b",
-               .alen   = 12,
-               .input  = "\xdc\xf1\xfb\x7b\x5d\x9e\x23\xfb"
-                         "\x9d\x4e\x13\x12\x53\x65\x8a\xd8"
-                         "\x6e\xbd\xca\x3e\x51\xe8\x3f\x07"
-                         "\x7d\x9c\x2d\x93",
-               .ilen   = 28,
-               .result = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
-                         "\x14\x15\x16\x17\x18\x19\x1a\x1b"
-                         "\x1c\x1d\x1e\x1f",
-               .rlen   = 20,
+               .iv     = "\x03\x4f\xa3\x19\xd3\x01\x5a\xd8"
+                         "\x30\x60\x15\x56\x00\x00\x00\x00",
+               .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    = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
-                         "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
-               .klen   = 16,
-               .iv     = "\x01\x00\x00\x00\x0b\x0a\x09\x08"
-                         "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
-               .assoc  = "\x00\x01\x02\x03\x04\x05\x06\x07",
-               .alen   = 8,
-               .input  = "\x82\x53\x1a\x60\xcc\x24\x94\x5a"
-                         "\x4b\x82\x79\x18\x1a\xb5\xc8\x4d"
-                         "\xf2\x1c\xe7\xf9\xb7\x3f\x42\xe1"
-                         "\x97\xea\x9c\x07\xe5\x6b\x5e\xb1"
-                         "\x7e\x5f\x4e",
-               .ilen   = 35,
-               .result = "\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",
-               .rlen   = 25,
-       }, {
-               .key    = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
-                         "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
-               .klen   = 16,
-               .iv     = "\x01\x00\x00\x00\x0c\x0b\x0a\x09"
-                         "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
-               .assoc  = "\x00\x01\x02\x03\x04\x05\x06\x07"
-                         "\x08\x09\x0a\x0b",
-               .alen   = 12,
-               .input  = "\x07\x34\x25\x94\x15\x77\x85\x15"
-                         "\x2b\x07\x40\x98\x33\x0a\xbb\x14"
-                         "\x1b\x94\x7b\x56\x6a\xa9\x40\x6b"
-                         "\x4d\x99\x99\x88\xdd",
-               .ilen   = 29,
-               .result = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
-                         "\x14\x15\x16\x17\x18\x19\x1a\x1b"
-                         "\x1c\x1d\x1e",
-               .rlen   = 19,
-       }, {
-               .key    = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
-                         "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
-               .klen   = 16,
-               .iv     = "\x01\x00\x33\x56\x8e\xf7\xb2\x63"
-                         "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
-               .assoc  = "\x63\x01\x8f\x76\xdc\x8a\x1b\xcb",
-               .alen   = 8,
-               .input  = "\x4c\xcb\x1e\x7c\xa9\x81\xbe\xfa"
-                         "\xa0\x72\x6c\x55\xd3\x78\x06\x12"
-                         "\x98\xc8\x5c\x92\x81\x4a\xbc\x33"
-                         "\xc5\x2e\xe8\x1d\x7d\x77\xc0\x8a",
-               .ilen   = 32,
-               .result = "\x90\x20\xea\x6f\x91\xbd\xd8\x5a"
-                         "\xfa\x00\x39\xba\x4b\xaf\xf9\xbf"
-                         "\xb7\x9c\x70\x28\x94\x9c\xd0\xec",
-               .rlen   = 24,
-       }, {
-               .key    = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
-                         "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
-               .klen   = 16,
-               .iv     = "\x01\x00\xd5\x60\x91\x2d\x3f\x70"
-                         "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
-               .assoc  = "\xcd\x90\x44\xd2\xb7\x1f\xdb\x81"
-                         "\x20\xea\x60\xc0",
-               .alen   = 12,
-               .input  = "\x00\x97\x69\xec\xab\xdf\x48\x62"
-                         "\x55\x94\xc5\x92\x51\xe6\x03\x57"
-                         "\x22\x67\x5e\x04\xc8\x47\x09\x9e"
-                         "\x5a\xe0\x70\x45\x51",
-               .ilen   = 29,
-               .result = "\x64\x35\xac\xba\xfb\x11\xa8\x2e"
-                         "\x2f\x07\x1d\x7c\xa4\xa5\xeb\xd9"
-                         "\x3a\x80\x3b\xa8\x7f",
-               .rlen   = 21,
-       }, {
-               .key    = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
-                         "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
-               .klen   = 16,
-               .iv     = "\x01\x00\x42\xff\xf8\xf1\x95\x1c"
-                         "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
-               .assoc  = "\xd8\x5b\xc7\xe6\x9f\x94\x4f\xb8",
-               .alen   = 8,
-               .input  = "\xbc\x21\x8d\xaa\x94\x74\x27\xb6"
-                         "\xdb\x38\x6a\x99\xac\x1a\xef\x23"
-                         "\xad\xe0\xb5\x29\x39\xcb\x6a\x63"
-                         "\x7c\xf9\xbe\xc2\x40\x88\x97\xc6"
-                         "\xba",
-               .ilen   = 33,
-               .result = "\x8a\x19\xb9\x50\xbc\xf7\x1a\x01"
-                         "\x8e\x5e\x67\x01\xc9\x17\x87\x65"
-                         "\x98\x09\xd6\x7d\xbe\xdd\x18",
-               .rlen   = 23,
-       },
-};
-
-/*
- * rfc4309 refers to section 8 of rfc3610 for test vectors, but they all
- * use a 13-byte nonce, we only support an 11-byte nonce. Similarly, all of
- * Special Publication 800-38C's test vectors also use nonce lengths our
- * implementation doesn't support. The following are taken from fips cavs
- * fax files on hand at Red Hat.
- *
- * nb: actual key lengths are (klen - 3), the last 3 bytes are actually
- * part of the nonce which combine w/the iv, but need to be input this way.
- */
-static struct aead_testvec aes_ccm_rfc4309_enc_tv_template[] = {
-       {
-               .key    = "\x83\xac\x54\x66\xc2\xeb\xe5\x05"
-                         "\x2e\x01\xd1\xfc\x5d\x82\x66\x2e"
-                         "\x96\xac\x59",
-               .klen   = 19,
-               .iv     = "\x30\x07\xa1\xe2\xa2\xc7\x55\x24",
-               .alen   = 0,
-               .input  = "\x19\xc8\x81\xf6\xe9\x86\xff\x93"
-                         "\x0b\x78\x67\xe5\xbb\xb7\xfc\x6e"
-                         "\x83\x77\xb3\xa6\x0c\x8c\x9f\x9c"
-                         "\x35\x2e\xad\xe0\x62\xf9\x91\xa1",
-               .ilen   = 32,
-               .result = "\xab\x6f\xe1\x69\x1d\x19\x99\xa8"
-                         "\x92\xa0\xc4\x6f\x7e\xe2\x8b\xb1"
-                         "\x70\xbb\x8c\xa6\x4c\x6e\x97\x8a"
-                         "\x57\x2b\xbe\x5d\x98\xa6\xb1\x32"
-                         "\xda\x24\xea\xd9\xa1\x39\x98\xfd"
-                         "\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",
-               .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    = "\xf4\x6b\xc2\x75\x62\xfe\xb4\xe1"
+                         "\xa3\xf0\xff\xdd\x4e\x4b\x12\x75"
+                         "\x53\x14\x73\x66\x8d\x88\xf6\x80",
+               .klen   = 24,
+               .iv     = "\x03\xa0\x20\x35\x26\xf2\x21\x8d"
+                         "\x50\x20\xda\xe2\x00\x00\x00\x00",
+               .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,
+               .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",
+                         "\xca\xb4\x40\xaf\x5f\xc9\xc9\x01",
+               .klen   = 24,
+               .iv     = "\x03\xd6\x3c\x8c\x86\x84\xb6\xcd"
+                         "\xef\x09\x2e\x94\x00\x00\x00\x00",
                .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"
@@ -21788,10 +21732,10 @@ static struct aead_testvec aes_ccm_rfc4309_enc_tv_template[] = {
                .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",
+                         "\x30\x7a\xb9\xd8\x53\x0a\x5e\x2b",
+               .klen   = 32,
+               .iv     = "\x03\x1e\x29\x91\xad\x8e\xc1\x53"
+                         "\x0a\xcf\x2d\xbe\x00\x00\x00\x00",
                .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"
@@ -21812,10 +21756,10 @@ static struct aead_testvec aes_ccm_rfc4309_enc_tv_template[] = {
                .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",
+                         "\x09\x75\x9a\x9b\x3c\x9b\x27\x39",
+               .klen   = 32,
+               .iv     = "\x03\xf9\xd9\x4e\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"
@@ -21837,10 +21781,10 @@ static struct aead_testvec aes_ccm_rfc4309_enc_tv_template[] = {
                .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",
+                         "\x3f\xb0\xf1\xa1\xa1\x22\x0f\x2b",
+               .klen   = 32,
+               .iv     = "\x03\x24\xa7\x8b\x07\xcb\xcc\x0e"
+                         "\xe6\x33\xbf\xf5\x00\x00\x00\x00",
                .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"
@@ -21858,16 +21802,142 @@ static struct aead_testvec aes_ccm_rfc4309_enc_tv_template[] = {
                          "\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[] = {
-       {
+static struct aead_testvec aes_ccm_dec_tv_template[] = {
+       { /* From RFC 3610 */
+               .key    = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
+                         "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
+               .klen   = 16,
+               .iv     = "\x01\x00\x00\x00\x03\x02\x01\x00"
+                         "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
+               .assoc  = "\x00\x01\x02\x03\x04\x05\x06\x07",
+               .alen   = 8,
+               .input  = "\x58\x8c\x97\x9a\x61\xc6\x63\xd2"
+                         "\xf0\x66\xd0\xc2\xc0\xf9\x89\x80"
+                         "\x6d\x5f\x6b\x61\xda\xc3\x84\x17"
+                         "\xe8\xd1\x2c\xfd\xf9\x26\xe0",
+               .ilen   = 31,
+               .result = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
+                         "\x10\x11\x12\x13\x14\x15\x16\x17"
+                         "\x18\x19\x1a\x1b\x1c\x1d\x1e",
+               .rlen   = 23,
+       }, {
+               .key    = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
+                         "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
+               .klen   = 16,
+               .iv     = "\x01\x00\x00\x00\x07\x06\x05\x04"
+                         "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
+               .assoc  = "\x00\x01\x02\x03\x04\x05\x06\x07"
+                         "\x08\x09\x0a\x0b",
+               .alen   = 12,
+               .input  = "\xdc\xf1\xfb\x7b\x5d\x9e\x23\xfb"
+                         "\x9d\x4e\x13\x12\x53\x65\x8a\xd8"
+                         "\x6e\xbd\xca\x3e\x51\xe8\x3f\x07"
+                         "\x7d\x9c\x2d\x93",
+               .ilen   = 28,
+               .result = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
+                         "\x14\x15\x16\x17\x18\x19\x1a\x1b"
+                         "\x1c\x1d\x1e\x1f",
+               .rlen   = 20,
+       }, {
+               .key    = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
+                         "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
+               .klen   = 16,
+               .iv     = "\x01\x00\x00\x00\x0b\x0a\x09\x08"
+                         "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
+               .assoc  = "\x00\x01\x02\x03\x04\x05\x06\x07",
+               .alen   = 8,
+               .input  = "\x82\x53\x1a\x60\xcc\x24\x94\x5a"
+                         "\x4b\x82\x79\x18\x1a\xb5\xc8\x4d"
+                         "\xf2\x1c\xe7\xf9\xb7\x3f\x42\xe1"
+                         "\x97\xea\x9c\x07\xe5\x6b\x5e\xb1"
+                         "\x7e\x5f\x4e",
+               .ilen   = 35,
+               .result = "\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",
+               .rlen   = 25,
+       }, {
+               .key    = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
+                         "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
+               .klen   = 16,
+               .iv     = "\x01\x00\x00\x00\x0c\x0b\x0a\x09"
+                         "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
+               .assoc  = "\x00\x01\x02\x03\x04\x05\x06\x07"
+                         "\x08\x09\x0a\x0b",
+               .alen   = 12,
+               .input  = "\x07\x34\x25\x94\x15\x77\x85\x15"
+                         "\x2b\x07\x40\x98\x33\x0a\xbb\x14"
+                         "\x1b\x94\x7b\x56\x6a\xa9\x40\x6b"
+                         "\x4d\x99\x99\x88\xdd",
+               .ilen   = 29,
+               .result = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
+                         "\x14\x15\x16\x17\x18\x19\x1a\x1b"
+                         "\x1c\x1d\x1e",
+               .rlen   = 19,
+       }, {
+               .key    = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
+                         "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
+               .klen   = 16,
+               .iv     = "\x01\x00\x33\x56\x8e\xf7\xb2\x63"
+                         "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
+               .assoc  = "\x63\x01\x8f\x76\xdc\x8a\x1b\xcb",
+               .alen   = 8,
+               .input  = "\x4c\xcb\x1e\x7c\xa9\x81\xbe\xfa"
+                         "\xa0\x72\x6c\x55\xd3\x78\x06\x12"
+                         "\x98\xc8\x5c\x92\x81\x4a\xbc\x33"
+                         "\xc5\x2e\xe8\x1d\x7d\x77\xc0\x8a",
+               .ilen   = 32,
+               .result = "\x90\x20\xea\x6f\x91\xbd\xd8\x5a"
+                         "\xfa\x00\x39\xba\x4b\xaf\xf9\xbf"
+                         "\xb7\x9c\x70\x28\x94\x9c\xd0\xec",
+               .rlen   = 24,
+       }, {
+               .key    = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
+                         "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
+               .klen   = 16,
+               .iv     = "\x01\x00\xd5\x60\x91\x2d\x3f\x70"
+                         "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
+               .assoc  = "\xcd\x90\x44\xd2\xb7\x1f\xdb\x81"
+                         "\x20\xea\x60\xc0",
+               .alen   = 12,
+               .input  = "\x00\x97\x69\xec\xab\xdf\x48\x62"
+                         "\x55\x94\xc5\x92\x51\xe6\x03\x57"
+                         "\x22\x67\x5e\x04\xc8\x47\x09\x9e"
+                         "\x5a\xe0\x70\x45\x51",
+               .ilen   = 29,
+               .result = "\x64\x35\xac\xba\xfb\x11\xa8\x2e"
+                         "\x2f\x07\x1d\x7c\xa4\xa5\xeb\xd9"
+                         "\x3a\x80\x3b\xa8\x7f",
+               .rlen   = 21,
+       }, {
+               .key    = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
+                         "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
+               .klen   = 16,
+               .iv     = "\x01\x00\x42\xff\xf8\xf1\x95\x1c"
+                         "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
+               .assoc  = "\xd8\x5b\xc7\xe6\x9f\x94\x4f\xb8",
+               .alen   = 8,
+               .input  = "\xbc\x21\x8d\xaa\x94\x74\x27\xb6"
+                         "\xdb\x38\x6a\x99\xac\x1a\xef\x23"
+                         "\xad\xe0\xb5\x29\x39\xcb\x6a\x63"
+                         "\x7c\xf9\xbe\xc2\x40\x88\x97\xc6"
+                         "\xba",
+               .ilen   = 33,
+               .result = "\x8a\x19\xb9\x50\xbc\xf7\x1a\x01"
+                         "\x8e\x5e\x67\x01\xc9\x17\x87\x65"
+                         "\x98\x09\xd6\x7d\xbe\xdd\x18",
+               .rlen   = 23,
+       }, {
+               /* This is taken from FIPS CAVS. */
                .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",
+                         "\xff\x80\x2e\x48\x7d\x82\xf8\xb9",
+               .klen   = 16,
+               .iv     = "\x03\xc6\xfb\x7d\x80\x0d\x13\xab"
+                         "\xd8\xa6\xb2\xd8\x00\x00\x00\x00",
                .alen   = 0,
                .input  = "\xd5\xe8\x93\x9f\xc7\x89\x2e\x2b",
                .ilen   = 8,
@@ -21876,10 +21946,10 @@ static struct aead_testvec aes_ccm_rfc4309_dec_tv_template[] = {
                .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",
+                         "\xff\x80\x2e\x48\x7d\x82\xf8\xb9",
+               .klen   = 16,
+               .iv     = "\x03\xaf\x94\x87\x78\x35\x82\x81"
+                         "\x7f\x88\x94\x68\x00\x00\x00\x00",
                .alen   = 0,
                .input  = "\x41\x3c\xb8\x87\x73\xcb\xf3\xf3",
                .ilen   = 8,
@@ -21887,10 +21957,10 @@ static struct aead_testvec aes_ccm_rfc4309_dec_tv_template[] = {
                .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",
+                         "\x76\x1c\xf6\x3a\x67\xa3\x9c\xd8",
+               .klen   = 16,
+               .iv     = "\x03\xc6\xfb\x7d\x80\x0d\x13\xab"
+                         "\xd8\xa6\xb2\xd8\x00\x00\x00\x00",
                .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"
@@ -21911,10 +21981,10 @@ static struct aead_testvec aes_ccm_rfc4309_dec_tv_template[] = {
                .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",
+                         "\x76\x1c\xf6\x3a\x67\xa3\x9c\xd8",
+               .klen   = 16,
+               .iv     = "\x03\x05\xe0\xc9\x0f\xed\x34\xea"
+                         "\x97\xd4\x3b\xdf\x00\x00\x00\x00",
                .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"
@@ -21935,10 +22005,10 @@ static struct aead_testvec aes_ccm_rfc4309_dec_tv_template[] = {
        }, {
                .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",
+                         "\xa4\x48\x93\x39\x26\x71\x4a\xc6",
+               .klen   = 24,
+               .iv     = "\x03\xee\x49\x83\xe9\xa9\xff\xe9"
+                         "\x57\xba\xfd\x9e\x00\x00\x00\x00",
                .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"
@@ -21949,114 +22019,1348 @@ static struct aead_testvec aes_ccm_rfc4309_dec_tv_template[] = {
                .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",
+               .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",
+               .klen   = 24,
+               .iv     = "\x03\xee\x49\x83\xe9\xa9\xff\xe9"
+                         "\x57\xba\xfd\x9e\x00\x00\x00\x00",
+               .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",
+               .klen   = 24,
+               .iv     = "\x03\xd1\xfc\x57\x9c\xfe\xb8\x9c"
+                         "\xad\x71\xaa\x1f\x00\x00\x00\x00",
+               .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,
+       }, {
+               .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",
+               .klen   = 32,
+               .iv     = "\x03\xee\x49\x83\xe9\xa9\xff\xe9"
+                         "\x57\xba\xfd\x9e\x00\x00\x00\x00",
+               .alen   = 0,
+               .input  = "\x1f\xb8\x8f\xa3\xdd\x54\x00\xf2",
+               .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",
+               .klen   = 32,
+               .iv     = "\x03\x85\x34\x66\x42\xc8\x92\x0f"
+                         "\x36\x58\xe0\x6b\x00\x00\x00\x00",
+               .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",
+               .klen   = 32,
+               .iv     = "\x03\xcf\x76\x3f\xd9\x95\x75\x8f"
+                         "\x44\x89\x40\x7b\x00\x00\x00\x00",
+               .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,
+       },
+};
+
+/*
+ * rfc4309 refers to section 8 of rfc3610 for test vectors, but they all
+ * use a 13-byte nonce, we only support an 11-byte nonce.  Worse,
+ * they use AD lengths which are not valid ESP header lengths.
+ *
+ * These vectors are copied/generated from the ones for rfc4106 with
+ * the key truncated by one byte..
+ */
+static struct aead_testvec aes_ccm_rfc4309_enc_tv_template[] = {
+       { /* Generated using Crypto++ */
+               .key    = zeroed_string,
+               .klen   = 19,
+               .iv     = zeroed_string,
+               .input  = zeroed_string,
+               .ilen   = 16,
+               .assoc  = zeroed_string,
+               .alen   = 16,
+               .result = "\x2E\x9A\xCA\x6B\xDA\x54\xFC\x6F"
+                         "\x12\x50\xE8\xDE\x81\x3C\x63\x08"
+                         "\x1A\x22\xBA\x75\xEE\xD4\xD5\xB5"
+                         "\x27\x50\x01\xAC\x03\x33\x39\xFB",
+               .rlen   = 32,
+       },{
+               .key    = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
+                         "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
+                         "\x00\x00\x00",
+               .klen   = 19,
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x01",
+               .input  = zeroed_string,
+               .ilen   = 16,
+               .assoc  = "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x01",
+               .alen   = 16,
+               .result = "\xCF\xB9\x99\x17\xC8\x86\x0E\x7F"
+                         "\x7E\x76\xF8\xE6\xF8\xCC\x1F\x17"
+                         "\x6A\xE0\x53\x9F\x4B\x73\x7E\xDA"
+                         "\x08\x09\x4E\xC4\x1E\xAD\xC6\xB0",
+               .rlen   = 32,
+
+       }, {
+               .key    = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
+                         "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
+                         "\x00\x00\x00",
+               .klen   = 19,
+               .iv     = zeroed_string,
+               .input  = "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01",
+               .ilen   = 16,
+               .assoc  = zeroed_string,
+               .alen   = 16,
+               .result = "\x33\xDE\x73\xBC\xA6\xCE\x4E\xA6"
+                         "\x61\xF4\xF5\x41\x03\x4A\xE3\x86"
+                         "\xA1\xE2\xC2\x42\x2B\x81\x70\x40"
+                         "\xFD\x7F\x76\xD1\x03\x07\xBB\x0C",
+               .rlen   = 32,
+       }, {
+               .key    = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
+                         "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
+                         "\x00\x00\x00",
+               .klen   = 19,
+               .iv     = zeroed_string,
+               .input  = "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01",
+               .ilen   = 16,
+               .assoc  = "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .alen   = 16,
+               .result = "\x33\xDE\x73\xBC\xA6\xCE\x4E\xA6"
+                         "\x61\xF4\xF5\x41\x03\x4A\xE3\x86"
+                         "\x5B\xC0\x73\xE0\x2B\x73\x68\xC9"
+                         "\x2D\x8C\x58\xC2\x90\x3D\xB0\x3E",
+               .rlen   = 32,
+       }, {
+               .key    = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
+                         "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
+                         "\x00\x00\x00",
+               .klen   = 19,
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x01",
+               .input  = "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01",
+               .ilen   = 16,
+               .assoc  = "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x00\x00\x00\x00\x00\x00\x00\x01",
+               .alen   = 16,
+               .result = "\xCE\xB8\x98\x16\xC9\x87\x0F\x7E"
+                         "\x7F\x77\xF9\xE7\xF9\xCD\x1E\x16"
+                         "\x43\x8E\x76\x57\x3B\xB4\x05\xE8"
+                         "\xA9\x9B\xBF\x25\xE0\x4F\xC0\xED",
+               .rlen   = 32,
+       }, {
+               .key    = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
+                         "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
+                         "\x00\x00\x00",
+               .klen   = 19,
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x01",
+               .input  = "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01",
+               .ilen   = 64,
+               .assoc  = "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x00\x00\x00\x00\x00\x00\x00\x01",
+               .alen   = 16,
+               .result = "\xCE\xB8\x98\x16\xC9\x87\x0F\x7E"
+                         "\x7F\x77\xF9\xE7\xF9\xCD\x1E\x16"
+                         "\x9C\xA4\x97\x83\x3F\x01\xA5\xF4"
+                         "\x43\x09\xE7\xB8\xE9\xD1\xD7\x02"
+                         "\x9B\xAB\x39\x18\xEB\x94\x34\x36"
+                         "\xE6\xC5\xC8\x9B\x00\x81\x9E\x49"
+                         "\x1D\x78\xE1\x48\xE3\xE9\xEA\x8E"
+                         "\x3A\x2B\x67\x5D\x35\x6A\x0F\xDB"
+                         "\x02\x73\xDD\xE7\x30\x4A\x30\x54"
+                         "\x1A\x9D\x09\xCA\xC8\x1C\x32\x5F",
+               .rlen   = 80,
+       }, {
+               .key    = "\x00\x01\x02\x03\x04\x05\x06\x07"
+                         "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
+                         "\x00\x00\x00",
+               .klen   = 19,
+               .iv     = "\x00\x00\x45\x67\x89\xab\xcd\xef",
+               .input  = "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff",
+               .ilen   = 192,
+               .assoc  = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
+                         "\xaa\xaa\xaa\xaa\x00\x00\x45\x67"
+                         "\x89\xab\xcd\xef",
+               .alen   = 20,
+               .result = "\x64\x17\xDC\x24\x9D\x92\xBA\x5E"
+                         "\x7C\x64\x6D\x33\x46\x77\xAC\xB1"
+                         "\x5C\x9E\xE2\xC7\x27\x11\x3E\x95"
+                         "\x7D\xBE\x28\xC8\xC1\xCA\x5E\x8C"
+                         "\xB4\xE2\xDE\x9F\x53\x59\x26\xDB"
+                         "\x0C\xD4\xE4\x07\x9A\xE6\x3E\x01"
+                         "\x58\x0D\x3E\x3D\xD5\x21\xEB\x04"
+                         "\x06\x9D\x5F\xB9\x02\x49\x1A\x2B"
+                         "\xBA\xF0\x4E\x3B\x85\x50\x5B\x09"
+                         "\xFE\xEC\xFC\x54\xEC\x0C\xE2\x79"
+                         "\x8A\x2F\x5F\xD7\x05\x5D\xF1\x6D"
+                         "\x22\xEB\xD1\x09\x80\x3F\x5A\x70"
+                         "\xB2\xB9\xD3\x63\x99\xC2\x4D\x1B"
+                         "\x36\x12\x00\x89\xAA\x5D\x55\xDA"
+                         "\x1D\x5B\xD8\x3C\x5F\x09\xD2\xE6"
+                         "\x39\x41\x5C\xF0\xBE\x26\x4E\x5F"
+                         "\x2B\x50\x44\x52\xC2\x10\x7D\x38"
+                         "\x82\x64\x83\x0C\xAE\x49\xD0\xE5"
+                         "\x4F\xE5\x66\x4C\x58\x7A\xEE\x43"
+                         "\x3B\x51\xFE\xBA\x24\x8A\xFE\xDC"
+                         "\x19\x6D\x60\x66\x61\xF9\x9A\x3F"
+                         "\x75\xFC\x38\x53\x5B\xB5\xCD\x52"
+                         "\x4F\xE5\xE4\xC9\xFE\x10\xCB\x98"
+                         "\xF0\x06\x5B\x07\xAB\xBB\xF4\x0E"
+                         "\x2D\xC2\xDD\x5D\xDD\x22\x9A\xCC"
+                         "\x39\xAB\x63\xA5\x3D\x9C\x51\x8A",
+               .rlen   = 208,
+       }, { /* From draft-mcgrew-gcm-test-01 */
+               .key    = "\x4C\x80\xCD\xEF\xBB\x5D\x10\xDA"
+                         "\x90\x6A\xC7\x3C\x36\x13\xA6\x34"
+                         "\x2E\x44\x3B",
+               .klen   = 19,
+               .iv     = "\x49\x56\xED\x7E\x3B\x24\x4C\xFE",
+               .input  = "\x45\x00\x00\x48\x69\x9A\x00\x00"
+                         "\x80\x11\x4D\xB7\xC0\xA8\x01\x02"
+                         "\xC0\xA8\x01\x01\x0A\x9B\xF1\x56"
+                         "\x38\xD3\x01\x00\x00\x01\x00\x00"
+                         "\x00\x00\x00\x00\x04\x5F\x73\x69"
+                         "\x70\x04\x5F\x75\x64\x70\x03\x73"
+                         "\x69\x70\x09\x63\x79\x62\x65\x72"
+                         "\x63\x69\x74\x79\x02\x64\x6B\x00"
+                         "\x00\x21\x00\x01\x01\x02\x02\x01",
+               .ilen   = 72,
+               .assoc  = "\x00\x00\x43\x21\x87\x65\x43\x21"
+                         "\x00\x00\x00\x00\x49\x56\xED\x7E"
+                         "\x3B\x24\x4C\xFE",
+               .alen   = 20,
+               .result = "\x89\xBA\x3E\xEF\xE6\xD6\xCF\xDB"
+                         "\x83\x60\xF5\xBA\x3A\x56\x79\xE6"
+                         "\x7E\x0C\x53\xCF\x9E\x87\xE0\x4E"
+                         "\x1A\x26\x01\x24\xC7\x2E\x3D\xBF"
+                         "\x29\x2C\x91\xC1\xB8\xA8\xCF\xE0"
+                         "\x39\xF8\x53\x6D\x31\x22\x2B\xBF"
+                         "\x98\x81\xFC\x34\xEE\x85\x36\xCD"
+                         "\x26\xDB\x6C\x7A\x0C\x77\x8A\x35"
+                         "\x18\x85\x54\xB2\xBC\xDD\x3F\x43"
+                         "\x61\x06\x8A\xDF\x86\x3F\xB4\xAC"
+                         "\x97\xDC\xBD\xFD\x92\x10\xC5\xFF",
+               .rlen   = 88,
+       }, {
+               .key    = "\xFE\xFF\xE9\x92\x86\x65\x73\x1C"
+                         "\x6D\x6A\x8F\x94\x67\x30\x83\x08"
+                         "\xCA\xFE\xBA",
+               .klen   = 19,
+               .iv     = "\xFA\xCE\xDB\xAD\xDE\xCA\xF8\x88",
+               .input  = "\x45\x00\x00\x3E\x69\x8F\x00\x00"
+                         "\x80\x11\x4D\xCC\xC0\xA8\x01\x02"
+                         "\xC0\xA8\x01\x01\x0A\x98\x00\x35"
+                         "\x00\x2A\x23\x43\xB2\xD0\x01\x00"
+                         "\x00\x01\x00\x00\x00\x00\x00\x00"
+                         "\x03\x73\x69\x70\x09\x63\x79\x62"
+                         "\x65\x72\x63\x69\x74\x79\x02\x64"
+                         "\x6B\x00\x00\x01\x00\x01\x00\x01",
+               .ilen   = 64,
+               .assoc  = "\x00\x00\xA5\xF8\x00\x00\x00\x0A"
+                         "\xFA\xCE\xDB\xAD\xDE\xCA\xF8\x88",
+               .alen   = 16,
+               .result = "\x4B\xC2\x70\x60\x64\xD2\xF3\xC8"
+                         "\xE5\x26\x8A\xDE\xB8\x7E\x7D\x16"
+                         "\x56\xC7\xD2\x88\xBA\x8D\x58\xAF"
+                         "\xF5\x71\xB6\x37\x84\xA7\xB1\x99"
+                         "\x51\x5C\x0D\xA0\x27\xDE\xE7\x2D"
+                         "\xEF\x25\x88\x1F\x1D\x77\x11\xFF"
+                         "\xDB\xED\xEE\x56\x16\xC5\x5C\x9B"
+                         "\x00\x62\x1F\x68\x4E\x7C\xA0\x97"
+                         "\x10\x72\x7E\x53\x13\x3B\x68\xE4"
+                         "\x30\x99\x91\x79\x09\xEA\xFF\x6A",
+               .rlen   = 80,
+       }, {
+               .key    = "\xAB\xBC\xCD\xDE\xF0\x01\x12\x23"
+                         "\x34\x45\x56\x67\x78\x89\x9A\xAB"
+                         "\xAB\xBC\xCD\xDE\xF0\x01\x12\x23"
+                         "\x34\x45\x56\x67\x78\x89\x9A\xAB"
+                         "\x11\x22\x33",
+               .klen   = 35,
+               .iv     = "\x01\x02\x03\x04\x05\x06\x07\x08",
+               .input  = "\x45\x00\x00\x30\x69\xA6\x40\x00"
+                         "\x80\x06\x26\x90\xC0\xA8\x01\x02"
+                         "\x93\x89\x15\x5E\x0A\x9E\x00\x8B"
+                         "\x2D\xC5\x7E\xE0\x00\x00\x00\x00"
+                         "\x70\x02\x40\x00\x20\xBF\x00\x00"
+                         "\x02\x04\x05\xB4\x01\x01\x04\x02"
+                         "\x01\x02\x02\x01",
+               .ilen   = 52,
+               .assoc  = "\x4A\x2C\xBF\xE3\x00\x00\x00\x02"
+                         "\x01\x02\x03\x04\x05\x06\x07\x08",
+               .alen   = 16,
+               .result = "\xD6\x31\x0D\x2B\x3D\x6F\xBD\x2F"
+                         "\x58\x41\x7E\xFF\x9A\x9E\x09\xB4"
+                         "\x1A\xF7\xF6\x42\x31\xCD\xBF\xAD"
+                         "\x27\x0E\x2C\xF2\xDB\x10\xDF\x55"
+                         "\x8F\x0D\xD7\xAC\x23\xBD\x42\x10"
+                         "\xD0\xB2\xAF\xD8\x37\xAC\x6B\x0B"
+                         "\x11\xD4\x0B\x12\xEC\xB4\xB1\x92"
+                         "\x23\xA6\x10\xB0\x26\xD6\xD9\x26"
+                         "\x5A\x48\x6A\x3E",
+               .rlen   = 68,
+       }, {
+               .key    = "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00",
+               .klen   = 19,
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .input  = "\x45\x00\x00\x3C\x99\xC5\x00\x00"
+                         "\x80\x01\xCB\x7A\x40\x67\x93\x18"
+                         "\x01\x01\x01\x01\x08\x00\x07\x5C"
+                         "\x02\x00\x44\x00\x61\x62\x63\x64"
+                         "\x65\x66\x67\x68\x69\x6A\x6B\x6C"
+                         "\x6D\x6E\x6F\x70\x71\x72\x73\x74"
+                         "\x75\x76\x77\x61\x62\x63\x64\x65"
+                         "\x66\x67\x68\x69\x01\x02\x02\x01",
+               .ilen   = 64,
+               .assoc  = "\x00\x00\x00\x00\x00\x00\x00\x01"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .alen   = 16,
+               .result = "\x6B\x9A\xCA\x57\x43\x91\xFC\x6F"
+                         "\x92\x51\x23\xA4\xC1\x5B\xF0\x10"
+                         "\xF3\x13\xF4\xF8\xA1\x9A\xB4\xDC"
+                         "\x89\xC8\xF8\x42\x62\x95\xB7\xCB"
+                         "\xB8\xF5\x0F\x1B\x2E\x94\xA2\xA7"
+                         "\xBF\xFB\x8A\x92\x13\x63\xD1\x3C"
+                         "\x08\xF5\xE8\xA6\xAA\xF6\x34\xF9"
+                         "\x42\x05\xAF\xB3\xE7\x9A\xFC\xEE"
+                         "\x36\x25\xC1\x10\x12\x1C\xCA\x82"
+                         "\xEA\xE6\x63\x5A\x57\x28\xA9\x9A",
+               .rlen   = 80,
+       }, {
+               .key    = "\x3D\xE0\x98\x74\xB3\x88\xE6\x49"
+                         "\x19\x88\xD0\xC3\x60\x7E\xAE\x1F"
+                         "\x57\x69\x0E",
+               .klen   = 19,
+               .iv     = "\x4E\x28\x00\x00\xA2\xFC\xA1\xA3",
+               .input  = "\x45\x00\x00\x3C\x99\xC3\x00\x00"
+                         "\x80\x01\xCB\x7C\x40\x67\x93\x18"
+                         "\x01\x01\x01\x01\x08\x00\x08\x5C"
+                         "\x02\x00\x43\x00\x61\x62\x63\x64"
+                         "\x65\x66\x67\x68\x69\x6A\x6B\x6C"
+                         "\x6D\x6E\x6F\x70\x71\x72\x73\x74"
+                         "\x75\x76\x77\x61\x62\x63\x64\x65"
+                         "\x66\x67\x68\x69\x01\x02\x02\x01",
+               .ilen   = 64,
+               .assoc  = "\x42\xF6\x7E\x3F\x10\x10\x10\x10"
+                         "\x10\x10\x10\x10\x4E\x28\x00\x00"
+                         "\xA2\xFC\xA1\xA3",
+               .alen   = 20,
+               .result = "\x6A\x6B\x45\x2B\x7C\x67\x52\xF6"
+                         "\x10\x60\x40\x62\x6B\x4F\x97\x8E"
+                         "\x0B\xB2\x22\x97\xCB\x21\xE0\x90"
+                         "\xA2\xE7\xD1\x41\x30\xE4\x4B\x1B"
+                         "\x79\x01\x58\x50\x01\x06\xE1\xE0"
+                         "\x2C\x83\x79\xD3\xDE\x46\x97\x1A"
+                         "\x30\xB8\xE5\xDF\xD7\x12\x56\x75"
+                         "\xD0\x95\xB7\xB8\x91\x42\xF7\xFD"
+                         "\x97\x57\xCA\xC1\x20\xD0\x86\xB9"
+                         "\x66\x9D\xB4\x2B\x96\x22\xAC\x67",
+               .rlen   = 80,
+       }, {
+               .key    = "\x3D\xE0\x98\x74\xB3\x88\xE6\x49"
+                         "\x19\x88\xD0\xC3\x60\x7E\xAE\x1F"
+                         "\x57\x69\x0E",
+               .klen   = 19,
+               .iv     = "\x4E\x28\x00\x00\xA2\xFC\xA1\xA3",
+               .input  = "\x45\x00\x00\x1C\x42\xA2\x00\x00"
+                         "\x80\x01\x44\x1F\x40\x67\x93\xB6"
+                         "\xE0\x00\x00\x02\x0A\x00\xF5\xFF"
+                         "\x01\x02\x02\x01",
+               .ilen   = 28,
+               .assoc  = "\x42\xF6\x7E\x3F\x10\x10\x10\x10"
+                         "\x10\x10\x10\x10\x4E\x28\x00\x00"
+                         "\xA2\xFC\xA1\xA3",
+               .alen   = 20,
+               .result = "\x6A\x6B\x45\x0B\xA7\x06\x52\xF6"
+                         "\x10\x60\xCF\x01\x6B\x4F\x97\x20"
+                         "\xEA\xB3\x23\x94\xC9\x21\x1D\x33"
+                         "\xA1\xE5\x90\x40\x05\x37\x45\x70"
+                         "\xB5\xD6\x09\x0A\x23\x73\x33\xF9"
+                         "\x08\xB4\x22\xE4",
+               .rlen   = 44,
+       }, {
+               .key    = "\xFE\xFF\xE9\x92\x86\x65\x73\x1C"
+                         "\x6D\x6A\x8F\x94\x67\x30\x83\x08"
+                         "\xFE\xFF\xE9\x92\x86\x65\x73\x1C"
+                         "\xCA\xFE\xBA",
+               .klen   = 27,
+               .iv     = "\xFA\xCE\xDB\xAD\xDE\xCA\xF8\x88",
+               .input  = "\x45\x00\x00\x28\xA4\xAD\x40\x00"
+                         "\x40\x06\x78\x80\x0A\x01\x03\x8F"
+                         "\x0A\x01\x06\x12\x80\x23\x06\xB8"
+                         "\xCB\x71\x26\x02\xDD\x6B\xB0\x3E"
+                         "\x50\x10\x16\xD0\x75\x68\x00\x01",
+               .ilen   = 40,
+               .assoc  = "\x00\x00\xA5\xF8\x00\x00\x00\x0A"
+                         "\xFA\xCE\xDB\xAD\xDE\xCA\xF8\x88",
+               .alen   = 16,
+               .result = "\x05\x22\x15\xD1\x52\x56\x85\x04"
+                         "\xA8\x5C\x5D\x6D\x7E\x6E\xF5\xFA"
+                         "\xEA\x16\x37\x50\xF3\xDF\x84\x3B"
+                         "\x2F\x32\x18\x57\x34\x2A\x8C\x23"
+                         "\x67\xDF\x6D\x35\x7B\x54\x0D\xFB"
+                         "\x34\xA5\x9F\x6C\x48\x30\x1E\x22"
+                         "\xFE\xB1\x22\x17\x17\x8A\xB9\x5B",
+               .rlen   = 56,
+       }, {
+               .key    = "\xAB\xBC\xCD\xDE\xF0\x01\x12\x23"
+                         "\x34\x45\x56\x67\x78\x89\x9A\xAB"
+                         "\xDE\xCA\xF8",
+               .klen   = 19,
+               .iv     = "\xCA\xFE\xDE\xBA\xCE\xFA\xCE\x74",
+               .input  = "\x45\x00\x00\x49\x33\xBA\x00\x00"
+                         "\x7F\x11\x91\x06\xC3\xFB\x1D\x10"
+                         "\xC2\xB1\xD3\x26\xC0\x28\x31\xCE"
+                         "\x00\x35\xDD\x7B\x80\x03\x02\xD5"
+                         "\x00\x00\x4E\x20\x00\x1E\x8C\x18"
+                         "\xD7\x5B\x81\xDC\x91\xBA\xA0\x47"
+                         "\x6B\x91\xB9\x24\xB2\x80\x38\x9D"
+                         "\x92\xC9\x63\xBA\xC0\x46\xEC\x95"
+                         "\x9B\x62\x66\xC0\x47\x22\xB1\x49"
+                         "\x23\x01\x01\x01",
+               .ilen   = 76,
+               .assoc  = "\x00\x00\x01\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x01\xCA\xFE\xDE\xBA"
+                         "\xCE\xFA\xCE\x74",
+               .alen   = 20,
+               .result = "\x92\xD0\x53\x79\x33\x38\xD5\xF3"
+                         "\x7D\xE4\x7A\x8E\x86\x03\xC9\x90"
+                         "\x96\x35\xAB\x9C\xFB\xE8\xA3\x76"
+                         "\xE9\xE9\xE2\xD1\x2E\x11\x0E\x00"
+                         "\xFA\xCE\xB5\x9E\x02\xA7\x7B\xEA"
+                         "\x71\x9A\x58\xFB\xA5\x8A\xE1\xB7"
+                         "\x9C\x39\x9D\xE3\xB5\x6E\x69\xE6"
+                         "\x63\xC9\xDB\x05\x69\x51\x12\xAD"
+                         "\x3E\x00\x32\x73\x86\xF2\xEE\xF5"
+                         "\x0F\xE8\x81\x7E\x84\xD3\xC0\x0D"
+                         "\x76\xD6\x55\xC6\xB4\xC2\x34\xC7"
+                         "\x12\x25\x0B\xF9",
+               .rlen   = 92,
+       }, {
+               .key    = "\xAB\xBC\xCD\xDE\xF0\x01\x12\x23"
+                         "\x34\x45\x56\x67\x78\x89\x9A\xAB"
+                         "\xAB\xBC\xCD\xDE\xF0\x01\x12\x23"
+                         "\x34\x45\x56\x67\x78\x89\x9A\xAB"
+                         "\x73\x61\x6C",
+               .klen   = 35,
+               .iv     = "\x61\x6E\x64\x01\x69\x76\x65\x63",
+               .input  = "\x45\x08\x00\x28\x73\x2C\x00\x00"
+                         "\x40\x06\xE9\xF9\x0A\x01\x06\x12"
+                         "\x0A\x01\x03\x8F\x06\xB8\x80\x23"
+                         "\xDD\x6B\xAF\xBE\xCB\x71\x26\x02"
+                         "\x50\x10\x1F\x64\x6D\x54\x00\x01",
+               .ilen   = 40,
+               .assoc  = "\x17\x40\x5E\x67\x15\x6F\x31\x26"
+                         "\xDD\x0D\xB9\x9B\x61\x6E\x64\x01"
+                         "\x69\x76\x65\x63",
+               .alen   = 20,
+               .result = "\xCC\x74\xB7\xD3\xB0\x38\x50\x42"
+                         "\x2C\x64\x87\x46\x1E\x34\x10\x05"
+                         "\x29\x6B\xBB\x36\xE9\x69\xAD\x92"
+                         "\x82\xA1\x10\x6A\xEB\x0F\xDC\x7D"
+                         "\x08\xBA\xF3\x91\xCA\xAA\x61\xDA"
+                         "\x62\xF4\x14\x61\x5C\x9D\xB5\xA7"
+                         "\xEE\xD7\xB9\x7E\x87\x99\x9B\x7D",
+               .rlen   = 56,
+       }, {
+               .key    = "\x3D\xE0\x98\x74\xB3\x88\xE6\x49"
+                         "\x19\x88\xD0\xC3\x60\x7E\xAE\x1F"
+                         "\x57\x69\x0E",
+               .klen   = 19,
+               .iv     = "\x4E\x28\x00\x00\xA2\xFC\xA1\xA3",
+               .input  = "\x45\x00\x00\x49\x33\x3E\x00\x00"
+                         "\x7F\x11\x91\x82\xC3\xFB\x1D\x10"
+                         "\xC2\xB1\xD3\x26\xC0\x28\x31\xCE"
+                         "\x00\x35\xCB\x45\x80\x03\x02\x5B"
+                         "\x00\x00\x01\xE0\x00\x1E\x8C\x18"
+                         "\xD6\x57\x59\xD5\x22\x84\xA0\x35"
+                         "\x2C\x71\x47\x5C\x88\x80\x39\x1C"
+                         "\x76\x4D\x6E\x5E\xE0\x49\x6B\x32"
+                         "\x5A\xE2\x70\xC0\x38\x99\x49\x39"
+                         "\x15\x01\x01\x01",
+               .ilen   = 76,
+               .assoc  = "\x42\xF6\x7E\x3F\x10\x10\x10\x10"
+                         "\x10\x10\x10\x10\x4E\x28\x00\x00"
+                         "\xA2\xFC\xA1\xA3",
+               .alen   = 20,
+               .result = "\x6A\x6B\x45\x5E\xD6\x9A\x52\xF6"
+                         "\xEF\x70\x1A\x9C\xE8\xD3\x19\x86"
+                         "\xC8\x02\xF0\xB0\x03\x09\xD9\x02"
+                         "\xA0\xD2\x59\x04\xD1\x85\x2A\x24"
+                         "\x1C\x67\x3E\xD8\x68\x72\x06\x94"
+                         "\x97\xBA\x4F\x76\x8D\xB0\x44\x5B"
+                         "\x69\xBF\xD5\xE2\x3D\xF1\x0B\x0C"
+                         "\xC0\xBF\xB1\x8F\x70\x09\x9E\xCE"
+                         "\xA5\xF2\x55\x58\x84\xFA\xF9\xB5"
+                         "\x23\xF4\x84\x40\x74\x14\x8A\x6B"
+                         "\xDB\xD7\x67\xED\xA4\x93\xF3\x47"
+                         "\xCC\xF7\x46\x6F",
+               .rlen   = 92,
+       }, {
+               .key    = "\xAB\xBC\xCD\xDE\xF0\x01\x12\x23"
+                         "\x34\x45\x56\x67\x78\x89\x9A\xAB"
+                         "\xAB\xBC\xCD\xDE\xF0\x01\x12\x23"
+                         "\x34\x45\x56\x67\x78\x89\x9A\xAB"
+                         "\x73\x61\x6C",
+               .klen   = 35,
+               .iv     = "\x61\x6E\x64\x01\x69\x76\x65\x63",
+               .input  = "\x63\x69\x73\x63\x6F\x01\x72\x75"
+                         "\x6C\x65\x73\x01\x74\x68\x65\x01"
+                         "\x6E\x65\x74\x77\x65\x01\x64\x65"
+                         "\x66\x69\x6E\x65\x01\x74\x68\x65"
+                         "\x74\x65\x63\x68\x6E\x6F\x6C\x6F"
+                         "\x67\x69\x65\x73\x01\x74\x68\x61"
+                         "\x74\x77\x69\x6C\x6C\x01\x64\x65"
+                         "\x66\x69\x6E\x65\x74\x6F\x6D\x6F"
+                         "\x72\x72\x6F\x77\x01\x02\x02\x01",
+               .ilen   = 72,
+               .assoc  = "\x17\x40\x5E\x67\x15\x6F\x31\x26"
+                         "\xDD\x0D\xB9\x9B\x61\x6E\x64\x01"
+                         "\x69\x76\x65\x63",
+               .alen   = 20,
+               .result = "\xEA\x15\xC4\x98\xAC\x15\x22\x37"
+                         "\x00\x07\x1D\xBE\x60\x5D\x73\x16"
+                         "\x4D\x0F\xCC\xCE\x8A\xD0\x49\xD4"
+                         "\x39\xA3\xD1\xB1\x21\x0A\x92\x1A"
+                         "\x2C\xCF\x8F\x9D\xC9\x91\x0D\xB4"
+                         "\x15\xFC\xBC\xA5\xC5\xBF\x54\xE5"
+                         "\x1C\xC7\x32\x41\x07\x7B\x2C\xB6"
+                         "\x5C\x23\x7C\x93\xEA\xEF\x23\x1C"
+                         "\x73\xF4\xE7\x12\x84\x4C\x37\x0A"
+                         "\x4A\x8F\x06\x37\x48\xF9\xF9\x05"
+                         "\x55\x13\x40\xC3\xD5\x55\x3A\x3D",
+               .rlen   = 88,
+       }, {
+               .key    = "\x7D\x77\x3D\x00\xC1\x44\xC5\x25"
+                         "\xAC\x61\x9D\x18\xC8\x4A\x3F\x47"
+                         "\xD9\x66\x42",
+               .klen   = 19,
+               .iv     = "\x43\x45\x7E\x91\x82\x44\x3B\xC6",
+               .input  = "\x01\x02\x02\x01",
+               .ilen   = 4,
+               .assoc  = "\x33\x54\x67\xAE\xFF\xFF\xFF\xFF"
+                         "\x43\x45\x7E\x91\x82\x44\x3B\xC6",
+               .alen   = 16,
+               .result = "\x4C\x72\x63\x30\x2F\xE6\x56\xDD"
+                         "\xD0\xD8\x60\x9D\x8B\xEF\x85\x90"
+                         "\xF7\x61\x24\x62",
+               .rlen   = 20,
+       }, {
+               .key    = "\xAB\xBC\xCD\xDE\xF0\x01\x12\x23"
+                         "\x34\x45\x56\x67\x78\x89\x9A\xAB"
+                         "\xDE\xCA\xF8",
+               .klen   = 19,
+               .iv     = "\xCA\xFE\xDE\xBA\xCE\xFA\xCE\x74",
+               .input  = "\x74\x6F\x01\x62\x65\x01\x6F\x72"
+                         "\x01\x6E\x6F\x74\x01\x74\x6F\x01"
+                         "\x62\x65\x00\x01",
+               .ilen   = 20,
+               .assoc  = "\x00\x00\x01\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x01\xCA\xFE\xDE\xBA"
+                         "\xCE\xFA\xCE\x74",
+               .alen   = 20,
+               .result = "\xA3\xBF\x52\x52\x65\x83\xBA\x81"
+                         "\x03\x9B\x84\xFC\x44\x8C\xBB\x81"
+                         "\x36\xE1\x78\xBB\xA5\x49\x3A\xD0"
+                         "\xF0\x6B\x21\xAF\x98\xC0\x34\xDC"
+                         "\x17\x17\x65\xAD",
+               .rlen   = 36,
+       }, {
+               .key    = "\x6C\x65\x67\x61\x6C\x69\x7A\x65"
+                         "\x6D\x61\x72\x69\x6A\x75\x61\x6E"
+                         "\x61\x61\x6E\x64\x64\x6F\x69\x74"
+                         "\x62\x65\x66\x6F\x72\x65\x69\x61"
+                         "\x74\x75\x72",
+               .klen   = 35,
+               .iv     = "\x33\x30\x21\x69\x67\x65\x74\x6D",
+               .input  = "\x45\x00\x00\x30\xDA\x3A\x00\x00"
+                         "\x80\x01\xDF\x3B\xC0\xA8\x00\x05"
+                         "\xC0\xA8\x00\x01\x08\x00\xC6\xCD"
+                         "\x02\x00\x07\x00\x61\x62\x63\x64"
+                         "\x65\x66\x67\x68\x69\x6A\x6B\x6C"
+                         "\x6D\x6E\x6F\x70\x71\x72\x73\x74"
+                         "\x01\x02\x02\x01",
+               .ilen   = 52,
+               .assoc  = "\x79\x6B\x69\x63\xFF\xFF\xFF\xFF"
+                         "\xFF\xFF\xFF\xFF\x33\x30\x21\x69"
+                         "\x67\x65\x74\x6D",
+               .alen   = 20,
+               .result = "\x96\xFD\x86\xF8\xD1\x98\xFF\x10"
+                         "\xAB\x8C\xDA\x8A\x5A\x08\x38\x1A"
+                         "\x48\x59\x80\x18\x1A\x18\x1A\x04"
+                         "\xC9\x0D\xE3\xE7\x0E\xA4\x0B\x75"
+                         "\x92\x9C\x52\x5C\x0B\xFB\xF8\xAF"
+                         "\x16\xC3\x35\xA8\xE7\xCE\x84\x04"
+                         "\xEB\x40\x6B\x7A\x8E\x75\xBB\x42"
+                         "\xE0\x63\x4B\x21\x44\xA2\x2B\x2B"
+                         "\x39\xDB\xC8\xDC",
+               .rlen   = 68,
+       }, {
+               .key    = "\x3D\xE0\x98\x74\xB3\x88\xE6\x49"
+                         "\x19\x88\xD0\xC3\x60\x7E\xAE\x1F"
+                         "\x57\x69\x0E",
+               .klen   = 19,
+               .iv     = "\x4E\x28\x00\x00\xA2\xFC\xA1\xA3",
+               .input  = "\x45\x00\x00\x30\xDA\x3A\x00\x00"
+                         "\x80\x01\xDF\x3B\xC0\xA8\x00\x05"
+                         "\xC0\xA8\x00\x01\x08\x00\xC6\xCD"
+                         "\x02\x00\x07\x00\x61\x62\x63\x64"
+                         "\x65\x66\x67\x68\x69\x6A\x6B\x6C"
+                         "\x6D\x6E\x6F\x70\x71\x72\x73\x74"
+                         "\x01\x02\x02\x01",
+               .ilen   = 52,
+               .assoc  = "\x3F\x7E\xF6\x42\x10\x10\x10\x10"
+                         "\x10\x10\x10\x10\x4E\x28\x00\x00"
+                         "\xA2\xFC\xA1\xA3",
+               .alen   = 20,
+               .result = "\x6A\x6B\x45\x27\x3F\x9E\x52\xF6"
+                         "\x10\x60\x54\x25\xEB\x80\x04\x93"
+                         "\xCA\x1B\x23\x97\xCB\x21\x2E\x01"
+                         "\xA2\xE7\x95\x41\x30\xE4\x4B\x1B"
+                         "\x79\x01\x58\x50\x01\x06\xE1\xE0"
+                         "\x2C\x83\x79\xD3\xDE\x46\x97\x1A"
+                         "\x44\xCC\x90\xBF\x00\x94\x94\x92"
+                         "\x20\x17\x0C\x1B\x55\xDE\x7E\x68"
+                         "\xF4\x95\x5D\x4F",
+               .rlen   = 68,
+       }, {
+               .key    = "\x4C\x80\xCD\xEF\xBB\x5D\x10\xDA"
+                         "\x90\x6A\xC7\x3C\x36\x13\xA6\x34"
+                         "\x22\x43\x3C",
+               .klen   = 19,
+               .iv     = "\x48\x55\xEC\x7D\x3A\x23\x4B\xFD",
+               .input  = "\x08\x00\xC6\xCD\x02\x00\x07\x00"
+                         "\x61\x62\x63\x64\x65\x66\x67\x68"
+                         "\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70"
+                         "\x71\x72\x73\x74\x01\x02\x02\x01",
+               .ilen   = 32,
+               .assoc  = "\x00\x00\x43\x21\x87\x65\x43\x21"
+                         "\x00\x00\x00\x07\x48\x55\xEC\x7D"
+                         "\x3A\x23\x4B\xFD",
+               .alen   = 20,
+               .result = "\x67\xE9\x28\xB3\x1C\xA4\x6D\x02"
+                         "\xF0\xB5\x37\xB6\x6B\x2F\xF5\x4F"
+                         "\xF8\xA3\x4C\x53\xB8\x12\x09\xBF"
+                         "\x58\x7D\xCF\x29\xA3\x41\x68\x6B"
+                         "\xCE\xE8\x79\x85\x3C\xB0\x3A\x8F"
+                         "\x16\xB0\xA1\x26\xC9\xBC\xBC\xA6",
+               .rlen   = 48,
+       }
+};
+
+static struct aead_testvec aes_ccm_rfc4309_dec_tv_template[]   = {
+       { /* Generated using Crypto++ */
+               .key    = zeroed_string,
+               .klen   = 19,
+               .iv     = zeroed_string,
+               .result = zeroed_string,
+               .rlen   = 16,
+               .assoc  = zeroed_string,
+               .alen   = 16,
+               .input  = "\x2E\x9A\xCA\x6B\xDA\x54\xFC\x6F"
+                         "\x12\x50\xE8\xDE\x81\x3C\x63\x08"
+                         "\x1A\x22\xBA\x75\xEE\xD4\xD5\xB5"
+                         "\x27\x50\x01\xAC\x03\x33\x39\xFB",
+               .ilen   = 32,
+       },{
+               .key    = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
+                         "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
+                         "\x00\x00\x00",
+               .klen   = 19,
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x01",
+               .result = zeroed_string,
+               .rlen   = 16,
+               .assoc  = "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x01",
+               .alen   = 16,
+               .input  = "\xCF\xB9\x99\x17\xC8\x86\x0E\x7F"
+                         "\x7E\x76\xF8\xE6\xF8\xCC\x1F\x17"
+                         "\x6A\xE0\x53\x9F\x4B\x73\x7E\xDA"
+                         "\x08\x09\x4E\xC4\x1E\xAD\xC6\xB0",
+               .ilen   = 32,
+
+       }, {
+               .key    = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
+                         "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
+                         "\x00\x00\x00",
+               .klen   = 19,
+               .iv     = zeroed_string,
+               .result = "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01",
+               .rlen   = 16,
+               .assoc  = zeroed_string,
+               .alen   = 16,
+               .input  = "\x33\xDE\x73\xBC\xA6\xCE\x4E\xA6"
+                         "\x61\xF4\xF5\x41\x03\x4A\xE3\x86"
+                         "\xA1\xE2\xC2\x42\x2B\x81\x70\x40"
+                         "\xFD\x7F\x76\xD1\x03\x07\xBB\x0C",
+               .ilen   = 32,
+       }, {
+               .key    = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
+                         "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
+                         "\x00\x00\x00",
+               .klen   = 19,
+               .iv     = zeroed_string,
+               .result = "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01",
+               .rlen   = 16,
+               .assoc  = "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .alen   = 16,
+               .input  = "\x33\xDE\x73\xBC\xA6\xCE\x4E\xA6"
+                         "\x61\xF4\xF5\x41\x03\x4A\xE3\x86"
+                         "\x5B\xC0\x73\xE0\x2B\x73\x68\xC9"
+                         "\x2D\x8C\x58\xC2\x90\x3D\xB0\x3E",
+               .ilen   = 32,
+       }, {
+               .key    = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
+                         "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
+                         "\x00\x00\x00",
+               .klen   = 19,
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x01",
+               .result = "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01",
+               .rlen   = 16,
+               .assoc  = "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x00\x00\x00\x00\x00\x00\x00\x01",
+               .alen   = 16,
+               .input  = "\xCE\xB8\x98\x16\xC9\x87\x0F\x7E"
+                         "\x7F\x77\xF9\xE7\xF9\xCD\x1E\x16"
+                         "\x43\x8E\x76\x57\x3B\xB4\x05\xE8"
+                         "\xA9\x9B\xBF\x25\xE0\x4F\xC0\xED",
+               .ilen   = 32,
+       }, {
+               .key    = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
+                         "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
+                         "\x00\x00\x00",
+               .klen   = 19,
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x01",
+               .result = "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x01\x01\x01\x01\x01\x01\x01\x01",
+               .rlen   = 64,
+               .assoc  = "\x01\x01\x01\x01\x01\x01\x01\x01"
+                         "\x00\x00\x00\x00\x00\x00\x00\x01",
+               .alen   = 16,
+               .input  = "\xCE\xB8\x98\x16\xC9\x87\x0F\x7E"
+                         "\x7F\x77\xF9\xE7\xF9\xCD\x1E\x16"
+                         "\x9C\xA4\x97\x83\x3F\x01\xA5\xF4"
+                         "\x43\x09\xE7\xB8\xE9\xD1\xD7\x02"
+                         "\x9B\xAB\x39\x18\xEB\x94\x34\x36"
+                         "\xE6\xC5\xC8\x9B\x00\x81\x9E\x49"
+                         "\x1D\x78\xE1\x48\xE3\xE9\xEA\x8E"
+                         "\x3A\x2B\x67\x5D\x35\x6A\x0F\xDB"
+                         "\x02\x73\xDD\xE7\x30\x4A\x30\x54"
+                         "\x1A\x9D\x09\xCA\xC8\x1C\x32\x5F",
+               .ilen   = 80,
+       }, {
+               .key    = "\x00\x01\x02\x03\x04\x05\x06\x07"
+                         "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
+                         "\x00\x00\x00",
+               .klen   = 19,
+               .iv     = "\x00\x00\x45\x67\x89\xab\xcd\xef",
+               .result = "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff"
+                         "\xff\xff\xff\xff\xff\xff\xff\xff",
+               .rlen   = 192,
+               .assoc  = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
+                         "\xaa\xaa\xaa\xaa\x00\x00\x45\x67"
+                         "\x89\xab\xcd\xef",
+               .alen   = 20,
+               .input  = "\x64\x17\xDC\x24\x9D\x92\xBA\x5E"
+                         "\x7C\x64\x6D\x33\x46\x77\xAC\xB1"
+                         "\x5C\x9E\xE2\xC7\x27\x11\x3E\x95"
+                         "\x7D\xBE\x28\xC8\xC1\xCA\x5E\x8C"
+                         "\xB4\xE2\xDE\x9F\x53\x59\x26\xDB"
+                         "\x0C\xD4\xE4\x07\x9A\xE6\x3E\x01"
+                         "\x58\x0D\x3E\x3D\xD5\x21\xEB\x04"
+                         "\x06\x9D\x5F\xB9\x02\x49\x1A\x2B"
+                         "\xBA\xF0\x4E\x3B\x85\x50\x5B\x09"
+                         "\xFE\xEC\xFC\x54\xEC\x0C\xE2\x79"
+                         "\x8A\x2F\x5F\xD7\x05\x5D\xF1\x6D"
+                         "\x22\xEB\xD1\x09\x80\x3F\x5A\x70"
+                         "\xB2\xB9\xD3\x63\x99\xC2\x4D\x1B"
+                         "\x36\x12\x00\x89\xAA\x5D\x55\xDA"
+                         "\x1D\x5B\xD8\x3C\x5F\x09\xD2\xE6"
+                         "\x39\x41\x5C\xF0\xBE\x26\x4E\x5F"
+                         "\x2B\x50\x44\x52\xC2\x10\x7D\x38"
+                         "\x82\x64\x83\x0C\xAE\x49\xD0\xE5"
+                         "\x4F\xE5\x66\x4C\x58\x7A\xEE\x43"
+                         "\x3B\x51\xFE\xBA\x24\x8A\xFE\xDC"
+                         "\x19\x6D\x60\x66\x61\xF9\x9A\x3F"
+                         "\x75\xFC\x38\x53\x5B\xB5\xCD\x52"
+                         "\x4F\xE5\xE4\xC9\xFE\x10\xCB\x98"
+                         "\xF0\x06\x5B\x07\xAB\xBB\xF4\x0E"
+                         "\x2D\xC2\xDD\x5D\xDD\x22\x9A\xCC"
+                         "\x39\xAB\x63\xA5\x3D\x9C\x51\x8A",
+               .ilen   = 208,
+       }, { /* From draft-mcgrew-gcm-test-01 */
+               .key    = "\x4C\x80\xCD\xEF\xBB\x5D\x10\xDA"
+                         "\x90\x6A\xC7\x3C\x36\x13\xA6\x34"
+                         "\x2E\x44\x3B",
+               .klen   = 19,
+               .iv     = "\x49\x56\xED\x7E\x3B\x24\x4C\xFE",
+               .result = "\x45\x00\x00\x48\x69\x9A\x00\x00"
+                         "\x80\x11\x4D\xB7\xC0\xA8\x01\x02"
+                         "\xC0\xA8\x01\x01\x0A\x9B\xF1\x56"
+                         "\x38\xD3\x01\x00\x00\x01\x00\x00"
+                         "\x00\x00\x00\x00\x04\x5F\x73\x69"
+                         "\x70\x04\x5F\x75\x64\x70\x03\x73"
+                         "\x69\x70\x09\x63\x79\x62\x65\x72"
+                         "\x63\x69\x74\x79\x02\x64\x6B\x00"
+                         "\x00\x21\x00\x01\x01\x02\x02\x01",
+               .rlen   = 72,
+               .assoc  = "\x00\x00\x43\x21\x87\x65\x43\x21"
+                         "\x00\x00\x00\x00\x49\x56\xED\x7E"
+                         "\x3B\x24\x4C\xFE",
+               .alen   = 20,
+               .input  = "\x89\xBA\x3E\xEF\xE6\xD6\xCF\xDB"
+                         "\x83\x60\xF5\xBA\x3A\x56\x79\xE6"
+                         "\x7E\x0C\x53\xCF\x9E\x87\xE0\x4E"
+                         "\x1A\x26\x01\x24\xC7\x2E\x3D\xBF"
+                         "\x29\x2C\x91\xC1\xB8\xA8\xCF\xE0"
+                         "\x39\xF8\x53\x6D\x31\x22\x2B\xBF"
+                         "\x98\x81\xFC\x34\xEE\x85\x36\xCD"
+                         "\x26\xDB\x6C\x7A\x0C\x77\x8A\x35"
+                         "\x18\x85\x54\xB2\xBC\xDD\x3F\x43"
+                         "\x61\x06\x8A\xDF\x86\x3F\xB4\xAC"
+                         "\x97\xDC\xBD\xFD\x92\x10\xC5\xFF",
+               .ilen   = 88,
+       }, {
+               .key    = "\xFE\xFF\xE9\x92\x86\x65\x73\x1C"
+                         "\x6D\x6A\x8F\x94\x67\x30\x83\x08"
+                         "\xCA\xFE\xBA",
+               .klen   = 19,
+               .iv     = "\xFA\xCE\xDB\xAD\xDE\xCA\xF8\x88",
+               .result = "\x45\x00\x00\x3E\x69\x8F\x00\x00"
+                         "\x80\x11\x4D\xCC\xC0\xA8\x01\x02"
+                         "\xC0\xA8\x01\x01\x0A\x98\x00\x35"
+                         "\x00\x2A\x23\x43\xB2\xD0\x01\x00"
+                         "\x00\x01\x00\x00\x00\x00\x00\x00"
+                         "\x03\x73\x69\x70\x09\x63\x79\x62"
+                         "\x65\x72\x63\x69\x74\x79\x02\x64"
+                         "\x6B\x00\x00\x01\x00\x01\x00\x01",
+               .rlen   = 64,
+               .assoc  = "\x00\x00\xA5\xF8\x00\x00\x00\x0A"
+                         "\xFA\xCE\xDB\xAD\xDE\xCA\xF8\x88",
+               .alen   = 16,
+               .input  = "\x4B\xC2\x70\x60\x64\xD2\xF3\xC8"
+                         "\xE5\x26\x8A\xDE\xB8\x7E\x7D\x16"
+                         "\x56\xC7\xD2\x88\xBA\x8D\x58\xAF"
+                         "\xF5\x71\xB6\x37\x84\xA7\xB1\x99"
+                         "\x51\x5C\x0D\xA0\x27\xDE\xE7\x2D"
+                         "\xEF\x25\x88\x1F\x1D\x77\x11\xFF"
+                         "\xDB\xED\xEE\x56\x16\xC5\x5C\x9B"
+                         "\x00\x62\x1F\x68\x4E\x7C\xA0\x97"
+                         "\x10\x72\x7E\x53\x13\x3B\x68\xE4"
+                         "\x30\x99\x91\x79\x09\xEA\xFF\x6A",
+               .ilen   = 80,
+       }, {
+               .key    = "\xAB\xBC\xCD\xDE\xF0\x01\x12\x23"
+                         "\x34\x45\x56\x67\x78\x89\x9A\xAB"
+                         "\xAB\xBC\xCD\xDE\xF0\x01\x12\x23"
+                         "\x34\x45\x56\x67\x78\x89\x9A\xAB"
+                         "\x11\x22\x33",
+               .klen   = 35,
+               .iv     = "\x01\x02\x03\x04\x05\x06\x07\x08",
+               .result = "\x45\x00\x00\x30\x69\xA6\x40\x00"
+                         "\x80\x06\x26\x90\xC0\xA8\x01\x02"
+                         "\x93\x89\x15\x5E\x0A\x9E\x00\x8B"
+                         "\x2D\xC5\x7E\xE0\x00\x00\x00\x00"
+                         "\x70\x02\x40\x00\x20\xBF\x00\x00"
+                         "\x02\x04\x05\xB4\x01\x01\x04\x02"
+                         "\x01\x02\x02\x01",
+               .rlen   = 52,
+               .assoc  = "\x4A\x2C\xBF\xE3\x00\x00\x00\x02"
+                         "\x01\x02\x03\x04\x05\x06\x07\x08",
+               .alen   = 16,
+               .input  = "\xD6\x31\x0D\x2B\x3D\x6F\xBD\x2F"
+                         "\x58\x41\x7E\xFF\x9A\x9E\x09\xB4"
+                         "\x1A\xF7\xF6\x42\x31\xCD\xBF\xAD"
+                         "\x27\x0E\x2C\xF2\xDB\x10\xDF\x55"
+                         "\x8F\x0D\xD7\xAC\x23\xBD\x42\x10"
+                         "\xD0\xB2\xAF\xD8\x37\xAC\x6B\x0B"
+                         "\x11\xD4\x0B\x12\xEC\xB4\xB1\x92"
+                         "\x23\xA6\x10\xB0\x26\xD6\xD9\x26"
+                         "\x5A\x48\x6A\x3E",
+               .ilen   = 68,
+       }, {
+               .key    = "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00",
+               .klen   = 19,
+               .iv     = "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .result = "\x45\x00\x00\x3C\x99\xC5\x00\x00"
+                         "\x80\x01\xCB\x7A\x40\x67\x93\x18"
+                         "\x01\x01\x01\x01\x08\x00\x07\x5C"
+                         "\x02\x00\x44\x00\x61\x62\x63\x64"
+                         "\x65\x66\x67\x68\x69\x6A\x6B\x6C"
+                         "\x6D\x6E\x6F\x70\x71\x72\x73\x74"
+                         "\x75\x76\x77\x61\x62\x63\x64\x65"
+                         "\x66\x67\x68\x69\x01\x02\x02\x01",
+               .rlen   = 64,
+               .assoc  = "\x00\x00\x00\x00\x00\x00\x00\x01"
+                         "\x00\x00\x00\x00\x00\x00\x00\x00",
+               .alen   = 16,
+               .input  = "\x6B\x9A\xCA\x57\x43\x91\xFC\x6F"
+                         "\x92\x51\x23\xA4\xC1\x5B\xF0\x10"
+                         "\xF3\x13\xF4\xF8\xA1\x9A\xB4\xDC"
+                         "\x89\xC8\xF8\x42\x62\x95\xB7\xCB"
+                         "\xB8\xF5\x0F\x1B\x2E\x94\xA2\xA7"
+                         "\xBF\xFB\x8A\x92\x13\x63\xD1\x3C"
+                         "\x08\xF5\xE8\xA6\xAA\xF6\x34\xF9"
+                         "\x42\x05\xAF\xB3\xE7\x9A\xFC\xEE"
+                         "\x36\x25\xC1\x10\x12\x1C\xCA\x82"
+                         "\xEA\xE6\x63\x5A\x57\x28\xA9\x9A",
+               .ilen   = 80,
+       }, {
+               .key    = "\x3D\xE0\x98\x74\xB3\x88\xE6\x49"
+                         "\x19\x88\xD0\xC3\x60\x7E\xAE\x1F"
+                         "\x57\x69\x0E",
+               .klen   = 19,
+               .iv     = "\x4E\x28\x00\x00\xA2\xFC\xA1\xA3",
+               .result = "\x45\x00\x00\x3C\x99\xC3\x00\x00"
+                         "\x80\x01\xCB\x7C\x40\x67\x93\x18"
+                         "\x01\x01\x01\x01\x08\x00\x08\x5C"
+                         "\x02\x00\x43\x00\x61\x62\x63\x64"
+                         "\x65\x66\x67\x68\x69\x6A\x6B\x6C"
+                         "\x6D\x6E\x6F\x70\x71\x72\x73\x74"
+                         "\x75\x76\x77\x61\x62\x63\x64\x65"
+                         "\x66\x67\x68\x69\x01\x02\x02\x01",
+               .rlen   = 64,
+               .assoc  = "\x42\xF6\x7E\x3F\x10\x10\x10\x10"
+                         "\x10\x10\x10\x10\x4E\x28\x00\x00"
+                         "\xA2\xFC\xA1\xA3",
+               .alen   = 20,
+               .input  = "\x6A\x6B\x45\x2B\x7C\x67\x52\xF6"
+                         "\x10\x60\x40\x62\x6B\x4F\x97\x8E"
+                         "\x0B\xB2\x22\x97\xCB\x21\xE0\x90"
+                         "\xA2\xE7\xD1\x41\x30\xE4\x4B\x1B"
+                         "\x79\x01\x58\x50\x01\x06\xE1\xE0"
+                         "\x2C\x83\x79\xD3\xDE\x46\x97\x1A"
+                         "\x30\xB8\xE5\xDF\xD7\x12\x56\x75"
+                         "\xD0\x95\xB7\xB8\x91\x42\xF7\xFD"
+                         "\x97\x57\xCA\xC1\x20\xD0\x86\xB9"
+                         "\x66\x9D\xB4\x2B\x96\x22\xAC\x67",
+               .ilen   = 80,
+       }, {
+               .key    = "\x3D\xE0\x98\x74\xB3\x88\xE6\x49"
+                         "\x19\x88\xD0\xC3\x60\x7E\xAE\x1F"
+                         "\x57\x69\x0E",
+               .klen   = 19,
+               .iv     = "\x4E\x28\x00\x00\xA2\xFC\xA1\xA3",
+               .result = "\x45\x00\x00\x1C\x42\xA2\x00\x00"
+                         "\x80\x01\x44\x1F\x40\x67\x93\xB6"
+                         "\xE0\x00\x00\x02\x0A\x00\xF5\xFF"
+                         "\x01\x02\x02\x01",
+               .rlen   = 28,
+               .assoc  = "\x42\xF6\x7E\x3F\x10\x10\x10\x10"
+                         "\x10\x10\x10\x10\x4E\x28\x00\x00"
+                         "\xA2\xFC\xA1\xA3",
+               .alen   = 20,
+               .input  = "\x6A\x6B\x45\x0B\xA7\x06\x52\xF6"
+                         "\x10\x60\xCF\x01\x6B\x4F\x97\x20"
+                         "\xEA\xB3\x23\x94\xC9\x21\x1D\x33"
+                         "\xA1\xE5\x90\x40\x05\x37\x45\x70"
+                         "\xB5\xD6\x09\x0A\x23\x73\x33\xF9"
+                         "\x08\xB4\x22\xE4",
+               .ilen   = 44,
+       }, {
+               .key    = "\xFE\xFF\xE9\x92\x86\x65\x73\x1C"
+                         "\x6D\x6A\x8F\x94\x67\x30\x83\x08"
+                         "\xFE\xFF\xE9\x92\x86\x65\x73\x1C"
+                         "\xCA\xFE\xBA",
                .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,
+               .iv     = "\xFA\xCE\xDB\xAD\xDE\xCA\xF8\x88",
+               .result = "\x45\x00\x00\x28\xA4\xAD\x40\x00"
+                         "\x40\x06\x78\x80\x0A\x01\x03\x8F"
+                         "\x0A\x01\x06\x12\x80\x23\x06\xB8"
+                         "\xCB\x71\x26\x02\xDD\x6B\xB0\x3E"
+                         "\x50\x10\x16\xD0\x75\x68\x00\x01",
+               .rlen   = 40,
+               .assoc  = "\x00\x00\xA5\xF8\x00\x00\x00\x0A"
+                         "\xFA\xCE\xDB\xAD\xDE\xCA\xF8\x88",
+               .alen   = 16,
+               .input  = "\x05\x22\x15\xD1\x52\x56\x85\x04"
+                         "\xA8\x5C\x5D\x6D\x7E\x6E\xF5\xFA"
+                         "\xEA\x16\x37\x50\xF3\xDF\x84\x3B"
+                         "\x2F\x32\x18\x57\x34\x2A\x8C\x23"
+                         "\x67\xDF\x6D\x35\x7B\x54\x0D\xFB"
+                         "\x34\xA5\x9F\x6C\x48\x30\x1E\x22"
+                         "\xFE\xB1\x22\x17\x17\x8A\xB9\x5B",
+               .ilen   = 56,
        }, {
-               .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,
+               .key    = "\xAB\xBC\xCD\xDE\xF0\x01\x12\x23"
+                         "\x34\x45\x56\x67\x78\x89\x9A\xAB"
+                         "\xDE\xCA\xF8",
+               .klen   = 19,
+               .iv     = "\xCA\xFE\xDE\xBA\xCE\xFA\xCE\x74",
+               .result = "\x45\x00\x00\x49\x33\xBA\x00\x00"
+                         "\x7F\x11\x91\x06\xC3\xFB\x1D\x10"
+                         "\xC2\xB1\xD3\x26\xC0\x28\x31\xCE"
+                         "\x00\x35\xDD\x7B\x80\x03\x02\xD5"
+                         "\x00\x00\x4E\x20\x00\x1E\x8C\x18"
+                         "\xD7\x5B\x81\xDC\x91\xBA\xA0\x47"
+                         "\x6B\x91\xB9\x24\xB2\x80\x38\x9D"
+                         "\x92\xC9\x63\xBA\xC0\x46\xEC\x95"
+                         "\x9B\x62\x66\xC0\x47\x22\xB1\x49"
+                         "\x23\x01\x01\x01",
+               .rlen   = 76,
+               .assoc  = "\x00\x00\x01\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x01\xCA\xFE\xDE\xBA"
+                         "\xCE\xFA\xCE\x74",
+               .alen   = 20,
+               .input  = "\x92\xD0\x53\x79\x33\x38\xD5\xF3"
+                         "\x7D\xE4\x7A\x8E\x86\x03\xC9\x90"
+                         "\x96\x35\xAB\x9C\xFB\xE8\xA3\x76"
+                         "\xE9\xE9\xE2\xD1\x2E\x11\x0E\x00"
+                         "\xFA\xCE\xB5\x9E\x02\xA7\x7B\xEA"
+                         "\x71\x9A\x58\xFB\xA5\x8A\xE1\xB7"
+                         "\x9C\x39\x9D\xE3\xB5\x6E\x69\xE6"
+                         "\x63\xC9\xDB\x05\x69\x51\x12\xAD"
+                         "\x3E\x00\x32\x73\x86\xF2\xEE\xF5"
+                         "\x0F\xE8\x81\x7E\x84\xD3\xC0\x0D"
+                         "\x76\xD6\x55\xC6\xB4\xC2\x34\xC7"
+                         "\x12\x25\x0B\xF9",
+               .ilen   = 92,
        }, {
-               .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",
+               .key    = "\xAB\xBC\xCD\xDE\xF0\x01\x12\x23"
+                         "\x34\x45\x56\x67\x78\x89\x9A\xAB"
+                         "\xAB\xBC\xCD\xDE\xF0\x01\x12\x23"
+                         "\x34\x45\x56\x67\x78\x89\x9A\xAB"
+                         "\x73\x61\x6C",
                .klen   = 35,
-               .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,
+               .iv     = "\x61\x6E\x64\x01\x69\x76\x65\x63",
+               .result = "\x45\x08\x00\x28\x73\x2C\x00\x00"
+                         "\x40\x06\xE9\xF9\x0A\x01\x06\x12"
+                         "\x0A\x01\x03\x8F\x06\xB8\x80\x23"
+                         "\xDD\x6B\xAF\xBE\xCB\x71\x26\x02"
+                         "\x50\x10\x1F\x64\x6D\x54\x00\x01",
+               .rlen   = 40,
+               .assoc  = "\x17\x40\x5E\x67\x15\x6F\x31\x26"
+                         "\xDD\x0D\xB9\x9B\x61\x6E\x64\x01"
+                         "\x69\x76\x65\x63",
+               .alen   = 20,
+               .input  = "\xCC\x74\xB7\xD3\xB0\x38\x50\x42"
+                         "\x2C\x64\x87\x46\x1E\x34\x10\x05"
+                         "\x29\x6B\xBB\x36\xE9\x69\xAD\x92"
+                         "\x82\xA1\x10\x6A\xEB\x0F\xDC\x7D"
+                         "\x08\xBA\xF3\x91\xCA\xAA\x61\xDA"
+                         "\x62\xF4\x14\x61\x5C\x9D\xB5\xA7"
+                         "\xEE\xD7\xB9\x7E\x87\x99\x9B\x7D",
+               .ilen   = 56,
        }, {
-               .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",
+               .key    = "\x3D\xE0\x98\x74\xB3\x88\xE6\x49"
+                         "\x19\x88\xD0\xC3\x60\x7E\xAE\x1F"
+                         "\x57\x69\x0E",
+               .klen   = 19,
+               .iv     = "\x4E\x28\x00\x00\xA2\xFC\xA1\xA3",
+               .result = "\x45\x00\x00\x49\x33\x3E\x00\x00"
+                         "\x7F\x11\x91\x82\xC3\xFB\x1D\x10"
+                         "\xC2\xB1\xD3\x26\xC0\x28\x31\xCE"
+                         "\x00\x35\xCB\x45\x80\x03\x02\x5B"
+                         "\x00\x00\x01\xE0\x00\x1E\x8C\x18"
+                         "\xD6\x57\x59\xD5\x22\x84\xA0\x35"
+                         "\x2C\x71\x47\x5C\x88\x80\x39\x1C"
+                         "\x76\x4D\x6E\x5E\xE0\x49\x6B\x32"
+                         "\x5A\xE2\x70\xC0\x38\x99\x49\x39"
+                         "\x15\x01\x01\x01",
+               .rlen   = 76,
+               .assoc  = "\x42\xF6\x7E\x3F\x10\x10\x10\x10"
+                         "\x10\x10\x10\x10\x4E\x28\x00\x00"
+                         "\xA2\xFC\xA1\xA3",
+               .alen   = 20,
+               .input  = "\x6A\x6B\x45\x5E\xD6\x9A\x52\xF6"
+                         "\xEF\x70\x1A\x9C\xE8\xD3\x19\x86"
+                         "\xC8\x02\xF0\xB0\x03\x09\xD9\x02"
+                         "\xA0\xD2\x59\x04\xD1\x85\x2A\x24"
+                         "\x1C\x67\x3E\xD8\x68\x72\x06\x94"
+                         "\x97\xBA\x4F\x76\x8D\xB0\x44\x5B"
+                         "\x69\xBF\xD5\xE2\x3D\xF1\x0B\x0C"
+                         "\xC0\xBF\xB1\x8F\x70\x09\x9E\xCE"
+                         "\xA5\xF2\x55\x58\x84\xFA\xF9\xB5"
+                         "\x23\xF4\x84\x40\x74\x14\x8A\x6B"
+                         "\xDB\xD7\x67\xED\xA4\x93\xF3\x47"
+                         "\xCC\xF7\x46\x6F",
+               .ilen   = 92,
+       }, {
+               .key    = "\xAB\xBC\xCD\xDE\xF0\x01\x12\x23"
+                         "\x34\x45\x56\x67\x78\x89\x9A\xAB"
+                         "\xAB\xBC\xCD\xDE\xF0\x01\x12\x23"
+                         "\x34\x45\x56\x67\x78\x89\x9A\xAB"
+                         "\x73\x61\x6C",
                .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,
+               .iv     = "\x61\x6E\x64\x01\x69\x76\x65\x63",
+               .result = "\x63\x69\x73\x63\x6F\x01\x72\x75"
+                         "\x6C\x65\x73\x01\x74\x68\x65\x01"
+                         "\x6E\x65\x74\x77\x65\x01\x64\x65"
+                         "\x66\x69\x6E\x65\x01\x74\x68\x65"
+                         "\x74\x65\x63\x68\x6E\x6F\x6C\x6F"
+                         "\x67\x69\x65\x73\x01\x74\x68\x61"
+                         "\x74\x77\x69\x6C\x6C\x01\x64\x65"
+                         "\x66\x69\x6E\x65\x74\x6F\x6D\x6F"
+                         "\x72\x72\x6F\x77\x01\x02\x02\x01",
+               .rlen   = 72,
+               .assoc  = "\x17\x40\x5E\x67\x15\x6F\x31\x26"
+                         "\xDD\x0D\xB9\x9B\x61\x6E\x64\x01"
+                         "\x69\x76\x65\x63",
+               .alen   = 20,
+               .input  = "\xEA\x15\xC4\x98\xAC\x15\x22\x37"
+                         "\x00\x07\x1D\xBE\x60\x5D\x73\x16"
+                         "\x4D\x0F\xCC\xCE\x8A\xD0\x49\xD4"
+                         "\x39\xA3\xD1\xB1\x21\x0A\x92\x1A"
+                         "\x2C\xCF\x8F\x9D\xC9\x91\x0D\xB4"
+                         "\x15\xFC\xBC\xA5\xC5\xBF\x54\xE5"
+                         "\x1C\xC7\x32\x41\x07\x7B\x2C\xB6"
+                         "\x5C\x23\x7C\x93\xEA\xEF\x23\x1C"
+                         "\x73\xF4\xE7\x12\x84\x4C\x37\x0A"
+                         "\x4A\x8F\x06\x37\x48\xF9\xF9\x05"
+                         "\x55\x13\x40\xC3\xD5\x55\x3A\x3D",
+               .ilen   = 88,
        }, {
-               .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",
+               .key    = "\x7D\x77\x3D\x00\xC1\x44\xC5\x25"
+                         "\xAC\x61\x9D\x18\xC8\x4A\x3F\x47"
+                         "\xD9\x66\x42",
+               .klen   = 19,
+               .iv     = "\x43\x45\x7E\x91\x82\x44\x3B\xC6",
+               .result = "\x01\x02\x02\x01",
+               .rlen   = 4,
+               .assoc  = "\x33\x54\x67\xAE\xFF\xFF\xFF\xFF"
+                         "\x43\x45\x7E\x91\x82\x44\x3B\xC6",
+               .alen   = 16,
+               .input  = "\x4C\x72\x63\x30\x2F\xE6\x56\xDD"
+                         "\xD0\xD8\x60\x9D\x8B\xEF\x85\x90"
+                         "\xF7\x61\x24\x62",
+               .ilen   = 20,
+       }, {
+               .key    = "\xAB\xBC\xCD\xDE\xF0\x01\x12\x23"
+                         "\x34\x45\x56\x67\x78\x89\x9A\xAB"
+                         "\xDE\xCA\xF8",
+               .klen   = 19,
+               .iv     = "\xCA\xFE\xDE\xBA\xCE\xFA\xCE\x74",
+               .result = "\x74\x6F\x01\x62\x65\x01\x6F\x72"
+                         "\x01\x6E\x6F\x74\x01\x74\x6F\x01"
+                         "\x62\x65\x00\x01",
+               .rlen   = 20,
+               .assoc  = "\x00\x00\x01\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x01\xCA\xFE\xDE\xBA"
+                         "\xCE\xFA\xCE\x74",
+               .alen   = 20,
+               .input  = "\xA3\xBF\x52\x52\x65\x83\xBA\x81"
+                         "\x03\x9B\x84\xFC\x44\x8C\xBB\x81"
+                         "\x36\xE1\x78\xBB\xA5\x49\x3A\xD0"
+                         "\xF0\x6B\x21\xAF\x98\xC0\x34\xDC"
+                         "\x17\x17\x65\xAD",
+               .ilen   = 36,
+       }, {
+               .key    = "\x6C\x65\x67\x61\x6C\x69\x7A\x65"
+                         "\x6D\x61\x72\x69\x6A\x75\x61\x6E"
+                         "\x61\x61\x6E\x64\x64\x6F\x69\x74"
+                         "\x62\x65\x66\x6F\x72\x65\x69\x61"
+                         "\x74\x75\x72",
                .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",
+               .iv     = "\x33\x30\x21\x69\x67\x65\x74\x6D",
+               .result = "\x45\x00\x00\x30\xDA\x3A\x00\x00"
+                         "\x80\x01\xDF\x3B\xC0\xA8\x00\x05"
+                         "\xC0\xA8\x00\x01\x08\x00\xC6\xCD"
+                         "\x02\x00\x07\x00\x61\x62\x63\x64"
+                         "\x65\x66\x67\x68\x69\x6A\x6B\x6C"
+                         "\x6D\x6E\x6F\x70\x71\x72\x73\x74"
+                         "\x01\x02\x02\x01",
+               .rlen   = 52,
+               .assoc  = "\x79\x6B\x69\x63\xFF\xFF\xFF\xFF"
+                         "\xFF\xFF\xFF\xFF\x33\x30\x21\x69"
+                         "\x67\x65\x74\x6D",
+               .alen   = 20,
+               .input  = "\x96\xFD\x86\xF8\xD1\x98\xFF\x10"
+                         "\xAB\x8C\xDA\x8A\x5A\x08\x38\x1A"
+                         "\x48\x59\x80\x18\x1A\x18\x1A\x04"
+                         "\xC9\x0D\xE3\xE7\x0E\xA4\x0B\x75"
+                         "\x92\x9C\x52\x5C\x0B\xFB\xF8\xAF"
+                         "\x16\xC3\x35\xA8\xE7\xCE\x84\x04"
+                         "\xEB\x40\x6B\x7A\x8E\x75\xBB\x42"
+                         "\xE0\x63\x4B\x21\x44\xA2\x2B\x2B"
+                         "\x39\xDB\xC8\xDC",
+               .ilen   = 68,
+       }, {
+               .key    = "\x3D\xE0\x98\x74\xB3\x88\xE6\x49"
+                         "\x19\x88\xD0\xC3\x60\x7E\xAE\x1F"
+                         "\x57\x69\x0E",
+               .klen   = 19,
+               .iv     = "\x4E\x28\x00\x00\xA2\xFC\xA1\xA3",
+               .result = "\x45\x00\x00\x30\xDA\x3A\x00\x00"
+                         "\x80\x01\xDF\x3B\xC0\xA8\x00\x05"
+                         "\xC0\xA8\x00\x01\x08\x00\xC6\xCD"
+                         "\x02\x00\x07\x00\x61\x62\x63\x64"
+                         "\x65\x66\x67\x68\x69\x6A\x6B\x6C"
+                         "\x6D\x6E\x6F\x70\x71\x72\x73\x74"
+                         "\x01\x02\x02\x01",
+               .rlen   = 52,
+               .assoc  = "\x3F\x7E\xF6\x42\x10\x10\x10\x10"
+                         "\x10\x10\x10\x10\x4E\x28\x00\x00"
+                         "\xA2\xFC\xA1\xA3",
+               .alen   = 20,
+               .input  = "\x6A\x6B\x45\x27\x3F\x9E\x52\xF6"
+                         "\x10\x60\x54\x25\xEB\x80\x04\x93"
+                         "\xCA\x1B\x23\x97\xCB\x21\x2E\x01"
+                         "\xA2\xE7\x95\x41\x30\xE4\x4B\x1B"
+                         "\x79\x01\x58\x50\x01\x06\xE1\xE0"
+                         "\x2C\x83\x79\xD3\xDE\x46\x97\x1A"
+                         "\x44\xCC\x90\xBF\x00\x94\x94\x92"
+                         "\x20\x17\x0C\x1B\x55\xDE\x7E\x68"
+                         "\xF4\x95\x5D\x4F",
+               .ilen   = 68,
+       }, {
+               .key    = "\x4C\x80\xCD\xEF\xBB\x5D\x10\xDA"
+                         "\x90\x6A\xC7\x3C\x36\x13\xA6\x34"
+                         "\x22\x43\x3C",
+               .klen   = 19,
+               .iv     = "\x48\x55\xEC\x7D\x3A\x23\x4B\xFD",
+               .result = "\x08\x00\xC6\xCD\x02\x00\x07\x00"
+                         "\x61\x62\x63\x64\x65\x66\x67\x68"
+                         "\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70"
+                         "\x71\x72\x73\x74\x01\x02\x02\x01",
                .rlen   = 32,
-       },
+               .assoc  = "\x00\x00\x43\x21\x87\x65\x43\x21"
+                         "\x00\x00\x00\x07\x48\x55\xEC\x7D"
+                         "\x3A\x23\x4B\xFD",
+               .alen   = 20,
+               .input  = "\x67\xE9\x28\xB3\x1C\xA4\x6D\x02"
+                         "\xF0\xB5\x37\xB6\x6B\x2F\xF5\x4F"
+                         "\xF8\xA3\x4C\x53\xB8\x12\x09\xBF"
+                         "\x58\x7D\xCF\x29\xA3\x41\x68\x6B"
+                         "\xCE\xE8\x79\x85\x3C\xB0\x3A\x8F"
+                         "\x16\xB0\xA1\x26\xC9\xBC\xBC\xA6",
+               .ilen   = 48,
+       }
 };
 
 /*
@@ -22343,8 +23647,9 @@ static struct aead_testvec rfc7539esp_enc_tv_template[] = {
                .klen   = 36,
                .iv     = "\x01\x02\x03\x04\x05\x06\x07\x08",
                .assoc  = "\xf3\x33\x88\x86\x00\x00\x00\x00"
-                         "\x00\x00\x4e\x91",
-               .alen   = 12,
+                         "\x00\x00\x4e\x91\x01\x02\x03\x04"
+                         "\x05\x06\x07\x08",
+               .alen   = 20,
                .input  = "\x49\x6e\x74\x65\x72\x6e\x65\x74"
                          "\x2d\x44\x72\x61\x66\x74\x73\x20"
                          "\x61\x72\x65\x20\x64\x72\x61\x66"
@@ -22430,8 +23735,9 @@ static struct aead_testvec rfc7539esp_dec_tv_template[] = {
                .klen   = 36,
                .iv     = "\x01\x02\x03\x04\x05\x06\x07\x08",
                .assoc  = "\xf3\x33\x88\x86\x00\x00\x00\x00"
-                         "\x00\x00\x4e\x91",
-               .alen   = 12,
+                         "\x00\x00\x4e\x91\x01\x02\x03\x04"
+                         "\x05\x06\x07\x08",
+               .alen   = 20,
                .input  = "\x64\xa0\x86\x15\x75\x86\x1a\xf4"
                          "\x60\xf0\x62\xc7\x9b\xe6\x43\xbd"
                          "\x5e\x80\x5c\xfd\x34\x5c\xf3\x89"
@@ -30174,7 +31480,7 @@ static struct cipher_testvec salsa20_stream_enc_tv_template[] = {
        },
 };
 
-#define CHACHA20_ENC_TEST_VECTORS 3
+#define CHACHA20_ENC_TEST_VECTORS 4
 static struct cipher_testvec chacha20_enc_tv_template[] = {
        { /* RFC7539 A.2. Test Vector #1 */
                .key    = "\x00\x00\x00\x00\x00\x00\x00\x00"
@@ -30348,6 +31654,338 @@ static struct cipher_testvec chacha20_enc_tv_template[] = {
                          "\x87\xb5\x8d\xfd\x72\x8a\xfa\x36"
                          "\x75\x7a\x79\x7a\xc1\x88\xd1",
                .rlen   = 127,
+       }, { /* Self-made test vector for long data */
+               .key    = "\x1c\x92\x40\xa5\xeb\x55\xd3\x8a"
+                         "\xf3\x33\x88\x86\x04\xf6\xb5\xf0"
+                         "\x47\x39\x17\xc1\x40\x2b\x80\x09"
+                         "\x9d\xca\x5c\xbc\x20\x70\x75\xc0",
+               .klen   = 32,
+               .iv     = "\x1c\x00\x00\x00\x00\x00\x00\x00"
+                         "\x00\x00\x00\x00\x00\x00\x00\x01",
+               .input  = "\x49\xee\xe0\xdc\x24\x90\x40\xcd"
+                         "\xc5\x40\x8f\x47\x05\xbc\xdd\x81"
+                         "\x47\xc6\x8d\xe6\xb1\x8f\xd7\xcb"
+                         "\x09\x0e\x6e\x22\x48\x1f\xbf\xb8"
+                         "\x5c\xf7\x1e\x8a\xc1\x23\xf2\xd4"
+                         "\x19\x4b\x01\x0f\x4e\xa4\x43\xce"
+                         "\x01\xc6\x67\xda\x03\x91\x18\x90"
+                         "\xa5\xa4\x8e\x45\x03\xb3\x2d\xac"
+                         "\x74\x92\xd3\x53\x47\xc8\xdd\x25"
+                         "\x53\x6c\x02\x03\x87\x0d\x11\x0c"
+                         "\x58\xe3\x12\x18\xfd\x2a\x5b\x40"
+                         "\x0c\x30\xf0\xb8\x3f\x43\xce\xae"
+                         "\x65\x3a\x7d\x7c\xf4\x54\xaa\xcc"
+                         "\x33\x97\xc3\x77\xba\xc5\x70\xde"
+                         "\xd7\xd5\x13\xa5\x65\xc4\x5f\x0f"
+                         "\x46\x1a\x0d\x97\xb5\xf3\xbb\x3c"
+                         "\x84\x0f\x2b\xc5\xaa\xea\xf2\x6c"
+                         "\xc9\xb5\x0c\xee\x15\xf3\x7d\xbe"
+                         "\x9f\x7b\x5a\xa6\xae\x4f\x83\xb6"
+                         "\x79\x49\x41\xf4\x58\x18\xcb\x86"
+                         "\x7f\x30\x0e\xf8\x7d\x44\x36\xea"
+                         "\x75\xeb\x88\x84\x40\x3c\xad\x4f"
+                         "\x6f\x31\x6b\xaa\x5d\xe5\xa5\xc5"
+                         "\x21\x66\xe9\xa7\xe3\xb2\x15\x88"
+                         "\x78\xf6\x79\xa1\x59\x47\x12\x4e"
+                         "\x9f\x9f\x64\x1a\xa0\x22\x5b\x08"
+                         "\xbe\x7c\x36\xc2\x2b\x66\x33\x1b"
+                         "\xdd\x60\x71\xf7\x47\x8c\x61\xc3"
+                         "\xda\x8a\x78\x1e\x16\xfa\x1e\x86"
+                         "\x81\xa6\x17\x2a\xa7\xb5\xc2\xe7"
+                         "\xa4\xc7\x42\xf1\xcf\x6a\xca\xb4"
+                         "\x45\xcf\xf3\x93\xf0\xe7\xea\xf6"
+                         "\xf4\xe6\x33\x43\x84\x93\xa5\x67"
+                         "\x9b\x16\x58\x58\x80\x0f\x2b\x5c"
+                         "\x24\x74\x75\x7f\x95\x81\xb7\x30"
+                         "\x7a\x33\xa7\xf7\x94\x87\x32\x27"
+                         "\x10\x5d\x14\x4c\x43\x29\xdd\x26"
+                         "\xbd\x3e\x3c\x0e\xfe\x0e\xa5\x10"
+                         "\xea\x6b\x64\xfd\x73\xc6\xed\xec"
+                         "\xa8\xc9\xbf\xb3\xba\x0b\x4d\x07"
+                         "\x70\xfc\x16\xfd\x79\x1e\xd7\xc5"
+                         "\x49\x4e\x1c\x8b\x8d\x79\x1b\xb1"
+                         "\xec\xca\x60\x09\x4c\x6a\xd5\x09"
+                         "\x49\x46\x00\x88\x22\x8d\xce\xea"
+                         "\xb1\x17\x11\xde\x42\xd2\x23\xc1"
+                         "\x72\x11\xf5\x50\x73\x04\x40\x47"
+                         "\xf9\x5d\xe7\xa7\x26\xb1\x7e\xb0"
+                         "\x3f\x58\xc1\x52\xab\x12\x67\x9d"
+                         "\x3f\x43\x4b\x68\xd4\x9c\x68\x38"
+                         "\x07\x8a\x2d\x3e\xf3\xaf\x6a\x4b"
+                         "\xf9\xe5\x31\x69\x22\xf9\xa6\x69"
+                         "\xc6\x9c\x96\x9a\x12\x35\x95\x1d"
+                         "\x95\xd5\xdd\xbe\xbf\x93\x53\x24"
+                         "\xfd\xeb\xc2\x0a\x64\xb0\x77\x00"
+                         "\x6f\x88\xc4\x37\x18\x69\x7c\xd7"
+                         "\x41\x92\x55\x4c\x03\xa1\x9a\x4b"
+                         "\x15\xe5\xdf\x7f\x37\x33\x72\xc1"
+                         "\x8b\x10\x67\xa3\x01\x57\x94\x25"
+                         "\x7b\x38\x71\x7e\xdd\x1e\xcc\x73"
+                         "\x55\xd2\x8e\xeb\x07\xdd\xf1\xda"
+                         "\x58\xb1\x47\x90\xfe\x42\x21\x72"
+                         "\xa3\x54\x7a\xa0\x40\xec\x9f\xdd"
+                         "\xc6\x84\x6e\xca\xae\xe3\x68\xb4"
+                         "\x9d\xe4\x78\xff\x57\xf2\xf8\x1b"
+                         "\x03\xa1\x31\xd9\xde\x8d\xf5\x22"
+                         "\x9c\xdd\x20\xa4\x1e\x27\xb1\x76"
+                         "\x4f\x44\x55\xe2\x9b\xa1\x9c\xfe"
+                         "\x54\xf7\x27\x1b\xf4\xde\x02\xf5"
+                         "\x1b\x55\x48\x5c\xdc\x21\x4b\x9e"
+                         "\x4b\x6e\xed\x46\x23\xdc\x65\xb2"
+                         "\xcf\x79\x5f\x28\xe0\x9e\x8b\xe7"
+                         "\x4c\x9d\x8a\xff\xc1\xa6\x28\xb8"
+                         "\x65\x69\x8a\x45\x29\xef\x74\x85"
+                         "\xde\x79\xc7\x08\xae\x30\xb0\xf4"
+                         "\xa3\x1d\x51\x41\xab\xce\xcb\xf6"
+                         "\xb5\xd8\x6d\xe0\x85\xe1\x98\xb3"
+                         "\x43\xbb\x86\x83\x0a\xa0\xf5\xb7"
+                         "\x04\x0b\xfa\x71\x1f\xb0\xf6\xd9"
+                         "\x13\x00\x15\xf0\xc7\xeb\x0d\x5a"
+                         "\x9f\xd7\xb9\x6c\x65\x14\x22\x45"
+                         "\x6e\x45\x32\x3e\x7e\x60\x1a\x12"
+                         "\x97\x82\x14\xfb\xaa\x04\x22\xfa"
+                         "\xa0\xe5\x7e\x8c\x78\x02\x48\x5d"
+                         "\x78\x33\x5a\x7c\xad\xdb\x29\xce"
+                         "\xbb\x8b\x61\xa4\xb7\x42\xe2\xac"
+                         "\x8b\x1a\xd9\x2f\x0b\x8b\x62\x21"
+                         "\x83\x35\x7e\xad\x73\xc2\xb5\x6c"
+                         "\x10\x26\x38\x07\xe5\xc7\x36\x80"
+                         "\xe2\x23\x12\x61\xf5\x48\x4b\x2b"
+                         "\xc5\xdf\x15\xd9\x87\x01\xaa\xac"
+                         "\x1e\x7c\xad\x73\x78\x18\x63\xe0"
+                         "\x8b\x9f\x81\xd8\x12\x6a\x28\x10"
+                         "\xbe\x04\x68\x8a\x09\x7c\x1b\x1c"
+                         "\x83\x66\x80\x47\x80\xe8\xfd\x35"
+                         "\x1c\x97\x6f\xae\x49\x10\x66\xcc"
+                         "\xc6\xd8\xcc\x3a\x84\x91\x20\x77"
+                         "\x72\xe4\x24\xd2\x37\x9f\xc5\xc9"
+                         "\x25\x94\x10\x5f\x40\x00\x64\x99"
+                         "\xdc\xae\xd7\x21\x09\x78\x50\x15"
+                         "\xac\x5f\xc6\x2c\xa2\x0b\xa9\x39"
+                         "\x87\x6e\x6d\xab\xde\x08\x51\x16"
+                         "\xc7\x13\xe9\xea\xed\x06\x8e\x2c"
+                         "\xf8\x37\x8c\xf0\xa6\x96\x8d\x43"
+                         "\xb6\x98\x37\xb2\x43\xed\xde\xdf"
+                         "\x89\x1a\xe7\xeb\x9d\xa1\x7b\x0b"
+                         "\x77\xb0\xe2\x75\xc0\xf1\x98\xd9"
+                         "\x80\x55\xc9\x34\x91\xd1\x59\xe8"
+                         "\x4b\x0f\xc1\xa9\x4b\x7a\x84\x06"
+                         "\x20\xa8\x5d\xfa\xd1\xde\x70\x56"
+                         "\x2f\x9e\x91\x9c\x20\xb3\x24\xd8"
+                         "\x84\x3d\xe1\x8c\x7e\x62\x52\xe5"
+                         "\x44\x4b\x9f\xc2\x93\x03\xea\x2b"
+                         "\x59\xc5\xfa\x3f\x91\x2b\xbb\x23"
+                         "\xf5\xb2\x7b\xf5\x38\xaf\xb3\xee"
+                         "\x63\xdc\x7b\xd1\xff\xaa\x8b\xab"
+                         "\x82\x6b\x37\x04\xeb\x74\xbe\x79"
+                         "\xb9\x83\x90\xef\x20\x59\x46\xff"
+                         "\xe9\x97\x3e\x2f\xee\xb6\x64\x18"
+                         "\x38\x4c\x7a\x4a\xf9\x61\xe8\x9a"
+                         "\xa1\xb5\x01\xa6\x47\xd3\x11\xd4"
+                         "\xce\xd3\x91\x49\x88\xc7\xb8\x4d"
+                         "\xb1\xb9\x07\x6d\x16\x72\xae\x46"
+                         "\x5e\x03\xa1\x4b\xb6\x02\x30\xa8"
+                         "\x3d\xa9\x07\x2a\x7c\x19\xe7\x62"
+                         "\x87\xe3\x82\x2f\x6f\xe1\x09\xd9"
+                         "\x94\x97\xea\xdd\x58\x9e\xae\x76"
+                         "\x7e\x35\xe5\xb4\xda\x7e\xf4\xde"
+                         "\xf7\x32\x87\xcd\x93\xbf\x11\x56"
+                         "\x11\xbe\x08\x74\xe1\x69\xad\xe2"
+                         "\xd7\xf8\x86\x75\x8a\x3c\xa4\xbe"
+                         "\x70\xa7\x1b\xfc\x0b\x44\x2a\x76"
+                         "\x35\xea\x5d\x85\x81\xaf\x85\xeb"
+                         "\xa0\x1c\x61\xc2\xf7\x4f\xa5\xdc"
+                         "\x02\x7f\xf6\x95\x40\x6e\x8a\x9a"
+                         "\xf3\x5d\x25\x6e\x14\x3a\x22\xc9"
+                         "\x37\x1c\xeb\x46\x54\x3f\xa5\x91"
+                         "\xc2\xb5\x8c\xfe\x53\x08\x97\x32"
+                         "\x1b\xb2\x30\x27\xfe\x25\x5d\xdc"
+                         "\x08\x87\xd0\xe5\x94\x1a\xd4\xf1"
+                         "\xfe\xd6\xb4\xa3\xe6\x74\x81\x3c"
+                         "\x1b\xb7\x31\xa7\x22\xfd\xd4\xdd"
+                         "\x20\x4e\x7c\x51\xb0\x60\x73\xb8"
+                         "\x9c\xac\x91\x90\x7e\x01\xb0\xe1"
+                         "\x8a\x2f\x75\x1c\x53\x2a\x98\x2a"
+                         "\x06\x52\x95\x52\xb2\xe9\x25\x2e"
+                         "\x4c\xe2\x5a\x00\xb2\x13\x81\x03"
+                         "\x77\x66\x0d\xa5\x99\xda\x4e\x8c"
+                         "\xac\xf3\x13\x53\x27\x45\xaf\x64"
+                         "\x46\xdc\xea\x23\xda\x97\xd1\xab"
+                         "\x7d\x6c\x30\x96\x1f\xbc\x06\x34"
+                         "\x18\x0b\x5e\x21\x35\x11\x8d\x4c"
+                         "\xe0\x2d\xe9\x50\x16\x74\x81\xa8"
+                         "\xb4\x34\xb9\x72\x42\xa6\xcc\xbc"
+                         "\xca\x34\x83\x27\x10\x5b\x68\x45"
+                         "\x8f\x52\x22\x0c\x55\x3d\x29\x7c"
+                         "\xe3\xc0\x66\x05\x42\x91\x5f\x58"
+                         "\xfe\x4a\x62\xd9\x8c\xa9\x04\x19"
+                         "\x04\xa9\x08\x4b\x57\xfc\x67\x53"
+                         "\x08\x7c\xbc\x66\x8a\xb0\xb6\x9f"
+                         "\x92\xd6\x41\x7c\x5b\x2a\x00\x79"
+                         "\x72",
+               .ilen   = 1281,
+               .result = "\x45\xe8\xe0\xb6\x9c\xca\xfd\x87"
+                         "\xe8\x1d\x37\x96\x8a\xe3\x40\x35"
+                         "\xcf\x5e\x3a\x46\x3d\xfb\xd0\x69"
+                         "\xde\xaf\x7a\xd5\x0d\xe9\x52\xec"
+                         "\xc2\x82\xe5\x3e\x7d\xb2\x4a\xd9"
+                         "\xbb\xc3\x9f\xc0\x5d\xac\x93\x8d"
+                         "\x0e\x6f\xd3\xd7\xfb\x6a\x0d\xce"
+                         "\x92\x2c\xf7\xbb\x93\x57\xcc\xee"
+                         "\x42\x72\x6f\xc8\x4b\xd2\x76\xbf"
+                         "\xa0\xe3\x7a\x39\xf9\x5c\x8e\xfd"
+                         "\xa1\x1d\x41\xe5\x08\xc1\x1c\x11"
+                         "\x92\xfd\x39\x5c\x51\xd0\x2f\x66"
+                         "\x33\x4a\x71\x15\xfe\xee\x12\x54"
+                         "\x8c\x8f\x34\xd8\x50\x3c\x18\xa6"
+                         "\xc5\xe1\x46\x8a\xfb\x5f\x7e\x25"
+                         "\x9b\xe2\xc3\x66\x41\x2b\xb3\xa5"
+                         "\x57\x0e\x94\x17\x26\x39\xbb\x54"
+                         "\xae\x2e\x6f\x42\xfb\x4d\x89\x6f"
+                         "\x9d\xf1\x16\x2e\xe3\xe7\xfc\xe3"
+                         "\xb2\x4b\x2b\xa6\x7c\x04\x69\x3a"
+                         "\x70\x5a\xa7\xf1\x31\x64\x19\xca"
+                         "\x45\x79\xd8\x58\x23\x61\xaf\xc2"
+                         "\x52\x05\xc3\x0b\xc1\x64\x7c\x81"
+                         "\xd9\x11\xcf\xff\x02\x3d\x51\x84"
+                         "\x01\xac\xc6\x2e\x34\x2b\x09\x3a"
+                         "\xa8\x5d\x98\x0e\x89\xd9\xef\x8f"
+                         "\xd9\xd7\x7d\xdd\x63\x47\x46\x7d"
+                         "\xa1\xda\x0b\x53\x7d\x79\xcd\xc9"
+                         "\x86\xdd\x6b\x13\xa1\x9a\x70\xdd"
+                         "\x5c\xa1\x69\x3c\xe4\x5d\xe3\x8c"
+                         "\xe5\xf4\x87\x9c\x10\xcf\x0f\x0b"
+                         "\xc8\x43\xdc\xf8\x1d\x62\x5e\x5b"
+                         "\xe2\x03\x06\xc5\x71\xb6\x48\xa5"
+                         "\xf0\x0f\x2d\xd5\xa2\x73\x55\x8f"
+                         "\x01\xa7\x59\x80\x5f\x11\x6c\x40"
+                         "\xff\xb1\xf2\xc6\x7e\x01\xbb\x1c"
+                         "\x69\x9c\xc9\x3f\x71\x5f\x07\x7e"
+                         "\xdf\x6f\x99\xca\x9c\xfd\xf9\xb9"
+                         "\x49\xe7\xcc\x91\xd5\x9b\x8f\x03"
+                         "\xae\xe7\x61\x32\xef\x41\x6c\x75"
+                         "\x84\x9b\x8c\xce\x1d\x6b\x93\x21"
+                         "\x41\xec\xc6\xad\x8e\x0c\x48\xa8"
+                         "\xe2\xf5\x57\xde\xf7\x38\xfd\x4a"
+                         "\x6f\xa7\x4a\xf9\xac\x7d\xb1\x85"
+                         "\x7d\x6c\x95\x0a\x5a\xcf\x68\xd2"
+                         "\xe0\x7a\x26\xd9\xc1\x6d\x3e\xc6"
+                         "\x37\xbd\xbe\x24\x36\x77\x9f\x1b"
+                         "\xc1\x22\xf3\x79\xae\x95\x78\x66"
+                         "\x97\x11\xc0\x1a\xf1\xe8\x0d\x38"
+                         "\x09\xc2\xee\xb7\xd3\x46\x7b\x59"
+                         "\x77\x23\xe8\xb4\x92\x3d\x78\xbe"
+                         "\xe2\x25\x63\xa5\x2a\x06\x70\x92"
+                         "\x32\x63\xf9\x19\x21\x68\xe1\x0b"
+                         "\x9a\xd0\xee\x21\xdb\x1f\xe0\xde"
+                         "\x3e\x64\x02\x4d\x0e\xe0\x0a\xa9"
+                         "\xed\x19\x8c\xa8\xbf\xe3\x2e\x75"
+                         "\x24\x2b\xb0\xe5\x82\x6a\x1e\x6f"
+                         "\x71\x2a\x3a\x60\xed\x06\x0d\x17"
+                         "\xa2\xdb\x29\x1d\xae\xb2\xc4\xfb"
+                         "\x94\x04\xd8\x58\xfc\xc4\x04\x4e"
+                         "\xee\xc7\xc1\x0f\xe9\x9b\x63\x2d"
+                         "\x02\x3e\x02\x67\xe5\xd8\xbb\x79"
+                         "\xdf\xd2\xeb\x50\xe9\x0a\x02\x46"
+                         "\xdf\x68\xcf\xe7\x2b\x0a\x56\xd6"
+                         "\xf7\xbc\x44\xad\xb8\xb5\x5f\xeb"
+                         "\xbc\x74\x6b\xe8\x7e\xb0\x60\xc6"
+                         "\x0d\x96\x09\xbb\x19\xba\xe0\x3c"
+                         "\xc4\x6c\xbf\x0f\x58\xc0\x55\x62"
+                         "\x23\xa0\xff\xb5\x1c\xfd\x18\xe1"
+                         "\xcf\x6d\xd3\x52\xb4\xce\xa6\xfa"
+                         "\xaa\xfb\x1b\x0b\x42\x6d\x79\x42"
+                         "\x48\x70\x5b\x0e\xdd\x3a\xc9\x69"
+                         "\x8b\x73\x67\xf6\x95\xdb\x8c\xfb"
+                         "\xfd\xb5\x08\x47\x42\x84\x9a\xfa"
+                         "\xcc\x67\xb2\x3c\xb6\xfd\xd8\x32"
+                         "\xd6\x04\xb6\x4a\xea\x53\x4b\xf5"
+                         "\x94\x16\xad\xf0\x10\x2e\x2d\xb4"
+                         "\x8b\xab\xe5\x89\xc7\x39\x12\xf3"
+                         "\x8d\xb5\x96\x0b\x87\x5d\xa7\x7c"
+                         "\xb0\xc2\xf6\x2e\x57\x97\x2c\xdc"
+                         "\x54\x1c\x34\x72\xde\x0c\x68\x39"
+                         "\x9d\x32\xa5\x75\x92\x13\x32\xea"
+                         "\x90\x27\xbd\x5b\x1d\xb9\x21\x02"
+                         "\x1c\xcc\xba\x97\x5e\x49\x58\xe8"
+                         "\xac\x8b\xf3\xce\x3c\xf0\x00\xe9"
+                         "\x6c\xae\xe9\x77\xdf\xf4\x02\xcd"
+                         "\x55\x25\x89\x9e\x90\xf3\x6b\x8f"
+                         "\xb7\xd6\x47\x98\x26\x2f\x31\x2f"
+                         "\x8d\xbf\x54\xcd\x99\xeb\x80\xd7"
+                         "\xac\xc3\x08\xc2\xa6\x32\xf1\x24"
+                         "\x76\x7c\x4f\x78\x53\x55\xfb\x00"
+                         "\x8a\xd6\x52\x53\x25\x45\xfb\x0a"
+                         "\x6b\xb9\xbe\x3c\x5e\x11\xcc\x6a"
+                         "\xdd\xfc\xa7\xc4\x79\x4d\xbd\xfb"
+                         "\xce\x3a\xf1\x7a\xda\xeb\xfe\x64"
+                         "\x28\x3d\x0f\xee\x80\xba\x0c\xf8"
+                         "\xe9\x5b\x3a\xd4\xae\xc9\xf3\x0e"
+                         "\xe8\x5d\xc5\x5c\x0b\x20\x20\xee"
+                         "\x40\x0d\xde\x07\xa7\x14\xb4\x90"
+                         "\xb6\xbd\x3b\xae\x7d\x2b\xa7\xc7"
+                         "\xdc\x0b\x4c\x5d\x65\xb0\xd2\xc5"
+                         "\x79\x61\x23\xe0\xa2\x99\x73\x55"
+                         "\xad\xc6\xfb\xc7\x54\xb5\x98\x1f"
+                         "\x8c\x86\xc2\x3f\xbe\x5e\xea\x64"
+                         "\xa3\x60\x18\x9f\x80\xaf\x52\x74"
+                         "\x1a\xfe\x22\xc2\x92\x67\x40\x02"
+                         "\x08\xee\x67\x5b\x67\xe0\x3d\xde"
+                         "\x7a\xaf\x8e\x28\xf3\x5e\x0e\xf4"
+                         "\x48\x56\xaa\x85\x22\xd8\x36\xed"
+                         "\x3b\x3d\x68\x69\x30\xbc\x71\x23"
+                         "\xb1\x6e\x61\x03\x89\x44\x03\xf4"
+                         "\x32\xaa\x4c\x40\x9f\x69\xfb\x70"
+                         "\x91\xcc\x1f\x11\xbd\x76\x67\xe6"
+                         "\x10\x8b\x29\x39\x68\xea\x4e\x6d"
+                         "\xae\xfb\x40\xcf\xe2\xd0\x0d\x8d"
+                         "\x6f\xed\x9b\x8d\x64\x7a\x94\x8e"
+                         "\x32\x38\x78\xeb\x7d\x5f\xf9\x4d"
+                         "\x13\xbe\x21\xea\x16\xe7\x5c\xee"
+                         "\xcd\xf6\x5f\xc6\x45\xb2\x8f\x2b"
+                         "\xb5\x93\x3e\x45\xdb\xfd\xa2\x6a"
+                         "\xec\x83\x92\x99\x87\x47\xe0\x7c"
+                         "\xa2\x7b\xc4\x2a\xcd\xc0\x81\x03"
+                         "\x98\xb0\x87\xb6\x86\x13\x64\x33"
+                         "\x4c\xd7\x99\xbf\xdb\x7b\x6e\xaa"
+                         "\x76\xcc\xa0\x74\x1b\xa3\x6e\x83"
+                         "\xd4\xba\x7a\x84\x9d\x91\x71\xcd"
+                         "\x60\x2d\x56\xfd\x26\x35\xcb\xeb"
+                         "\xac\xe9\xee\xa4\xfc\x18\x5b\x91"
+                         "\xd5\xfe\x84\x45\xe0\xc7\xfd\x11"
+                         "\xe9\x00\xb6\x54\xdf\xe1\x94\xde"
+                         "\x2b\x70\x9f\x94\x7f\x15\x0e\x83"
+                         "\x63\x10\xb3\xf5\xea\xd3\xe8\xd1"
+                         "\xa5\xfc\x17\x19\x68\x9a\xbc\x17"
+                         "\x30\x43\x0a\x1a\x33\x92\xd4\x2a"
+                         "\x2e\x68\x99\xbc\x49\xf0\x68\xe3"
+                         "\xf0\x1f\xcb\xcc\xfa\xbb\x05\x56"
+                         "\x46\x84\x8b\x69\x83\x64\xc5\xe0"
+                         "\xc5\x52\x99\x07\x3c\xa6\x5c\xaf"
+                         "\xa3\xde\xd7\xdb\x43\xe6\xb7\x76"
+                         "\x4e\x4d\xd6\x71\x60\x63\x4a\x0c"
+                         "\x5f\xae\x25\x84\x22\x90\x5f\x26"
+                         "\x61\x4d\x8f\xaf\xc9\x22\xf2\x05"
+                         "\xcf\xc1\xdc\x68\xe5\x57\x8e\x24"
+                         "\x1b\x30\x59\xca\xd7\x0d\xc3\xd3"
+                         "\x52\x9e\x09\x3e\x0e\xaf\xdb\x5f"
+                         "\xc7\x2b\xde\x3a\xfd\xad\x93\x04"
+                         "\x74\x06\x89\x0e\x90\xeb\x85\xff"
+                         "\xe6\x3c\x12\x42\xf4\xfa\x80\x75"
+                         "\x5e\x4e\xd7\x2f\x93\x0b\x34\x41"
+                         "\x02\x85\x68\xd0\x03\x12\xde\x92"
+                         "\x54\x7a\x7e\xfb\x55\xe7\x88\xfb"
+                         "\xa4\xa9\xf2\xd1\xc6\x70\x06\x37"
+                         "\x25\xee\xa7\x6e\xd9\x89\x86\x50"
+                         "\x2e\x07\xdb\xfb\x2a\x86\x45\x0e"
+                         "\x91\xf4\x7c\xbb\x12\x60\xe8\x3f"
+                         "\x71\xbe\x8f\x9d\x26\xef\xd9\x89"
+                         "\xc4\x8f\xd8\xc5\x73\xd8\x84\xaa"
+                         "\x2f\xad\x22\x1e\x7e\xcf\xa2\x08"
+                         "\x23\x45\x89\x42\xa0\x30\xeb\xbf"
+                         "\xa1\xed\xad\xd5\x76\xfa\x24\x8f"
+                         "\x98",
+               .rlen   = 1281,
        },
 };