From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6BA22A04A6; Thu, 27 Jan 2022 15:52:08 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C012F4280E; Thu, 27 Jan 2022 15:51:50 +0100 (CET) Received: from mail-qk1-f174.google.com (mail-qk1-f174.google.com [209.85.222.174]) by mails.dpdk.org (Postfix) with ESMTP id 30153427F1 for ; Thu, 27 Jan 2022 15:51:49 +0100 (CET) Received: by mail-qk1-f174.google.com with SMTP id j24so479996qkk.10 for ; Thu, 27 Jan 2022 06:51:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iol.unh.edu; s=unh-iol; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5URAumc2UC6Pu6qU7j82NQmtqD3G6iW/jCuZjpr8cdE=; b=VYx/f3c58vaa4a4BqkZ1X87suUCjInCt3CW6m1NYipyXAsyHJlptxQNR8JMr3DWLeP siDaZw8JT5+kMELgb+vA/IpOFMVCsKUzVb+kKL7T+k5R8HHLC26QExnV/hDgobc712Ne XCSZrxKIZfGmkM5uMk3bDd7gG6nei7Kww5keg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5URAumc2UC6Pu6qU7j82NQmtqD3G6iW/jCuZjpr8cdE=; b=qYyGNQVAM83uQUlIVSRTHyAnMZKTCmE1oa1qksdM/D1ojN1oTopP99BTV+vsdgnoFA 7YtYHxKyNgqtjCEV1Ih4Whz4X0RK4rqnvfxfrH+/R3aDyz+DWwugM6Qm1MCxBMj5j+Gy 3hNsRNRzcEJpGFaDGOdxvCx/wUQcmYyVtFGYV/rusnX2Q37A3gvytsetFSTmKT/XdJg1 azHMa9n2+06NzbltkoHdPvgXQMVK7vgoAAkYAK/xCC5EPOzzCVlXoI6GVhOKsxNzUcpu /oXyB8ol9KvOuiBsKUS9sE8SJ6KA3qnZ0qz77Bc91vZ/aB+7OQ5LEkamM5xSj6qr0PpA HR7g== X-Gm-Message-State: AOAM532+sC0UIqFTfdl3qH5UGCTMifeXwO5en77/uTBHrN0IG7Yxyeu0 Ag9Wo3Vk7l+A75DREXgWaBgbIFjbwp8yU+ZKcCVjB6uuSqkhpkJD7c/ClZFnD6RwumSyjuBNjr5 dR9BwrZtNhu7YrNjWjDnBpkx9jbudbtguDFxZJYPefChnqu+qb+w= X-Google-Smtp-Source: ABdhPJx2Boennx/0fMsyu9BP7eV8fV54/2g0ElMUCiappUgK+2FAXnJQeloAPRkFA/0sVIFiswaOgw== X-Received: by 2002:a37:b201:: with SMTP id b1mr2829221qkf.370.1643295108330; Thu, 27 Jan 2022 06:51:48 -0800 (PST) Received: from blo.iol.unh.edu ([2606:4100:3880:1270:8f3:b5b9:6ccc:8a5c]) by smtp.gmail.com with ESMTPSA id 195sm1507324qkf.30.2022.01.27.06.51.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Jan 2022 06:51:47 -0800 (PST) From: Brandon Lo To: dev@dpdk.org Cc: ciara.power@intel.com, roy.fan.zhang@intel.com, Brandon Lo Subject: [PATCH 3/5] examples/fips_validation: add json parsing Date: Thu, 27 Jan 2022 09:51:40 -0500 Message-Id: <20220127145142.86742-4-blo@iol.unh.edu> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220127145142.86742-1-blo@iol.unh.edu> References: <20220127145142.86742-1-blo@iol.unh.edu> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Added functions to parse the required information from a vector set given in the new json format. Signed-off-by: Brandon Lo --- examples/fips_validation/fips_validation.c | 84 ++++++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/examples/fips_validation/fips_validation.c b/examples/fips_validation/fips_validation.c index 52a7bf952d..40254a9181 100644 --- a/examples/fips_validation/fips_validation.c +++ b/examples/fips_validation/fips_validation.c @@ -276,6 +276,8 @@ parse_file_type(const char *path) info.file_type = FIPS_TYPE_RSP; else if (strstr(path, FAX_FILE_PERFIX)) info.file_type = FIPS_TYPE_FAX; + else if (strstr(path, JSON_FILE_PERFIX)) + info.file_type = FIPS_TYPE_JSON; else return -EINVAL; @@ -311,6 +313,21 @@ fips_test_init(const char *req_file_path, const char *rsp_file_path, return -EINVAL; } + if (info.file_type == FIPS_TYPE_JSON) { +#ifdef RTE_HAS_JANSSON + json_error_t error; + json_info.json_root = json_loadf(info.fp_rd, 0, &error); + if (!json_info.json_root) { + RTE_LOG(ERR, USER1, "Cannot parse json file %s (line %d, column %d)\n", + req_file_path, error.line, error.column); + return -EINVAL; + } +#else /* RTE_HAS_JANSSON */ + RTE_LOG(ERR, USER1, "No json library configured.\n"); + return -EINVAL; +#endif /* RTE_HAS_JANSSON */ + } + info.fp_wr = fopen(rsp_file_path, "w"); if (!info.fp_wr) { RTE_LOG(ERR, USER1, "Cannot open file %s\n", rsp_file_path); @@ -329,6 +346,8 @@ fips_test_init(const char *req_file_path, const char *rsp_file_path, return -EINVAL; } + if (info.file_type == FIPS_TYPE_JSON) return 0; + if (fips_test_parse_header() < 0) { RTE_LOG(ERR, USER1, "Failed parsing header\n"); return -1; @@ -429,6 +448,71 @@ fips_test_write_one_case(void) fprintf(info.fp_wr, "%s\n", info.vec[i]); } +#ifdef RTE_HAS_JANSSON +int +fips_test_parse_one_json_vector_set(void) +{ + json_t *algo_obj = json_object_get(json_info.json_vector_set, "algorithm"); + const char *algo_str = json_string_value(algo_obj); + + /* Vector sets contain the algorithm type, and nothing else we need. */ + if (strstr(algo_str, "AES-GCM")) info.algo = FIPS_TEST_ALGO_AES_GCM; + else return -EINVAL; + + return 0; +} + +int +fips_test_parse_one_json_group(void) +{ + int ret; + + if (info.interim_callbacks) { + char json_value[256]; + for (int i = 0; info.interim_callbacks[i].key != NULL; i++) { + json_t *param = json_object_get(json_info.json_test_group, info.interim_callbacks[i].key); + json_int_t val = json_integer_value(param); + sprintf(json_value, "%lld", val); + /* First argument is blank because the key + is not included in the string being parsed. */ + ret = info.interim_callbacks[i].cb( + "", json_value, + info.interim_callbacks[i].val + ); + if (ret < 0) + return ret; + } + } + + return 0; +} + +int +fips_test_parse_one_json_case(void) +{ + uint32_t i; + int ret = 0; + + for (i = 0; info.callbacks[i].key != NULL; i++) { + json_t *param = json_object_get(json_info.json_test_case, info.callbacks[i].key); + if (param) { + const char *json_string = json_string_value(param); + strcpy(info.one_line_text, json_string); + /* First argument is blank because the key + is not included in the string being parsed. */ + ret = info.callbacks[i].cb( + "", info.one_line_text, + info.callbacks[i].val + ); + if (ret < 0) + return ret; + } + } + + return 0; +} +#endif /* RTE_HAS_JANSSON */ + static int parser_read_uint64_hex(uint64_t *value, const char *p) { -- 2.25.1