examples/fips_validation: support TDES ECB
[dpdk.git] / examples / fips_validation / fips_validation.h
index dd3bc09..d487fb0 100644 (file)
@@ -14,6 +14,7 @@
 #define MAX_NB_TESTS           10240
 #define MAX_BUF_SIZE           2048
 #define MAX_STRING_SIZE                64
+#define MAX_DIGEST_SIZE                64
 
 #define POSITIVE_TEST          0
 #define NEGATIVE_TEST          -1
 #define FAX_FILE_PERFIX                "fax"
 
 enum fips_test_algorithms {
+               FIPS_TEST_ALGO_AES = 0,
+               FIPS_TEST_ALGO_AES_GCM,
+               FIPS_TEST_ALGO_AES_CMAC,
+               FIPS_TEST_ALGO_AES_CCM,
+               FIPS_TEST_ALGO_HMAC,
+               FIPS_TEST_ALGO_TDES,
+               FIPS_TEST_ALGO_SHA,
                FIPS_TEST_ALGO_MAX
 };
 
@@ -77,6 +85,74 @@ struct fips_test_callback {
        struct fips_val *val;
 };
 
+enum fips_aesavs_test_types {
+       AESAVS_TYPE_GFXBOX = 1,
+       AESAVS_TYPE_KEYSBOX,
+       AESAVS_TYPE_VARKEY,
+       AESAVS_TYPE_VARTXT,
+       AESAVS_TYPE_MMT,
+       AESAVS_TYPE_MCT,
+};
+
+enum fips_tdes_test_types {
+       TDES_INVERSE_PERMUTATION = 0,
+       TDES_PERMUTATION,
+       TDES_SUBSTITUTION_TABLE,
+       TDES_VARIABLE_KEY,
+       TDES_VARIABLE_TEXT,
+       TDES_KAT,
+       TDES_MCT, /* Monte Carlo (Modes) Test */
+       TDES_MMT /* Multi block Message Test */
+};
+
+enum fips_tdes_test_mode {
+       TDES_MODE_CBC = 0,
+       TDES_MODE_ECB
+};
+
+enum fips_ccm_test_types {
+       CCM_VADT        = 1, /* Variable Associated Data Test */
+       CCM_VPT,                 /* Variable Payload Test */
+       CCM_VNT,                 /* Variable Nonce Test */
+       CCM_VTT,                 /* Variable Tag Test */
+       CCM_DVPT,        /*  Decryption-Verification Process Test */
+};
+
+enum fips_sha_test_types {
+       SHA_KAT = 0,
+       SHA_MCT
+};
+
+struct aesavs_interim_data {
+       enum fips_aesavs_test_types test_type;
+       uint32_t cipher_algo;
+       uint32_t key_len;
+};
+
+struct hmac_interim_data {
+       enum rte_crypto_auth_algorithm algo;
+};
+
+struct tdes_interim_data {
+       enum fips_tdes_test_types test_type;
+       enum fips_tdes_test_mode test_mode;
+       uint32_t nb_keys;
+};
+
+struct ccm_interim_data {
+       enum fips_ccm_test_types test_type;
+       uint32_t aad_len;
+       uint32_t pt_len;
+       uint32_t digest_len;
+       uint32_t key_len;
+       uint32_t iv_len;
+};
+
+struct sha_interim_data {
+       enum fips_sha_test_types test_type;
+       enum rte_crypto_auth_algorithm algo;
+};
+
 struct fips_test_interim_info {
        FILE *fp_rd;
        FILE *fp_wr;
@@ -86,6 +162,15 @@ struct fips_test_interim_info {
        char *vec[MAX_LINE_PER_VECTOR];
        uint32_t nb_vec_lines;
        char device_name[MAX_STRING_SIZE];
+       char file_name[MAX_STRING_SIZE];
+
+       union {
+               struct aesavs_interim_data aes_data;
+               struct hmac_interim_data hmac_data;
+               struct tdes_interim_data tdes_data;
+               struct ccm_interim_data ccm_data;
+               struct sha_interim_data sha_data;
+       } interim_info;
 
        enum fips_test_op op;
 
@@ -116,6 +201,27 @@ fips_test_parse_one_case(void);
 void
 fips_test_write_one_case(void);
 
+int
+parse_test_aes_init(void);
+
+int
+parse_test_tdes_init(void);
+
+int
+parse_test_hmac_init(void);
+
+int
+parse_test_gcm_init(void);
+
+int
+parse_test_cmac_init(void);
+
+int
+parse_test_ccm_init(void);
+
+int
+parse_test_sha_init(void);
+
 int
 parser_read_uint8_hex(uint8_t *value, const char *p);