X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=examples%2Ffips_validation%2Ffips_validation.h;h=aaadf01ba8d4cbd6b00865bad6f65fbd1a94c071;hb=cf412ff7e978cacbb4228fb74248f16563c74861;hp=3e291bc365295e91a8b62fc9bafecacf5159478a;hpb=305921f4508d6a4c399ff99036e379e810455b9b;p=dpdk.git diff --git a/examples/fips_validation/fips_validation.h b/examples/fips_validation/fips_validation.h index 3e291bc365..aaadf01ba8 100644 --- a/examples/fips_validation/fips_validation.h +++ b/examples/fips_validation/fips_validation.h @@ -12,8 +12,11 @@ #define MAX_CASE_LINE 15 #define MAX_LINE_CHAR 204800 /*< max number of characters per line */ #define MAX_NB_TESTS 10240 -#define MAX_BUF_SIZE 2048 +#define DEF_MBUF_SEG_SIZE (UINT16_MAX - sizeof(struct rte_mbuf) - \ + RTE_PKTMBUF_HEADROOM) #define MAX_STRING_SIZE 64 +#define MAX_FILE_NAME_SIZE 256 +#define MAX_DIGEST_SIZE 64 #define POSITIVE_TEST 0 #define NEGATIVE_TEST -1 @@ -29,6 +32,8 @@ enum fips_test_algorithms { FIPS_TEST_ALGO_AES_CCM, FIPS_TEST_ALGO_HMAC, FIPS_TEST_ALGO_TDES, + FIPS_TEST_ALGO_SHA, + FIPS_TEST_ALGO_AES_XTS, FIPS_TEST_ALGO_MAX }; @@ -103,6 +108,11 @@ enum fips_tdes_test_types { 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 */ @@ -111,6 +121,11 @@ enum fips_ccm_test_types { 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; @@ -123,6 +138,7 @@ struct hmac_interim_data { struct tdes_interim_data { enum fips_tdes_test_types test_type; + enum fips_tdes_test_mode test_mode; uint32_t nb_keys; }; @@ -135,6 +151,16 @@ struct ccm_interim_data { uint32_t iv_len; }; +struct sha_interim_data { + enum fips_sha_test_types test_type; + enum rte_crypto_auth_algorithm algo; +}; + +struct gcm_interim_data { + uint8_t is_gmac; + uint8_t gen_iv; +}; + struct fips_test_interim_info { FILE *fp_rd; FILE *fp_wr; @@ -142,15 +168,19 @@ struct fips_test_interim_info { enum fips_test_algorithms algo; char *one_line_text; char *vec[MAX_LINE_PER_VECTOR]; + uint32_t vec_start_off; uint32_t nb_vec_lines; char device_name[MAX_STRING_SIZE]; + char file_name[MAX_FILE_NAME_SIZE]; + float version; 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; + struct gcm_interim_data gcm_data; } interim_info; enum fips_test_op op; @@ -200,6 +230,12 @@ parse_test_cmac_init(void); int parse_test_ccm_init(void); +int +parse_test_sha_init(void); + +int +parse_test_xts_init(void); + int parser_read_uint8_hex(uint8_t *value, const char *p); @@ -209,6 +245,9 @@ parse_uint8_hex_str(const char *key, char *src, struct fips_val *val); int parse_uint8_known_len_hex_str(const char *key, char *src, struct fips_val *val); +int +parser_read_uint16(uint16_t *value, const char *p); + int parser_read_uint32_val(const char *key, char *src, struct fips_val *val); @@ -230,4 +269,24 @@ parse_write_hex_str(struct fips_val *src); int update_info_vec(uint32_t count); +typedef int (*fips_test_one_case_t)(void); +typedef int (*fips_prepare_op_t)(void); +typedef int (*fips_prepare_xform_t)(struct rte_crypto_sym_xform *); + +struct fips_test_ops { + fips_prepare_xform_t prepare_xform; + fips_prepare_op_t prepare_op; + fips_test_one_case_t test; +}; + +extern struct fips_test_ops test_ops; + +int prepare_aead_op(void); + +int prepare_auth_op(void); + +int prepare_gcm_xform(struct rte_crypto_sym_xform *xform); + +int prepare_gmac_xform(struct rte_crypto_sym_xform *xform); + #endif