| 3284 | } |
| 3285 | |
| 3286 | static int |
| 3287 | test_snow3g_authentication_verify(const struct snow3g_hash_test_data *tdata) |
| 3288 | { |
| 3289 | struct crypto_testsuite_params *ts_params = &testsuite_params; |
| 3290 | struct crypto_unittest_params *ut_params = &unittest_params; |
| 3291 | |
| 3292 | int retval; |
| 3293 | unsigned plaintext_pad_len; |
| 3294 | unsigned plaintext_len; |
| 3295 | uint8_t *plaintext; |
| 3296 | struct rte_cryptodev_info dev_info; |
| 3297 | |
| 3298 | rte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info); |
| 3299 | uint64_t feat_flags = dev_info.feature_flags; |
| 3300 | |
| 3301 | if (!(feat_flags & RTE_CRYPTODEV_FF_NON_BYTE_ALIGNED_DATA) && |
| 3302 | ((tdata->validAuthLenInBits.len % 8) != 0)) { |
| 3303 | printf("Device doesn't support NON-Byte Aligned Data.\n"); |
| 3304 | return TEST_SKIPPED; |
| 3305 | } |
| 3306 | |
| 3307 | if ((global_api_test_type == CRYPTODEV_RAW_API_TEST) && |
| 3308 | (!(feat_flags & RTE_CRYPTODEV_FF_SYM_RAW_DP))) { |
| 3309 | printf("Device doesn't support RAW data-path APIs.\n"); |
| 3310 | return TEST_SKIPPED; |
| 3311 | } |
| 3312 | |
| 3313 | if (gbl_action_type == RTE_SECURITY_ACTION_TYPE_CPU_CRYPTO) |
| 3314 | return TEST_SKIPPED; |
| 3315 | |
| 3316 | /* Verify the capabilities */ |
| 3317 | struct rte_cryptodev_sym_capability_idx cap_idx; |
| 3318 | cap_idx.type = RTE_CRYPTO_SYM_XFORM_AUTH; |
| 3319 | cap_idx.algo.auth = RTE_CRYPTO_AUTH_SNOW3G_UIA2; |
| 3320 | if (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0], |
| 3321 | &cap_idx) == NULL) |
| 3322 | return TEST_SKIPPED; |
| 3323 | |
| 3324 | /* Create SNOW 3G session */ |
| 3325 | retval = create_wireless_algo_hash_session(ts_params->valid_devs[0], |
| 3326 | tdata->key.data, tdata->key.len, |
| 3327 | tdata->auth_iv.len, tdata->digest.len, |
| 3328 | RTE_CRYPTO_AUTH_OP_VERIFY, |
| 3329 | RTE_CRYPTO_AUTH_SNOW3G_UIA2); |
| 3330 | if (retval < 0) |
| 3331 | return retval; |
| 3332 | /* alloc mbuf and set payload */ |
| 3333 | ut_params->ibuf = rte_pktmbuf_alloc(ts_params->mbuf_pool); |
| 3334 | |
| 3335 | memset(rte_pktmbuf_mtod(ut_params->ibuf, uint8_t *), 0, |
| 3336 | rte_pktmbuf_tailroom(ut_params->ibuf)); |
| 3337 | |
| 3338 | plaintext_len = ceil_byte_length(tdata->plaintext.len); |
| 3339 | /* Append data which is padded to a multiple of */ |
| 3340 | /* the algorithms block size */ |
| 3341 | plaintext_pad_len = RTE_ALIGN_CEIL(plaintext_len, 16); |
| 3342 | plaintext = (uint8_t *)rte_pktmbuf_append(ut_params->ibuf, |
| 3343 | plaintext_pad_len); |
no test coverage detected