DPDK patches and discussions
 help / color / mirror / Atom feed
* [PATCH] test/crypto: test vectors for additional ECDH groups
@ 2025-05-28 14:59 Gowrishankar Muthukrishnan
  0 siblings, 0 replies; only message in thread
From: Gowrishankar Muthukrishnan @ 2025-05-28 14:59 UTC (permalink / raw)
  To: dev, Akhil Goyal, Fan Zhang; +Cc: anoobj, Gowrishankar Muthukrishnan

Add test vectors for ECDH groups 19, 20 and 21.

Signed-off-by: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>
---
 app/test/test_cryptodev_asym.c               |  39 ++-
 app/test/test_cryptodev_ecdh_test_vectors.h  | 344 +++++++++++++++++++
 app/test/test_cryptodev_ecdsa_test_vectors.h |   6 +
 3 files changed, 386 insertions(+), 3 deletions(-)

diff --git a/app/test/test_cryptodev_asym.c b/app/test/test_cryptodev_asym.c
index fcaf73aa1a..46bbc520e6 100644
--- a/app/test/test_cryptodev_asym.c
+++ b/app/test/test_cryptodev_asym.c
@@ -1676,7 +1676,9 @@ test_ecdsa_sign_verify_all_curve(void)
 	const char *msg;
 
 	for (curve_id = SECP192R1; curve_id < END_OF_CURVE_LIST; curve_id++) {
-		if (curve_id == ED25519 || curve_id == ED448)
+		if (curve_id == ED25519 || curve_id == ED448 ||
+		    curve_id == ECGROUP19 || curve_id == ECGROUP20 ||
+		    curve_id == ECGROUP21)
 			continue;
 
 		status = test_ecdsa_sign_verify(curve_id);
@@ -1840,7 +1842,9 @@ test_ecpm_all_curve(void)
 	const char *msg;
 
 	for (curve_id = SECP192R1; curve_id < END_OF_CURVE_LIST; curve_id++) {
-		if (curve_id == SECP521R1_UA || curve_id == ED25519 || curve_id == ED448)
+		if (curve_id == SECP521R1_UA || curve_id == ECGROUP19 ||
+		    curve_id == ECGROUP20 || curve_id == ECGROUP21 ||
+		    curve_id == ED25519 || curve_id == ED448)
 			continue;
 
 		status = test_ecpm(curve_id);
@@ -2043,6 +2047,15 @@ test_ecdh_pub_key_generate(enum curve curve_id)
 	case SECP521R1:
 		input_params = ecdh_param_secp521r1;
 		break;
+	case ECGROUP19:
+		input_params = ecdh_param_group19;
+		break;
+	case ECGROUP20:
+		input_params = ecdh_param_group20;
+		break;
+	case ECGROUP21:
+		input_params = ecdh_param_group21;
+		break;
 	case ED25519:
 		input_params = ecdh_param_ed25519;
 		break;
@@ -2204,6 +2217,15 @@ test_ecdh_pub_key_verify(enum curve curve_id)
 	case SECP521R1:
 		input_params = ecdh_param_secp521r1;
 		break;
+	case ECGROUP19:
+		input_params = ecdh_param_group19;
+		break;
+	case ECGROUP20:
+		input_params = ecdh_param_group20;
+		break;
+	case ECGROUP21:
+		input_params = ecdh_param_group21;
+		break;
 	default:
 		RTE_LOG(ERR, USER1,
 				"line %u FAILED: %s", __LINE__,
@@ -2334,6 +2356,15 @@ test_ecdh_shared_secret(enum curve curve_id)
 	case SECP521R1:
 		input_params = ecdh_param_secp521r1;
 		break;
+	case ECGROUP19:
+		input_params = ecdh_param_group19;
+		break;
+	case ECGROUP20:
+		input_params = ecdh_param_group20;
+		break;
+	case ECGROUP21:
+		input_params = ecdh_param_group21;
+		break;
 	default:
 		RTE_LOG(ERR, USER1,
 				"line %u FAILED: %s", __LINE__,
@@ -2556,7 +2587,9 @@ test_ecdh_all_curve(void)
 	const char *msg;
 
 	for (curve_id = SECP192R1; curve_id < END_OF_CURVE_LIST; curve_id++) {
-		if (curve_id == SECP521R1_UA || curve_id == ED25519 || curve_id == ED448)
+		if (curve_id == SECP521R1_UA || curve_id == ECGROUP19 ||
+		    curve_id == ECGROUP20 || curve_id == ECGROUP21 ||
+		    curve_id == ED25519 || curve_id == ED448)
 			continue;
 
 		status = test_ecdh_priv_key_generate(curve_id);
diff --git a/app/test/test_cryptodev_ecdh_test_vectors.h b/app/test/test_cryptodev_ecdh_test_vectors.h
index 36f92b223f..91719b11c1 100644
--- a/app/test/test_cryptodev_ecdh_test_vectors.h
+++ b/app/test/test_cryptodev_ecdh_test_vectors.h
@@ -553,6 +553,350 @@ struct crypto_testsuite_ecdh_params ecdh_param_secp521r1 = {
 	.curve = RTE_CRYPTO_EC_GROUP_SECP521R1
 };
 
+/** 256 bit Random ECP group
+ * https://datatracker.ietf.org/doc/html/rfc5903#section-8.1
+ */
+
+static uint8_t i_group19[] = {
+	0xC8, 0x8F, 0x01, 0xF5, 0x10, 0xD9, 0xAC, 0x3F,
+	0x70, 0xA2, 0x92, 0xDA, 0xA2, 0x31, 0x6D, 0xE5,
+	0x44, 0xE9, 0xAA, 0xB8, 0xAF, 0xE8, 0x40, 0x49,
+	0xC6, 0x2A, 0x9C, 0x57, 0x86, 0x2D, 0x14, 0x33
+};
+
+static uint8_t gix_group19[] = {
+	0xDA, 0xD0, 0xB6, 0x53, 0x94, 0x22, 0x1C, 0xF9,
+	0xB0, 0x51, 0xE1, 0xFE, 0xCA, 0x57, 0x87, 0xD0,
+	0x98, 0xDF, 0xE6, 0x37, 0xFC, 0x90, 0xB9, 0xEF,
+	0x94, 0x5D, 0x0C, 0x37, 0x72, 0x58, 0x11, 0x80
+};
+
+static uint8_t giy_group19[] = {
+	0x52, 0x71, 0xA0, 0x46, 0x1C, 0xDB, 0x82, 0x52,
+	0xD6, 0x1F, 0x1C, 0x45, 0x6F, 0xA3, 0xE5, 0x9A,
+	0xB1, 0xF4, 0x5B, 0x33, 0xAC, 0xCF, 0x5F, 0x58,
+	0x38, 0x9E, 0x05, 0x77, 0xB8, 0x99, 0x0B, 0xB3
+};
+
+static uint8_t r_group19[] = {
+	0xC6, 0xEF, 0x9C, 0x5D, 0x78, 0xAE, 0x01, 0x2A,
+	0x01, 0x11, 0x64, 0xAC, 0xB3, 0x97, 0xCE, 0x20,
+	0x88, 0x68, 0x5D, 0x8F, 0x06, 0xBF, 0x9B, 0xE0,
+	0xB2, 0x83, 0xAB, 0x46, 0x47, 0x6B, 0xEE, 0x53
+};
+
+static uint8_t grx_group19[] = {
+	0xD1, 0x2D, 0xFB, 0x52, 0x89, 0xC8, 0xD4, 0xF8,
+	0x12, 0x08, 0xB7, 0x02, 0x70, 0x39, 0x8C, 0x34,
+	0x22, 0x96, 0x97, 0x0A, 0x0B, 0xCC, 0xB7, 0x4C,
+	0x73, 0x6F, 0xC7, 0x55, 0x44, 0x94, 0xBF, 0x63
+};
+
+static uint8_t gry_group19[] = {
+	0x56, 0xFB, 0xF3, 0xCA, 0x36, 0x6C, 0xC2, 0x3E,
+	0x81, 0x57, 0x85, 0x4C, 0x13, 0xC5, 0x8D, 0x6A,
+	0xAC, 0x23, 0xF0, 0x46, 0xAD, 0xA3, 0x0F, 0x83,
+	0x53, 0xE7, 0x4F, 0x33, 0x03, 0x98, 0x72, 0xAB
+};
+
+static uint8_t girx_group19[] = {
+	0xD6, 0x84, 0x0F, 0x6B, 0x42, 0xF6, 0xED, 0xAF,
+	0xD1, 0x31, 0x16, 0xE0, 0xE1, 0x25, 0x65, 0x20,
+	0x2F, 0xEF, 0x8E, 0x9E, 0xCE, 0x7D, 0xCE, 0x03,
+	0x81, 0x24, 0x64, 0xD0, 0x4B, 0x94, 0x42, 0xDE
+};
+
+static uint8_t giry_group19[] = {
+	0x52, 0x2B, 0xDE, 0x0A, 0xF0, 0xD8, 0x58, 0x5B,
+	0x8D, 0xEF, 0x9C, 0x18, 0x3B, 0x5A, 0xE3, 0x8F,
+	0x50, 0x23, 0x52, 0x06, 0xA8, 0x67, 0x4E, 0xCB,
+	0x5D, 0x98, 0xED, 0xB2, 0x0E, 0xB1, 0x53, 0xA2
+};
+
+struct crypto_testsuite_ecdh_params ecdh_param_group19 = {
+	.pubkey_qA_x = {
+		.data = gix_group19,
+		.length = sizeof(gix_group19),
+	},
+	.pubkey_qA_y = {
+		.data = giy_group19,
+		.length = sizeof(giy_group19),
+	},
+	.pubkey_qB_x = {
+		.data = grx_group19,
+		.length = sizeof(grx_group19),
+	},
+	.pubkey_qB_y = {
+		.data = gry_group19,
+		.length = sizeof(gry_group19),
+	},
+	.pkey_A = {
+		.data = i_group19,
+		.length = sizeof(i_group19),
+	},
+	.pkey_B = {
+		.data = r_group19,
+		.length = sizeof(r_group19),
+	},
+	.secret_x = {
+		.data = girx_group19,
+		.length = sizeof(girx_group19),
+	},
+	.secret_y = {
+		.data = giry_group19,
+		.length = sizeof(giry_group19),
+	},
+	.curve = RTE_CRYPTO_EC_GROUP_SECP256R1
+};
+
+/** 384 bit Random ECP group
+ * https://datatracker.ietf.org/doc/html/rfc5903#section-8.2
+ */
+
+static uint8_t i_group20[] = {
+	0x09, 0x9F, 0x3C, 0x70, 0x34, 0xD4, 0xA2, 0xC6,
+	0x99, 0x88, 0x4D, 0x73, 0xA3, 0x75, 0xA6, 0x7F,
+	0x76, 0x24, 0xEF, 0x7C, 0x6B, 0x3C, 0x0F, 0x16,
+	0x06, 0x47, 0xB6, 0x74, 0x14, 0xDC, 0xE6, 0x55,
+	0xE3, 0x5B, 0x53, 0x80, 0x41, 0xE6, 0x49, 0xEE,
+	0x3F, 0xAE, 0xF8, 0x96, 0x78, 0x3A, 0xB1, 0x94
+};
+
+static uint8_t gix_group20[] = {
+	0x66, 0x78, 0x42, 0xD7, 0xD1, 0x80, 0xAC, 0x2C,
+	0xDE, 0x6F, 0x74, 0xF3, 0x75, 0x51, 0xF5, 0x57,
+	0x55, 0xC7, 0x64, 0x5C, 0x20, 0xEF, 0x73, 0xE3,
+	0x16, 0x34, 0xFE, 0x72, 0xB4, 0xC5, 0x5E, 0xE6,
+	0xDE, 0x3A, 0xC8, 0x08, 0xAC, 0xB4, 0xBD, 0xB4,
+	0xC8, 0x87, 0x32, 0xAE, 0xE9, 0x5F, 0x41, 0xAA
+};
+
+static uint8_t giy_group20[] = {
+	0x94, 0x82, 0xED, 0x1F, 0xC0, 0xEE, 0xB9, 0xCA,
+	0xFC, 0x49, 0x84, 0x62, 0x5C, 0xCF, 0xC2, 0x3F,
+	0x65, 0x03, 0x21, 0x49, 0xE0, 0xE1, 0x44, 0xAD,
+	0xA0, 0x24, 0x18, 0x15, 0x35, 0xA0, 0xF3, 0x8E,
+	0xEB, 0x9F, 0xCF, 0xF3, 0xC2, 0xC9, 0x47, 0xDA,
+	0xE6, 0x9B, 0x4C, 0x63, 0x45, 0x73, 0xA8, 0x1C
+};
+
+static uint8_t r_group20[] = {
+	0x41, 0xCB, 0x07, 0x79, 0xB4, 0xBD, 0xB8, 0x5D,
+	0x47, 0x84, 0x67, 0x25, 0xFB, 0xEC, 0x3C, 0x94,
+	0x30, 0xFA, 0xB4, 0x6C, 0xC8, 0xDC, 0x50, 0x60,
+	0x85, 0x5C, 0xC9, 0xBD, 0xA0, 0xAA, 0x29, 0x42,
+	0xE0, 0x30, 0x83, 0x12, 0x91, 0x6B, 0x8E, 0xD2,
+	0x96, 0x0E, 0x4B, 0xD5, 0x5A, 0x74, 0x48, 0xFC
+};
+
+static uint8_t grx_group20[] = {
+	0xE5, 0x58, 0xDB, 0xEF, 0x53, 0xEE, 0xCD, 0xE3,
+	0xD3, 0xFC, 0xCF, 0xC1, 0xAE, 0xA0, 0x8A, 0x89,
+	0xA9, 0x87, 0x47, 0x5D, 0x12, 0xFD, 0x95, 0x0D,
+	0x83, 0xCF, 0xA4, 0x17, 0x32, 0xBC, 0x50, 0x9D,
+	0x0D, 0x1A, 0xC4, 0x3A, 0x03, 0x36, 0xDE, 0xF9,
+	0x6F, 0xDA, 0x41, 0xD0, 0x77, 0x4A, 0x35, 0x71
+};
+
+static uint8_t gry_group20[] = {
+	0xDC, 0xFB, 0xEC, 0x7A, 0xAC, 0xF3, 0x19, 0x64,
+	0x72, 0x16, 0x9E, 0x83, 0x84, 0x30, 0x36, 0x7F,
+	0x66, 0xEE, 0xBE, 0x3C, 0x6E, 0x70, 0xC4, 0x16,
+	0xDD, 0x5F, 0x0C, 0x68, 0x75, 0x9D, 0xD1, 0xFF,
+	0xF8, 0x3F, 0xA4, 0x01, 0x42, 0x20, 0x9D, 0xFF,
+	0x5E, 0xAA, 0xD9, 0x6D, 0xB9, 0xE6, 0x38, 0x6C
+};
+
+static uint8_t girx_group20[] = {
+	0x11, 0x18, 0x73, 0x31, 0xC2, 0x79, 0x96, 0x2D,
+	0x93, 0xD6, 0x04, 0x24, 0x3F, 0xD5, 0x92, 0xCB,
+	0x9D, 0x0A, 0x92, 0x6F, 0x42, 0x2E, 0x47, 0x18,
+	0x75, 0x21, 0x28, 0x7E, 0x71, 0x56, 0xC5, 0xC4,
+	0xD6, 0x03, 0x13, 0x55, 0x69, 0xB9, 0xE9, 0xD0,
+	0x9C, 0xF5, 0xD4, 0xA2, 0x70, 0xF5, 0x97, 0x46
+};
+
+static uint8_t giry_group20[] = {
+	0xA2, 0xA9, 0xF3, 0x8E, 0xF5, 0xCA, 0xFB, 0xE2,
+	0x34, 0x7C, 0xF7, 0xEC, 0x24, 0xBD, 0xD5, 0xE6,
+	0x24, 0xBC, 0x93, 0xBF, 0xA8, 0x27, 0x71, 0xF4,
+	0x0D, 0x1B, 0x65, 0xD0, 0x62, 0x56, 0xA8, 0x52,
+	0xC9, 0x83, 0x13, 0x5D, 0x46, 0x69, 0xF8, 0x79,
+	0x2F, 0x2C, 0x1D, 0x55, 0x71, 0x8A, 0xFB, 0xB4
+};
+
+struct crypto_testsuite_ecdh_params ecdh_param_group20 = {
+	.pubkey_qA_x = {
+		.data = gix_group20,
+		.length = sizeof(gix_group20),
+	},
+	.pubkey_qA_y = {
+		.data = giy_group20,
+		.length = sizeof(giy_group20),
+	},
+	.pubkey_qB_x = {
+		.data = grx_group20,
+		.length = sizeof(grx_group20),
+	},
+	.pubkey_qB_y = {
+		.data = gry_group20,
+		.length = sizeof(gry_group20),
+	},
+	.pkey_A = {
+		.data = i_group20,
+		.length = sizeof(i_group20),
+	},
+	.pkey_B = {
+		.data = r_group20,
+		.length = sizeof(r_group20),
+	},
+	.secret_x = {
+		.data = girx_group20,
+		.length = sizeof(girx_group20),
+	},
+	.secret_y = {
+		.data = giry_group20,
+		.length = sizeof(giry_group20),
+	},
+	.curve = RTE_CRYPTO_EC_GROUP_SECP384R1
+};
+
+/** 521 bit Random ECP group
+ * https://datatracker.ietf.org/doc/html/rfc5903#section-8.3
+ */
+
+static uint8_t i_group21[] = {
+	0x00, 0x37, 0xAD, 0xE9, 0x31, 0x9A, 0x89, 0xF4,
+	0xDA, 0xBD, 0xB3, 0xEF, 0x41, 0x1A, 0xAC, 0xCC,
+	0xA5, 0x12, 0x3C, 0x61, 0xAC, 0xAB, 0x57, 0xB5,
+	0x39, 0x3D, 0xCE, 0x47, 0x60, 0x81, 0x72, 0xA0,
+	0x95, 0xAA, 0x85, 0xA3, 0x0F, 0xE1, 0xC2, 0x95,
+	0x2C, 0x67, 0x71, 0xD9, 0x37, 0xBA, 0x97, 0x77,
+	0xF5, 0x95, 0x7B, 0x26, 0x39, 0xBA, 0xB0, 0x72,
+	0x46, 0x2F, 0x68, 0xC2, 0x7A, 0x57, 0x38, 0x2D,
+	0x4A, 0x52
+};
+
+static uint8_t gix_group21[] = {
+	0x00, 0x15, 0x41, 0x7E, 0x84, 0xDB, 0xF2, 0x8C,
+	0x0A, 0xD3, 0xC2, 0x78, 0x71, 0x33, 0x49, 0xDC,
+	0x7D, 0xF1, 0x53, 0xC8, 0x97, 0xA1, 0x89, 0x1B,
+	0xD9, 0x8B, 0xAB, 0x43, 0x57, 0xC9, 0xEC, 0xBE,
+	0xE1, 0xE3, 0xBF, 0x42, 0xE0, 0x0B, 0x8E, 0x38,
+	0x0A, 0xEA, 0xE5, 0x7C, 0x2D, 0x10, 0x75, 0x64,
+	0x94, 0x18, 0x85, 0x94, 0x2A, 0xF5, 0xA7, 0xF4,
+	0x60, 0x17, 0x23, 0xC4, 0x19, 0x5D, 0x17, 0x6C,
+	0xED, 0x3E
+};
+
+static uint8_t giy_group21[] = {
+	0x01, 0x7C, 0xAE, 0x20, 0xB6, 0x64, 0x1D, 0x2E,
+	0xEB, 0x69, 0x57, 0x86, 0xD8, 0xC9, 0x46, 0x14,
+	0x62, 0x39, 0xD0, 0x99, 0xE1, 0x8E, 0x1D, 0x5A,
+	0x51, 0x4C, 0x73, 0x9D, 0x7C, 0xB4, 0xA1, 0x0A,
+	0xD8, 0xA7, 0x88, 0x01, 0x5A, 0xC4, 0x05, 0xD7,
+	0x79, 0x9D, 0xC7, 0x5E, 0x7B, 0x7D, 0x5B, 0x6C,
+	0xF2, 0x26, 0x1A, 0x6A, 0x7F, 0x15, 0x07, 0x43,
+	0x8B, 0xF0, 0x1B, 0xEB, 0x6C, 0xA3, 0x92, 0x6F,
+	0x95, 0x82
+};
+
+static uint8_t r_group21[] = {
+	0x01, 0x45, 0xBA, 0x99, 0xA8, 0x47, 0xAF, 0x43,
+	0x79, 0x3F, 0xDD, 0x0E, 0x87, 0x2E, 0x7C, 0xDF,
+	0xA1, 0x6B, 0xE3, 0x0F, 0xDC, 0x78, 0x0F, 0x97,
+	0xBC, 0xCC, 0x3F, 0x07, 0x83, 0x80, 0x20, 0x1E,
+	0x9C, 0x67, 0x7D, 0x60, 0x0B, 0x34, 0x37, 0x57,
+	0xA3, 0xBD, 0xBF, 0x2A, 0x31, 0x63, 0xE4, 0xC2,
+	0xF8, 0x69, 0xCC, 0xA7, 0x45, 0x8A, 0xA4, 0xA4,
+	0xEF, 0xFC, 0x31, 0x1F, 0x5C, 0xB1, 0x51, 0x68,
+	0x5E, 0xB9
+};
+
+static uint8_t grx_group21[] = {
+	0x00, 0xD0, 0xB3, 0x97, 0x5A, 0xC4, 0xB7, 0x99,
+	0xF5, 0xBE, 0xA1, 0x6D, 0x5E, 0x13, 0xE9, 0xAF,
+	0x97, 0x1D, 0x5E, 0x9B, 0x98, 0x4C, 0x9F, 0x39,
+	0x72, 0x8B, 0x5E, 0x57, 0x39, 0x73, 0x5A, 0x21,
+	0x9B, 0x97, 0xC3, 0x56, 0x43, 0x6A, 0xDC, 0x6E,
+	0x95, 0xBB, 0x03, 0x52, 0xF6, 0xBE, 0x64, 0xA6,
+	0xC2, 0x91, 0x2D, 0x4E, 0xF2, 0xD0, 0x43, 0x3C,
+	0xED, 0x2B, 0x61, 0x71, 0x64, 0x00, 0x12, 0xD9,
+	0x46, 0x0F
+};
+
+static uint8_t gry_group21[] = {
+	0x01, 0x5C, 0x68, 0x22, 0x63, 0x83, 0x95, 0x6E,
+	0x3B, 0xD0, 0x66, 0xE7, 0x97, 0xB6, 0x23, 0xC2,
+	0x7C, 0xE0, 0xEA, 0xC2, 0xF5, 0x51, 0xA1, 0x0C,
+	0x2C, 0x72, 0x4D, 0x98, 0x52, 0x07, 0x7B, 0x87,
+	0x22, 0x0B, 0x65, 0x36, 0xC5, 0xC4, 0x08, 0xA1,
+	0xD2, 0xAE, 0xBB, 0x8E, 0x86, 0xD6, 0x78, 0xAE,
+	0x49, 0xCB, 0x57, 0x09, 0x1F, 0x47, 0x32, 0x29,
+	0x65, 0x79, 0xAB, 0x44, 0xFC, 0xD1, 0x7F, 0x0F,
+	0xC5, 0x6A
+};
+
+static uint8_t girx_group21[] = {
+	0x01, 0x14, 0x4C, 0x7D, 0x79, 0xAE, 0x69, 0x56,
+	0xBC, 0x8E, 0xDB, 0x8E, 0x7C, 0x78, 0x7C, 0x45,
+	0x21, 0xCB, 0x08, 0x6F, 0xA6, 0x44, 0x07, 0xF9,
+	0x78, 0x94, 0xE5, 0xE6, 0xB2, 0xD7, 0x9B, 0x04,
+	0xD1, 0x42, 0x7E, 0x73, 0xCA, 0x4B, 0xAA, 0x24,
+	0x0A, 0x34, 0x78, 0x68, 0x59, 0x81, 0x0C, 0x06,
+	0xB3, 0xC7, 0x15, 0xA3, 0xA8, 0xCC, 0x31, 0x51,
+	0xF2, 0xBE, 0xE4, 0x17, 0x99, 0x6D, 0x19, 0xF3,
+	0xDD, 0xEA
+};
+
+static uint8_t giry_group21[] = {
+	0x01, 0xB9, 0x01, 0xE6, 0xB1, 0x7D, 0xB2, 0x94,
+	0x7A, 0xC0, 0x17, 0xD8, 0x53, 0xEF, 0x1C, 0x16,
+	0x74, 0xE5, 0xCF, 0xE5, 0x9C, 0xDA, 0x18, 0xD0,
+	0x78, 0xE0, 0x5D, 0x1B, 0x52, 0x42, 0xAD, 0xAA,
+	0x9F, 0xFC, 0x3C, 0x63, 0xEA, 0x05, 0xED, 0xB1,
+	0xE1, 0x3C, 0xE5, 0xB3, 0xA8, 0xE5, 0x0C, 0x3E,
+	0xB6, 0x22, 0xE8, 0xDA, 0x1B, 0x38, 0xE0, 0xBD,
+	0xD1, 0xF8, 0x85, 0x69, 0xD6, 0xC9, 0x9B, 0xAF,
+	0xFA, 0x43
+};
+
+struct crypto_testsuite_ecdh_params ecdh_param_group21 = {
+	.pubkey_qA_x = {
+		.data = gix_group21,
+		.length = sizeof(gix_group21),
+	},
+	.pubkey_qA_y = {
+		.data = giy_group21,
+		.length = sizeof(giy_group21),
+	},
+	.pubkey_qB_x = {
+		.data = grx_group21,
+		.length = sizeof(grx_group21),
+	},
+	.pubkey_qB_y = {
+		.data = gry_group21,
+		.length = sizeof(gry_group21),
+	},
+	.pkey_A = {
+		.data = i_group21,
+		.length = sizeof(i_group21),
+	},
+	.pkey_B = {
+		.data = r_group21,
+		.length = sizeof(r_group21),
+	},
+	.secret_x = {
+		.data = girx_group21,
+		.length = sizeof(girx_group21),
+	},
+	.secret_y = {
+		.data = giry_group21,
+		.length = sizeof(giry_group21),
+	},
+	.curve = RTE_CRYPTO_EC_GROUP_SECP521R1
+};
+
 /** ED25519 test vector */
 
 static uint8_t privkey_ed25519[] = {
diff --git a/app/test/test_cryptodev_ecdsa_test_vectors.h b/app/test/test_cryptodev_ecdsa_test_vectors.h
index 636a1ab1b2..f6f6217898 100644
--- a/app/test/test_cryptodev_ecdsa_test_vectors.h
+++ b/app/test/test_cryptodev_ecdsa_test_vectors.h
@@ -15,6 +15,9 @@ enum curve {
 	SECP384R1,
 	SECP521R1,
 	SECP521R1_UA,
+	ECGROUP19,
+	ECGROUP20,
+	ECGROUP21,
 	ED25519,
 	ED448,
 	END_OF_CURVE_LIST
@@ -26,6 +29,9 @@ const char *curve[] = {"SECP192R1",
 		       "SECP384R1",
 		       "SECP521R1",
 		       "SECP521R1(unaligned)",
+		       "ECDH group 19",
+		       "ECDH group 20",
+		       "ECDH group 21",
 		       "ED25519",
 		       "ED448",
 };
-- 
2.25.1


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2025-05-28 15:00 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-05-28 14:59 [PATCH] test/crypto: test vectors for additional ECDH groups Gowrishankar Muthukrishnan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).