13d0fad56SMarko Kovacevic /* SPDX-License-Identifier: BSD-3-Clause 23d0fad56SMarko Kovacevic * Copyright(c) 2018 Intel Corporation 33d0fad56SMarko Kovacevic */ 43d0fad56SMarko Kovacevic 53d0fad56SMarko Kovacevic #ifndef _FIPS_VALIDATION_H_ 63d0fad56SMarko Kovacevic #define _FIPS_VALIDATION_H_ 73d0fad56SMarko Kovacevic 88d70a194SDavid Marchand #ifdef USE_JANSSON 9f556293fSBrandon Lo #include <jansson.h> 108d70a194SDavid Marchand #endif /* USE_JANSSON */ 11f556293fSBrandon Lo 123d0fad56SMarko Kovacevic #define FIPS_PARSE_ERR(fmt, args) \ 133d0fad56SMarko Kovacevic RTE_LOG(ERR, USER1, "FIPS parse error" ## fmt ## "\n", ## args) 143d0fad56SMarko Kovacevic 153d0fad56SMarko Kovacevic #define ERR_MSG_SIZE 128 163d0fad56SMarko Kovacevic #define MAX_CASE_LINE 15 173d0fad56SMarko Kovacevic #define MAX_LINE_CHAR 204800 /*< max number of characters per line */ 183d0fad56SMarko Kovacevic #define MAX_NB_TESTS 10240 19952e10cdSFan Zhang #define DEF_MBUF_SEG_SIZE (UINT16_MAX - sizeof(struct rte_mbuf) - \ 20952e10cdSFan Zhang RTE_PKTMBUF_HEADROOM) 213d0fad56SMarko Kovacevic #define MAX_STRING_SIZE 64 229275af3bSOlivier Matz #define MAX_FILE_NAME_SIZE 256 23f4797baeSDamian Nowak #define MAX_DIGEST_SIZE 64 243d0fad56SMarko Kovacevic 253d0fad56SMarko Kovacevic #define POSITIVE_TEST 0 263d0fad56SMarko Kovacevic #define NEGATIVE_TEST -1 273d0fad56SMarko Kovacevic 28f556293fSBrandon Lo #define REQ_FILE_PREFIX "req" 29f556293fSBrandon Lo #define RSP_FILE_PREFIX "rsp" 30f556293fSBrandon Lo #define FAX_FILE_PREFIX "fax" 31f556293fSBrandon Lo #define JSON_FILE_PREFIX "json" 32f556293fSBrandon Lo 33f556293fSBrandon Lo #define ACVVERSION "1.0" 343d0fad56SMarko Kovacevic 353d0fad56SMarko Kovacevic enum fips_test_algorithms { 36cd255ccfSMarko Kovacevic FIPS_TEST_ALGO_AES = 0, 3775777166SGowrishankar Muthukrishnan FIPS_TEST_ALGO_AES_CBC, 38c8956fd2SBrian Dooley FIPS_TEST_ALGO_AES_CTR, 394aaad299SMarko Kovacevic FIPS_TEST_ALGO_AES_GCM, 40e27268bdSBrian Dooley FIPS_TEST_ALGO_AES_GMAC, 41ac026f46SMarko Kovacevic FIPS_TEST_ALGO_AES_CMAC, 42305921f4SMarko Kovacevic FIPS_TEST_ALGO_AES_CCM, 43f8e431edSGowrishankar Muthukrishnan FIPS_TEST_ALGO_AES_XTS, 44f64adb67SMarko Kovacevic FIPS_TEST_ALGO_HMAC, 45527cbf3dSMarko Kovacevic FIPS_TEST_ALGO_TDES, 46f4797baeSDamian Nowak FIPS_TEST_ALGO_SHA, 4736128a67SGowrishankar Muthukrishnan FIPS_TEST_ALGO_RSA, 483d0fad56SMarko Kovacevic FIPS_TEST_ALGO_MAX 493d0fad56SMarko Kovacevic }; 503d0fad56SMarko Kovacevic 513d0fad56SMarko Kovacevic enum file_types { 523d0fad56SMarko Kovacevic FIPS_TYPE_REQ = 1, 533d0fad56SMarko Kovacevic FIPS_TYPE_FAX, 54f556293fSBrandon Lo FIPS_TYPE_RSP, 55f556293fSBrandon Lo FIPS_TYPE_JSON, 563d0fad56SMarko Kovacevic }; 573d0fad56SMarko Kovacevic 583d0fad56SMarko Kovacevic enum fips_test_op { 593d0fad56SMarko Kovacevic FIPS_TEST_ENC_AUTH_GEN = 1, 603d0fad56SMarko Kovacevic FIPS_TEST_DEC_AUTH_VERIF, 6136128a67SGowrishankar Muthukrishnan FIPS_TEST_ASYM_KEYGEN, 6236128a67SGowrishankar Muthukrishnan FIPS_TEST_ASYM_SIGGEN, 6336128a67SGowrishankar Muthukrishnan FIPS_TEST_ASYM_SIGVER 643d0fad56SMarko Kovacevic }; 653d0fad56SMarko Kovacevic 663d0fad56SMarko Kovacevic #define MAX_LINE_PER_VECTOR 16 673d0fad56SMarko Kovacevic 683d0fad56SMarko Kovacevic struct fips_val { 693d0fad56SMarko Kovacevic uint8_t *val; 703d0fad56SMarko Kovacevic uint32_t len; 713d0fad56SMarko Kovacevic }; 723d0fad56SMarko Kovacevic 733d0fad56SMarko Kovacevic struct fips_test_vector { 743d0fad56SMarko Kovacevic union { 753d0fad56SMarko Kovacevic struct { 763d0fad56SMarko Kovacevic struct fips_val key; 773d0fad56SMarko Kovacevic struct fips_val digest; 783d0fad56SMarko Kovacevic struct fips_val auth_aad; 793d0fad56SMarko Kovacevic struct fips_val aad; 803d0fad56SMarko Kovacevic } cipher_auth; 813d0fad56SMarko Kovacevic struct { 823d0fad56SMarko Kovacevic struct fips_val key; 833d0fad56SMarko Kovacevic struct fips_val digest; 843d0fad56SMarko Kovacevic struct fips_val aad; 853d0fad56SMarko Kovacevic } aead; 863d0fad56SMarko Kovacevic }; 8736128a67SGowrishankar Muthukrishnan struct { 8836128a67SGowrishankar Muthukrishnan struct fips_val seed; 8936128a67SGowrishankar Muthukrishnan struct fips_val signature; 9036128a67SGowrishankar Muthukrishnan struct fips_val e; 9136128a67SGowrishankar Muthukrishnan struct fips_val n; 9236128a67SGowrishankar Muthukrishnan struct fips_val d; 9336128a67SGowrishankar Muthukrishnan struct fips_val p; 9436128a67SGowrishankar Muthukrishnan struct fips_val q; 9536128a67SGowrishankar Muthukrishnan struct fips_val dp; 9636128a67SGowrishankar Muthukrishnan struct fips_val dq; 9736128a67SGowrishankar Muthukrishnan struct fips_val qinv; 9836128a67SGowrishankar Muthukrishnan } rsa; 993d0fad56SMarko Kovacevic 1003d0fad56SMarko Kovacevic struct fips_val pt; 1013d0fad56SMarko Kovacevic struct fips_val ct; 1023d0fad56SMarko Kovacevic struct fips_val iv; 1033d0fad56SMarko Kovacevic enum rte_crypto_op_status status; 1043d0fad56SMarko Kovacevic }; 1053d0fad56SMarko Kovacevic 1063d0fad56SMarko Kovacevic typedef int (*post_prcess_t)(struct fips_val *val); 1073d0fad56SMarko Kovacevic 1083d0fad56SMarko Kovacevic typedef int (*parse_callback_t)(const char *key, char *text, 1093d0fad56SMarko Kovacevic struct fips_val *val); 1103d0fad56SMarko Kovacevic 1113d0fad56SMarko Kovacevic struct fips_test_callback { 1123d0fad56SMarko Kovacevic const char *key; 1133d0fad56SMarko Kovacevic parse_callback_t cb; 1143d0fad56SMarko Kovacevic struct fips_val *val; 1153d0fad56SMarko Kovacevic }; 1163d0fad56SMarko Kovacevic 117cd255ccfSMarko Kovacevic enum fips_aesavs_test_types { 118cd255ccfSMarko Kovacevic AESAVS_TYPE_GFXBOX = 1, 119cd255ccfSMarko Kovacevic AESAVS_TYPE_KEYSBOX, 120cd255ccfSMarko Kovacevic AESAVS_TYPE_VARKEY, 121cd255ccfSMarko Kovacevic AESAVS_TYPE_VARTXT, 122cd255ccfSMarko Kovacevic AESAVS_TYPE_MMT, 123cd255ccfSMarko Kovacevic AESAVS_TYPE_MCT, 1248b8546aaSGowrishankar Muthukrishnan AESAVS_TYPE_AFT, 125c8956fd2SBrian Dooley AESAVS_TYPE_CTR, 126cd255ccfSMarko Kovacevic }; 127cd255ccfSMarko Kovacevic 128527cbf3dSMarko Kovacevic enum fips_tdes_test_types { 129527cbf3dSMarko Kovacevic TDES_INVERSE_PERMUTATION = 0, 130527cbf3dSMarko Kovacevic TDES_PERMUTATION, 131527cbf3dSMarko Kovacevic TDES_SUBSTITUTION_TABLE, 132527cbf3dSMarko Kovacevic TDES_VARIABLE_KEY, 133527cbf3dSMarko Kovacevic TDES_VARIABLE_TEXT, 134527cbf3dSMarko Kovacevic TDES_KAT, 13564569ffaSGowrishankar Muthukrishnan TDES_AFT, /* Functional Test */ 136527cbf3dSMarko Kovacevic TDES_MCT, /* Monte Carlo (Modes) Test */ 137527cbf3dSMarko Kovacevic TDES_MMT /* Multi block Message Test */ 138527cbf3dSMarko Kovacevic }; 139527cbf3dSMarko Kovacevic 140efe3a8dbSMichael Shamis enum fips_tdes_test_mode { 141efe3a8dbSMichael Shamis TDES_MODE_CBC = 0, 142efe3a8dbSMichael Shamis TDES_MODE_ECB 143efe3a8dbSMichael Shamis }; 144efe3a8dbSMichael Shamis 145305921f4SMarko Kovacevic enum fips_ccm_test_types { 146305921f4SMarko Kovacevic CCM_VADT = 1, /* Variable Associated Data Test */ 147305921f4SMarko Kovacevic CCM_VPT, /* Variable Payload Test */ 148305921f4SMarko Kovacevic CCM_VNT, /* Variable Nonce Test */ 149305921f4SMarko Kovacevic CCM_VTT, /* Variable Tag Test */ 150305921f4SMarko Kovacevic CCM_DVPT, /* Decryption-Verification Process Test */ 151305921f4SMarko Kovacevic }; 152305921f4SMarko Kovacevic 153f4797baeSDamian Nowak enum fips_sha_test_types { 154f4797baeSDamian Nowak SHA_KAT = 0, 155d5c24714SGowrishankar Muthukrishnan SHA_AFT, 156f4797baeSDamian Nowak SHA_MCT 157f4797baeSDamian Nowak }; 158f4797baeSDamian Nowak 15936128a67SGowrishankar Muthukrishnan enum fips_rsa_test_types { 16036128a67SGowrishankar Muthukrishnan RSA_AFT = 0, 16136128a67SGowrishankar Muthukrishnan RSA_GDT, 16236128a67SGowrishankar Muthukrishnan RSA_KAT 16336128a67SGowrishankar Muthukrishnan }; 16436128a67SGowrishankar Muthukrishnan 165cd255ccfSMarko Kovacevic struct aesavs_interim_data { 166cd255ccfSMarko Kovacevic enum fips_aesavs_test_types test_type; 167cd255ccfSMarko Kovacevic uint32_t cipher_algo; 168cd255ccfSMarko Kovacevic uint32_t key_len; 169cd255ccfSMarko Kovacevic }; 170cd255ccfSMarko Kovacevic 171f64adb67SMarko Kovacevic struct hmac_interim_data { 172f64adb67SMarko Kovacevic enum rte_crypto_auth_algorithm algo; 173f64adb67SMarko Kovacevic }; 174f64adb67SMarko Kovacevic 175527cbf3dSMarko Kovacevic struct tdes_interim_data { 176527cbf3dSMarko Kovacevic enum fips_tdes_test_types test_type; 177efe3a8dbSMichael Shamis enum fips_tdes_test_mode test_mode; 178527cbf3dSMarko Kovacevic uint32_t nb_keys; 179527cbf3dSMarko Kovacevic }; 180527cbf3dSMarko Kovacevic 181305921f4SMarko Kovacevic struct ccm_interim_data { 182305921f4SMarko Kovacevic enum fips_ccm_test_types test_type; 183305921f4SMarko Kovacevic uint32_t aad_len; 184305921f4SMarko Kovacevic uint32_t pt_len; 185305921f4SMarko Kovacevic uint32_t digest_len; 186305921f4SMarko Kovacevic uint32_t key_len; 187305921f4SMarko Kovacevic uint32_t iv_len; 188305921f4SMarko Kovacevic }; 189305921f4SMarko Kovacevic 190f4797baeSDamian Nowak struct sha_interim_data { 19136128a67SGowrishankar Muthukrishnan /* keep algo always on top as it is also used in asym digest */ 192f4797baeSDamian Nowak enum rte_crypto_auth_algorithm algo; 19336128a67SGowrishankar Muthukrishnan enum fips_sha_test_types test_type; 194f4797baeSDamian Nowak }; 195f4797baeSDamian Nowak 196d09abf2dSFan Zhang struct gcm_interim_data { 197d09abf2dSFan Zhang uint8_t is_gmac; 198d09abf2dSFan Zhang uint8_t gen_iv; 199d09abf2dSFan Zhang }; 200d09abf2dSFan Zhang 201f8e431edSGowrishankar Muthukrishnan enum xts_tweak_modes { 202f8e431edSGowrishankar Muthukrishnan XTS_TWEAK_MODE_HEX = 0, 203f8e431edSGowrishankar Muthukrishnan XTS_TWEAK_MODE_NUMBER 204f8e431edSGowrishankar Muthukrishnan }; 205f8e431edSGowrishankar Muthukrishnan 206f8e431edSGowrishankar Muthukrishnan struct xts_interim_data { 207f8e431edSGowrishankar Muthukrishnan enum xts_tweak_modes tweak_mode; 208f8e431edSGowrishankar Muthukrishnan }; 209f8e431edSGowrishankar Muthukrishnan 21036128a67SGowrishankar Muthukrishnan struct rsa_interim_data { 21136128a67SGowrishankar Muthukrishnan enum rte_crypto_auth_algorithm auth; 21236128a67SGowrishankar Muthukrishnan uint16_t modulo; 21336128a67SGowrishankar Muthukrishnan uint16_t saltlen; 21436128a67SGowrishankar Muthukrishnan enum rte_crypto_rsa_padding_type padding; 21536128a67SGowrishankar Muthukrishnan enum rte_crypto_rsa_priv_key_type privkey; 216*8ee030b4SGowrishankar Muthukrishnan uint8_t random_msg; 21736128a67SGowrishankar Muthukrishnan }; 21836128a67SGowrishankar Muthukrishnan 2198d70a194SDavid Marchand #ifdef USE_JANSSON 2200b65d54fSGowrishankar Muthukrishnan /* 2210b65d54fSGowrishankar Muthukrishnan * Maximum length of buffer to hold any json string. 2220b65d54fSGowrishankar Muthukrishnan * Esp, in asym op, modulo bits decide char buffer size. 2230b65d54fSGowrishankar Muthukrishnan * max = (modulo / 4) 2240b65d54fSGowrishankar Muthukrishnan */ 2250b65d54fSGowrishankar Muthukrishnan #define FIPS_TEST_JSON_BUF_LEN (4096 / 4) 2260b65d54fSGowrishankar Muthukrishnan 227f556293fSBrandon Lo struct fips_test_json_info { 228f556293fSBrandon Lo /* Information used for reading from json */ 229f556293fSBrandon Lo json_t *json_root; 230f556293fSBrandon Lo json_t *json_vector_set; 231f556293fSBrandon Lo json_t *json_test_group; 232f556293fSBrandon Lo json_t *json_test_case; 233f556293fSBrandon Lo /* Location of json write output */ 234f556293fSBrandon Lo json_t *json_write_root; 235f556293fSBrandon Lo json_t *json_write_group; 236f556293fSBrandon Lo json_t *json_write_set; 237f556293fSBrandon Lo json_t *json_write_case; 238f556293fSBrandon Lo /* Other info */ 239f556293fSBrandon Lo uint8_t is_sample; 240f556293fSBrandon Lo }; 2418d70a194SDavid Marchand #endif /* USE_JANSSON */ 242f556293fSBrandon Lo 2433d0fad56SMarko Kovacevic struct fips_test_interim_info { 2443d0fad56SMarko Kovacevic FILE *fp_rd; 2453d0fad56SMarko Kovacevic FILE *fp_wr; 2463d0fad56SMarko Kovacevic enum file_types file_type; 2473d0fad56SMarko Kovacevic enum fips_test_algorithms algo; 2483d0fad56SMarko Kovacevic char *one_line_text; 2493d0fad56SMarko Kovacevic char *vec[MAX_LINE_PER_VECTOR]; 25032440cdfSAyuj Verma uint32_t vec_start_off; 2513d0fad56SMarko Kovacevic uint32_t nb_vec_lines; 2523d0fad56SMarko Kovacevic char device_name[MAX_STRING_SIZE]; 2539275af3bSOlivier Matz char file_name[MAX_FILE_NAME_SIZE]; 25479365018SArchana Muniganti float version; 2553d0fad56SMarko Kovacevic 256cd255ccfSMarko Kovacevic union { 257cd255ccfSMarko Kovacevic struct aesavs_interim_data aes_data; 258f64adb67SMarko Kovacevic struct hmac_interim_data hmac_data; 259527cbf3dSMarko Kovacevic struct tdes_interim_data tdes_data; 260305921f4SMarko Kovacevic struct ccm_interim_data ccm_data; 261f4797baeSDamian Nowak struct sha_interim_data sha_data; 262d09abf2dSFan Zhang struct gcm_interim_data gcm_data; 263f8e431edSGowrishankar Muthukrishnan struct xts_interim_data xts_data; 26436128a67SGowrishankar Muthukrishnan struct rsa_interim_data rsa_data; 265cd255ccfSMarko Kovacevic } interim_info; 266cd255ccfSMarko Kovacevic 2673d0fad56SMarko Kovacevic enum fips_test_op op; 2683d0fad56SMarko Kovacevic 2693d0fad56SMarko Kovacevic const struct fips_test_callback *callbacks; 2703d0fad56SMarko Kovacevic const struct fips_test_callback *interim_callbacks; 2713d0fad56SMarko Kovacevic const struct fips_test_callback *writeback_callbacks; 2723d0fad56SMarko Kovacevic 2730bd998fbSGowrishankar Muthukrishnan post_prcess_t parse_interim_writeback; 2743d0fad56SMarko Kovacevic post_prcess_t parse_writeback; 2753d0fad56SMarko Kovacevic post_prcess_t kat_check; 2763d0fad56SMarko Kovacevic }; 2773d0fad56SMarko Kovacevic 2783d0fad56SMarko Kovacevic extern struct fips_test_vector vec; 2793d0fad56SMarko Kovacevic extern struct fips_test_interim_info info; 2803d0fad56SMarko Kovacevic 2818d70a194SDavid Marchand #ifdef USE_JANSSON 282f556293fSBrandon Lo extern struct fips_test_json_info json_info; 2838d70a194SDavid Marchand #endif /* USE_JANSSON */ 284f556293fSBrandon Lo 2853d0fad56SMarko Kovacevic int 2863d0fad56SMarko Kovacevic fips_test_init(const char *req_file_path, const char *rsp_file_path, 2873d0fad56SMarko Kovacevic const char *device_name); 2883d0fad56SMarko Kovacevic 2893d0fad56SMarko Kovacevic void 2903d0fad56SMarko Kovacevic fips_test_clear(void); 2913d0fad56SMarko Kovacevic 2923d0fad56SMarko Kovacevic int 2933d0fad56SMarko Kovacevic fips_test_fetch_one_block(void); 2943d0fad56SMarko Kovacevic 2953d0fad56SMarko Kovacevic int 2963d0fad56SMarko Kovacevic fips_test_parse_one_case(void); 2973d0fad56SMarko Kovacevic 2983d0fad56SMarko Kovacevic void 2993d0fad56SMarko Kovacevic fips_test_write_one_case(void); 3003d0fad56SMarko Kovacevic 3018d70a194SDavid Marchand #ifdef USE_JANSSON 302f556293fSBrandon Lo int 303f556293fSBrandon Lo fips_test_parse_one_json_vector_set(void); 304f556293fSBrandon Lo 305f556293fSBrandon Lo int 306f556293fSBrandon Lo fips_test_parse_one_json_group(void); 307f556293fSBrandon Lo 308f556293fSBrandon Lo int 309f556293fSBrandon Lo fips_test_parse_one_json_case(void); 310b09aac2dSBrandon Lo 311b09aac2dSBrandon Lo int 312b09aac2dSBrandon Lo parse_test_gcm_json_init(void); 313443c93d8SBrandon Lo 314443c93d8SBrandon Lo int 315443c93d8SBrandon Lo parse_test_hmac_json_init(void); 316443c93d8SBrandon Lo 317443c93d8SBrandon Lo int 318443c93d8SBrandon Lo parse_test_hmac_json_algorithm(void); 319d3b50557SBrandon Lo 320d3b50557SBrandon Lo int 321d3b50557SBrandon Lo parse_test_cmac_json_init(void); 3228b8546aaSGowrishankar Muthukrishnan 3238b8546aaSGowrishankar Muthukrishnan int 3248b8546aaSGowrishankar Muthukrishnan parse_test_aes_json_init(void); 325f8e431edSGowrishankar Muthukrishnan 326f8e431edSGowrishankar Muthukrishnan int 327f8e431edSGowrishankar Muthukrishnan parse_test_xts_json_init(void); 328d5c24714SGowrishankar Muthukrishnan 329d5c24714SGowrishankar Muthukrishnan int 330d5c24714SGowrishankar Muthukrishnan parse_test_sha_json_init(void); 331d5c24714SGowrishankar Muthukrishnan 332d5c24714SGowrishankar Muthukrishnan int 333d5c24714SGowrishankar Muthukrishnan parse_test_sha_json_algorithm(void); 334d5c24714SGowrishankar Muthukrishnan 335d5c24714SGowrishankar Muthukrishnan int 336d5c24714SGowrishankar Muthukrishnan parse_test_sha_json_test_type(void); 33764569ffaSGowrishankar Muthukrishnan 33864569ffaSGowrishankar Muthukrishnan int 33964569ffaSGowrishankar Muthukrishnan parse_test_tdes_json_init(void); 34036128a67SGowrishankar Muthukrishnan 34136128a67SGowrishankar Muthukrishnan int 34236128a67SGowrishankar Muthukrishnan parse_test_rsa_json_init(void); 343*8ee030b4SGowrishankar Muthukrishnan 344*8ee030b4SGowrishankar Muthukrishnan int 345*8ee030b4SGowrishankar Muthukrishnan fips_test_randomize_message(struct fips_val *msg, struct fips_val *rand); 3468d70a194SDavid Marchand #endif /* USE_JANSSON */ 347f556293fSBrandon Lo 3483d0fad56SMarko Kovacevic int 349cd255ccfSMarko Kovacevic parse_test_aes_init(void); 350cd255ccfSMarko Kovacevic 351cd255ccfSMarko Kovacevic int 352527cbf3dSMarko Kovacevic parse_test_tdes_init(void); 353527cbf3dSMarko Kovacevic 354527cbf3dSMarko Kovacevic int 355f64adb67SMarko Kovacevic parse_test_hmac_init(void); 356f64adb67SMarko Kovacevic 357f64adb67SMarko Kovacevic int 3584aaad299SMarko Kovacevic parse_test_gcm_init(void); 3594aaad299SMarko Kovacevic 3604aaad299SMarko Kovacevic int 361ac026f46SMarko Kovacevic parse_test_cmac_init(void); 362ac026f46SMarko Kovacevic 363ac026f46SMarko Kovacevic int 364305921f4SMarko Kovacevic parse_test_ccm_init(void); 365305921f4SMarko Kovacevic 366305921f4SMarko Kovacevic int 367f4797baeSDamian Nowak parse_test_sha_init(void); 368f4797baeSDamian Nowak 369f4797baeSDamian Nowak int 370d5a9ea55SSucharitha Sarananaga parse_test_xts_init(void); 371d5a9ea55SSucharitha Sarananaga 372d5a9ea55SSucharitha Sarananaga int 3733d0fad56SMarko Kovacevic parser_read_uint8_hex(uint8_t *value, const char *p); 3743d0fad56SMarko Kovacevic 3753d0fad56SMarko Kovacevic int 3763d0fad56SMarko Kovacevic parse_uint8_hex_str(const char *key, char *src, struct fips_val *val); 3773d0fad56SMarko Kovacevic 3783d0fad56SMarko Kovacevic int 3793d0fad56SMarko Kovacevic parse_uint8_known_len_hex_str(const char *key, char *src, struct fips_val *val); 3803d0fad56SMarko Kovacevic 3813d0fad56SMarko Kovacevic int 382fc6e6515SIbtisam Tariq parser_read_uint16(uint16_t *value, const char *p); 383fc6e6515SIbtisam Tariq 384fc6e6515SIbtisam Tariq int 3853d0fad56SMarko Kovacevic parser_read_uint32_val(const char *key, char *src, struct fips_val *val); 3863d0fad56SMarko Kovacevic 3873d0fad56SMarko Kovacevic int 3883d0fad56SMarko Kovacevic parser_read_uint32_bit_val(const char *key, char *src, struct fips_val *val); 3893d0fad56SMarko Kovacevic 3903d0fad56SMarko Kovacevic int 3913d0fad56SMarko Kovacevic parser_read_uint32(uint32_t *value, char *p); 3923d0fad56SMarko Kovacevic 3933d0fad56SMarko Kovacevic int 3943d0fad56SMarko Kovacevic parser_read_uint32_val(const char *key, char *src, struct fips_val *val); 3953d0fad56SMarko Kovacevic 3963d0fad56SMarko Kovacevic int 3973d0fad56SMarko Kovacevic writeback_hex_str(const char *key, char *dst, struct fips_val *val); 3983d0fad56SMarko Kovacevic 3993d0fad56SMarko Kovacevic void 4003d0fad56SMarko Kovacevic parse_write_hex_str(struct fips_val *src); 4013d0fad56SMarko Kovacevic 4023d0fad56SMarko Kovacevic int 4033d0fad56SMarko Kovacevic update_info_vec(uint32_t count); 4043d0fad56SMarko Kovacevic 405d09abf2dSFan Zhang typedef int (*fips_test_one_case_t)(void); 406d09abf2dSFan Zhang typedef int (*fips_prepare_op_t)(void); 40736128a67SGowrishankar Muthukrishnan typedef int (*fips_prepare_sym_xform_t)(struct rte_crypto_sym_xform *); 40836128a67SGowrishankar Muthukrishnan typedef int (*fips_prepare_asym_xform_t)(struct rte_crypto_asym_xform *); 409d09abf2dSFan Zhang 410d09abf2dSFan Zhang struct fips_test_ops { 41136128a67SGowrishankar Muthukrishnan fips_prepare_sym_xform_t prepare_sym_xform; 41236128a67SGowrishankar Muthukrishnan fips_prepare_asym_xform_t prepare_asym_xform; 41336128a67SGowrishankar Muthukrishnan fips_prepare_op_t prepare_sym_op; 41436128a67SGowrishankar Muthukrishnan fips_prepare_op_t prepare_asym_op; 415d09abf2dSFan Zhang fips_test_one_case_t test; 416d09abf2dSFan Zhang }; 417d09abf2dSFan Zhang 418d09abf2dSFan Zhang extern struct fips_test_ops test_ops; 419d09abf2dSFan Zhang 420d09abf2dSFan Zhang int prepare_aead_op(void); 421d09abf2dSFan Zhang 422d09abf2dSFan Zhang int prepare_auth_op(void); 423d09abf2dSFan Zhang 424d09abf2dSFan Zhang int prepare_gcm_xform(struct rte_crypto_sym_xform *xform); 425d09abf2dSFan Zhang 426d09abf2dSFan Zhang int prepare_gmac_xform(struct rte_crypto_sym_xform *xform); 427d09abf2dSFan Zhang 4288bc8ba43SGowrishankar Muthukrishnan int parse_test_sha_hash_size(enum rte_crypto_auth_algorithm algo); 4298bc8ba43SGowrishankar Muthukrishnan 4303d0fad56SMarko Kovacevic #endif 431