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, 48*b455d261SGowrishankar 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; 100*b455d261SGowrishankar Muthukrishnan struct { 101*b455d261SGowrishankar Muthukrishnan struct fips_val seed; 102*b455d261SGowrishankar Muthukrishnan struct fips_val pkey; 103*b455d261SGowrishankar Muthukrishnan struct fips_val qx; 104*b455d261SGowrishankar Muthukrishnan struct fips_val qy; 105*b455d261SGowrishankar Muthukrishnan struct fips_val r; 106*b455d261SGowrishankar Muthukrishnan struct fips_val s; 107*b455d261SGowrishankar Muthukrishnan struct fips_val k; 108*b455d261SGowrishankar 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, 166f4797baeSDamian Nowak SHA_MCT 167f4797baeSDamian Nowak }; 168f4797baeSDamian Nowak 16936128a67SGowrishankar Muthukrishnan enum fips_rsa_test_types { 17036128a67SGowrishankar Muthukrishnan RSA_AFT = 0, 17136128a67SGowrishankar Muthukrishnan RSA_GDT, 17236128a67SGowrishankar Muthukrishnan RSA_KAT 17336128a67SGowrishankar Muthukrishnan }; 17436128a67SGowrishankar Muthukrishnan 175*b455d261SGowrishankar Muthukrishnan enum fips_ecdsa_test_types { 176*b455d261SGowrishankar Muthukrishnan ECDSA_AFT = 0, 177*b455d261SGowrishankar Muthukrishnan }; 178*b455d261SGowrishankar Muthukrishnan 179cd255ccfSMarko Kovacevic struct aesavs_interim_data { 180cd255ccfSMarko Kovacevic enum fips_aesavs_test_types test_type; 181cd255ccfSMarko Kovacevic uint32_t cipher_algo; 182cd255ccfSMarko Kovacevic uint32_t key_len; 183cd255ccfSMarko Kovacevic }; 184cd255ccfSMarko Kovacevic 185f64adb67SMarko Kovacevic struct hmac_interim_data { 186f64adb67SMarko Kovacevic enum rte_crypto_auth_algorithm algo; 187f64adb67SMarko Kovacevic }; 188f64adb67SMarko Kovacevic 189527cbf3dSMarko Kovacevic struct tdes_interim_data { 190527cbf3dSMarko Kovacevic enum fips_tdes_test_types test_type; 191efe3a8dbSMichael Shamis enum fips_tdes_test_mode test_mode; 192527cbf3dSMarko Kovacevic uint32_t nb_keys; 193527cbf3dSMarko Kovacevic }; 194527cbf3dSMarko Kovacevic 195305921f4SMarko Kovacevic struct ccm_interim_data { 196305921f4SMarko Kovacevic enum fips_ccm_test_types test_type; 197305921f4SMarko Kovacevic uint32_t aad_len; 198305921f4SMarko Kovacevic uint32_t pt_len; 199305921f4SMarko Kovacevic uint32_t digest_len; 200305921f4SMarko Kovacevic uint32_t key_len; 201305921f4SMarko Kovacevic uint32_t iv_len; 202305921f4SMarko Kovacevic }; 203305921f4SMarko Kovacevic 204f4797baeSDamian Nowak struct sha_interim_data { 20536128a67SGowrishankar Muthukrishnan /* keep algo always on top as it is also used in asym digest */ 206f4797baeSDamian Nowak enum rte_crypto_auth_algorithm algo; 20736128a67SGowrishankar Muthukrishnan enum fips_sha_test_types test_type; 208f4797baeSDamian Nowak }; 209f4797baeSDamian Nowak 210d09abf2dSFan Zhang struct gcm_interim_data { 211d09abf2dSFan Zhang uint8_t is_gmac; 212d09abf2dSFan Zhang uint8_t gen_iv; 213d09abf2dSFan Zhang }; 214d09abf2dSFan Zhang 215f8e431edSGowrishankar Muthukrishnan enum xts_tweak_modes { 216f8e431edSGowrishankar Muthukrishnan XTS_TWEAK_MODE_HEX = 0, 217f8e431edSGowrishankar Muthukrishnan XTS_TWEAK_MODE_NUMBER 218f8e431edSGowrishankar Muthukrishnan }; 219f8e431edSGowrishankar Muthukrishnan 220f8e431edSGowrishankar Muthukrishnan struct xts_interim_data { 221f8e431edSGowrishankar Muthukrishnan enum xts_tweak_modes tweak_mode; 222f8e431edSGowrishankar Muthukrishnan }; 223f8e431edSGowrishankar Muthukrishnan 22436128a67SGowrishankar Muthukrishnan struct rsa_interim_data { 22536128a67SGowrishankar Muthukrishnan enum rte_crypto_auth_algorithm auth; 22636128a67SGowrishankar Muthukrishnan uint16_t modulo; 22736128a67SGowrishankar Muthukrishnan uint16_t saltlen; 22836128a67SGowrishankar Muthukrishnan enum rte_crypto_rsa_padding_type padding; 22936128a67SGowrishankar Muthukrishnan enum rte_crypto_rsa_priv_key_type privkey; 2308ee030b4SGowrishankar Muthukrishnan uint8_t random_msg; 23136128a67SGowrishankar Muthukrishnan }; 23236128a67SGowrishankar Muthukrishnan 233*b455d261SGowrishankar Muthukrishnan struct ecdsa_interim_data { 234*b455d261SGowrishankar Muthukrishnan enum rte_crypto_auth_algorithm auth; 235*b455d261SGowrishankar Muthukrishnan enum rte_crypto_curve_id curve_id; 236*b455d261SGowrishankar Muthukrishnan uint8_t curve_len; 237*b455d261SGowrishankar Muthukrishnan uint8_t random_msg; 238*b455d261SGowrishankar Muthukrishnan uint8_t pubkey_gen; 239*b455d261SGowrishankar Muthukrishnan }; 240*b455d261SGowrishankar Muthukrishnan 2418d70a194SDavid Marchand #ifdef USE_JANSSON 2420b65d54fSGowrishankar Muthukrishnan /* 2430b65d54fSGowrishankar Muthukrishnan * Maximum length of buffer to hold any json string. 2440b65d54fSGowrishankar Muthukrishnan * Esp, in asym op, modulo bits decide char buffer size. 2450b65d54fSGowrishankar Muthukrishnan * max = (modulo / 4) 2460b65d54fSGowrishankar Muthukrishnan */ 2470b65d54fSGowrishankar Muthukrishnan #define FIPS_TEST_JSON_BUF_LEN (4096 / 4) 2480b65d54fSGowrishankar Muthukrishnan 249f556293fSBrandon Lo struct fips_test_json_info { 250f556293fSBrandon Lo /* Information used for reading from json */ 251f556293fSBrandon Lo json_t *json_root; 252f556293fSBrandon Lo json_t *json_vector_set; 253f556293fSBrandon Lo json_t *json_test_group; 254f556293fSBrandon Lo json_t *json_test_case; 255f556293fSBrandon Lo /* Location of json write output */ 256f556293fSBrandon Lo json_t *json_write_root; 257f556293fSBrandon Lo json_t *json_write_group; 258f556293fSBrandon Lo json_t *json_write_set; 259f556293fSBrandon Lo json_t *json_write_case; 260f556293fSBrandon Lo /* Other info */ 261f556293fSBrandon Lo uint8_t is_sample; 262f556293fSBrandon Lo }; 2638d70a194SDavid Marchand #endif /* USE_JANSSON */ 264f556293fSBrandon Lo 2653d0fad56SMarko Kovacevic struct fips_test_interim_info { 2663d0fad56SMarko Kovacevic FILE *fp_rd; 2673d0fad56SMarko Kovacevic FILE *fp_wr; 2683d0fad56SMarko Kovacevic enum file_types file_type; 2693d0fad56SMarko Kovacevic enum fips_test_algorithms algo; 2703d0fad56SMarko Kovacevic char *one_line_text; 2713d0fad56SMarko Kovacevic char *vec[MAX_LINE_PER_VECTOR]; 27232440cdfSAyuj Verma uint32_t vec_start_off; 2733d0fad56SMarko Kovacevic uint32_t nb_vec_lines; 2743d0fad56SMarko Kovacevic char device_name[MAX_STRING_SIZE]; 2759275af3bSOlivier Matz char file_name[MAX_FILE_NAME_SIZE]; 27679365018SArchana Muniganti float version; 2773d0fad56SMarko Kovacevic 278cd255ccfSMarko Kovacevic union { 279cd255ccfSMarko Kovacevic struct aesavs_interim_data aes_data; 280f64adb67SMarko Kovacevic struct hmac_interim_data hmac_data; 281527cbf3dSMarko Kovacevic struct tdes_interim_data tdes_data; 282305921f4SMarko Kovacevic struct ccm_interim_data ccm_data; 283f4797baeSDamian Nowak struct sha_interim_data sha_data; 284d09abf2dSFan Zhang struct gcm_interim_data gcm_data; 285f8e431edSGowrishankar Muthukrishnan struct xts_interim_data xts_data; 28636128a67SGowrishankar Muthukrishnan struct rsa_interim_data rsa_data; 287*b455d261SGowrishankar Muthukrishnan struct ecdsa_interim_data ecdsa_data; 288cd255ccfSMarko Kovacevic } interim_info; 289cd255ccfSMarko Kovacevic 2903d0fad56SMarko Kovacevic enum fips_test_op op; 2913d0fad56SMarko Kovacevic 2923d0fad56SMarko Kovacevic const struct fips_test_callback *callbacks; 2933d0fad56SMarko Kovacevic const struct fips_test_callback *interim_callbacks; 2943d0fad56SMarko Kovacevic const struct fips_test_callback *writeback_callbacks; 2953d0fad56SMarko Kovacevic 2960bd998fbSGowrishankar Muthukrishnan post_prcess_t parse_interim_writeback; 297*b455d261SGowrishankar Muthukrishnan post_prcess_t post_interim_writeback; 2983d0fad56SMarko Kovacevic post_prcess_t parse_writeback; 2993d0fad56SMarko Kovacevic post_prcess_t kat_check; 3003d0fad56SMarko Kovacevic }; 3013d0fad56SMarko Kovacevic 3023d0fad56SMarko Kovacevic extern struct fips_test_vector vec; 3033d0fad56SMarko Kovacevic extern struct fips_test_interim_info info; 3043d0fad56SMarko Kovacevic 3058d70a194SDavid Marchand #ifdef USE_JANSSON 306f556293fSBrandon Lo extern struct fips_test_json_info json_info; 3078d70a194SDavid Marchand #endif /* USE_JANSSON */ 308f556293fSBrandon Lo 3093d0fad56SMarko Kovacevic int 3103d0fad56SMarko Kovacevic fips_test_init(const char *req_file_path, const char *rsp_file_path, 3113d0fad56SMarko Kovacevic const char *device_name); 3123d0fad56SMarko Kovacevic 3133d0fad56SMarko Kovacevic void 3143d0fad56SMarko Kovacevic fips_test_clear(void); 3153d0fad56SMarko Kovacevic 3163d0fad56SMarko Kovacevic int 3173d0fad56SMarko Kovacevic fips_test_fetch_one_block(void); 3183d0fad56SMarko Kovacevic 3193d0fad56SMarko Kovacevic int 3203d0fad56SMarko Kovacevic fips_test_parse_one_case(void); 3213d0fad56SMarko Kovacevic 3223d0fad56SMarko Kovacevic void 3233d0fad56SMarko Kovacevic fips_test_write_one_case(void); 3243d0fad56SMarko Kovacevic 3258d70a194SDavid Marchand #ifdef USE_JANSSON 326f556293fSBrandon Lo int 327f556293fSBrandon Lo fips_test_parse_one_json_vector_set(void); 328f556293fSBrandon Lo 329f556293fSBrandon Lo int 330f556293fSBrandon Lo fips_test_parse_one_json_group(void); 331f556293fSBrandon Lo 332f556293fSBrandon Lo int 333f556293fSBrandon Lo fips_test_parse_one_json_case(void); 334b09aac2dSBrandon Lo 335b09aac2dSBrandon Lo int 336b09aac2dSBrandon Lo parse_test_gcm_json_init(void); 337443c93d8SBrandon Lo 338443c93d8SBrandon Lo int 339443c93d8SBrandon Lo parse_test_hmac_json_init(void); 340443c93d8SBrandon Lo 341443c93d8SBrandon Lo int 342443c93d8SBrandon Lo parse_test_hmac_json_algorithm(void); 343d3b50557SBrandon Lo 344d3b50557SBrandon Lo int 345d3b50557SBrandon Lo parse_test_cmac_json_init(void); 3468b8546aaSGowrishankar Muthukrishnan 3478b8546aaSGowrishankar Muthukrishnan int 3488b8546aaSGowrishankar Muthukrishnan parse_test_aes_json_init(void); 349f8e431edSGowrishankar Muthukrishnan 350f8e431edSGowrishankar Muthukrishnan int 351f8e431edSGowrishankar Muthukrishnan parse_test_xts_json_init(void); 352d5c24714SGowrishankar Muthukrishnan 353d5c24714SGowrishankar Muthukrishnan int 354d5c24714SGowrishankar Muthukrishnan parse_test_sha_json_init(void); 355d5c24714SGowrishankar Muthukrishnan 356d5c24714SGowrishankar Muthukrishnan int 357d5c24714SGowrishankar Muthukrishnan parse_test_sha_json_algorithm(void); 358d5c24714SGowrishankar Muthukrishnan 359d5c24714SGowrishankar Muthukrishnan int 360d5c24714SGowrishankar Muthukrishnan parse_test_sha_json_test_type(void); 36164569ffaSGowrishankar Muthukrishnan 36264569ffaSGowrishankar Muthukrishnan int 36364569ffaSGowrishankar Muthukrishnan parse_test_tdes_json_init(void); 36436128a67SGowrishankar Muthukrishnan 36536128a67SGowrishankar Muthukrishnan int 36636128a67SGowrishankar Muthukrishnan parse_test_rsa_json_init(void); 3678ee030b4SGowrishankar Muthukrishnan 3688ee030b4SGowrishankar Muthukrishnan int 369*b455d261SGowrishankar Muthukrishnan parse_test_ecdsa_json_init(void); 370*b455d261SGowrishankar Muthukrishnan 371*b455d261SGowrishankar Muthukrishnan int 3728ee030b4SGowrishankar Muthukrishnan fips_test_randomize_message(struct fips_val *msg, struct fips_val *rand); 3738d70a194SDavid Marchand #endif /* USE_JANSSON */ 374f556293fSBrandon Lo 3753d0fad56SMarko Kovacevic int 376cd255ccfSMarko Kovacevic parse_test_aes_init(void); 377cd255ccfSMarko Kovacevic 378cd255ccfSMarko Kovacevic int 379527cbf3dSMarko Kovacevic parse_test_tdes_init(void); 380527cbf3dSMarko Kovacevic 381527cbf3dSMarko Kovacevic int 382f64adb67SMarko Kovacevic parse_test_hmac_init(void); 383f64adb67SMarko Kovacevic 384f64adb67SMarko Kovacevic int 3854aaad299SMarko Kovacevic parse_test_gcm_init(void); 3864aaad299SMarko Kovacevic 3874aaad299SMarko Kovacevic int 388ac026f46SMarko Kovacevic parse_test_cmac_init(void); 389ac026f46SMarko Kovacevic 390ac026f46SMarko Kovacevic int 391305921f4SMarko Kovacevic parse_test_ccm_init(void); 392305921f4SMarko Kovacevic 393305921f4SMarko Kovacevic int 394f4797baeSDamian Nowak parse_test_sha_init(void); 395f4797baeSDamian Nowak 396f4797baeSDamian Nowak int 397d5a9ea55SSucharitha Sarananaga parse_test_xts_init(void); 398d5a9ea55SSucharitha Sarananaga 399d5a9ea55SSucharitha Sarananaga int 4003d0fad56SMarko Kovacevic parser_read_uint8_hex(uint8_t *value, const char *p); 4013d0fad56SMarko Kovacevic 4023d0fad56SMarko Kovacevic int 4033d0fad56SMarko Kovacevic parse_uint8_hex_str(const char *key, char *src, struct fips_val *val); 4043d0fad56SMarko Kovacevic 4053d0fad56SMarko Kovacevic int 4063d0fad56SMarko Kovacevic parse_uint8_known_len_hex_str(const char *key, char *src, struct fips_val *val); 4073d0fad56SMarko Kovacevic 4083d0fad56SMarko Kovacevic int 409fc6e6515SIbtisam Tariq parser_read_uint16(uint16_t *value, const char *p); 410fc6e6515SIbtisam Tariq 411fc6e6515SIbtisam Tariq int 4123d0fad56SMarko Kovacevic parser_read_uint32_val(const char *key, char *src, struct fips_val *val); 4133d0fad56SMarko Kovacevic 4143d0fad56SMarko Kovacevic int 4153d0fad56SMarko Kovacevic parser_read_uint32_bit_val(const char *key, char *src, struct fips_val *val); 4163d0fad56SMarko Kovacevic 4173d0fad56SMarko Kovacevic int 4183d0fad56SMarko Kovacevic parser_read_uint32(uint32_t *value, char *p); 4193d0fad56SMarko Kovacevic 4203d0fad56SMarko Kovacevic int 4213d0fad56SMarko Kovacevic parser_read_uint32_val(const char *key, char *src, struct fips_val *val); 4223d0fad56SMarko Kovacevic 4233d0fad56SMarko Kovacevic int 4243d0fad56SMarko Kovacevic writeback_hex_str(const char *key, char *dst, struct fips_val *val); 4253d0fad56SMarko Kovacevic 4263d0fad56SMarko Kovacevic void 4273d0fad56SMarko Kovacevic parse_write_hex_str(struct fips_val *src); 4283d0fad56SMarko Kovacevic 4293d0fad56SMarko Kovacevic int 4303d0fad56SMarko Kovacevic update_info_vec(uint32_t count); 4313d0fad56SMarko Kovacevic 432d09abf2dSFan Zhang typedef int (*fips_test_one_case_t)(void); 433d09abf2dSFan Zhang typedef int (*fips_prepare_op_t)(void); 43436128a67SGowrishankar Muthukrishnan typedef int (*fips_prepare_sym_xform_t)(struct rte_crypto_sym_xform *); 43536128a67SGowrishankar Muthukrishnan typedef int (*fips_prepare_asym_xform_t)(struct rte_crypto_asym_xform *); 436d09abf2dSFan Zhang 437d09abf2dSFan Zhang struct fips_test_ops { 43836128a67SGowrishankar Muthukrishnan fips_prepare_sym_xform_t prepare_sym_xform; 43936128a67SGowrishankar Muthukrishnan fips_prepare_asym_xform_t prepare_asym_xform; 44036128a67SGowrishankar Muthukrishnan fips_prepare_op_t prepare_sym_op; 44136128a67SGowrishankar Muthukrishnan fips_prepare_op_t prepare_asym_op; 442d09abf2dSFan Zhang fips_test_one_case_t test; 443d09abf2dSFan Zhang }; 444d09abf2dSFan Zhang 445d09abf2dSFan Zhang extern struct fips_test_ops test_ops; 446d09abf2dSFan Zhang 447d09abf2dSFan Zhang int prepare_aead_op(void); 448d09abf2dSFan Zhang 449d09abf2dSFan Zhang int prepare_auth_op(void); 450d09abf2dSFan Zhang 451d09abf2dSFan Zhang int prepare_gcm_xform(struct rte_crypto_sym_xform *xform); 452d09abf2dSFan Zhang 453d09abf2dSFan Zhang int prepare_gmac_xform(struct rte_crypto_sym_xform *xform); 454d09abf2dSFan Zhang 4558bc8ba43SGowrishankar Muthukrishnan int parse_test_sha_hash_size(enum rte_crypto_auth_algorithm algo); 4568bc8ba43SGowrishankar Muthukrishnan 4573d0fad56SMarko Kovacevic #endif 458