X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=examples%2Ffips_validation%2Ffips_validation.h;h=5aee955c16dd51319ad659353e56eb505a51d2ee;hb=513f192b5fd4d5b2f9e79febecc28d629eb3dd82;hp=dd3bc09a6315c3cf9d7900744f134f7fac27bf46;hpb=3d0fad56b74a02fe6c1bb2b3ee752646c34cfbc5;p=dpdk.git diff --git a/examples/fips_validation/fips_validation.h b/examples/fips_validation/fips_validation.h index dd3bc09a63..5aee955c16 100644 --- a/examples/fips_validation/fips_validation.h +++ b/examples/fips_validation/fips_validation.h @@ -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 @@ -23,6 +24,14 @@ #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_AES_XTS, FIPS_TEST_ALGO_MAX }; @@ -77,6 +86,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 +163,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 +202,30 @@ 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 +parse_test_xts_init(void); + int parser_read_uint8_hex(uint8_t *value, const char *p);