@@ -95,36 +95,46 @@ cperf_set_ops_asym_ecdsa(struct rte_crypto_op **ops,
9595 uint16_t i ;
9696
9797 for (i = 0 ; i < nb_ops ; i ++ ) {
98+ const struct cperf_ecdsa_test_data * ecdsa_curve_data = NULL ;
9899 struct rte_crypto_asym_op * asym_op = ops [i ]-> asym ;
99100
100101 ops [i ]-> status = RTE_CRYPTO_OP_STATUS_NOT_PROCESSED ;
101102 rte_crypto_op_attach_asym_session (ops [i ], sess );
102103
103104 asym_op -> ecdsa .op_type = options -> asym_op_type ;
104- if (options -> op_type == CPERF_ASYM_SECP256R1 ) {
105- asym_op -> ecdsa .message .data = options -> secp256r1_data -> message .data ;
106- asym_op -> ecdsa .message .length = options -> secp256r1_data -> message .length ;
107-
108- asym_op -> ecdsa .k .data = options -> secp256r1_data -> k .data ;
109- asym_op -> ecdsa .k .length = options -> secp256r1_data -> k .length ;
110-
111- asym_op -> ecdsa .r .data = options -> secp256r1_data -> sign_r .data ;
112- asym_op -> ecdsa .r .length = options -> secp256r1_data -> sign_r .length ;
113- asym_op -> ecdsa .s .data = options -> secp256r1_data -> sign_s .data ;
114- asym_op -> ecdsa .s .length = options -> secp256r1_data -> sign_s .length ;
115- } else if (options -> op_type == CPERF_ASYM_SECP384R1 ) {
116- asym_op -> ecdsa .message .data = options -> secp384r1_data -> message .data ;
117- asym_op -> ecdsa .message .length = options -> secp384r1_data -> message .length ;
118-
119- asym_op -> ecdsa .k .data = options -> secp384r1_data -> k .data ;
120- asym_op -> ecdsa .k .length = options -> secp384r1_data -> k .length ;
121-
122- asym_op -> ecdsa .r .data = options -> secp384r1_data -> sign_r .data ;
123- asym_op -> ecdsa .r .length = options -> secp384r1_data -> sign_r .length ;
124- asym_op -> ecdsa .s .data = options -> secp384r1_data -> sign_s .data ;
125- asym_op -> ecdsa .s .length = options -> secp384r1_data -> sign_s .length ;
105+
106+ switch (options -> op_type ) {
107+ case CPERF_ASYM_SECP192R1 :
108+ ecdsa_curve_data = options -> secp192r1_data ;
109+ break ;
110+ case CPERF_ASYM_SECP224R1 :
111+ ecdsa_curve_data = options -> secp224r1_data ;
112+ break ;
113+ case CPERF_ASYM_SECP256R1 :
114+ ecdsa_curve_data = options -> secp256r1_data ;
115+ break ;
116+ case CPERF_ASYM_SECP384R1 :
117+ ecdsa_curve_data = options -> secp384r1_data ;
118+ break ;
119+ case CPERF_ASYM_SECP521R1 :
120+ ecdsa_curve_data = options -> secp521r1_data ;
121+ break ;
122+ default :
123+ rte_panic ("Unsupported ECDSA operation type %d\n" ,
124+ options -> op_type );
125+ break ;
126126 }
127127
128+ asym_op -> ecdsa .message .data = ecdsa_curve_data -> message .data ;
129+ asym_op -> ecdsa .message .length = ecdsa_curve_data -> message .length ;
130+
131+ asym_op -> ecdsa .k .data = ecdsa_curve_data -> k .data ;
132+ asym_op -> ecdsa .k .length = ecdsa_curve_data -> k .length ;
133+
134+ asym_op -> ecdsa .r .data = ecdsa_curve_data -> sign_r .data ;
135+ asym_op -> ecdsa .r .length = ecdsa_curve_data -> sign_r .length ;
136+ asym_op -> ecdsa .s .data = ecdsa_curve_data -> sign_s .data ;
137+ asym_op -> ecdsa .s .length = ecdsa_curve_data -> sign_s .length ;
128138 }
129139}
130140
@@ -1078,6 +1088,7 @@ cperf_create_session(struct rte_mempool *sess_mp,
10781088 const struct cperf_test_vector * test_vector ,
10791089 uint16_t iv_offset )
10801090{
1091+ const struct cperf_ecdsa_test_data * ecdsa_curve_data = NULL ;
10811092 struct rte_crypto_sym_xform cipher_xform ;
10821093 struct rte_crypto_sym_xform auth_xform ;
10831094 struct rte_crypto_sym_xform aead_xform ;
@@ -1135,42 +1146,41 @@ cperf_create_session(struct rte_mempool *sess_mp,
11351146 return asym_sess ;
11361147 }
11371148
1138- if (options -> op_type == CPERF_ASYM_SECP256R1 ) {
1139- xform .next = NULL ;
1140- xform .xform_type = RTE_CRYPTO_ASYM_XFORM_ECDSA ;
1141- xform .ec .curve_id = options -> secp256r1_data -> curve ;
1142- xform .ec .pkey .data = options -> secp256r1_data -> pkey .data ;
1143- xform .ec .pkey .length = options -> secp256r1_data -> pkey .length ;
1144- xform .ec .q .x .data = options -> secp256r1_data -> pubkey_qx .data ;
1145- xform .ec .q .x .length = options -> secp256r1_data -> pubkey_qx .length ;
1146- xform .ec .q .y .data = options -> secp256r1_data -> pubkey_qy .data ;
1147- xform .ec .q .y .length = options -> secp256r1_data -> pubkey_qy .length ;
1148-
1149- ret = rte_cryptodev_asym_session_create (dev_id , & xform ,
1150- sess_mp , & asym_sess );
1151- if (ret < 0 ) {
1152- RTE_LOG (ERR , USER1 , "ECDSA P256 Asym session create failed\n" );
1153- return NULL ;
1154- }
1155-
1156- return asym_sess ;
1149+ switch (options -> op_type ) {
1150+ case CPERF_ASYM_SECP192R1 :
1151+ ecdsa_curve_data = options -> secp192r1_data ;
1152+ break ;
1153+ case CPERF_ASYM_SECP224R1 :
1154+ ecdsa_curve_data = options -> secp224r1_data ;
1155+ break ;
1156+ case CPERF_ASYM_SECP256R1 :
1157+ ecdsa_curve_data = options -> secp256r1_data ;
1158+ break ;
1159+ case CPERF_ASYM_SECP384R1 :
1160+ ecdsa_curve_data = options -> secp384r1_data ;
1161+ break ;
1162+ case CPERF_ASYM_SECP521R1 :
1163+ ecdsa_curve_data = options -> secp521r1_data ;
1164+ break ;
1165+ default :
1166+ break ;
11571167 }
11581168
1159- if (options -> op_type == CPERF_ASYM_SECP384R1 ) {
1169+ if (ecdsa_curve_data ) {
11601170 xform .next = NULL ;
11611171 xform .xform_type = RTE_CRYPTO_ASYM_XFORM_ECDSA ;
1162- xform .ec .curve_id = options -> secp384r1_data -> curve ;
1163- xform .ec .pkey .data = options -> secp384r1_data -> pkey .data ;
1164- xform .ec .pkey .length = options -> secp384r1_data -> pkey .length ;
1165- xform .ec .q .x .data = options -> secp384r1_data -> pubkey_qx .data ;
1166- xform .ec .q .x .length = options -> secp384r1_data -> pubkey_qx .length ;
1167- xform .ec .q .y .data = options -> secp384r1_data -> pubkey_qy .data ;
1168- xform .ec .q .y .length = options -> secp384r1_data -> pubkey_qy .length ;
1172+ xform .ec .curve_id = ecdsa_curve_data -> curve ;
1173+ xform .ec .pkey .data = ecdsa_curve_data -> pkey .data ;
1174+ xform .ec .pkey .length = ecdsa_curve_data -> pkey .length ;
1175+ xform .ec .q .x .data = ecdsa_curve_data -> pubkey_qx .data ;
1176+ xform .ec .q .x .length = ecdsa_curve_data -> pubkey_qx .length ;
1177+ xform .ec .q .y .data = ecdsa_curve_data -> pubkey_qy .data ;
1178+ xform .ec .q .y .length = ecdsa_curve_data -> pubkey_qy .length ;
11691179
11701180 ret = rte_cryptodev_asym_session_create (dev_id , & xform ,
11711181 sess_mp , & asym_sess );
11721182 if (ret < 0 ) {
1173- RTE_LOG (ERR , USER1 , "ECDSA P384 Asym session create failed\n" );
1183+ RTE_LOG (ERR , USER1 , "ECDSA Asym session create failed\n" );
11741184 return NULL ;
11751185 }
11761186
@@ -1519,10 +1529,11 @@ cperf_get_op_functions(const struct cperf_options *options,
15191529 case CPERF_ASYM_RSA :
15201530 op_fns -> populate_ops = cperf_set_ops_asym_rsa ;
15211531 break ;
1532+ case CPERF_ASYM_SECP192R1 :
1533+ case CPERF_ASYM_SECP224R1 :
15221534 case CPERF_ASYM_SECP256R1 :
1523- op_fns -> populate_ops = cperf_set_ops_asym_ecdsa ;
1524- break ;
15251535 case CPERF_ASYM_SECP384R1 :
1536+ case CPERF_ASYM_SECP521R1 :
15261537 op_fns -> populate_ops = cperf_set_ops_asym_ecdsa ;
15271538 break ;
15281539 case CPERF_ASYM_ED25519 :
0 commit comments