250 lines
5.8 KiB
Diff
250 lines
5.8 KiB
Diff
From 248baee2bffc98f7575f07b31fd341752cdd3648 Mon Sep 17 00:00:00 2001
|
|
From: Hao Fang <fanghao11@huawei.com>
|
|
Date: Wed, 26 Apr 2023 11:55:29 +0800
|
|
Subject: [PATCH 27/28] uadk/tool: add init2 test for digest algs
|
|
|
|
add testcase for init2 just use cmd --init 2.
|
|
default or --init 1 for init interface.
|
|
|
|
Signed-off-by: Hao Fang <fanghao11@huawei.com>
|
|
---
|
|
uadk_tool/test/test_sec.c | 152 +++++++++++++++++++++++++++++++++-----
|
|
1 file changed, 132 insertions(+), 20 deletions(-)
|
|
|
|
diff --git a/uadk_tool/test/test_sec.c b/uadk_tool/test/test_sec.c
|
|
index 9fe007e..6bd4319 100644
|
|
--- a/uadk_tool/test/test_sec.c
|
|
+++ b/uadk_tool/test/test_sec.c
|
|
@@ -59,6 +59,7 @@ static unsigned int g_use_env;
|
|
static unsigned int g_ctxnum;
|
|
static unsigned int g_data_fmt = WD_FLAT_BUF;
|
|
static unsigned int g_sgl_num = 0;
|
|
+static unsigned int g_init;
|
|
static pthread_spinlock_t lock = 0;
|
|
|
|
static struct hash_testvec g_long_hash_tv;
|
|
@@ -85,6 +86,25 @@ enum digest_type {
|
|
LOCAL_AES_XCBC_MAC_96,
|
|
};
|
|
|
|
+char *digest_names[MAX_ALGO_PER_TYPE] = {
|
|
+ "sm3",
|
|
+ "md5",
|
|
+ "sha1",
|
|
+ "sha256",
|
|
+ "sha224",
|
|
+ "sha384",
|
|
+ "sha512",
|
|
+ "sha512-224",
|
|
+ "sha512-256",
|
|
+ "cmac(aes)",
|
|
+ "gmac(aes)", /* --digest 10: test aes-gmac-128 */
|
|
+ "gmac(aes)", /* --digest 11: test aes-gmac-192 */
|
|
+ "gmac(aes)", /* --digest 12: test aes-gmac-256 */
|
|
+ "xcbc-mac-96(aes)",
|
|
+ "xcbc-prf-128(aes)",
|
|
+ "ccm(aes)", /* --digest 15: for error alg test */
|
|
+};
|
|
+
|
|
struct sva_bd {
|
|
char *src;
|
|
char *dst;
|
|
@@ -138,6 +158,7 @@ struct test_sec_option {
|
|
__u32 stream_mode;
|
|
__u32 sgl_num;
|
|
__u32 use_env;
|
|
+ __u32 init;
|
|
};
|
|
|
|
//static pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
|
|
@@ -649,21 +670,6 @@ static void uninit_config(void)
|
|
wd_sched_rr_release(g_sched);
|
|
}
|
|
|
|
-static void digest_uninit_config(void)
|
|
-{
|
|
- int i;
|
|
-
|
|
- if (g_use_env) {
|
|
- wd_digest_env_uninit();
|
|
- return;
|
|
- }
|
|
-
|
|
- wd_digest_uninit();
|
|
- for (i = 0; i < g_ctx_cfg.ctx_num; i++)
|
|
- wd_release_ctx(g_ctx_cfg.ctxs[i].ctx);
|
|
- free(g_ctx_cfg.ctxs);
|
|
-}
|
|
-
|
|
static int test_sec_cipher_sync_once(void)
|
|
{
|
|
struct cipher_testvec *tv = NULL;
|
|
@@ -1400,7 +1406,7 @@ static __u32 sched_digest_pick_next_ctx(handle_t h_sched_ctx,
|
|
return 0;
|
|
}
|
|
|
|
-static int init_digest_ctx_config(int type, int mode)
|
|
+static int digest_init1(int type, int mode)
|
|
{
|
|
struct uacce_dev_list *list;
|
|
struct wd_sched sched;
|
|
@@ -1450,6 +1456,108 @@ out:
|
|
return ret;
|
|
}
|
|
|
|
+static int digest_init2(int type, int mode)
|
|
+{
|
|
+ struct wd_ctx_nums *ctx_set_num;
|
|
+ struct wd_ctx_params cparams;
|
|
+ int ret;
|
|
+
|
|
+ if (g_testalg >= MAX_ALGO_PER_TYPE)
|
|
+ return -WD_EINVAL;
|
|
+
|
|
+ ctx_set_num = calloc(1, sizeof(*ctx_set_num));
|
|
+ if (!ctx_set_num) {
|
|
+ WD_ERR("failed to alloc ctx_set_size!\n");
|
|
+ return -WD_ENOMEM;
|
|
+ }
|
|
+
|
|
+ cparams.op_type_num = 1;
|
|
+ cparams.ctx_set_num = ctx_set_num;
|
|
+ cparams.bmp = numa_allocate_nodemask();
|
|
+ if (!cparams.bmp) {
|
|
+ WD_ERR("failed to create nodemask!\n");
|
|
+ ret = -WD_ENOMEM;
|
|
+ goto out_freectx;
|
|
+ }
|
|
+
|
|
+ numa_bitmask_setall(cparams.bmp);
|
|
+
|
|
+ if (mode == CTX_MODE_SYNC)
|
|
+ ctx_set_num->sync_ctx_num = g_ctxnum;
|
|
+
|
|
+ if (mode == CTX_MODE_ASYNC)
|
|
+ ctx_set_num->async_ctx_num = g_ctxnum;
|
|
+
|
|
+ ret = wd_digest_init2_(digest_names[g_testalg], 0, 0, &cparams);
|
|
+ if (ret)
|
|
+ goto out_freebmp;
|
|
+
|
|
+out_freebmp:
|
|
+ numa_free_nodemask(cparams.bmp);
|
|
+
|
|
+out_freectx:
|
|
+ free(ctx_set_num);
|
|
+
|
|
+ return ret;
|
|
+}
|
|
+
|
|
+static int init_digest_ctx_config(int type, int mode)
|
|
+{
|
|
+ int ret = -1;
|
|
+
|
|
+ switch (g_init) {
|
|
+ case 0:
|
|
+ case 1:
|
|
+ SEC_TST_PRT("uadk entry init1!\n");
|
|
+ ret = digest_init1(type, mode);
|
|
+ break;
|
|
+ case 2:
|
|
+ SEC_TST_PRT("uadk entry init2!\n");
|
|
+ ret = digest_init2(type, mode);
|
|
+ break;
|
|
+ default:
|
|
+ SEC_TST_PRT("unsupported init-type%u!\n", g_init);
|
|
+ break;
|
|
+ }
|
|
+
|
|
+ return ret;
|
|
+}
|
|
+
|
|
+static void digest_uninit1(void)
|
|
+{
|
|
+ int i;
|
|
+
|
|
+ if (g_use_env) {
|
|
+ wd_digest_env_uninit();
|
|
+ return;
|
|
+ }
|
|
+
|
|
+ wd_digest_uninit();
|
|
+ for (i = 0; i < g_ctx_cfg.ctx_num; i++)
|
|
+ wd_release_ctx(g_ctx_cfg.ctxs[i].ctx);
|
|
+ free(g_ctx_cfg.ctxs);
|
|
+}
|
|
+
|
|
+static void digest_uninit2(void)
|
|
+{
|
|
+ wd_digest_uninit2();
|
|
+}
|
|
+
|
|
+static void digest_uninit_config(void)
|
|
+{
|
|
+ switch (g_init) {
|
|
+ case 0:
|
|
+ case 1:
|
|
+ digest_uninit1();
|
|
+ break;
|
|
+ case 2:
|
|
+ digest_uninit2();
|
|
+ break;
|
|
+ default:
|
|
+ SEC_TST_PRT("unsupported uninit-type%u!\n", g_init);
|
|
+ }
|
|
+}
|
|
+
|
|
int get_digest_resource(struct hash_testvec **alg_tv, int* alg, int* mode)
|
|
{
|
|
struct hash_testvec *tmp_tv;
|
|
@@ -4083,6 +4191,7 @@ static void test_sec_cmd_parse(int argc, char *argv[], struct test_sec_option *o
|
|
int c;
|
|
|
|
static struct option long_options[] = {
|
|
+ {"help", no_argument, 0, 0},
|
|
{"cipher", required_argument, 0, 1},
|
|
{"digest", required_argument, 0, 2},
|
|
{"aead", required_argument, 0, 3},
|
|
@@ -4100,7 +4209,7 @@ static void test_sec_cmd_parse(int argc, char *argv[], struct test_sec_option *o
|
|
{"stream", no_argument, 0, 15},
|
|
{"sglnum", required_argument, 0, 16},
|
|
{"use_env", no_argument, 0, 17},
|
|
- {"help", no_argument, 0, 18},
|
|
+ {"init", required_argument, 0, 18},
|
|
{0, 0, 0, 0}
|
|
};
|
|
|
|
@@ -4110,6 +4219,9 @@ static void test_sec_cmd_parse(int argc, char *argv[], struct test_sec_option *o
|
|
break;
|
|
|
|
switch (c) {
|
|
+ case 0:
|
|
+ print_help();
|
|
+ exit(-1);
|
|
case 1:
|
|
option->algclass = CIPHER_CLASS;
|
|
option->algtype = strtol(optarg, NULL, 0);
|
|
@@ -4165,8 +4277,8 @@ static void test_sec_cmd_parse(int argc, char *argv[], struct test_sec_option *o
|
|
option->use_env = 1;
|
|
break;
|
|
case 18:
|
|
- print_help();
|
|
- exit(-1);
|
|
+ option->init = strtol(optarg, NULL, 0);
|
|
+ break;
|
|
default:
|
|
SEC_TST_PRT("bad input parameter, exit\n");
|
|
print_help();
|
|
@@ -4216,7 +4328,7 @@ static int test_sec_option_convert(struct test_sec_option *option)
|
|
g_data_fmt = option->sgl_num ? WD_SGL_BUF : WD_FLAT_BUF;
|
|
g_sgl_num = option->sgl_num;
|
|
g_stream = option->stream_mode;
|
|
-
|
|
+ g_init = option->init;
|
|
SEC_TST_PRT("set global times is %lld\n", g_times);
|
|
|
|
g_thread_num = option->xmulti ? option->xmulti : 1;
|
|
--
|
|
2.25.1
|
|
|