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, 48b455d261SGowrishankar Muthukrishnan FIPS_TEST_ALGO_ECDSA, 49*12ede9acSGowrishankar Muthukrishnan FIPS_TEST_ALGO_EDDSA, 503d0fad56SMarko Kovacevic FIPS_TEST_ALGO_MAX 513d0fad56SMarko Kovacevic }; 523d0fad56SMarko Kovacevic 533d0fad56SMarko Kovacevic enum file_types { 543d0fad56SMarko Kovacevic FIPS_TYPE_REQ = 1, 553d0fad56SMarko Kovacevic FIPS_TYPE_FAX, 56f556293fSBrandon Lo FIPS_TYPE_RSP, 57f556293fSBrandon Lo FIPS_TYPE_JSON, 583d0fad56SMarko Kovacevic }; 593d0fad56SMarko Kovacevic 603d0fad56SMarko Kovacevic enum fips_test_op { 613d0fad56SMarko Kovacevic FIPS_TEST_ENC_AUTH_GEN = 1, 623d0fad56SMarko Kovacevic FIPS_TEST_DEC_AUTH_VERIF, 6336128a67SGowrishankar Muthukrishnan FIPS_TEST_ASYM_KEYGEN, 6436128a67SGowrishankar Muthukrishnan FIPS_TEST_ASYM_SIGGEN, 6536128a67SGowrishankar Muthukrishnan FIPS_TEST_ASYM_SIGVER 663d0fad56SMarko Kovacevic }; 673d0fad56SMarko Kovacevic 683d0fad56SMarko Kovacevic #define MAX_LINE_PER_VECTOR 16 693d0fad56SMarko Kovacevic 703d0fad56SMarko Kovacevic struct fips_val { 713d0fad56SMarko Kovacevic uint8_t *val; 723d0fad56SMarko Kovacevic uint32_t len; 733d0fad56SMarko Kovacevic }; 743d0fad56SMarko Kovacevic 753d0fad56SMarko Kovacevic struct fips_test_vector { 763d0fad56SMarko Kovacevic union { 773d0fad56SMarko Kovacevic struct { 783d0fad56SMarko Kovacevic struct fips_val key; 793d0fad56SMarko Kovacevic struct fips_val digest; 803d0fad56SMarko Kovacevic struct fips_val auth_aad; 813d0fad56SMarko Kovacevic struct fips_val aad; 823d0fad56SMarko Kovacevic } cipher_auth; 833d0fad56SMarko Kovacevic struct { 843d0fad56SMarko Kovacevic struct fips_val key; 853d0fad56SMarko Kovacevic struct fips_val digest; 863d0fad56SMarko Kovacevic struct fips_val aad; 873d0fad56SMarko Kovacevic } aead; 883d0fad56SMarko Kovacevic }; 8936128a67SGowrishankar Muthukrishnan struct { 9036128a67SGowrishankar Muthukrishnan struct fips_val seed; 9136128a67SGowrishankar Muthukrishnan struct fips_val signature; 9236128a67SGowrishankar Muthukrishnan struct fips_val e; 9336128a67SGowrishankar Muthukrishnan struct fips_val n; 9436128a67SGowrishankar Muthukrishnan struct fips_val d; 9536128a67SGowrishankar Muthukrishnan struct fips_val p; 9636128a67SGowrishankar Muthukrishnan struct fips_val q; 9736128a67SGowrishankar Muthukrishnan struct fips_val dp; 9836128a67SGowrishankar Muthukrishnan struct fips_val dq; 9936128a67SGowrishankar Muthukrishnan struct fips_val qinv; 10036128a67SGowrishankar Muthukrishnan } rsa; 101b455d261SGowrishankar Muthukrishnan struct { 102b455d261SGowrishankar Muthukrishnan struct fips_val seed; 103b455d261SGowrishankar Muthukrishnan struct fips_val pkey; 104b455d261SGowrishankar Muthukrishnan struct fips_val qx; 105b455d261SGowrishankar Muthukrishnan struct fips_val qy; 106b455d261SGowrishankar Muthukrishnan struct fips_val r; 107b455d261SGowrishankar Muthukrishnan struct fips_val s; 108b455d261SGowrishankar Muthukrishnan struct fips_val k; 109b455d261SGowrishankar Muthukrishnan } ecdsa; 110*12ede9acSGowrishankar Muthukrishnan struct { 111*12ede9acSGowrishankar Muthukrishnan struct fips_val pkey; 112*12ede9acSGowrishankar Muthukrishnan struct fips_val q; 113*12ede9acSGowrishankar Muthukrishnan struct fips_val ctx; 114*12ede9acSGowrishankar Muthukrishnan struct fips_val sign; 115*12ede9acSGowrishankar Muthukrishnan } eddsa; 1163d0fad56SMarko Kovacevic 1173d0fad56SMarko Kovacevic struct fips_val pt; 1183d0fad56SMarko Kovacevic struct fips_val ct; 1193d0fad56SMarko Kovacevic struct fips_val iv; 1203d0fad56SMarko Kovacevic enum rte_crypto_op_status status; 1213d0fad56SMarko Kovacevic }; 1223d0fad56SMarko Kovacevic 1233d0fad56SMarko Kovacevic typedef int (*post_prcess_t)(struct fips_val *val); 1243d0fad56SMarko Kovacevic 1253d0fad56SMarko Kovacevic typedef int (*parse_callback_t)(const char *key, char *text, 1263d0fad56SMarko Kovacevic struct fips_val *val); 1273d0fad56SMarko Kovacevic 1283d0fad56SMarko Kovacevic struct fips_test_callback { 1293d0fad56SMarko Kovacevic const char *key; 1303d0fad56SMarko Kovacevic parse_callback_t cb; 1313d0fad56SMarko Kovacevic struct fips_val *val; 1323d0fad56SMarko Kovacevic }; 1333d0fad56SMarko Kovacevic 134cd255ccfSMarko Kovacevic enum fips_aesavs_test_types { 135cd255ccfSMarko Kovacevic AESAVS_TYPE_GFXBOX = 1, 136cd255ccfSMarko Kovacevic AESAVS_TYPE_KEYSBOX, 137cd255ccfSMarko Kovacevic AESAVS_TYPE_VARKEY, 138cd255ccfSMarko Kovacevic AESAVS_TYPE_VARTXT, 139cd255ccfSMarko Kovacevic AESAVS_TYPE_MMT, 140cd255ccfSMarko Kovacevic AESAVS_TYPE_MCT, 1418b8546aaSGowrishankar Muthukrishnan AESAVS_TYPE_AFT, 142c8956fd2SBrian Dooley AESAVS_TYPE_CTR, 143cd255ccfSMarko Kovacevic }; 144cd255ccfSMarko Kovacevic 145527cbf3dSMarko Kovacevic enum fips_tdes_test_types { 146527cbf3dSMarko Kovacevic TDES_INVERSE_PERMUTATION = 0, 147527cbf3dSMarko Kovacevic TDES_PERMUTATION, 148527cbf3dSMarko Kovacevic TDES_SUBSTITUTION_TABLE, 149527cbf3dSMarko Kovacevic TDES_VARIABLE_KEY, 150527cbf3dSMarko Kovacevic TDES_VARIABLE_TEXT, 151527cbf3dSMarko Kovacevic TDES_KAT, 15264569ffaSGowrishankar Muthukrishnan TDES_AFT, /* Functional Test */ 153527cbf3dSMarko Kovacevic TDES_MCT, /* Monte Carlo (Modes) Test */ 154527cbf3dSMarko Kovacevic TDES_MMT /* Multi block Message Test */ 155527cbf3dSMarko Kovacevic }; 156527cbf3dSMarko Kovacevic 157efe3a8dbSMichael Shamis enum fips_tdes_test_mode { 158efe3a8dbSMichael Shamis TDES_MODE_CBC = 0, 159efe3a8dbSMichael Shamis TDES_MODE_ECB 160efe3a8dbSMichael Shamis }; 161efe3a8dbSMichael Shamis 162305921f4SMarko Kovacevic enum fips_ccm_test_types { 163305921f4SMarko Kovacevic CCM_VADT = 1, /* Variable Associated Data Test */ 164305921f4SMarko Kovacevic CCM_VPT, /* Variable Payload Test */ 165305921f4SMarko Kovacevic CCM_VNT, /* Variable Nonce Test */ 166305921f4SMarko Kovacevic CCM_VTT, /* Variable Tag Test */ 167305921f4SMarko Kovacevic CCM_DVPT, /* Decryption-Verification Process Test */ 168305921f4SMarko Kovacevic }; 169305921f4SMarko Kovacevic 170f4797baeSDamian Nowak enum fips_sha_test_types { 171f4797baeSDamian Nowak SHA_KAT = 0, 172d5c24714SGowrishankar Muthukrishnan SHA_AFT, 173225f04fbSGowrishankar Muthukrishnan SHA_MCT, 174225f04fbSGowrishankar Muthukrishnan SHAKE_VOT 175f4797baeSDamian Nowak }; 176f4797baeSDamian Nowak 17736128a67SGowrishankar Muthukrishnan enum fips_rsa_test_types { 17836128a67SGowrishankar Muthukrishnan RSA_AFT = 0, 17936128a67SGowrishankar Muthukrishnan RSA_GDT, 18036128a67SGowrishankar Muthukrishnan RSA_KAT 18136128a67SGowrishankar Muthukrishnan }; 18236128a67SGowrishankar Muthukrishnan 183b455d261SGowrishankar Muthukrishnan enum fips_ecdsa_test_types { 184b455d261SGowrishankar Muthukrishnan ECDSA_AFT = 0, 185b455d261SGowrishankar Muthukrishnan }; 186b455d261SGowrishankar Muthukrishnan 187*12ede9acSGowrishankar Muthukrishnan enum fips_eddsa_test_types { 188*12ede9acSGowrishankar Muthukrishnan EDDSA_AFT = 0, 189*12ede9acSGowrishankar Muthukrishnan EDDSA_BFT 190*12ede9acSGowrishankar Muthukrishnan }; 191*12ede9acSGowrishankar Muthukrishnan 192cd255ccfSMarko Kovacevic struct aesavs_interim_data { 193cd255ccfSMarko Kovacevic enum fips_aesavs_test_types test_type; 194cd255ccfSMarko Kovacevic uint32_t cipher_algo; 195cd255ccfSMarko Kovacevic uint32_t key_len; 196cd255ccfSMarko Kovacevic }; 197cd255ccfSMarko Kovacevic 198f64adb67SMarko Kovacevic struct hmac_interim_data { 199f64adb67SMarko Kovacevic enum rte_crypto_auth_algorithm algo; 200f64adb67SMarko Kovacevic }; 201f64adb67SMarko Kovacevic 202527cbf3dSMarko Kovacevic struct tdes_interim_data { 203527cbf3dSMarko Kovacevic enum fips_tdes_test_types test_type; 204efe3a8dbSMichael Shamis enum fips_tdes_test_mode test_mode; 205527cbf3dSMarko Kovacevic uint32_t nb_keys; 206527cbf3dSMarko Kovacevic }; 207527cbf3dSMarko Kovacevic 208305921f4SMarko Kovacevic struct ccm_interim_data { 209305921f4SMarko Kovacevic enum fips_ccm_test_types test_type; 210305921f4SMarko Kovacevic uint32_t aad_len; 211305921f4SMarko Kovacevic uint32_t pt_len; 212305921f4SMarko Kovacevic uint32_t digest_len; 213305921f4SMarko Kovacevic uint32_t key_len; 214305921f4SMarko Kovacevic uint32_t iv_len; 215305921f4SMarko Kovacevic }; 216305921f4SMarko Kovacevic 217f4797baeSDamian Nowak struct sha_interim_data { 21836128a67SGowrishankar Muthukrishnan /* keep algo always on top as it is also used in asym digest */ 219f4797baeSDamian Nowak enum rte_crypto_auth_algorithm algo; 22036128a67SGowrishankar Muthukrishnan enum fips_sha_test_types test_type; 221225f04fbSGowrishankar Muthukrishnan uint8_t min_outlen; 2221ea7940eSGowrishankar Muthukrishnan uint8_t md_blocks; 223f4797baeSDamian Nowak }; 224f4797baeSDamian Nowak 225d09abf2dSFan Zhang struct gcm_interim_data { 226d09abf2dSFan Zhang uint8_t is_gmac; 227d09abf2dSFan Zhang uint8_t gen_iv; 228d09abf2dSFan Zhang }; 229d09abf2dSFan Zhang 230f8e431edSGowrishankar Muthukrishnan enum xts_tweak_modes { 231f8e431edSGowrishankar Muthukrishnan XTS_TWEAK_MODE_HEX = 0, 232f8e431edSGowrishankar Muthukrishnan XTS_TWEAK_MODE_NUMBER 233f8e431edSGowrishankar Muthukrishnan }; 234f8e431edSGowrishankar Muthukrishnan 235f8e431edSGowrishankar Muthukrishnan struct xts_interim_data { 236f8e431edSGowrishankar Muthukrishnan enum xts_tweak_modes tweak_mode; 237f8e431edSGowrishankar Muthukrishnan }; 238f8e431edSGowrishankar Muthukrishnan 23936128a67SGowrishankar Muthukrishnan struct rsa_interim_data { 24036128a67SGowrishankar Muthukrishnan enum rte_crypto_auth_algorithm auth; 24136128a67SGowrishankar Muthukrishnan uint16_t modulo; 24236128a67SGowrishankar Muthukrishnan uint16_t saltlen; 24336128a67SGowrishankar Muthukrishnan enum rte_crypto_rsa_padding_type padding; 24436128a67SGowrishankar Muthukrishnan enum rte_crypto_rsa_priv_key_type privkey; 2458ee030b4SGowrishankar Muthukrishnan uint8_t random_msg; 24636128a67SGowrishankar Muthukrishnan }; 24736128a67SGowrishankar Muthukrishnan 248b455d261SGowrishankar Muthukrishnan struct ecdsa_interim_data { 249b455d261SGowrishankar Muthukrishnan enum rte_crypto_auth_algorithm auth; 250b455d261SGowrishankar Muthukrishnan enum rte_crypto_curve_id curve_id; 251b455d261SGowrishankar Muthukrishnan uint8_t curve_len; 252b455d261SGowrishankar Muthukrishnan uint8_t random_msg; 253b455d261SGowrishankar Muthukrishnan uint8_t pubkey_gen; 254b455d261SGowrishankar Muthukrishnan }; 255b455d261SGowrishankar Muthukrishnan 256*12ede9acSGowrishankar Muthukrishnan struct eddsa_interim_data { 257*12ede9acSGowrishankar Muthukrishnan enum rte_crypto_curve_id curve_id; 258*12ede9acSGowrishankar Muthukrishnan uint8_t curve_len; 259*12ede9acSGowrishankar Muthukrishnan uint8_t pubkey_gen; 260*12ede9acSGowrishankar Muthukrishnan bool prehash; 261*12ede9acSGowrishankar Muthukrishnan }; 262*12ede9acSGowrishankar Muthukrishnan 2638d70a194SDavid Marchand #ifdef USE_JANSSON 2640b65d54fSGowrishankar Muthukrishnan /* 2650b65d54fSGowrishankar Muthukrishnan * Maximum length of buffer to hold any json string. 2660b65d54fSGowrishankar Muthukrishnan * Esp, in asym op, modulo bits decide char buffer size. 2670b65d54fSGowrishankar Muthukrishnan * max = (modulo / 4) 2680b65d54fSGowrishankar Muthukrishnan */ 269904efb4cSGowrishankar Muthukrishnan #define FIPS_TEST_JSON_BUF_LEN ((4096 / 4) + 1) 2700b65d54fSGowrishankar Muthukrishnan 271f556293fSBrandon Lo struct fips_test_json_info { 272f556293fSBrandon Lo /* Information used for reading from json */ 273f556293fSBrandon Lo json_t *json_root; 274f556293fSBrandon Lo json_t *json_vector_set; 275f556293fSBrandon Lo json_t *json_test_group; 276f556293fSBrandon Lo json_t *json_test_case; 277f556293fSBrandon Lo /* Location of json write output */ 278f556293fSBrandon Lo json_t *json_write_root; 279f556293fSBrandon Lo json_t *json_write_group; 280f556293fSBrandon Lo json_t *json_write_set; 281f556293fSBrandon Lo json_t *json_write_case; 282f556293fSBrandon Lo /* Other info */ 283f556293fSBrandon Lo uint8_t is_sample; 284f556293fSBrandon Lo }; 2858d70a194SDavid Marchand #endif /* USE_JANSSON */ 286f556293fSBrandon Lo 2873d0fad56SMarko Kovacevic struct fips_test_interim_info { 2883d0fad56SMarko Kovacevic FILE *fp_rd; 2893d0fad56SMarko Kovacevic FILE *fp_wr; 2903d0fad56SMarko Kovacevic enum file_types file_type; 2913d0fad56SMarko Kovacevic enum fips_test_algorithms algo; 2923d0fad56SMarko Kovacevic char *one_line_text; 2933d0fad56SMarko Kovacevic char *vec[MAX_LINE_PER_VECTOR]; 29432440cdfSAyuj Verma uint32_t vec_start_off; 2953d0fad56SMarko Kovacevic uint32_t nb_vec_lines; 2963d0fad56SMarko Kovacevic char device_name[MAX_STRING_SIZE]; 2979275af3bSOlivier Matz char file_name[MAX_FILE_NAME_SIZE]; 29879365018SArchana Muniganti float version; 2993d0fad56SMarko Kovacevic 300cd255ccfSMarko Kovacevic union { 301cd255ccfSMarko Kovacevic struct aesavs_interim_data aes_data; 302f64adb67SMarko Kovacevic struct hmac_interim_data hmac_data; 303527cbf3dSMarko Kovacevic struct tdes_interim_data tdes_data; 304305921f4SMarko Kovacevic struct ccm_interim_data ccm_data; 305f4797baeSDamian Nowak struct sha_interim_data sha_data; 306d09abf2dSFan Zhang struct gcm_interim_data gcm_data; 307f8e431edSGowrishankar Muthukrishnan struct xts_interim_data xts_data; 30836128a67SGowrishankar Muthukrishnan struct rsa_interim_data rsa_data; 309b455d261SGowrishankar Muthukrishnan struct ecdsa_interim_data ecdsa_data; 310*12ede9acSGowrishankar Muthukrishnan struct eddsa_interim_data eddsa_data; 311cd255ccfSMarko Kovacevic } interim_info; 312cd255ccfSMarko Kovacevic 3133d0fad56SMarko Kovacevic enum fips_test_op op; 3143d0fad56SMarko Kovacevic 3153d0fad56SMarko Kovacevic const struct fips_test_callback *callbacks; 3163d0fad56SMarko Kovacevic const struct fips_test_callback *interim_callbacks; 3173d0fad56SMarko Kovacevic const struct fips_test_callback *writeback_callbacks; 3183d0fad56SMarko Kovacevic 3190bd998fbSGowrishankar Muthukrishnan post_prcess_t parse_interim_writeback; 320b455d261SGowrishankar Muthukrishnan post_prcess_t post_interim_writeback; 3213d0fad56SMarko Kovacevic post_prcess_t parse_writeback; 3223d0fad56SMarko Kovacevic post_prcess_t kat_check; 3233d0fad56SMarko Kovacevic }; 3243d0fad56SMarko Kovacevic 3253d0fad56SMarko Kovacevic extern struct fips_test_vector vec; 3263d0fad56SMarko Kovacevic extern struct fips_test_interim_info info; 3273d0fad56SMarko Kovacevic 3288d70a194SDavid Marchand #ifdef USE_JANSSON 329f556293fSBrandon Lo extern struct fips_test_json_info json_info; 3308d70a194SDavid Marchand #endif /* USE_JANSSON */ 331f556293fSBrandon Lo 3323d0fad56SMarko Kovacevic int 3333d0fad56SMarko Kovacevic fips_test_init(const char *req_file_path, const char *rsp_file_path, 3343d0fad56SMarko Kovacevic const char *device_name); 3353d0fad56SMarko Kovacevic 3363d0fad56SMarko Kovacevic void 3373d0fad56SMarko Kovacevic fips_test_clear(void); 3383d0fad56SMarko Kovacevic 3393d0fad56SMarko Kovacevic int 3403d0fad56SMarko Kovacevic fips_test_fetch_one_block(void); 3413d0fad56SMarko Kovacevic 3423d0fad56SMarko Kovacevic int 3433d0fad56SMarko Kovacevic fips_test_parse_one_case(void); 3443d0fad56SMarko Kovacevic 3453d0fad56SMarko Kovacevic void 3463d0fad56SMarko Kovacevic fips_test_write_one_case(void); 3473d0fad56SMarko Kovacevic 3488d70a194SDavid Marchand #ifdef USE_JANSSON 349f556293fSBrandon Lo int 350f556293fSBrandon Lo fips_test_parse_one_json_vector_set(void); 351f556293fSBrandon Lo 352f556293fSBrandon Lo int 353f556293fSBrandon Lo fips_test_parse_one_json_group(void); 354f556293fSBrandon Lo 355f556293fSBrandon Lo int 356f556293fSBrandon Lo fips_test_parse_one_json_case(void); 357b09aac2dSBrandon Lo 358b09aac2dSBrandon Lo int 359b09aac2dSBrandon Lo parse_test_gcm_json_init(void); 360443c93d8SBrandon Lo 361443c93d8SBrandon Lo int 36255a7050eSGowrishankar Muthukrishnan parse_test_ccm_json_init(void); 36355a7050eSGowrishankar Muthukrishnan 36455a7050eSGowrishankar Muthukrishnan int 365443c93d8SBrandon Lo parse_test_hmac_json_init(void); 366443c93d8SBrandon Lo 367443c93d8SBrandon Lo int 368443c93d8SBrandon Lo parse_test_hmac_json_algorithm(void); 369d3b50557SBrandon Lo 370d3b50557SBrandon Lo int 371d3b50557SBrandon Lo parse_test_cmac_json_init(void); 3728b8546aaSGowrishankar Muthukrishnan 3738b8546aaSGowrishankar Muthukrishnan int 3748b8546aaSGowrishankar Muthukrishnan parse_test_aes_json_init(void); 375f8e431edSGowrishankar Muthukrishnan 376f8e431edSGowrishankar Muthukrishnan int 377f8e431edSGowrishankar Muthukrishnan parse_test_xts_json_init(void); 378d5c24714SGowrishankar Muthukrishnan 379d5c24714SGowrishankar Muthukrishnan int 380d5c24714SGowrishankar Muthukrishnan parse_test_sha_json_init(void); 381d5c24714SGowrishankar Muthukrishnan 382d5c24714SGowrishankar Muthukrishnan int 383d5c24714SGowrishankar Muthukrishnan parse_test_sha_json_algorithm(void); 384d5c24714SGowrishankar Muthukrishnan 385d5c24714SGowrishankar Muthukrishnan int 386d5c24714SGowrishankar Muthukrishnan parse_test_sha_json_test_type(void); 38764569ffaSGowrishankar Muthukrishnan 38864569ffaSGowrishankar Muthukrishnan int 38964569ffaSGowrishankar Muthukrishnan parse_test_tdes_json_init(void); 39036128a67SGowrishankar Muthukrishnan 39136128a67SGowrishankar Muthukrishnan int 39236128a67SGowrishankar Muthukrishnan parse_test_rsa_json_init(void); 3938ee030b4SGowrishankar Muthukrishnan 3948ee030b4SGowrishankar Muthukrishnan int 395b455d261SGowrishankar Muthukrishnan parse_test_ecdsa_json_init(void); 396b455d261SGowrishankar Muthukrishnan 397b455d261SGowrishankar Muthukrishnan int 398*12ede9acSGowrishankar Muthukrishnan parse_test_eddsa_json_init(void); 399*12ede9acSGowrishankar Muthukrishnan 400*12ede9acSGowrishankar Muthukrishnan int 4018ee030b4SGowrishankar Muthukrishnan fips_test_randomize_message(struct fips_val *msg, struct fips_val *rand); 4028d70a194SDavid Marchand #endif /* USE_JANSSON */ 403f556293fSBrandon Lo 4043d0fad56SMarko Kovacevic int 405cd255ccfSMarko Kovacevic parse_test_aes_init(void); 406cd255ccfSMarko Kovacevic 407cd255ccfSMarko Kovacevic int 408527cbf3dSMarko Kovacevic parse_test_tdes_init(void); 409527cbf3dSMarko Kovacevic 410527cbf3dSMarko Kovacevic int 411f64adb67SMarko Kovacevic parse_test_hmac_init(void); 412f64adb67SMarko Kovacevic 413f64adb67SMarko Kovacevic int 4144aaad299SMarko Kovacevic parse_test_gcm_init(void); 4154aaad299SMarko Kovacevic 4164aaad299SMarko Kovacevic int 417ac026f46SMarko Kovacevic parse_test_cmac_init(void); 418ac026f46SMarko Kovacevic 419ac026f46SMarko Kovacevic int 420305921f4SMarko Kovacevic parse_test_ccm_init(void); 421305921f4SMarko Kovacevic 422305921f4SMarko Kovacevic int 423f4797baeSDamian Nowak parse_test_sha_init(void); 424f4797baeSDamian Nowak 425f4797baeSDamian Nowak int 426d5a9ea55SSucharitha Sarananaga parse_test_xts_init(void); 427d5a9ea55SSucharitha Sarananaga 428d5a9ea55SSucharitha Sarananaga int 4293d0fad56SMarko Kovacevic parser_read_uint8_hex(uint8_t *value, const char *p); 4303d0fad56SMarko Kovacevic 4313d0fad56SMarko Kovacevic int 4323d0fad56SMarko Kovacevic parse_uint8_hex_str(const char *key, char *src, struct fips_val *val); 4333d0fad56SMarko Kovacevic 4343d0fad56SMarko Kovacevic int 4353d0fad56SMarko Kovacevic parse_uint8_known_len_hex_str(const char *key, char *src, struct fips_val *val); 4363d0fad56SMarko Kovacevic 4373d0fad56SMarko Kovacevic int 438fc6e6515SIbtisam Tariq parser_read_uint16(uint16_t *value, const char *p); 439fc6e6515SIbtisam Tariq 440fc6e6515SIbtisam Tariq int 4413d0fad56SMarko Kovacevic parser_read_uint32_val(const char *key, char *src, struct fips_val *val); 4423d0fad56SMarko Kovacevic 4433d0fad56SMarko Kovacevic int 4443d0fad56SMarko Kovacevic parser_read_uint32_bit_val(const char *key, char *src, struct fips_val *val); 4453d0fad56SMarko Kovacevic 4463d0fad56SMarko Kovacevic int 4473d0fad56SMarko Kovacevic parser_read_uint32(uint32_t *value, char *p); 4483d0fad56SMarko Kovacevic 4493d0fad56SMarko Kovacevic int 4503d0fad56SMarko Kovacevic parser_read_uint32_val(const char *key, char *src, struct fips_val *val); 4513d0fad56SMarko Kovacevic 4523d0fad56SMarko Kovacevic int 4533d0fad56SMarko Kovacevic writeback_hex_str(const char *key, char *dst, struct fips_val *val); 4543d0fad56SMarko Kovacevic 4553d0fad56SMarko Kovacevic void 4563d0fad56SMarko Kovacevic parse_write_hex_str(struct fips_val *src); 4573d0fad56SMarko Kovacevic 4583d0fad56SMarko Kovacevic int 4593d0fad56SMarko Kovacevic update_info_vec(uint32_t count); 4603d0fad56SMarko Kovacevic 461d09abf2dSFan Zhang typedef int (*fips_test_one_case_t)(void); 462d09abf2dSFan Zhang typedef int (*fips_prepare_op_t)(void); 46336128a67SGowrishankar Muthukrishnan typedef int (*fips_prepare_sym_xform_t)(struct rte_crypto_sym_xform *); 46436128a67SGowrishankar Muthukrishnan typedef int (*fips_prepare_asym_xform_t)(struct rte_crypto_asym_xform *); 465d09abf2dSFan Zhang 466d09abf2dSFan Zhang struct fips_test_ops { 46736128a67SGowrishankar Muthukrishnan fips_prepare_sym_xform_t prepare_sym_xform; 46836128a67SGowrishankar Muthukrishnan fips_prepare_asym_xform_t prepare_asym_xform; 46936128a67SGowrishankar Muthukrishnan fips_prepare_op_t prepare_sym_op; 47036128a67SGowrishankar Muthukrishnan fips_prepare_op_t prepare_asym_op; 471d09abf2dSFan Zhang fips_test_one_case_t test; 472d09abf2dSFan Zhang }; 473d09abf2dSFan Zhang 474d09abf2dSFan Zhang extern struct fips_test_ops test_ops; 475d09abf2dSFan Zhang 476d09abf2dSFan Zhang int prepare_aead_op(void); 477d09abf2dSFan Zhang 478d09abf2dSFan Zhang int prepare_auth_op(void); 479d09abf2dSFan Zhang 480d09abf2dSFan Zhang int prepare_gcm_xform(struct rte_crypto_sym_xform *xform); 481d09abf2dSFan Zhang 482d09abf2dSFan Zhang int prepare_gmac_xform(struct rte_crypto_sym_xform *xform); 483d09abf2dSFan Zhang 4848bc8ba43SGowrishankar Muthukrishnan int parse_test_sha_hash_size(enum rte_crypto_auth_algorithm algo); 4858bc8ba43SGowrishankar Muthukrishnan 4863d0fad56SMarko Kovacevic #endif 487