crypto: add support for testing quad loops in crypto algos
[vpp.git] / src / plugins / unittest / crypto / aes_cbc.c
index 465f91e..05a16c2 100644 (file)
@@ -54,23 +54,15 @@ static u8 ciphertext128[] = {
 };
 
 /* *INDENT-OFF* */
-UNITTEST_REGISTER_CRYPTO_TEST (nist_aes128_cbc_enc) = {
+UNITTEST_REGISTER_CRYPTO_TEST (nist_aes128_cbc) = {
   .name = "NIST SP 800-38A",
-  .op = VNET_CRYPTO_OP_AES_128_CBC_ENC,
+  .alg = VNET_CRYPTO_ALG_AES_128_CBC,
   .iv = TEST_DATA (iv),
   .key = TEST_DATA (key128),
-  .data = TEST_DATA (plaintext),
-  .expected = TEST_DATA (ciphertext128),
+  .plaintext = TEST_DATA (plaintext),
+  .ciphertext = TEST_DATA (ciphertext128),
 };
 
-UNITTEST_REGISTER_CRYPTO_TEST (nist_aes128_cbc_dec) = {
-  .name = "NIST SP 800-38A",
-  .op = VNET_CRYPTO_OP_AES_128_CBC_DEC,
-  .iv = TEST_DATA (iv),
-  .key = TEST_DATA (key128),
-  .data = TEST_DATA (ciphertext128),
-  .expected = TEST_DATA (plaintext),
-};
 /* *INDENT-ON* */
 
 static u8 key192[24] = {
@@ -91,23 +83,15 @@ static u8 ciphertext192[64] = {
 };
 
 /* *INDENT-OFF* */
-UNITTEST_REGISTER_CRYPTO_TEST (nist_aes192_cbc_enc) = {
+UNITTEST_REGISTER_CRYPTO_TEST (nist_aes192_cbc) = {
   .name = "NIST SP 800-38A",
-  .op = VNET_CRYPTO_OP_AES_192_CBC_ENC,
+  .alg = VNET_CRYPTO_ALG_AES_192_CBC,
   .iv = TEST_DATA (iv),
   .key = TEST_DATA (key192),
-  .data = TEST_DATA (plaintext),
-  .expected = TEST_DATA (ciphertext192),
+  .plaintext = TEST_DATA (plaintext),
+  .ciphertext = TEST_DATA (ciphertext192),
 };
 
-UNITTEST_REGISTER_CRYPTO_TEST (nist_aes192_cbc_dec) = {
-  .name = "NIST SP 800-38A",
-  .op = VNET_CRYPTO_OP_AES_192_CBC_DEC,
-  .iv = TEST_DATA (iv),
-  .key = TEST_DATA (key192),
-  .data = TEST_DATA (ciphertext192),
-  .expected = TEST_DATA (plaintext),
-};
 /* *INDENT-ON* */
 
 static u8 key256[32] = {
@@ -129,22 +113,43 @@ static u8 ciphertext256[64] = {
 };
 
 /* *INDENT-OFF* */
-UNITTEST_REGISTER_CRYPTO_TEST (nist_aes256_cbc_enc) = {
+UNITTEST_REGISTER_CRYPTO_TEST (nist_aes256_cbc) = {
   .name = "NIST SP 800-38A",
-  .op = VNET_CRYPTO_OP_AES_256_CBC_ENC,
+  .alg = VNET_CRYPTO_ALG_AES_256_CBC,
   .iv = TEST_DATA (iv),
   .key = TEST_DATA (key256),
-  .data = TEST_DATA (plaintext),
-  .expected = TEST_DATA (ciphertext256),
+  .plaintext = TEST_DATA (plaintext),
+  .ciphertext = TEST_DATA (ciphertext256),
 };
 
-UNITTEST_REGISTER_CRYPTO_TEST (nist_aes256_cbc_dec) = {
-  .name = "NIST SP 800-38A",
-  .op = VNET_CRYPTO_OP_AES_256_CBC_DEC,
+UNITTEST_REGISTER_CRYPTO_TEST (nist_aes256_cbc_chained) = {
+  .name = "NIST SP 800-38A [chained]",
+  .alg = VNET_CRYPTO_ALG_AES_256_CBC,
   .iv = TEST_DATA (iv),
   .key = TEST_DATA (key256),
-  .data = TEST_DATA (ciphertext256),
-  .expected = TEST_DATA (plaintext),
+  .is_chained = 1,
+  .pt_chunks = {
+    TEST_DATA_CHUNK (plaintext, 0, 32),
+    TEST_DATA_CHUNK (plaintext, 32, 32),
+  },
+  .ct_chunks = {
+    TEST_DATA_CHUNK (ciphertext256, 0, 32),
+    TEST_DATA_CHUNK (ciphertext256, 32, 32),
+  },
+};
+
+UNITTEST_REGISTER_CRYPTO_TEST (nist_aes256_incr) = {
+  .name = "NIST SP 800-38A incr (1024 B)",
+  .alg = VNET_CRYPTO_ALG_AES_256_CBC,
+  .key.length = 32,
+  .plaintext_incremental = 1024,
+};
+
+UNITTEST_REGISTER_CRYPTO_TEST (nist_aes256_incr2) = {
+  .name = "NIST SP 800-38A incr (1056 B)",
+  .alg = VNET_CRYPTO_ALG_AES_256_CBC,
+  .key.length = 32,
+  .plaintext_incremental = 1056,
 };
 /* *INDENT-ON* */