@@ -3510,6 +3510,14 @@ static struct unit_test_suite cryptodev_openssl_asym_testsuite = {
test_rsa_sign_verify_crt),
TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_mod_inv),
TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_mod_exp),
+ TEST_CASE_NAMED_WITH_DATA(
+ "Modex test for zero padding",
+ ut_setup_asym, ut_teardown_asym,
+ modular_exponentiation, &modex_test_cases[0]),
+ TEST_CASE_NAMED_WITH_DATA(
+ "Modex test for zero padding (2)",
+ ut_setup_asym, ut_teardown_asym,
+ modular_exponentiation, &modex_test_cases[1]),
TEST_CASE_NAMED_WITH_DATA(
"Modex Group 5 test",
ut_setup_asym, ut_teardown_asym,
@@ -3585,6 +3593,14 @@ static struct unit_test_suite cryptodev_octeontx_asym_testsuite = {
TEST_CASE_ST(ut_setup_asym, ut_teardown_asym,
test_rsa_sign_verify_crt),
TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_mod_exp),
+ TEST_CASE_NAMED_WITH_DATA(
+ "Modex test for zero padding",
+ ut_setup_asym, ut_teardown_asym,
+ modular_exponentiation, &modex_test_cases[0]),
+ TEST_CASE_NAMED_WITH_DATA(
+ "Modex test for zero padding (2)",
+ ut_setup_asym, ut_teardown_asym,
+ modular_exponentiation, &modex_test_cases[1]),
TEST_CASE_NAMED_WITH_DATA(
"Modex Group 5 test",
ut_setup_asym, ut_teardown_asym,
@@ -265,6 +265,81 @@ struct rte_crypto_asym_xform modinv_xform = {
}
};
+static const struct
+modex_test_data modex_test_cases[] = {
+{
+ .description = "Modular Exponentiation (mod=20, base=20, exp=12, res=18)",
+ .xform_type = RTE_CRYPTO_ASYM_XFORM_MODEX,
+ .base = {
+ .data = {
+ 0x00, 0x00, 0x45, 0xCA, 0x2C, 0x5C, 0x3A, 0x90,
+ 0x00, 0xC4, 0xD7, 0x47, 0xA8, 0x2B, 0x12, 0x07,
+ 0xBD, 0x1F, 0xD7, 0x81
+ },
+ .len = 20
+ },
+ .exponent = {
+ .data = {
+ 0x00, 0x00, 0x00, 0x75, 0x74, 0x19, 0x19, 0x69,
+ 0xBF, 0x15, 0x2A, 0xAC
+ },
+ .len = 12
+ },
+ .reminder = {
+ .data = {
+ 0x5c, 0x94, 0x8f, 0x00, 0x79, 0xe3, 0xe1, 0x0b,
+ 0x3f, 0x3e, 0x36, 0x75, 0xed, 0x1d, 0x84, 0xc6,
+ 0x36, 0x9e
+ },
+ .len = 18
+ },
+ .modulus = {
+ .data = {
+ 0x00, 0x00, 0x99, 0x28, 0x09, 0x8A, 0xE9, 0x89,
+ 0xBB, 0x81, 0x3B, 0x07, 0x0E, 0x31, 0x00, 0x7F,
+ 0x79, 0x97, 0xED, 0x35
+ },
+ .len = 20
+ }
+},
+{
+ .description = "Modular Exponentiation (mod=32, base=20, exp=12, res=17)",
+ .xform_type = RTE_CRYPTO_ASYM_XFORM_MODEX,
+ .base = {
+ .data = {
+ 0x01, 0x31, 0x72, 0xFB, 0x81, 0x9D, 0x81, 0x7A,
+ 0x91, 0xDC, 0xE6, 0x6C, 0x2D, 0x55, 0xD9, 0x25,
+ 0x7A, 0xB2, 0xFF, 0xFF
+ },
+ .len = 20
+ },
+ .exponent = {
+ .data = {
+ 0x00, 0x00, 0x00, 0x02, 0x36, 0x38, 0x31, 0x47,
+ 0x3C, 0x07, 0x36, 0x21
+ },
+ .len = 12
+ },
+ .reminder = {
+ .data = {
+ 0x02, 0x99, 0x2F, 0xE3, 0x00, 0x9F, 0xF0, 0x9E,
+ 0x65, 0x3C, 0x0B, 0x4A, 0xD3, 0x1B, 0x7C, 0x7F,
+ 0x1C
+ },
+ .len = 17
+ },
+ .modulus = {
+ .data = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
+ 0xCE, 0xF0, 0x7C, 0x13, 0x26, 0x90, 0xAF, 0x49,
+ 0x06, 0x4D, 0xA4, 0x5C, 0xB2, 0x43, 0x13, 0x25,
+ },
+ .len = 32
+ }
+}
+};
+
static const struct
modex_test_data modex_group_test_cases[] = {
{