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, 493d0fad56SMarko Kovacevic FIPS_TEST_ALGO_MAX 503d0fad56SMarko Kovacevic }; 513d0fad56SMarko Kovacevic 523d0fad56SMarko Kovacevic enum file_types { 533d0fad56SMarko Kovacevic FIPS_TYPE_REQ = 1, 543d0fad56SMarko Kovacevic FIPS_TYPE_FAX, 55f556293fSBrandon Lo FIPS_TYPE_RSP, 56f556293fSBrandon Lo FIPS_TYPE_JSON, 573d0fad56SMarko Kovacevic }; 583d0fad56SMarko Kovacevic 593d0fad56SMarko Kovacevic enum fips_test_op { 603d0fad56SMarko Kovacevic FIPS_TEST_ENC_AUTH_GEN = 1, 613d0fad56SMarko Kovacevic FIPS_TEST_DEC_AUTH_VERIF, 6236128a67SGowrishankar Muthukrishnan FIPS_TEST_ASYM_KEYGEN, 6336128a67SGowrishankar Muthukrishnan FIPS_TEST_ASYM_SIGGEN, 6436128a67SGowrishankar Muthukrishnan FIPS_TEST_ASYM_SIGVER 653d0fad56SMarko Kovacevic }; 663d0fad56SMarko Kovacevic 673d0fad56SMarko Kovacevic #define MAX_LINE_PER_VECTOR 16 683d0fad56SMarko Kovacevic 693d0fad56SMarko Kovacevic struct fips_val { 703d0fad56SMarko Kovacevic uint8_t *val; 713d0fad56SMarko Kovacevic uint32_t len; 723d0fad56SMarko Kovacevic }; 733d0fad56SMarko Kovacevic 743d0fad56SMarko Kovacevic struct fips_test_vector { 753d0fad56SMarko Kovacevic union { 763d0fad56SMarko Kovacevic struct { 773d0fad56SMarko Kovacevic struct fips_val key; 783d0fad56SMarko Kovacevic struct fips_val digest; 793d0fad56SMarko Kovacevic struct fips_val auth_aad; 803d0fad56SMarko Kovacevic struct fips_val aad; 813d0fad56SMarko Kovacevic } cipher_auth; 823d0fad56SMarko Kovacevic struct { 833d0fad56SMarko Kovacevic struct fips_val key; 843d0fad56SMarko Kovacevic struct fips_val digest; 853d0fad56SMarko Kovacevic struct fips_val aad; 863d0fad56SMarko Kovacevic } aead; 873d0fad56SMarko Kovacevic }; 8836128a67SGowrishankar Muthukrishnan struct { 8936128a67SGowrishankar Muthukrishnan struct fips_val seed; 9036128a67SGowrishankar Muthukrishnan struct fips_val signature; 9136128a67SGowrishankar Muthukrishnan struct fips_val e; 9236128a67SGowrishankar Muthukrishnan struct fips_val n; 9336128a67SGowrishankar Muthukrishnan struct fips_val d; 9436128a67SGowrishankar Muthukrishnan struct fips_val p; 9536128a67SGowrishankar Muthukrishnan struct fips_val q; 9636128a67SGowrishankar Muthukrishnan struct fips_val dp; 9736128a67SGowrishankar Muthukrishnan struct fips_val dq; 9836128a67SGowrishankar Muthukrishnan struct fips_val qinv; 9936128a67SGowrishankar Muthukrishnan } rsa; 100b455d261SGowrishankar Muthukrishnan struct { 101b455d261SGowrishankar Muthukrishnan struct fips_val seed; 102b455d261SGowrishankar Muthukrishnan struct fips_val pkey; 103b455d261SGowrishankar Muthukrishnan struct fips_val qx; 104b455d261SGowrishankar Muthukrishnan struct fips_val qy; 105b455d261SGowrishankar Muthukrishnan struct fips_val r; 106b455d261SGowrishankar Muthukrishnan struct fips_val s; 107b455d261SGowrishankar Muthukrishnan struct fips_val k; 108b455d261SGowrishankar Muthukrishnan } ecdsa; 1093d0fad56SMarko Kovacevic 1103d0fad56SMarko Kovacevic struct fips_val pt; 1113d0fad56SMarko Kovacevic struct fips_val ct; 1123d0fad56SMarko Kovacevic struct fips_val iv; 1133d0fad56SMarko Kovacevic enum rte_crypto_op_status status; 1143d0fad56SMarko Kovacevic }; 1153d0fad56SMarko Kovacevic 1163d0fad56SMarko Kovacevic typedef int (*post_prcess_t)(struct fips_val *val); 1173d0fad56SMarko Kovacevic 1183d0fad56SMarko Kovacevic typedef int (*parse_callback_t)(const char *key, char *text, 1193d0fad56SMarko Kovacevic struct fips_val *val); 1203d0fad56SMarko Kovacevic 1213d0fad56SMarko Kovacevic struct fips_test_callback { 1223d0fad56SMarko Kovacevic const char *key; 1233d0fad56SMarko Kovacevic parse_callback_t cb; 1243d0fad56SMarko Kovacevic struct fips_val *val; 1253d0fad56SMarko Kovacevic }; 1263d0fad56SMarko Kovacevic 127cd255ccfSMarko Kovacevic enum fips_aesavs_test_types { 128cd255ccfSMarko Kovacevic AESAVS_TYPE_GFXBOX = 1, 129cd255ccfSMarko Kovacevic AESAVS_TYPE_KEYSBOX, 130cd255ccfSMarko Kovacevic AESAVS_TYPE_VARKEY, 131cd255ccfSMarko Kovacevic AESAVS_TYPE_VARTXT, 132cd255ccfSMarko Kovacevic AESAVS_TYPE_MMT, 133cd255ccfSMarko Kovacevic AESAVS_TYPE_MCT, 1348b8546aaSGowrishankar Muthukrishnan AESAVS_TYPE_AFT, 135c8956fd2SBrian Dooley AESAVS_TYPE_CTR, 136cd255ccfSMarko Kovacevic }; 137cd255ccfSMarko Kovacevic 138527cbf3dSMarko Kovacevic enum fips_tdes_test_types { 139527cbf3dSMarko Kovacevic TDES_INVERSE_PERMUTATION = 0, 140527cbf3dSMarko Kovacevic TDES_PERMUTATION, 141527cbf3dSMarko Kovacevic TDES_SUBSTITUTION_TABLE, 142527cbf3dSMarko Kovacevic TDES_VARIABLE_KEY, 143527cbf3dSMarko Kovacevic TDES_VARIABLE_TEXT, 144527cbf3dSMarko Kovacevic TDES_KAT, 14564569ffaSGowrishankar Muthukrishnan TDES_AFT, /* Functional Test */ 146527cbf3dSMarko Kovacevic TDES_MCT, /* Monte Carlo (Modes) Test */ 147527cbf3dSMarko Kovacevic TDES_MMT /* Multi block Message Test */ 148527cbf3dSMarko Kovacevic }; 149527cbf3dSMarko Kovacevic 150efe3a8dbSMichael Shamis enum fips_tdes_test_mode { 151efe3a8dbSMichael Shamis TDES_MODE_CBC = 0, 152efe3a8dbSMichael Shamis TDES_MODE_ECB 153efe3a8dbSMichael Shamis }; 154efe3a8dbSMichael Shamis 155305921f4SMarko Kovacevic enum fips_ccm_test_types { 156305921f4SMarko Kovacevic CCM_VADT = 1, /* Variable Associated Data Test */ 157305921f4SMarko Kovacevic CCM_VPT, /* Variable Payload Test */ 158305921f4SMarko Kovacevic CCM_VNT, /* Variable Nonce Test */ 159305921f4SMarko Kovacevic CCM_VTT, /* Variable Tag Test */ 160305921f4SMarko Kovacevic CCM_DVPT, /* Decryption-Verification Process Test */ 161305921f4SMarko Kovacevic }; 162305921f4SMarko Kovacevic 163f4797baeSDamian Nowak enum fips_sha_test_types { 164f4797baeSDamian Nowak SHA_KAT = 0, 165d5c24714SGowrishankar Muthukrishnan SHA_AFT, 166225f04fbSGowrishankar Muthukrishnan SHA_MCT, 167225f04fbSGowrishankar Muthukrishnan SHAKE_VOT 168f4797baeSDamian Nowak }; 169f4797baeSDamian Nowak 17036128a67SGowrishankar Muthukrishnan enum fips_rsa_test_types { 17136128a67SGowrishankar Muthukrishnan RSA_AFT = 0, 17236128a67SGowrishankar Muthukrishnan RSA_GDT, 17336128a67SGowrishankar Muthukrishnan RSA_KAT 17436128a67SGowrishankar Muthukrishnan }; 17536128a67SGowrishankar Muthukrishnan 176b455d261SGowrishankar Muthukrishnan enum fips_ecdsa_test_types { 177b455d261SGowrishankar Muthukrishnan ECDSA_AFT = 0, 178b455d261SGowrishankar Muthukrishnan }; 179b455d261SGowrishankar Muthukrishnan 180cd255ccfSMarko Kovacevic struct aesavs_interim_data { 181cd255ccfSMarko Kovacevic enum fips_aesavs_test_types test_type; 182cd255ccfSMarko Kovacevic uint32_t cipher_algo; 183cd255ccfSMarko Kovacevic uint32_t key_len; 184cd255ccfSMarko Kovacevic }; 185cd255ccfSMarko Kovacevic 186f64adb67SMarko Kovacevic struct hmac_interim_data { 187f64adb67SMarko Kovacevic enum rte_crypto_auth_algorithm algo; 188f64adb67SMarko Kovacevic }; 189f64adb67SMarko Kovacevic 190527cbf3dSMarko Kovacevic struct tdes_interim_data { 191527cbf3dSMarko Kovacevic enum fips_tdes_test_types test_type; 192efe3a8dbSMichael Shamis enum fips_tdes_test_mode test_mode; 193527cbf3dSMarko Kovacevic uint32_t nb_keys; 194527cbf3dSMarko Kovacevic }; 195527cbf3dSMarko Kovacevic 196305921f4SMarko Kovacevic struct ccm_interim_data { 197305921f4SMarko Kovacevic enum fips_ccm_test_types test_type; 198305921f4SMarko Kovacevic uint32_t aad_len; 199305921f4SMarko Kovacevic uint32_t pt_len; 200305921f4SMarko Kovacevic uint32_t digest_len; 201305921f4SMarko Kovacevic uint32_t key_len; 202305921f4SMarko Kovacevic uint32_t iv_len; 203305921f4SMarko Kovacevic }; 204305921f4SMarko Kovacevic 205f4797baeSDamian Nowak struct sha_interim_data { 20636128a67SGowrishankar Muthukrishnan /* keep algo always on top as it is also used in asym digest */ 207f4797baeSDamian Nowak enum rte_crypto_auth_algorithm algo; 20836128a67SGowrishankar Muthukrishnan enum fips_sha_test_types test_type; 209225f04fbSGowrishankar Muthukrishnan uint8_t min_outlen; 2101ea7940eSGowrishankar Muthukrishnan uint8_t md_blocks; 211f4797baeSDamian Nowak }; 212f4797baeSDamian Nowak 213d09abf2dSFan Zhang struct gcm_interim_data { 214d09abf2dSFan Zhang uint8_t is_gmac; 215d09abf2dSFan Zhang uint8_t gen_iv; 216d09abf2dSFan Zhang }; 217d09abf2dSFan Zhang 218f8e431edSGowrishankar Muthukrishnan enum xts_tweak_modes { 219f8e431edSGowrishankar Muthukrishnan XTS_TWEAK_MODE_HEX = 0, 220f8e431edSGowrishankar Muthukrishnan XTS_TWEAK_MODE_NUMBER 221f8e431edSGowrishankar Muthukrishnan }; 222f8e431edSGowrishankar Muthukrishnan 223f8e431edSGowrishankar Muthukrishnan struct xts_interim_data { 224f8e431edSGowrishankar Muthukrishnan enum xts_tweak_modes tweak_mode; 225f8e431edSGowrishankar Muthukrishnan }; 226f8e431edSGowrishankar Muthukrishnan 22736128a67SGowrishankar Muthukrishnan struct rsa_interim_data { 22836128a67SGowrishankar Muthukrishnan enum rte_crypto_auth_algorithm auth; 22936128a67SGowrishankar Muthukrishnan uint16_t modulo; 23036128a67SGowrishankar Muthukrishnan uint16_t saltlen; 23136128a67SGowrishankar Muthukrishnan enum rte_crypto_rsa_padding_type padding; 23236128a67SGowrishankar Muthukrishnan enum rte_crypto_rsa_priv_key_type privkey; 2338ee030b4SGowrishankar Muthukrishnan uint8_t random_msg; 23436128a67SGowrishankar Muthukrishnan }; 23536128a67SGowrishankar Muthukrishnan 236b455d261SGowrishankar Muthukrishnan struct ecdsa_interim_data { 237b455d261SGowrishankar Muthukrishnan enum rte_crypto_auth_algorithm auth; 238b455d261SGowrishankar Muthukrishnan enum rte_crypto_curve_id curve_id; 239b455d261SGowrishankar Muthukrishnan uint8_t curve_len; 240b455d261SGowrishankar Muthukrishnan uint8_t random_msg; 241b455d261SGowrishankar Muthukrishnan uint8_t pubkey_gen; 242b455d261SGowrishankar Muthukrishnan }; 243b455d261SGowrishankar Muthukrishnan 2448d70a194SDavid Marchand #ifdef USE_JANSSON 2450b65d54fSGowrishankar Muthukrishnan /* 2460b65d54fSGowrishankar Muthukrishnan * Maximum length of buffer to hold any json string. 2470b65d54fSGowrishankar Muthukrishnan * Esp, in asym op, modulo bits decide char buffer size. 2480b65d54fSGowrishankar Muthukrishnan * max = (modulo / 4) 2490b65d54fSGowrishankar Muthukrishnan */ 250*904efb4cSGowrishankar Muthukrishnan #define FIPS_TEST_JSON_BUF_LEN ((4096 / 4) + 1) 2510b65d54fSGowrishankar Muthukrishnan 252f556293fSBrandon Lo struct fips_test_json_info { 253f556293fSBrandon Lo /* Information used for reading from json */ 254f556293fSBrandon Lo json_t *json_root; 255f556293fSBrandon Lo json_t *json_vector_set; 256f556293fSBrandon Lo json_t *json_test_group; 257f556293fSBrandon Lo json_t *json_test_case; 258f556293fSBrandon Lo /* Location of json write output */ 259f556293fSBrandon Lo json_t *json_write_root; 260f556293fSBrandon Lo json_t *json_write_group; 261f556293fSBrandon Lo json_t *json_write_set; 262f556293fSBrandon Lo json_t *json_write_case; 263f556293fSBrandon Lo /* Other info */ 264f556293fSBrandon Lo uint8_t is_sample; 265f556293fSBrandon Lo }; 2668d70a194SDavid Marchand #endif /* USE_JANSSON */ 267f556293fSBrandon Lo 2683d0fad56SMarko Kovacevic struct fips_test_interim_info { 2693d0fad56SMarko Kovacevic FILE *fp_rd; 2703d0fad56SMarko Kovacevic FILE *fp_wr; 2713d0fad56SMarko Kovacevic enum file_types file_type; 2723d0fad56SMarko Kovacevic enum fips_test_algorithms algo; 2733d0fad56SMarko Kovacevic char *one_line_text; 2743d0fad56SMarko Kovacevic char *vec[MAX_LINE_PER_VECTOR]; 27532440cdfSAyuj Verma uint32_t vec_start_off; 2763d0fad56SMarko Kovacevic uint32_t nb_vec_lines; 2773d0fad56SMarko Kovacevic char device_name[MAX_STRING_SIZE]; 2789275af3bSOlivier Matz char file_name[MAX_FILE_NAME_SIZE]; 27979365018SArchana Muniganti float version; 2803d0fad56SMarko Kovacevic 281cd255ccfSMarko Kovacevic union { 282cd255ccfSMarko Kovacevic struct aesavs_interim_data aes_data; 283f64adb67SMarko Kovacevic struct hmac_interim_data hmac_data; 284527cbf3dSMarko Kovacevic struct tdes_interim_data tdes_data; 285305921f4SMarko Kovacevic struct ccm_interim_data ccm_data; 286f4797baeSDamian Nowak struct sha_interim_data sha_data; 287d09abf2dSFan Zhang struct gcm_interim_data gcm_data; 288f8e431edSGowrishankar Muthukrishnan struct xts_interim_data xts_data; 28936128a67SGowrishankar Muthukrishnan struct rsa_interim_data rsa_data; 290b455d261SGowrishankar Muthukrishnan struct ecdsa_interim_data ecdsa_data; 291cd255ccfSMarko Kovacevic } interim_info; 292cd255ccfSMarko Kovacevic 2933d0fad56SMarko Kovacevic enum fips_test_op op; 2943d0fad56SMarko Kovacevic 2953d0fad56SMarko Kovacevic const struct fips_test_callback *callbacks; 2963d0fad56SMarko Kovacevic const struct fips_test_callback *interim_callbacks; 2973d0fad56SMarko Kovacevic const struct fips_test_callback *writeback_callbacks; 2983d0fad56SMarko Kovacevic 2990bd998fbSGowrishankar Muthukrishnan post_prcess_t parse_interim_writeback; 300b455d261SGowrishankar Muthukrishnan post_prcess_t post_interim_writeback; 3013d0fad56SMarko Kovacevic post_prcess_t parse_writeback; 3023d0fad56SMarko Kovacevic post_prcess_t kat_check; 3033d0fad56SMarko Kovacevic }; 3043d0fad56SMarko Kovacevic 3053d0fad56SMarko Kovacevic extern struct fips_test_vector vec; 3063d0fad56SMarko Kovacevic extern struct fips_test_interim_info info; 3073d0fad56SMarko Kovacevic 3088d70a194SDavid Marchand #ifdef USE_JANSSON 309f556293fSBrandon Lo extern struct fips_test_json_info json_info; 3108d70a194SDavid Marchand #endif /* USE_JANSSON */ 311f556293fSBrandon Lo 3123d0fad56SMarko Kovacevic int 3133d0fad56SMarko Kovacevic fips_test_init(const char *req_file_path, const char *rsp_file_path, 3143d0fad56SMarko Kovacevic const char *device_name); 3153d0fad56SMarko Kovacevic 3163d0fad56SMarko Kovacevic void 3173d0fad56SMarko Kovacevic fips_test_clear(void); 3183d0fad56SMarko Kovacevic 3193d0fad56SMarko Kovacevic int 3203d0fad56SMarko Kovacevic fips_test_fetch_one_block(void); 3213d0fad56SMarko Kovacevic 3223d0fad56SMarko Kovacevic int 3233d0fad56SMarko Kovacevic fips_test_parse_one_case(void); 3243d0fad56SMarko Kovacevic 3253d0fad56SMarko Kovacevic void 3263d0fad56SMarko Kovacevic fips_test_write_one_case(void); 3273d0fad56SMarko Kovacevic 3288d70a194SDavid Marchand #ifdef USE_JANSSON 329f556293fSBrandon Lo int 330f556293fSBrandon Lo fips_test_parse_one_json_vector_set(void); 331f556293fSBrandon Lo 332f556293fSBrandon Lo int 333f556293fSBrandon Lo fips_test_parse_one_json_group(void); 334f556293fSBrandon Lo 335f556293fSBrandon Lo int 336f556293fSBrandon Lo fips_test_parse_one_json_case(void); 337b09aac2dSBrandon Lo 338b09aac2dSBrandon Lo int 339b09aac2dSBrandon Lo parse_test_gcm_json_init(void); 340443c93d8SBrandon Lo 341443c93d8SBrandon Lo int 34255a7050eSGowrishankar Muthukrishnan parse_test_ccm_json_init(void); 34355a7050eSGowrishankar Muthukrishnan 34455a7050eSGowrishankar Muthukrishnan int 345443c93d8SBrandon Lo parse_test_hmac_json_init(void); 346443c93d8SBrandon Lo 347443c93d8SBrandon Lo int 348443c93d8SBrandon Lo parse_test_hmac_json_algorithm(void); 349d3b50557SBrandon Lo 350d3b50557SBrandon Lo int 351d3b50557SBrandon Lo parse_test_cmac_json_init(void); 3528b8546aaSGowrishankar Muthukrishnan 3538b8546aaSGowrishankar Muthukrishnan int 3548b8546aaSGowrishankar Muthukrishnan parse_test_aes_json_init(void); 355f8e431edSGowrishankar Muthukrishnan 356f8e431edSGowrishankar Muthukrishnan int 357f8e431edSGowrishankar Muthukrishnan parse_test_xts_json_init(void); 358d5c24714SGowrishankar Muthukrishnan 359d5c24714SGowrishankar Muthukrishnan int 360d5c24714SGowrishankar Muthukrishnan parse_test_sha_json_init(void); 361d5c24714SGowrishankar Muthukrishnan 362d5c24714SGowrishankar Muthukrishnan int 363d5c24714SGowrishankar Muthukrishnan parse_test_sha_json_algorithm(void); 364d5c24714SGowrishankar Muthukrishnan 365d5c24714SGowrishankar Muthukrishnan int 366d5c24714SGowrishankar Muthukrishnan parse_test_sha_json_test_type(void); 36764569ffaSGowrishankar Muthukrishnan 36864569ffaSGowrishankar Muthukrishnan int 36964569ffaSGowrishankar Muthukrishnan parse_test_tdes_json_init(void); 37036128a67SGowrishankar Muthukrishnan 37136128a67SGowrishankar Muthukrishnan int 37236128a67SGowrishankar Muthukrishnan parse_test_rsa_json_init(void); 3738ee030b4SGowrishankar Muthukrishnan 3748ee030b4SGowrishankar Muthukrishnan int 375b455d261SGowrishankar Muthukrishnan parse_test_ecdsa_json_init(void); 376b455d261SGowrishankar Muthukrishnan 377b455d261SGowrishankar Muthukrishnan int 3788ee030b4SGowrishankar Muthukrishnan fips_test_randomize_message(struct fips_val *msg, struct fips_val *rand); 3798d70a194SDavid Marchand #endif /* USE_JANSSON */ 380f556293fSBrandon Lo 3813d0fad56SMarko Kovacevic int 382cd255ccfSMarko Kovacevic parse_test_aes_init(void); 383cd255ccfSMarko Kovacevic 384cd255ccfSMarko Kovacevic int 385527cbf3dSMarko Kovacevic parse_test_tdes_init(void); 386527cbf3dSMarko Kovacevic 387527cbf3dSMarko Kovacevic int 388f64adb67SMarko Kovacevic parse_test_hmac_init(void); 389f64adb67SMarko Kovacevic 390f64adb67SMarko Kovacevic int 3914aaad299SMarko Kovacevic parse_test_gcm_init(void); 3924aaad299SMarko Kovacevic 3934aaad299SMarko Kovacevic int 394ac026f46SMarko Kovacevic parse_test_cmac_init(void); 395ac026f46SMarko Kovacevic 396ac026f46SMarko Kovacevic int 397305921f4SMarko Kovacevic parse_test_ccm_init(void); 398305921f4SMarko Kovacevic 399305921f4SMarko Kovacevic int 400f4797baeSDamian Nowak parse_test_sha_init(void); 401f4797baeSDamian Nowak 402f4797baeSDamian Nowak int 403d5a9ea55SSucharitha Sarananaga parse_test_xts_init(void); 404d5a9ea55SSucharitha Sarananaga 405d5a9ea55SSucharitha Sarananaga int 4063d0fad56SMarko Kovacevic parser_read_uint8_hex(uint8_t *value, const char *p); 4073d0fad56SMarko Kovacevic 4083d0fad56SMarko Kovacevic int 4093d0fad56SMarko Kovacevic parse_uint8_hex_str(const char *key, char *src, struct fips_val *val); 4103d0fad56SMarko Kovacevic 4113d0fad56SMarko Kovacevic int 4123d0fad56SMarko Kovacevic parse_uint8_known_len_hex_str(const char *key, char *src, struct fips_val *val); 4133d0fad56SMarko Kovacevic 4143d0fad56SMarko Kovacevic int 415fc6e6515SIbtisam Tariq parser_read_uint16(uint16_t *value, const char *p); 416fc6e6515SIbtisam Tariq 417fc6e6515SIbtisam Tariq int 4183d0fad56SMarko Kovacevic parser_read_uint32_val(const char *key, char *src, struct fips_val *val); 4193d0fad56SMarko Kovacevic 4203d0fad56SMarko Kovacevic int 4213d0fad56SMarko Kovacevic parser_read_uint32_bit_val(const char *key, char *src, struct fips_val *val); 4223d0fad56SMarko Kovacevic 4233d0fad56SMarko Kovacevic int 4243d0fad56SMarko Kovacevic parser_read_uint32(uint32_t *value, char *p); 4253d0fad56SMarko Kovacevic 4263d0fad56SMarko Kovacevic int 4273d0fad56SMarko Kovacevic parser_read_uint32_val(const char *key, char *src, struct fips_val *val); 4283d0fad56SMarko Kovacevic 4293d0fad56SMarko Kovacevic int 4303d0fad56SMarko Kovacevic writeback_hex_str(const char *key, char *dst, struct fips_val *val); 4313d0fad56SMarko Kovacevic 4323d0fad56SMarko Kovacevic void 4333d0fad56SMarko Kovacevic parse_write_hex_str(struct fips_val *src); 4343d0fad56SMarko Kovacevic 4353d0fad56SMarko Kovacevic int 4363d0fad56SMarko Kovacevic update_info_vec(uint32_t count); 4373d0fad56SMarko Kovacevic 438d09abf2dSFan Zhang typedef int (*fips_test_one_case_t)(void); 439d09abf2dSFan Zhang typedef int (*fips_prepare_op_t)(void); 44036128a67SGowrishankar Muthukrishnan typedef int (*fips_prepare_sym_xform_t)(struct rte_crypto_sym_xform *); 44136128a67SGowrishankar Muthukrishnan typedef int (*fips_prepare_asym_xform_t)(struct rte_crypto_asym_xform *); 442d09abf2dSFan Zhang 443d09abf2dSFan Zhang struct fips_test_ops { 44436128a67SGowrishankar Muthukrishnan fips_prepare_sym_xform_t prepare_sym_xform; 44536128a67SGowrishankar Muthukrishnan fips_prepare_asym_xform_t prepare_asym_xform; 44636128a67SGowrishankar Muthukrishnan fips_prepare_op_t prepare_sym_op; 44736128a67SGowrishankar Muthukrishnan fips_prepare_op_t prepare_asym_op; 448d09abf2dSFan Zhang fips_test_one_case_t test; 449d09abf2dSFan Zhang }; 450d09abf2dSFan Zhang 451d09abf2dSFan Zhang extern struct fips_test_ops test_ops; 452d09abf2dSFan Zhang 453d09abf2dSFan Zhang int prepare_aead_op(void); 454d09abf2dSFan Zhang 455d09abf2dSFan Zhang int prepare_auth_op(void); 456d09abf2dSFan Zhang 457d09abf2dSFan Zhang int prepare_gcm_xform(struct rte_crypto_sym_xform *xform); 458d09abf2dSFan Zhang 459d09abf2dSFan Zhang int prepare_gmac_xform(struct rte_crypto_sym_xform *xform); 460d09abf2dSFan Zhang 4618bc8ba43SGowrishankar Muthukrishnan int parse_test_sha_hash_size(enum rte_crypto_auth_algorithm algo); 4628bc8ba43SGowrishankar Muthukrishnan 4633d0fad56SMarko Kovacevic #endif 464