[PATCH v1] examples/fips_validation: add parsing for xts
David Marchand
david.marchand at redhat.com
Tue Jun 28 13:57:16 CEST 2022
On Tue, Jun 28, 2022 at 9:59 AM Gowrishankar Muthukrishnan
<gmuthukrishn at marvell.com> wrote:
>
> Added function to parse algorithm for AES XTS test.
>
> Signed-off-by: Gowrishankar Muthukrishnan <gmuthukrishn at marvell.com>
> ---
> examples/fips_validation/fips_validation.c | 4 +-
> examples/fips_validation/fips_validation.h | 17 ++-
> .../fips_validation/fips_validation_xts.c | 126 ++++++++++++++++++
> examples/fips_validation/main.c | 5 +
> 4 files changed, 150 insertions(+), 2 deletions(-)
>
> diff --git a/examples/fips_validation/fips_validation.c b/examples/fips_validation/fips_validation.c
> index 324abccb14..f181363ef7 100644
> --- a/examples/fips_validation/fips_validation.c
> +++ b/examples/fips_validation/fips_validation.c
> @@ -463,7 +463,9 @@ fips_test_parse_one_json_vector_set(void)
> else if (strstr(algo_str, "CMAC"))
> info.algo = FIPS_TEST_ALGO_AES_CMAC;
> else if (strstr(algo_str, "AES-CBC"))
> - info.algo = FIPS_TEST_ALGO_AES;
> + info.algo = FIPS_TEST_ALGO_AES_CBC;
Is this part related to adding xts support?
It looks more like a fix.
> + else if (strstr(algo_str, "AES-XTS"))
> + info.algo = FIPS_TEST_ALGO_AES_XTS;
> else
> return -EINVAL;
>
> diff --git a/examples/fips_validation/fips_validation.h b/examples/fips_validation/fips_validation.h
> index 69d738b718..8ae849c46f 100644
> --- a/examples/fips_validation/fips_validation.h
> +++ b/examples/fips_validation/fips_validation.h
> @@ -34,13 +34,14 @@
>
> enum fips_test_algorithms {
> FIPS_TEST_ALGO_AES = 0,
> + FIPS_TEST_ALGO_AES_CBC,
> FIPS_TEST_ALGO_AES_GCM,
> FIPS_TEST_ALGO_AES_CMAC,
> FIPS_TEST_ALGO_AES_CCM,
> + FIPS_TEST_ALGO_AES_XTS,
> FIPS_TEST_ALGO_HMAC,
> FIPS_TEST_ALGO_TDES,
> FIPS_TEST_ALGO_SHA,
> - FIPS_TEST_ALGO_AES_XTS,
> FIPS_TEST_ALGO_MAX
> };
>
> @@ -170,7 +171,17 @@ struct gcm_interim_data {
> uint8_t gen_iv;
> };
>
> +
No need for another blank line.
> #ifdef USE_JANSSON
> +enum xts_tweak_modes {
> + XTS_TWEAK_MODE_HEX = 0,
> + XTS_TWEAK_MODE_NUMBER
> +};
> +
> +struct xts_interim_data {
> + enum xts_tweak_modes tweak_mode;
> +};
> +
> struct fips_test_json_info {
> /* Information used for reading from json */
> json_t *json_root;
> @@ -207,6 +218,7 @@ struct fips_test_interim_info {
> struct ccm_interim_data ccm_data;
> struct sha_interim_data sha_data;
> struct gcm_interim_data gcm_data;
> + struct xts_interim_data xts_data;
> } interim_info;
>
> enum fips_test_op op;
> @@ -266,6 +278,9 @@ parse_test_cmac_json_init(void);
>
> int
> parse_test_aes_json_init(void);
> +
> +int
> +parse_test_xts_json_init(void);
> #endif /* USE_JANSSON */
>
> int
> diff --git a/examples/fips_validation/fips_validation_xts.c b/examples/fips_validation/fips_validation_xts.c
> index 5bb1966f6c..2de852c1fc 100644
> --- a/examples/fips_validation/fips_validation_xts.c
> +++ b/examples/fips_validation/fips_validation_xts.c
> @@ -24,6 +24,22 @@
> #define OP_ENC_STR "ENCRYPT"
> #define OP_DEC_STR "DECRYPT"
>
> +#define ALGO_JSON_STR "algorithm"
> +#define TESTTYPE_JSON_STR "testType"
> +#define DIR_JSON_STR "direction"
> +#define KEYLEN_JSON_STR "keyLen"
> +#define TWEAKMODE_JSON_STR "tweakMode"
> +
> +#define KEY_JSON_STR "key"
> +#define DATAUNITLEN_JSON_STR "dataUnitLen"
> +#define PAYLOADLEN_JSON_STR "payloadLen"
> +#define TWEAKVALUE_JSON_STR "tweakValue"
> +#define PT_JSON_STR "pt"
> +#define CT_JSON_STR "ct"
> +
> +#define OP_ENC_JSON_STR "encrypt"
> +#define OP_DEC_JSON_STR "decrypt"
> +
> static int
> parse_interim_xts_enc_dec(const char *key,
> __rte_unused char *text,
> @@ -62,6 +78,116 @@ struct fips_test_callback xts_writeback_callbacks[] = {
> {NULL, NULL, NULL} /**< end pointer */
> };
>
> +#ifdef RTE_HAS_JANSSON
Code in examples can't rely on internal RTE_HAS_JANSSON.
--
David Marchand
More information about the dev
mailing list