crypto: add support for testing quad loops in crypto algos
[vpp.git] / src / plugins / unittest / crypto / crypto.h
index fe6e7f2..5e09a3a 100644 (file)
@@ -17,6 +17,8 @@
 #ifndef included_unittest_crypto_crypto_h
 #define included_unittest_crypto_crypto_h
 
+#define CRYPTO_TEST_MAX_OP_CHUNKS 8
+
 typedef struct
 {
   u32 length;
@@ -26,9 +28,15 @@ typedef struct
 typedef struct unittest_crypto_test_registration
 {
   char *name;
-  vnet_crypto_alg_t alg:8;
-  vnet_crypto_op_type_t op:8;
-  unittest_crypto_test_data_t iv, key, data, expected;
+  vnet_crypto_alg_t alg;
+  unittest_crypto_test_data_t iv, key, digest, plaintext, ciphertext, aad,
+    tag;
+  u32 plaintext_incremental;
+  u8 is_chained;
+
+  /* plaintext and cipher text data used for testing chained buffers */
+  unittest_crypto_test_data_t pt_chunks[CRYPTO_TEST_MAX_OP_CHUNKS + 1];
+  unittest_crypto_test_data_t ct_chunks[CRYPTO_TEST_MAX_OP_CHUNKS + 1];
 
   /* next */
   struct unittest_crypto_test_registration *next;
@@ -38,12 +46,22 @@ typedef struct unittest_crypto_test_registration
 typedef struct
 {
   int verbose;
+  u8 *inc_data;
+
+  /* perf */
+  vnet_crypto_alg_t alg;
+  u32 warmup_rounds;
+  u32 rounds;
+  u32 buffer_size;
+  u32 n_buffers;
+
   unittest_crypto_test_registration_t *test_registrations;
 } crypto_test_main_t;
 
 extern crypto_test_main_t crypto_test_main;
 
 #define TEST_DATA(n) { .data = (u8 *) n, .length = sizeof (n)}
+#define TEST_DATA_CHUNK(s,off,n) { .data = (u8 *) s + off, .length = n}
 
 #define UNITTEST_REGISTER_CRYPTO_TEST(x)                                     \
   unittest_crypto_test_registration_t __unittest_crypto_test_##x;            \