summaryrefslogtreecommitdiff
path: root/crypto
diff options
context:
space:
mode:
authorPankaj Gupta <pankaj.gupta@nxp.com>2021-09-07 19:50:20 +0530
committerDong Aisheng <aisheng.dong@nxp.com>2021-11-02 20:29:21 +0800
commitd6299c231b2ec40d0386db700dd7b3e175bb03dd (patch)
tree2c6c1c3eae17fd572893d926f280122f40748c6b /crypto
parentc3eb2dcfb0db9f807971aaee3b7821450c9f1638 (diff)
Added the self-test for the TLS1.2 algorithms offload
- aes-128-cbc-hmac-sha256 - aes-256-cbc-hmac-sha256 Signed-off-by: Pankaj Gupta <pankaj.gupta@nxp.com>
Diffstat (limited to 'crypto')
-rw-r--r--crypto/tcrypt.c5
-rw-r--r--crypto/testmgr.c13
-rw-r--r--crypto/testmgr.h509
3 files changed, 430 insertions, 97 deletions
diff --git a/crypto/tcrypt.c b/crypto/tcrypt.c
index 370ec857bd2c..0970f103f691 100644
--- a/crypto/tcrypt.c
+++ b/crypto/tcrypt.c
@@ -2074,7 +2074,10 @@ static int do_test(const char *alg, u32 type, u32 mask, int m, u32 num_mb)
ret += tcrypt_test("ctr(sm4)");
break;
case 192:
- ret += tcrypt_test("tls10(hmac(sha1),cbc(aes))");
+ ret += tcrypt_test("tls11(hmac(sha1),cbc(aes))");
+ break;
+ case 193:
+ ret += tcrypt_test("tls12(hmac(sha256),cbc(aes))");
break;
case 200:
test_cipher_speed("ecb(aes)", ENCRYPT, sec, NULL, 0,
diff --git a/crypto/testmgr.c b/crypto/testmgr.c
index 06e1aabf016f..029ef61ddd9c 100644
--- a/crypto/testmgr.c
+++ b/crypto/testmgr.c
@@ -2645,7 +2645,7 @@ static int __test_tls(struct crypto_aead *tfm, int enc,
} else if (ret)
continue;
- authsize = 20;
+ authsize = template[i].authlen;
ret = crypto_aead_setauthsize(tfm, authsize);
if (ret) {
pr_err("alg: aead%s: Failed to set authsize to %u on test %d for %s\n",
@@ -5651,7 +5651,16 @@ static const struct alg_test_desc alg_test_descs[] = {
.hash = __VECS(streebog512_tv_template)
}
}, {
- .alg = "tls10(hmac(sha1),cbc(aes))",
+ .alg = "tls11(hmac(sha1),cbc(aes))",
+ .test = alg_test_tls,
+ .suite = {
+ .tls = {
+ .enc = __VECS(tls12_enc_tv_template),
+ .dec = __VECS(tls12_dec_tv_template)
+ }
+ }
+ }, {
+ .alg = "tls12(hmac(sha256),cbc(aes))",
.test = alg_test_tls,
.suite = {
.tls = {
diff --git a/crypto/testmgr.h b/crypto/testmgr.h
index e777295bf849..3e1ca798279f 100644
--- a/crypto/testmgr.h
+++ b/crypto/testmgr.h
@@ -163,6 +163,7 @@ struct tls_testvec {
unsigned short ilen; /* input data length */
unsigned short alen; /* associated data length */
unsigned short rlen; /* result length */
+ unsigned short authlen; /* authentication length */
};
struct akcipher_testvec {
@@ -196,7 +197,7 @@ struct kpp_testvec {
static const char zeroed_string[48];
/*
- * TLS1.0 synthetic test vectors
+ * TLS1.1 synthetic test vectors
*/
static struct tls_testvec tls_enc_tv_template[] = {
{
@@ -211,19 +212,26 @@ static struct tls_testvec tls_enc_tv_template[] = {
"authenticationkey20benckeyis16_bytes",
.klen = 8 + 20 + 16,
.iv = "iv0123456789abcd",
- .input = "Single block msg",
- .ilen = 16,
+ .input = "iv0123456789abcdSingle block msg",
+ .ilen = 32,
.assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
"\x00\x03\x01\x00\x10",
.alen = 13,
- .result = "\xd5\xac\xb\xd2\xac\xad\x3f\xb1"
- "\x59\x79\x1e\x91\x5f\x52\x14\x9c"
- "\xc0\x75\xd8\x4c\x97\x0f\x07\x73"
- "\xdc\x89\x47\x49\x49\xcb\x30\x6b"
- "\x1b\x45\x23\xa1\xd0\x51\xcf\x02"
- "\x2e\xa8\x5d\xa0\xfe\xca\x82\x61",
- .rlen = 16 + 20 + 12,
- }, {
+ .result = "\x4a\xd8\x67\x27\xec\x74\x48\x8e"
+ "\x5a\xca\xba\x13\x9c\xcf\x02\xae"
+ "\x6d\xc2\xeb\x76\xa1\x3b\xe2\x57"
+ "\x64\xaf\x38\x42\x67\x8e\x57\x3e"
+ "\xe7\x24\x44\x73\x0a\x23\x77\x07"
+ "\xbb\xc8\x1f\x4e\x2c\xd4\x56\xa4"
+ "\x16\x15\x38\x91\xed\x21\xec\x36"
+ "\xd3\x05\xeb\x10\x04\x00\x4e\xc0",
+ .rlen = 16 + 20 + 12 + 16,
+ .authlen = 20,
+ },
+ /* Payload with payload len as zero leads to descriptor error.
+ */
+#if 0
+ {
#ifdef __LITTLE_ENDIAN
.key = "\x08\x00" /* rta length */
"\x01\x00" /* rta type */
@@ -235,17 +243,22 @@ static struct tls_testvec tls_enc_tv_template[] = {
"authenticationkey20benckeyis16_bytes",
.klen = 8 + 20 + 16,
.iv = "iv0123456789abcd",
- .input = "",
- .ilen = 0,
+ .input = "iv0123456789abcd",
+ .ilen = 16,
.assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
- "\x00\x03\x01\x00\x00",
+ "\x00\x03\x02\x00\x00",
.alen = 13,
- .result = "\x58\x2a\x11\xc\x86\x8e\x4b\x67"
- "\x2d\x16\x26\x1a\xac\x4b\xe2\x1a"
- "\xe9\x6a\xcc\x4d\x6f\x79\x8a\x45"
- "\x1f\x4e\x27\xf2\xa7\x59\xb4\x5a",
- .rlen = 20 + 12,
- }, {
+ .result = "\x31\x41\x4e\xea\x70\xc2\xb3\xa7"
+ "\x3e\xcb\x1a\xee\xa9\xe1\xfc\xc4"
+ "\x5d\xe0\xee\xaa\x6a\x83\x34\xb9"
+ "\x3d\x9c\x20\x44\x09\xca\x94\xb6"
+ "\x2d\xf9\xbd\x8a\x7b\x88\xdf\xec"
+ "\xd5\xbc\x27\x61\xa9\x61\x56\xb6",
+ .rlen = 20 + 12 + 16,
+ .authlen = 20,
+ },
+#endif
+ {
#ifdef __LITTLE_ENDIAN
.key = "\x08\x00" /* rta length */
"\x01\x00" /* rta type */
@@ -257,45 +270,62 @@ static struct tls_testvec tls_enc_tv_template[] = {
"authenticationkey20benckeyis16_bytes",
.klen = 8 + 20 + 16,
.iv = "iv0123456789abcd",
- .input = "285 bytes plaintext285 bytes plaintext285 bytes"
+ .input = "iv0123456789abcd"
+ "285 bytes plaintext285 bytes plaintext285 bytes"
" plaintext285 bytes plaintext285 bytes plaintext285"
" bytes plaintext285 bytes plaintext285 bytes"
" plaintext285 bytes plaintext285 bytes plaintext285"
" bytes plaintext285 bytes plaintext285 bytes"
" plaintext285 bytes plaintext285 bytes plaintext285"
" bytes plaintext285 bytes plaintext",
- .ilen = 285,
+ .ilen = 285 + 16,
.assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
"\x00\x03\x01\x01\x1d",
.alen = 13,
- .result = "\x80\x23\x82\x44\x14\x2a\x1d\x94\xc\xc2\x1d\xd"
- "\x3a\x32\x89\x4c\x57\x30\xa8\x89\x76\x46\xcc\x90"
- "\x1d\x88\xb8\xa6\x1a\x58\xe\x2d\xeb\x2c\xc7\x3a"
- "\x52\x4e\xdb\xb3\x1e\x83\x11\xf5\x3c\xce\x6e\x94"
- "\xd3\x26\x6a\x9a\xd\xbd\xc7\x98\xb9\xb3\x3a\x51"
- "\x1e\x4\x84\x8a\x8f\x54\x9a\x51\x69\x9c\xce\x31"
- "\x8d\x5d\x8b\xee\x5f\x70\xc\xc9\xb8\x50\x54\xf8"
- "\xb2\x4a\x7a\xcd\xeb\x7a\x82\x81\xc6\x41\xc8\x50"
- "\x91\x8d\xc8\xed\xcd\x40\x8f\x55\xd1\xec\xc9\xac"
- "\x15\x18\xf9\x20\xa0\xed\x18\xa1\xe3\x56\xe3\x14"
- "\xe5\xe8\x66\x63\x20\xed\xe4\x62\x9d\xa3\xa4\x1d"
- "\x81\x89\x18\xf2\x36\xae\xc8\x8a\x2b\xbc\xc3\xb8"
- "\x80\xf\x97\x21\x36\x39\x8\x84\x23\x18\x9e\x9c"
- "\x72\x32\x75\x2d\x2e\xf9\x60\xb\xe8\xcc\xd9\x74"
- "\x4\x1b\x8e\x99\xc1\x94\xee\xd0\xac\x4e\xfc\x7e"
- "\xf1\x96\xb3\xe7\x14\xb8\xf2\xc\x25\x97\x82\x6b"
- "\xbd\x0\x65\xab\x5c\xe3\x16\xfb\x68\xef\xea\x9d"
- "\xff\x44\x1d\x2a\x44\xf5\xc8\x56\x77\xb7\xbf\x13"
- "\xc8\x54\xdb\x92\xfe\x16\x4c\xbe\x18\xe9\xb\x8d"
- "\xb\xd4\x43\x58\x43\xaa\xf4\x3\x80\x97\x62\xd5"
- "\xdf\x3c\x28\xaa\xee\x48\x4b\x55\x41\x1b\x31\x2"
- "\xbe\xa0\x1c\xbd\xb7\x22\x2a\xe5\x53\x72\x73\x20"
- "\x44\x4f\xe6\x1\x2b\x34\x33\x11\x7d\xfb\x10\xc1"
- "\x66\x7c\xa6\xf4\x48\x36\x5e\x2\xda\x41\x4b\x3e"
- "\xe7\x80\x17\x17\xce\xf1\x3e\x6a\x8e\x26\xf3\xb7"
- "\x2b\x85\xd\x31\x8d\xba\x6c\x22\xb4\x28\x55\x7e"
- "\x2a\x9e\x26\xf1\x3d\x21\xac\x65",
- .rlen = 285 + 20 + 15,
+ .result = "\x4a\xd8\x67\x27\xec\x74\x48\x8e"
+ "\x5a\xca\xba\x13\x9c\xcf\x02\xae"
+ "\x79\x03\xd4\x14\x1c\x57\x86\x48"
+ "\xec\x5e\x59\x21\x41\xff\xb9\x2f"
+ "\x66\xe9\xc1\xc9\xe3\x01\x8c\x10"
+ "\xb6\xde\x8f\xb1\xc0\x66\x93\xc5"
+ "\xac\x10\xd6\x86\x35\x63\x2b\xc0"
+ "\x7a\x40\xfd\x0e\x39\x0a\xf5\x18"
+ "\x1a\xf7\x99\x3c\x45\xd8\xe4\x92"
+ "\xd3\x39\x83\x58\x04\x8f\xe0\x95"
+ "\x24\xee\x62\xc5\xdf\xf6\x4c\x25"
+ "\x22\x0e\xf7\xe3\x33\x04\x88\x5b"
+ "\x70\xf8\xf5\x39\x24\xa1\x58\xd2"
+ "\xf9\x4c\xf9\x64\x0a\xcf\x9f\x36"
+ "\x23\x43\xda\x44\xfc\x68\xd7\x23"
+ "\x83\xc2\xb7\xc6\xd7\x7f\xd2\xec"
+ "\xef\xd7\xfc\x6a\x64\xe9\x70\xdc"
+ "\x53\x98\xfa\xf2\x41\x24\x87\xbc"
+ "\x57\xc9\x1c\x38\xff\x4b\x95\x42"
+ "\xb5\x2c\xfe\xd2\x34\xe2\xa7\x28"
+ "\x61\x4a\x1d\xe0\x0f\x97\x62\x08"
+ "\xa6\xa9\x5c\x89\x5e\x42\x60\x71"
+ "\xda\xd9\xba\x95\x6f\x87\x9c\x00"
+ "\x7e\x0c\x7a\x6f\xb4\x99\x7e\x0e"
+ "\x6a\xe9\xab\x12\xda\x95\x25\x83"
+ "\x8f\xa2\xc2\x91\xb5\x3f\xae\xc3"
+ "\xf9\x03\xc9\x6d\xe7\xe7\x46\x61"
+ "\xdc\xbc\xf1\x17\xcc\x93\x33\xa5"
+ "\x06\x54\x45\x79\xcb\x1c\x67\x87"
+ "\x87\x35\x9b\xc3\xfd\x3c\xcc\x43"
+ "\xec\xac\xef\xfd\x3b\x35\xb3\xde"
+ "\x7d\x82\x57\x49\xc5\xe8\x47\xbe"
+ "\x70\xf2\xbf\x1c\x98\x1e\x3d\xa4"
+ "\x25\xa2\x65\x6c\xca\x04\x9a\x1d"
+ "\x01\x08\xa6\x36\xbe\x89\xd1\x4e"
+ "\x87\x7f\xae\x70\x79\x0d\x42\x2d"
+ "\x16\x6f\x00\xf5\x76\x51\xb4\x37"
+ "\xda\xc2\x54\xa6\x39\x16\x26\x21"
+ "\xb5\x78\x6e\xa1\xbb\x25\x80\xdf"
+ "\xdb\x99\xdb\xc2\xec\x83\xf5\x88"
+ "\x6d\x50\xba\xdd\x30\xb1\x72\xd9"
+ "\xfc\xce\x7a\xcb\xcf\xd9\x0d\xc9",
+ .rlen = 285 + 20 + 15 + 16,
+ .authlen = 20,
}
};
@@ -311,20 +341,26 @@ static struct tls_testvec tls_dec_tv_template[] = {
"\x00\x00\x00\x10" /* enc key length */
"authenticationkey20benckeyis16_bytes",
.klen = 8 + 20 + 16,
- .iv = "iv0123456789abcd",
- .input = "\xd5\xac\xb\xd2\xac\xad\x3f\xb1"
- "\x59\x79\x1e\x91\x5f\x52\x14\x9c"
- "\xc0\x75\xd8\x4c\x97\x0f\x07\x73"
- "\xdc\x89\x47\x49\x49\xcb\x30\x6b"
- "\x1b\x45\x23\xa1\xd0\x51\xcf\x02"
- "\x2e\xa8\x5d\xa0\xfe\xca\x82\x61",
+ .iv = "\x4a\xd8\x67\x27\xec\x74\x48\x8e"
+ "\x5a\xca\xba\x13\x9c\xcf\x02\xae",
+ .input = "\x6d\xc2\xeb\x76\xa1\x3b\xe2\x57"
+ "\x64\xaf\x38\x42\x67\x8e\x57\x3e"
+ "\xe7\x24\x44\x73\x0a\x23\x77\x07"
+ "\xbb\xc8\x1f\x4e\x2c\xd4\x56\xa4"
+ "\x16\x15\x38\x91\xed\x21\xec\x36"
+ "\xd3\x05\xeb\x10\x04\x00\x4e\xc0",
.ilen = 16 + 20 + 12,
.assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
"\x00\x03\x01\x00\x30",
.alen = 13,
.result = "Single block msg",
.rlen = 16,
- }, {
+ .authlen = 20,
+ },
+ /* Payload with payload len as zero leads to descriptor error.
+ */
+#if 0
+ {
#ifdef __LITTLE_ENDIAN
.key = "\x08\x00" /* rta length */
"\x01\x00" /* rta type */
@@ -335,18 +371,22 @@ static struct tls_testvec tls_dec_tv_template[] = {
"\x00\x00\x00\x10" /* enc key length */
"authenticationkey20benckeyis16_bytes",
.klen = 8 + 20 + 16,
- .iv = "iv0123456789abcd",
- .input = "\x58\x2a\x11\xc\x86\x8e\x4b\x67"
- "\x2d\x16\x26\x1a\xac\x4b\xe2\x1a"
- "\xe9\x6a\xcc\x4d\x6f\x79\x8a\x45"
- "\x1f\x4e\x27\xf2\xa7\x59\xb4\x5a",
+ .iv = "\x31\x41\x4e\xea\x70\xc2\xb3\xa7"
+ "\x3e\xcb\x1a\xee\xa9\xe1\xfc\xc4",
+ .input = "\x5d\xe0\xee\xaa\x6a\x83\x34\xb9"
+ "\x3d\x9c\x20\x44\x09\xca\x94\xb6"
+ "\x2d\xf9\xbd\x8a\x7b\x88\xdf\xec"
+ "\xd5\xbc\x27\x61\xa9\x61\x56\xb6",
.ilen = 20 + 12,
.assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
- "\x00\x03\x01\x00\x20",
+ "\x00\x03\x02\x00\x20",
.alen = 13,
.result = "",
.rlen = 0,
- }, {
+ .authlen = 20,
+ },
+#endif
+ {
#ifdef __LITTLE_ENDIAN
.key = "\x08\x00" /* rta length */
"\x01\x00" /* rta type */
@@ -357,35 +397,48 @@ static struct tls_testvec tls_dec_tv_template[] = {
"\x00\x00\x00\x10" /* enc key length */
"authenticationkey20benckeyis16_bytes",
.klen = 8 + 20 + 16,
- .iv = "iv0123456789abcd",
- .input = "\x80\x23\x82\x44\x14\x2a\x1d\x94\xc\xc2\x1d\xd"
- "\x3a\x32\x89\x4c\x57\x30\xa8\x89\x76\x46\xcc\x90"
- "\x1d\x88\xb8\xa6\x1a\x58\xe\x2d\xeb\x2c\xc7\x3a"
- "\x52\x4e\xdb\xb3\x1e\x83\x11\xf5\x3c\xce\x6e\x94"
- "\xd3\x26\x6a\x9a\xd\xbd\xc7\x98\xb9\xb3\x3a\x51"
- "\x1e\x4\x84\x8a\x8f\x54\x9a\x51\x69\x9c\xce\x31"
- "\x8d\x5d\x8b\xee\x5f\x70\xc\xc9\xb8\x50\x54\xf8"
- "\xb2\x4a\x7a\xcd\xeb\x7a\x82\x81\xc6\x41\xc8\x50"
- "\x91\x8d\xc8\xed\xcd\x40\x8f\x55\xd1\xec\xc9\xac"
- "\x15\x18\xf9\x20\xa0\xed\x18\xa1\xe3\x56\xe3\x14"
- "\xe5\xe8\x66\x63\x20\xed\xe4\x62\x9d\xa3\xa4\x1d"
- "\x81\x89\x18\xf2\x36\xae\xc8\x8a\x2b\xbc\xc3\xb8"
- "\x80\xf\x97\x21\x36\x39\x8\x84\x23\x18\x9e\x9c"
- "\x72\x32\x75\x2d\x2e\xf9\x60\xb\xe8\xcc\xd9\x74"
- "\x4\x1b\x8e\x99\xc1\x94\xee\xd0\xac\x4e\xfc\x7e"
- "\xf1\x96\xb3\xe7\x14\xb8\xf2\xc\x25\x97\x82\x6b"
- "\xbd\x0\x65\xab\x5c\xe3\x16\xfb\x68\xef\xea\x9d"
- "\xff\x44\x1d\x2a\x44\xf5\xc8\x56\x77\xb7\xbf\x13"
- "\xc8\x54\xdb\x92\xfe\x16\x4c\xbe\x18\xe9\xb\x8d"
- "\xb\xd4\x43\x58\x43\xaa\xf4\x3\x80\x97\x62\xd5"
- "\xdf\x3c\x28\xaa\xee\x48\x4b\x55\x41\x1b\x31\x2"
- "\xbe\xa0\x1c\xbd\xb7\x22\x2a\xe5\x53\x72\x73\x20"
- "\x44\x4f\xe6\x1\x2b\x34\x33\x11\x7d\xfb\x10\xc1"
- "\x66\x7c\xa6\xf4\x48\x36\x5e\x2\xda\x41\x4b\x3e"
- "\xe7\x80\x17\x17\xce\xf1\x3e\x6a\x8e\x26\xf3\xb7"
- "\x2b\x85\xd\x31\x8d\xba\x6c\x22\xb4\x28\x55\x7e"
- "\x2a\x9e\x26\xf1\x3d\x21\xac\x65",
-
+ .iv = "\x4a\xd8\x67\x27\xec\x74\x48\x8e"
+ "\x5a\xca\xba\x13\x9c\xcf\x02\xae",
+ .input = "\x79\x03\xd4\x14\x1c\x57\x86\x48"
+ "\xec\x5e\x59\x21\x41\xff\xb9\x2f"
+ "\x66\xe9\xc1\xc9\xe3\x01\x8c\x10"
+ "\xb6\xde\x8f\xb1\xc0\x66\x93\xc5"
+ "\xac\x10\xd6\x86\x35\x63\x2b\xc0"
+ "\x7a\x40\xfd\x0e\x39\x0a\xf5\x18"
+ "\x1a\xf7\x99\x3c\x45\xd8\xe4\x92"
+ "\xd3\x39\x83\x58\x04\x8f\xe0\x95"
+ "\x24\xee\x62\xc5\xdf\xf6\x4c\x25"
+ "\x22\x0e\xf7\xe3\x33\x04\x88\x5b"
+ "\x70\xf8\xf5\x39\x24\xa1\x58\xd2"
+ "\xf9\x4c\xf9\x64\x0a\xcf\x9f\x36"
+ "\x23\x43\xda\x44\xfc\x68\xd7\x23"
+ "\x83\xc2\xb7\xc6\xd7\x7f\xd2\xec"
+ "\xef\xd7\xfc\x6a\x64\xe9\x70\xdc"
+ "\x53\x98\xfa\xf2\x41\x24\x87\xbc"
+ "\x57\xc9\x1c\x38\xff\x4b\x95\x42"
+ "\xb5\x2c\xfe\xd2\x34\xe2\xa7\x28"
+ "\x61\x4a\x1d\xe0\x0f\x97\x62\x08"
+ "\xa6\xa9\x5c\x89\x5e\x42\x60\x71"
+ "\xda\xd9\xba\x95\x6f\x87\x9c\x00"
+ "\x7e\x0c\x7a\x6f\xb4\x99\x7e\x0e"
+ "\x6a\xe9\xab\x12\xda\x95\x25\x83"
+ "\x8f\xa2\xc2\x91\xb5\x3f\xae\xc3"
+ "\xf9\x03\xc9\x6d\xe7\xe7\x46\x61"
+ "\xdc\xbc\xf1\x17\xcc\x93\x33\xa5"
+ "\x06\x54\x45\x79\xcb\x1c\x67\x87"
+ "\x87\x35\x9b\xc3\xfd\x3c\xcc\x43"
+ "\xec\xac\xef\xfd\x3b\x35\xb3\xde"
+ "\x7d\x82\x57\x49\xc5\xe8\x47\xbe"
+ "\x70\xf2\xbf\x1c\x98\x1e\x3d\xa4"
+ "\x25\xa2\x65\x6c\xca\x04\x9a\x1d"
+ "\x01\x08\xa6\x36\xbe\x89\xd1\x4e"
+ "\x87\x7f\xae\x70\x79\x0d\x42\x2d"
+ "\x16\x6f\x00\xf5\x76\x51\xb4\x37"
+ "\xda\xc2\x54\xa6\x39\x16\x26\x21"
+ "\xb5\x78\x6e\xa1\xbb\x25\x80\xdf"
+ "\xdb\x99\xdb\xc2\xec\x83\xf5\x88"
+ "\x6d\x50\xba\xdd\x30\xb1\x72\xd9"
+ "\xfc\xce\x7a\xcb\xcf\xd9\x0d\xc9",
.ilen = 285 + 20 + 15,
.assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
"\x00\x03\x01\x01\x40",
@@ -397,6 +450,274 @@ static struct tls_testvec tls_dec_tv_template[] = {
" bytes plaintext285 bytes plaintext285 bytes"
" plaintext285 bytes plaintext285 bytes plaintext",
.rlen = 285,
+ .authlen = 20,
+ }
+};
+
+/*
+ * TLS1.2 synthetic test vectors
+ */
+static struct tls_testvec tls12_enc_tv_template[] = {
+ {
+#ifdef __LITTLE_ENDIAN
+ .key = "\x08\x00" /* rta length */
+ "\x01\x00" /* rta type */
+#else
+ .key = "\x00\x08" /* rta length */
+ "\x00\x01" /* rta type */
+#endif
+ "\x00\x00\x00\x10" /* enc key length */
+ "authenticationkeysizeis_32bytes_enckeyis16_bytes",
+ .klen = 8 + 32 + 16,
+ .iv = "iv0123456789abcd",
+ .input = "iv0123456789abcdSingle block msg",
+ .ilen = 32,
+ .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
+ "\x00\x03\x01\x00\x10",
+ .alen = 13,
+ .result = "\x4a\xd8\x67\x27\xec\x74\x48\x8e"
+ "\x5a\xca\xba\x13\x9c\xcf\x02\xae"
+ "\x6d\xc2\xeb\x76\xa1\x3b\xe2\x57"
+ "\x64\xaf\x38\x42\x67\x8e\x57\x3e"
+ "\xbd\xeb\x2e\xe0\x26\xeb\xfe\xb4"
+ "\x25\xcd\x36\x37\xc1\x81\xd1\x7f"
+ "\x05\xf0\x21\xef\x9c\xe9\x2d\x23"
+ "\x83\x00\x64\xd4\xad\x54\x6e\xe6"
+ "\x9d\xfd\xf1\xd6\xdf\xd9\x1b\x15"
+ "\xd7\x91\xba\x42\xca\xcb\xc5\xcf",
+ .rlen = 16 + 32 + 16 + 16,
+ .authlen = 32,
+ },
+ /* Payload with payload len as zero leads to descriptor error.
+ */
+#if 0
+ {
+#ifdef __LITTLE_ENDIAN
+ .key = "\x08\x00" /* rta length */
+ "\x01\x00" /* rta type */
+#else
+ .key = "\x00\x08" /* rta length */
+ "\x00\x01" /* rta type */
+#endif
+ "\x00\x00\x00\x10" /* enc key length */
+ "authenticationkeysizeis_32bytes_enckeyis16_bytes",
+ .klen = 8 + 32 + 16,
+ .iv = "iv0123456789abcd",
+ .input = "iv0123456789abcd",
+ .ilen = 16,
+ .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
+ "\x00\x03\x03\x00\x00",
+ .alen = 13,
+ .result = "\x31\x41\x4e\xea\x70\xc2\xb3\xa7"
+ "\x3e\xcb\x1a\xee\xa9\xe1\xfc\xc4"
+ "\xfe\x63\xd4\x16\x45\x84\x36\x59"
+ "\xb5\x81\xd7\x84\x5e\xb6\xd0\x18"
+ "\x2c\x1b\x7a\x14\xc9\x3f\xe5\xc8"
+ "\x0d\xec\xab\xcc\xcd\x97\x62\xa0"
+ "\x26\xe8\x2b\xf9\x49\xdb\xf8\x55"
+ "\x24\x59\xdd\x40\x89\xba\xed\x22",
+ .rlen = 32 + 16 + 16,
+ .authlen = 32,
+ },
+#endif
+ {
+#ifdef __LITTLE_ENDIAN
+ .key = "\x08\x00" /* rta length */
+ "\x01\x00" /* rta type */
+#else
+ .key = "\x00\x08" /* rta length */
+ "\x00\x01" /* rta type */
+#endif
+ "\x00\x00\x00\x10" /* enc key length */
+ "authenticationkeysizeis_32bytes_enckeyis16_bytes",
+ .klen = 8 + 32 + 16,
+ .iv = "iv0123456789abcd",
+ .input = "iv0123456789abcd"
+ "285 bytes plaintext285 bytes plaintext285 bytes"
+ " plaintext285 bytes plaintext285 bytes plaintext285"
+ " bytes plaintext285 bytes plaintext285 bytes"
+ " plaintext285 bytes plaintext285 bytes plaintext285"
+ " bytes plaintext285 bytes plaintext285 bytes"
+ " plaintext285 bytes plaintext285 bytes plaintext285"
+ " bytes plaintext285 bytes plaintext",
+ .ilen = 285 + 16,
+ .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
+ "\x00\x03\x01\x01\x1d",
+ .alen = 13,
+ .result = "\x4a\xd8\x67\x27\xec\x74\x48\x8e"
+ "\x5a\xca\xba\x13\x9c\xcf\x02\xae"
+ "\x79\x03\xd4\x14\x1c\x57\x86\x48"
+ "\xec\x5e\x59\x21\x41\xff\xb9\x2f"
+ "\x66\xe9\xc1\xc9\xe3\x01\x8c\x10"
+ "\xb6\xde\x8f\xb1\xc0\x66\x93\xc5"
+ "\xac\x10\xd6\x86\x35\x63\x2b\xc0"
+ "\x7a\x40\xfd\x0e\x39\x0a\xf5\x18"
+ "\x1a\xf7\x99\x3c\x45\xd8\xe4\x92"
+ "\xd3\x39\x83\x58\x04\x8f\xe0\x95"
+ "\x24\xee\x62\xc5\xdf\xf6\x4c\x25"
+ "\x22\x0e\xf7\xe3\x33\x04\x88\x5b"
+ "\x70\xf8\xf5\x39\x24\xa1\x58\xd2"
+ "\xf9\x4c\xf9\x64\x0a\xcf\x9f\x36"
+ "\x23\x43\xda\x44\xfc\x68\xd7\x23"
+ "\x83\xc2\xb7\xc6\xd7\x7f\xd2\xec"
+ "\xef\xd7\xfc\x6a\x64\xe9\x70\xdc"
+ "\x53\x98\xfa\xf2\x41\x24\x87\xbc"
+ "\x57\xc9\x1c\x38\xff\x4b\x95\x42"
+ "\xb5\x2c\xfe\xd2\x34\xe2\xa7\x28"
+ "\x61\x4a\x1d\xe0\x0f\x97\x62\x08"
+ "\xa6\xa9\x5c\x89\x5e\x42\x60\x71"
+ "\xda\xd9\xba\x95\x6f\x87\x9c\x00"
+ "\x7e\x0c\x7a\x6f\xb4\x99\x7e\x0e"
+ "\x6a\xe9\xab\x12\xda\x95\x25\x83"
+ "\x8f\xa2\xc2\x91\xb5\x3f\xae\xc3"
+ "\xf9\x03\xc9\x6d\xe7\xe7\x46\x61"
+ "\xdc\xbc\xf1\x17\xcc\x93\x33\xa5"
+ "\x06\x54\x45\x79\xcb\x1c\x67\x87"
+ "\x87\x35\x9b\xc3\xfd\x3c\xcc\x43"
+ "\xec\xac\xef\xfd\x3b\x35\xb3\xde"
+ "\x7d\x82\x57\x49\xc5\xe8\x47\xbe"
+ "\x70\xf2\xbf\x1c\x98\x1e\x3d\xa4"
+ "\x25\xa2\x65\x6c\xca\x04\x9a\x1d"
+ "\x01\x08\xa6\x36\xbe\x89\xd1\x4e"
+ "\x87\x7f\xae\x70\x79\x0d\x42\x2d"
+ "\xcc\x1b\x13\x34\xc5\x1d\xe7\x00"
+ "\x7f\x65\x72\xa3\x66\xe0\x55\x4f"
+ "\xf0\x81\x1a\xe0\x21\x4e\x00\xf4"
+ "\x53\x62\x37\x35\x70\x38\x82\x81"
+ "\x93\xac\x16\x00\x7a\xd8\xa1\x09"
+ "\xf6\x2a\x54\x51\x75\xf5\x22\xdb",
+ .rlen = 285 + 32 + 3 + 16,
+ .authlen = 32,
+ }
+};
+
+static struct tls_testvec tls12_dec_tv_template[] = {
+ {
+#ifdef __LITTLE_ENDIAN
+ .key = "\x08\x00" /* rta length */
+ "\x01\x00" /* rta type */
+#else
+ .key = "\x00\x08" /* rta length */
+ "\x00\x01" /* rta type */
+#endif
+ "\x00\x00\x00\x10" /* enc key length */
+ "authenticationkeysizeis_32bytes_enckeyis16_bytes",
+ .klen = 8 + 32 + 16,
+ .iv = "\x4a\xd8\x67\x27\xec\x74\x48\x8e"
+ "\x5a\xca\xba\x13\x9c\xcf\x02\xae",
+ .input = "\x6d\xc2\xeb\x76\xa1\x3b\xe2\x57"
+ "\x64\xaf\x38\x42\x67\x8e\x57\x3e"
+ "\xbd\xeb\x2e\xe0\x26\xeb\xfe\xb4"
+ "\x25\xcd\x36\x37\xc1\x81\xd1\x7f"
+ "\x05\xf0\x21\xef\x9c\xe9\x2d\x23"
+ "\x83\x00\x64\xd4\xad\x54\x6e\xe6"
+ "\x9d\xfd\xf1\xd6\xdf\xd9\x1b\x15"
+ "\xd7\x91\xba\x42\xca\xcb\xc5\xcf",
+ .ilen = 64,
+ .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
+ "\x00\x03\x01\x00\x40",
+ .alen = 13,
+ .result = "Single block msg",
+ .rlen = 16,
+ .authlen = 32,
+ },
+ /* Payload with payload len as zero leads to descriptor error.
+ */
+#if 0
+ {
+#ifdef __LITTLE_ENDIAN
+ .key = "\x08\x00" /* rta length */
+ "\x01\x00" /* rta type */
+#else
+ .key = "\x00\x08" /* rta length */
+ "\x00\x01" /* rta type */
+#endif
+ "\x00\x00\x00\x10" /* enc key length */
+ "authenticationkeysizeis_32bytes_enckeyis16_bytes",
+ .klen = 8 + 32 + 16,
+ .iv = "\x31\x41\x4e\xea\x70\xc2\xb3\xa7"
+ "\x3e\xcb\x1a\xee\xa9\xe1\xfc\xc4",
+ .input = "\xfe\x63\xd4\x16\x45\x84\x36\x59"
+ "\xb5\x81\xd7\x84\x5e\xb6\xd0\x18"
+ "\x2c\x1b\x7a\x14\xc9\x3f\xe5\xc8"
+ "\x0d\xec\xab\xcc\xcd\x97\x62\xa0"
+ "\x26\xe8\x2b\xf9\x49\xdb\xf8\x55"
+ "\x24\x59\xdd\x40\x89\xba\xed\x22",
+ .ilen = 32 + 16,
+ .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
+ "\x00\x03\x03\x00\x30",
+ .alen = 13,
+ .result = "",
+ .rlen = 0,
+ .authlen = 32,
+ },
+#endif
+ {
+#ifdef __LITTLE_ENDIAN
+ .key = "\x08\x00" /* rta length */
+ "\x01\x00" /* rta type */
+#else
+ .key = "\x00\x08" /* rta length */
+ "\x00\x01" /* rta type */
+#endif
+ "\x00\x00\x00\x10" /* enc key length */
+ "authenticationkeysizeis_32bytes_enckeyis16_bytes",
+ .klen = 8 + 32 + 16,
+ .iv = "\x4a\xd8\x67\x27\xec\x74\x48\x8e"
+ "\x5a\xca\xba\x13\x9c\xcf\x02\xae",
+ .input = "\x79\x03\xd4\x14\x1c\x57\x86\x48"
+ "\xec\x5e\x59\x21\x41\xff\xb9\x2f"
+ "\x66\xe9\xc1\xc9\xe3\x01\x8c\x10"
+ "\xb6\xde\x8f\xb1\xc0\x66\x93\xc5"
+ "\xac\x10\xd6\x86\x35\x63\x2b\xc0"
+ "\x7a\x40\xfd\x0e\x39\x0a\xf5\x18"
+ "\x1a\xf7\x99\x3c\x45\xd8\xe4\x92"
+ "\xd3\x39\x83\x58\x04\x8f\xe0\x95"
+ "\x24\xee\x62\xc5\xdf\xf6\x4c\x25"
+ "\x22\x0e\xf7\xe3\x33\x04\x88\x5b"
+ "\x70\xf8\xf5\x39\x24\xa1\x58\xd2"
+ "\xf9\x4c\xf9\x64\x0a\xcf\x9f\x36"
+ "\x23\x43\xda\x44\xfc\x68\xd7\x23"
+ "\x83\xc2\xb7\xc6\xd7\x7f\xd2\xec"
+ "\xef\xd7\xfc\x6a\x64\xe9\x70\xdc"
+ "\x53\x98\xfa\xf2\x41\x24\x87\xbc"
+ "\x57\xc9\x1c\x38\xff\x4b\x95\x42"
+ "\xb5\x2c\xfe\xd2\x34\xe2\xa7\x28"
+ "\x61\x4a\x1d\xe0\x0f\x97\x62\x08"
+ "\xa6\xa9\x5c\x89\x5e\x42\x60\x71"
+ "\xda\xd9\xba\x95\x6f\x87\x9c\x00"
+ "\x7e\x0c\x7a\x6f\xb4\x99\x7e\x0e"
+ "\x6a\xe9\xab\x12\xda\x95\x25\x83"
+ "\x8f\xa2\xc2\x91\xb5\x3f\xae\xc3"
+ "\xf9\x03\xc9\x6d\xe7\xe7\x46\x61"
+ "\xdc\xbc\xf1\x17\xcc\x93\x33\xa5"
+ "\x06\x54\x45\x79\xcb\x1c\x67\x87"
+ "\x87\x35\x9b\xc3\xfd\x3c\xcc\x43"
+ "\xec\xac\xef\xfd\x3b\x35\xb3\xde"
+ "\x7d\x82\x57\x49\xc5\xe8\x47\xbe"
+ "\x70\xf2\xbf\x1c\x98\x1e\x3d\xa4"
+ "\x25\xa2\x65\x6c\xca\x04\x9a\x1d"
+ "\x01\x08\xa6\x36\xbe\x89\xd1\x4e"
+ "\x87\x7f\xae\x70\x79\x0d\x42\x2d"
+ "\xcc\x1b\x13\x34\xc5\x1d\xe7\x00"
+ "\x7f\x65\x72\xa3\x66\xe0\x55\x4f"
+ "\xf0\x81\x1a\xe0\x21\x4e\x00\xf4"
+ "\x53\x62\x37\x35\x70\x38\x82\x81"
+ "\x93\xac\x16\x00\x7a\xd8\xa1\x09"
+ "\xf6\x2a\x54\x51\x75\xf5\x22\xdb",
+ .ilen = 320,
+ .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
+ "\x00\x03\x01\x01\x40",
+ .alen = 13,
+ .result = "285 bytes plaintext285 bytes plaintext285 bytes"
+ " plaintext285 bytes plaintext285 bytes plaintext285"
+ " bytes plaintext285 bytes plaintext285 bytes"
+ " plaintext285 bytes plaintext285 bytes plaintext285"
+ " bytes plaintext285 bytes plaintext285 bytes"
+ " plaintext285 bytes plaintext285 bytes plaintext285"
+ " bytes plaintext285 bytes plaintext",
+ .rlen = 285,
+ .authlen = 32,
}
};