| 11916 | } |
| 11917 | |
| 11918 | static int |
| 11919 | test_authenticated_decryption(const struct aead_test_data *tdata) |
| 11920 | { |
| 11921 | struct crypto_testsuite_params *ts_params = &testsuite_params; |
| 11922 | struct crypto_unittest_params *ut_params = &unittest_params; |
| 11923 | |
| 11924 | int retval; |
| 11925 | uint8_t *plaintext; |
| 11926 | uint32_t i; |
| 11927 | struct rte_cryptodev_info dev_info; |
| 11928 | |
| 11929 | rte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info); |
| 11930 | uint64_t feat_flags = dev_info.feature_flags; |
| 11931 | |
| 11932 | if ((global_api_test_type == CRYPTODEV_RAW_API_TEST) && |
| 11933 | (!(feat_flags & RTE_CRYPTODEV_FF_SYM_RAW_DP))) { |
| 11934 | printf("Device doesn't support RAW data-path APIs.\n"); |
| 11935 | return TEST_SKIPPED; |
| 11936 | } |
| 11937 | |
| 11938 | /* Verify the capabilities */ |
| 11939 | struct rte_cryptodev_sym_capability_idx cap_idx; |
| 11940 | const struct rte_cryptodev_symmetric_capability *capability; |
| 11941 | cap_idx.type = RTE_CRYPTO_SYM_XFORM_AEAD; |
| 11942 | cap_idx.algo.aead = tdata->algo; |
| 11943 | capability = rte_cryptodev_sym_capability_get( |
| 11944 | ts_params->valid_devs[0], &cap_idx); |
| 11945 | if (capability == NULL) |
| 11946 | return TEST_SKIPPED; |
| 11947 | if (rte_cryptodev_sym_capability_check_aead( |
| 11948 | capability, tdata->key.len, tdata->auth_tag.len, |
| 11949 | tdata->aad.len, tdata->iv.len)) |
| 11950 | return TEST_SKIPPED; |
| 11951 | |
| 11952 | /* Create AEAD session */ |
| 11953 | retval = create_aead_session(ts_params->valid_devs[0], |
| 11954 | tdata->algo, |
| 11955 | RTE_CRYPTO_AEAD_OP_DECRYPT, |
| 11956 | tdata->key.data, tdata->key.len, |
| 11957 | tdata->aad.len, tdata->auth_tag.len, |
| 11958 | tdata->iv.len); |
| 11959 | if (retval != TEST_SUCCESS) |
| 11960 | return retval; |
| 11961 | |
| 11962 | /* alloc mbuf and set payload */ |
| 11963 | if (tdata->aad.len > MBUF_SIZE) { |
| 11964 | ut_params->ibuf = rte_pktmbuf_alloc(ts_params->large_mbuf_pool); |
| 11965 | /* Populate full size of add data */ |
| 11966 | for (i = 32; i < MAX_AAD_LENGTH; i += 32) |
| 11967 | memcpy(&tdata->aad.data[i], &tdata->aad.data[0], 32); |
| 11968 | } else |
| 11969 | ut_params->ibuf = rte_pktmbuf_alloc(ts_params->mbuf_pool); |
| 11970 | |
| 11971 | memset(rte_pktmbuf_mtod(ut_params->ibuf, uint8_t *), 0, |
| 11972 | rte_pktmbuf_tailroom(ut_params->ibuf)); |
| 11973 | |
| 11974 | /* Create AEAD operation */ |
| 11975 | retval = create_aead_operation(RTE_CRYPTO_AEAD_OP_DECRYPT, tdata); |
no test coverage detected