As per RFC 8017 (A.1.2), RSA private key should be represented with both exponent and CRT forms of data for inter operability.
Fixes: a379799cbaaf ("test/crypto: add RSA key type CRT") Cc: sta...@dpdk.org Signed-off-by: Gowrishankar Muthukrishnan <gmuthukri...@marvell.com> --- app/test/test_cryptodev_asym.c | 16 ++++++++--- app/test/test_cryptodev_rsa_test_vectors.h | 32 +++++----------------- 2 files changed, 19 insertions(+), 29 deletions(-) diff --git a/app/test/test_cryptodev_asym.c b/app/test/test_cryptodev_asym.c index fcaf73aa1a..a5f3eae41d 100644 --- a/app/test/test_cryptodev_asym.c +++ b/app/test/test_cryptodev_asym.c @@ -260,6 +260,7 @@ test_rsa_sign_verify(void) struct rte_mempool *sess_mpool = ts_params->session_mpool; struct rte_cryptodev_asym_capability_idx idx; uint8_t dev_id = ts_params->valid_devs[0]; + struct rte_crypto_asym_xform xform; void *sess = NULL; struct rte_cryptodev_info dev_info; int ret, status = TEST_SUCCESS; @@ -280,7 +281,10 @@ test_rsa_sign_verify(void) return TEST_SKIPPED; } - ret = rte_cryptodev_asym_session_create(dev_id, &rsa_xform, sess_mpool, &sess); + memcpy(&xform, &rsa_xform, sizeof(rsa_xform)); + xform.rsa.key_type = RTE_RSA_KEY_TYPE_EXP; + + ret = rte_cryptodev_asym_session_create(dev_id, &xform, sess_mpool, &sess); if (ret < 0) { RTE_LOG(ERR, USER1, "Session creation failed for " @@ -306,6 +310,7 @@ test_rsa_enc_dec(void) struct rte_mempool *sess_mpool = ts_params->session_mpool; struct rte_cryptodev_asym_capability_idx idx; uint8_t dev_id = ts_params->valid_devs[0]; + struct rte_crypto_asym_xform xform; void *sess = NULL; struct rte_cryptodev_info dev_info; int ret, status = TEST_SUCCESS; @@ -326,7 +331,10 @@ test_rsa_enc_dec(void) return TEST_SKIPPED; } - ret = rte_cryptodev_asym_session_create(dev_id, &rsa_xform, sess_mpool, &sess); + memcpy(&xform, &rsa_xform, sizeof(rsa_xform)); + xform.rsa.key_type = RTE_RSA_KEY_TYPE_EXP; + + ret = rte_cryptodev_asym_session_create(dev_id, &xform, sess_mpool, &sess); if (ret < 0) { RTE_LOG(ERR, USER1, "Session creation failed for enc_dec\n"); @@ -371,7 +379,7 @@ test_rsa_sign_verify_crt(void) return TEST_SKIPPED; } - ret = rte_cryptodev_asym_session_create(dev_id, &rsa_xform_crt, sess_mpool, &sess); + ret = rte_cryptodev_asym_session_create(dev_id, &rsa_xform, sess_mpool, &sess); if (ret < 0) { RTE_LOG(ERR, USER1, "Session creation failed for " @@ -417,7 +425,7 @@ test_rsa_enc_dec_crt(void) return TEST_SKIPPED; } - ret = rte_cryptodev_asym_session_create(dev_id, &rsa_xform_crt, sess_mpool, &sess); + ret = rte_cryptodev_asym_session_create(dev_id, &rsa_xform, sess_mpool, &sess); if (ret < 0) { RTE_LOG(ERR, USER1, "Session creation failed for " diff --git a/app/test/test_cryptodev_rsa_test_vectors.h b/app/test/test_cryptodev_rsa_test_vectors.h index 1b7b451387..9652b0d43a 100644 --- a/app/test/test_cryptodev_rsa_test_vectors.h +++ b/app/test/test_cryptodev_rsa_test_vectors.h @@ -340,7 +340,7 @@ uint8_t rsa_qInv[] = { 0x71, 0x94, 0xdd, 0xa0, 0xf5, 0x1e, 0x6d, 0xcc }; -/** rsa xform using exponent key */ +/** rsa xform (of QT private key type by default) */ struct rte_crypto_asym_xform rsa_xform = { .next = NULL, .xform_type = RTE_CRYPTO_ASYM_XFORM_RSA, @@ -354,29 +354,6 @@ struct rte_crypto_asym_xform rsa_xform = { .data = rsa_e, .length = sizeof(rsa_e) }, - .key_type = RTE_RSA_KEY_TYPE_EXP, - .d = { - .data = rsa_d, - .length = sizeof(rsa_d) - } - } -}; - -/** rsa xform using quintuple key */ -struct rte_crypto_asym_xform rsa_xform_crt = { - .next = NULL, - .xform_type = RTE_CRYPTO_ASYM_XFORM_RSA, - .rsa = { - .padding.type = RTE_CRYPTO_RSA_PADDING_PKCS1_5, - .n = { - .data = rsa_n, - .length = sizeof(rsa_n) - }, - .e = { - .data = rsa_e, - .length = sizeof(rsa_e) - }, - .key_type = RTE_RSA_KEY_TYPE_QT, .qt = { .p = { .data = rsa_p, @@ -398,7 +375,12 @@ struct rte_crypto_asym_xform rsa_xform_crt = { .data = rsa_qInv, .length = sizeof(rsa_qInv) }, - } + }, + .d = { + .data = rsa_d, + .length = sizeof(rsa_d) + }, + .key_type = RTE_RSA_KEY_TYPE_QT } }; -- 2.25.1