All of lore.kernel.org
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH 1/3] common/cnxk: add const values to ec groups
@ 2021-07-26  4:48 kirankumark
  2021-07-26  4:48 ` [dpdk-dev] [PATCH 2/3] crypto/cnxk: update asym ECDSA messages in sync with ucode kirankumark
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: kirankumark @ 2021-07-26  4:48 UTC (permalink / raw)
  To: Nithin Dabilpuram, Kiran Kumar K, Sunil Kumar Kori, Satha Rao; +Cc: dev

From: Kiran Kumar K <kirankumark@marvell.com>

New ucode expects const values A and B for asymmetric ECDSA
messages. Adding roc support for this.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
---
 drivers/common/cnxk/roc_ae.c | 70 ++++++++++++++++++++++++++++++++++--
 drivers/common/cnxk/roc_ae.h | 17 ++++++++-
 2 files changed, 84 insertions(+), 3 deletions(-)

diff --git a/drivers/common/cnxk/roc_ae.c b/drivers/common/cnxk/roc_ae.c
index cf3f7fc5f2..929da05983 100644
--- a/drivers/common/cnxk/roc_ae.c
+++ b/drivers/common/cnxk/roc_ae.c
@@ -23,6 +23,16 @@ const struct roc_ae_ec_group ae_ec_grp[ROC_AE_EC_ID_PMAX] = {
 				   0x99, 0xDE, 0xF8, 0x36, 0x14, 0x6B,
 				   0xC9, 0xB1, 0xB4, 0xD2, 0x28, 0x31},
 			  .length = 24},
+		.consta = {.data = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+				    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+				    0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF,
+				    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC},
+			   .length = 24},
+		.constb = {.data = {0x64, 0x21, 0x05, 0x19, 0xE5, 0x9C,
+				    0x80, 0xE7, 0x0F, 0xA7, 0xE9, 0xAB,
+				    0x72, 0x24, 0x30, 0x49, 0xFE, 0xB8,
+				    0xDE, 0xEC, 0xC1, 0x46, 0xB9, 0xB1},
+			   .length = 24},
 	},
 	{
 		.prime = {.data = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
@@ -35,6 +45,16 @@ const struct roc_ae_ec_group ae_ec_grp[ROC_AE_EC_ID_PMAX] = {
 				   0X16, 0XA2, 0XE0, 0XB8, 0XF0, 0X3E, 0X13,
 				   0XDD, 0X29, 0X45, 0X5C, 0X5C, 0X2A, 0X3D},
 			  .length = 28},
+		.consta = {.data = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+				    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+				    0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+				    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE},
+			   .length = 28},
+		.constb = {.data = {0xB4, 0x05, 0x0A, 0x85, 0x0C, 0x04, 0xB3,
+				    0xAB, 0xF5, 0x41, 0x32, 0x56, 0x50, 0x44,
+				    0xB0, 0xB7, 0xD7, 0xBF, 0xD8, 0xBA, 0x27,
+				    0x0B, 0x39, 0x43, 0x23, 0x55, 0xFF, 0xB4},
+			   .length = 28},
 	},
 	{
 		.prime = {.data = {0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00,
@@ -49,6 +69,18 @@ const struct roc_ae_ec_group ae_ec_grp[ROC_AE_EC_ID_PMAX] = {
 				   0x17, 0x9E, 0x84, 0xF3, 0xB9, 0xCA, 0xC2,
 				   0xFC, 0x63, 0x25, 0x51},
 			  .length = 32},
+		.consta = {.data = {0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00,
+				    0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+				    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
+				    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+				    0xFF, 0xFF, 0xFF, 0xFC},
+			   .length = 32},
+		.constb = {.data = {0x5A, 0xC6, 0x35, 0xD8, 0xAA, 0x3A, 0x93,
+				    0xE7, 0xB3, 0xEB, 0xBD, 0x55, 0x76, 0x98,
+				    0x86, 0xBC, 0x65, 0x1D, 0x06, 0xB0, 0xCC,
+				    0x53, 0xB0, 0xF6, 0x3B, 0xCE, 0x3C, 0x3E,
+				    0x27, 0xD2, 0x60, 0x4B},
+			   .length = 32},
 	},
 	{.prime = {.data = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
 			    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
@@ -63,7 +95,21 @@ const struct roc_ae_ec_group ae_ec_grp[ROC_AE_EC_ID_PMAX] = {
 			    0xC7, 0x63, 0x4D, 0x81, 0xF4, 0x37, 0x2D, 0xDF,
 			    0x58, 0x1A, 0x0D, 0xB2, 0x48, 0xB0, 0xA7, 0x7A,
 			    0xEC, 0xEC, 0x19, 0x6A, 0xCC, 0xC5, 0x29, 0x73},
-		   .length = 48}},
+		   .length = 48},
+	 .consta = {.data = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			     0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			     0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			     0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE,
+			     0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
+			     0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFC},
+		    .length = 48},
+	 .constb = {.data = {0xB3, 0x31, 0x2F, 0xA7, 0xE2, 0x3E, 0xE7, 0xE4,
+			     0x98, 0x8E, 0x05, 0x6B, 0xE3, 0xF8, 0x2D, 0x19,
+			     0x18, 0x1D, 0x9C, 0x6E, 0xFE, 0x81, 0x41, 0x12,
+			     0x03, 0x14, 0x08, 0x8F, 0x50, 0x13, 0x87, 0x5A,
+			     0xC6, 0x56, 0x39, 0x8D, 0x8A, 0x2E, 0xD1, 0x9D,
+			     0x2A, 0x85, 0xC8, 0xED, 0xD3, 0xEC, 0x2A, 0xEF},
+		    .length = 48}},
 	{.prime = {.data = {0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
 			    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
 			    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
@@ -83,7 +129,27 @@ const struct roc_ae_ec_group ae_ec_grp[ROC_AE_EC_ID_PMAX] = {
 			    0xA5, 0xD0, 0x3B, 0xB5, 0xC9, 0xB8, 0x89, 0x9C,
 			    0x47, 0xAE, 0xBB, 0x6F, 0xB7, 0x1E, 0x91, 0x38,
 			    0x64, 0x09},
-		   .length = 66}}};
+		   .length = 66},
+	 .consta = {.data = {0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			     0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			     0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			     0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			     0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			     0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			     0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			     0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			     0xFF, 0xFC},
+		    .length = 66},
+	 .constb = {.data = {0x00, 0x51, 0x95, 0x3E, 0xB9, 0x61, 0x8E, 0x1C,
+			     0x9A, 0x1F, 0x92, 0x9A, 0x21, 0xA0, 0xB6, 0x85,
+			     0x40, 0xEE, 0xA2, 0xDA, 0x72, 0x5B, 0x99, 0xB3,
+			     0x15, 0xF3, 0xB8, 0xB4, 0x89, 0x91, 0x8E, 0xF1,
+			     0x09, 0xE1, 0x56, 0x19, 0x39, 0x51, 0xEC, 0x7E,
+			     0x93, 0x7B, 0x16, 0x52, 0xC0, 0xBD, 0x3B, 0xB1,
+			     0xBF, 0x07, 0x35, 0x73, 0xDF, 0x88, 0x3D, 0x2C,
+			     0x34, 0xF1, 0xEF, 0x45, 0x1F, 0xD4, 0x6B, 0x50,
+			     0x3F, 0x00},
+		    .length = 66}}};
 
 int
 roc_ae_ec_grp_get(struct roc_ae_ec_group **tbl)
diff --git a/drivers/common/cnxk/roc_ae.h b/drivers/common/cnxk/roc_ae.h
index 5072cc5a5e..9c637d67ef 100644
--- a/drivers/common/cnxk/roc_ae.h
+++ b/drivers/common/cnxk/roc_ae.h
@@ -30,7 +30,10 @@ typedef enum {
 	ROC_AE_EC_ID_P256 = 2,
 	ROC_AE_EC_ID_P384 = 3,
 	ROC_AE_EC_ID_P521 = 4,
-	ROC_AE_EC_ID_PMAX = 5
+	ROC_AE_EC_ID_P160 = 5,
+	ROC_AE_EC_ID_P320 = 6,
+	ROC_AE_EC_ID_P512 = 7,
+	ROC_AE_EC_ID_PMAX = 8
 } roc_ae_ec_id;
 
 /* Prime and order fields of built-in elliptic curves */
@@ -46,6 +49,18 @@ struct roc_ae_ec_group {
 		uint8_t data[66];
 		unsigned int length;
 	} order;
+
+	struct {
+		/* P521 maximum length */
+		uint8_t data[66];
+		unsigned int length;
+	} consta;
+
+	struct {
+		/* P521 maximum length */
+		uint8_t data[66];
+		unsigned int length;
+	} constb;
 };
 
 struct roc_ae_ec_ctx {
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [dpdk-dev] [PATCH 2/3] crypto/cnxk: update asym ECDSA messages in sync with ucode
  2021-07-26  4:48 [dpdk-dev] [PATCH 1/3] common/cnxk: add const values to ec groups kirankumark
@ 2021-07-26  4:48 ` kirankumark
  2021-07-26  4:48 ` [dpdk-dev] [PATCH 3/3] common/cpt: " kirankumark
  2021-07-27 17:34 ` [dpdk-dev] [EXT] [PATCH 1/3] common/cnxk: add const values to ec groups Akhil Goyal
  2 siblings, 0 replies; 4+ messages in thread
From: kirankumark @ 2021-07-26  4:48 UTC (permalink / raw)
  To: Ankur Dwivedi, Anoob Joseph, Tejasree Kondoj; +Cc: dev, Kiran Kumar K

From: Kiran Kumar K <kirankumark@marvell.com>

Adding changes to asymmetric ECDSA messages to align with
the new ucode for cnxk device.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
---
 drivers/crypto/cnxk/cnxk_ae.h        | 24 ++++++++++++++++++++----
 drivers/crypto/cnxk/cnxk_cryptodev.h |  2 +-
 2 files changed, 21 insertions(+), 5 deletions(-)

diff --git a/drivers/crypto/cnxk/cnxk_ae.h b/drivers/crypto/cnxk/cnxk_ae.h
index c752e62ea5..174a940ab8 100644
--- a/drivers/crypto/cnxk/cnxk_ae.h
+++ b/drivers/crypto/cnxk/cnxk_ae.h
@@ -439,7 +439,7 @@ cnxk_ae_ecdsa_sign_prep(struct rte_crypto_ecdsa_op_param *ecdsa,
 	 * Please note, private key, order cannot exceed prime
 	 * length i.e 3 * p_align.
 	 */
-	dlen = sizeof(fpm_table_iova) + k_align + m_align + p_align * 3;
+	dlen = sizeof(fpm_table_iova) + k_align + m_align + p_align * 5;
 
 	memset(dptr, 0, dlen);
 
@@ -461,12 +461,18 @@ cnxk_ae_ecdsa_sign_prep(struct rte_crypto_ecdsa_op_param *ecdsa,
 	memcpy(dptr, ecdsa->message.data, message_len);
 	dptr += m_align;
 
+	memcpy(dptr, ec_grp->consta.data, prime_len);
+	dptr += p_align;
+
+	memcpy(dptr, ec_grp->constb.data, prime_len);
+	dptr += p_align;
+
 	/* Setup opcodes */
 	w4.s.opcode_major = ROC_AE_MAJOR_OP_ECDSA;
 	w4.s.opcode_minor = ROC_AE_MINOR_OP_ECDSA_SIGN;
 
 	w4.s.param1 = curveid | (message_len << 8);
-	w4.s.param2 = k_len;
+	w4.s.param2 = (pkey_len << 8) | k_len;
 	w4.s.dlen = dlen;
 
 	inst->w4.u64 = w4.u64;
@@ -521,7 +527,7 @@ cnxk_ae_ecdsa_verify_prep(struct rte_crypto_ecdsa_op_param *ecdsa,
 	 * Please note sign, public key and order can not exceed prime length
 	 * i.e. 6 * p_align
 	 */
-	dlen = sizeof(fpm_table_iova) + m_align + (6 * p_align);
+	dlen = sizeof(fpm_table_iova) + m_align + (8 * p_align);
 
 	memset(dptr, 0, dlen);
 
@@ -549,6 +555,12 @@ cnxk_ae_ecdsa_verify_prep(struct rte_crypto_ecdsa_op_param *ecdsa,
 	memcpy(dptr + qy_offset, ecdsa->q.y.data, qy_len);
 	dptr += p_align;
 
+	memcpy(dptr, ec_grp->consta.data, prime_len);
+	dptr += p_align;
+
+	memcpy(dptr, ec_grp->constb.data, prime_len);
+	dptr += p_align;
+
 	/* Setup opcodes */
 	w4.s.opcode_major = ROC_AE_MAJOR_OP_ECDSA;
 	w4.s.opcode_minor = ROC_AE_MINOR_OP_ECDSA_VERIFY;
@@ -612,7 +624,7 @@ cnxk_ae_ecpm_prep(struct rte_crypto_ecpm_op_param *ecpm,
 	 * scalar length),
 	 * Please note point length is equivalent to prime of the curve
 	 */
-	dlen = 3 * p_align + scalar_align;
+	dlen = 5 * p_align + scalar_align;
 
 	x1_offset = prime_len - x1_len;
 	y1_offset = prime_len - y1_len;
@@ -628,6 +640,10 @@ cnxk_ae_ecpm_prep(struct rte_crypto_ecpm_op_param *ecpm,
 	dptr += scalar_align;
 	memcpy(dptr, ec_grp->prime.data, ec_grp->prime.length);
 	dptr += p_align;
+	memcpy(dptr, ec_grp->consta.data, ec_grp->consta.length);
+	dptr += p_align;
+	memcpy(dptr, ec_grp->constb.data, ec_grp->constb.length);
+	dptr += p_align;
 
 	/* Setup opcodes */
 	w4.s.opcode_major = ROC_AE_MAJOR_OP_ECC;
diff --git a/drivers/crypto/cnxk/cnxk_cryptodev.h b/drivers/crypto/cnxk/cnxk_cryptodev.h
index ff46d16e58..b3856f7eaa 100644
--- a/drivers/crypto/cnxk/cnxk_cryptodev.h
+++ b/drivers/crypto/cnxk/cnxk_cryptodev.h
@@ -13,7 +13,7 @@
 #define CNXK_CPT_MAX_CAPS	 34
 #define CNXK_SEC_CRYPTO_MAX_CAPS 4
 #define CNXK_SEC_MAX_CAPS	 3
-#define CNXK_AE_EC_ID_MAX	 5
+#define CNXK_AE_EC_ID_MAX	 8
 /**
  * Device private data
  */
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [dpdk-dev] [PATCH 3/3] common/cpt: update asym ECDSA messages in sync with ucode
  2021-07-26  4:48 [dpdk-dev] [PATCH 1/3] common/cnxk: add const values to ec groups kirankumark
  2021-07-26  4:48 ` [dpdk-dev] [PATCH 2/3] crypto/cnxk: update asym ECDSA messages in sync with ucode kirankumark
@ 2021-07-26  4:48 ` kirankumark
  2021-07-27 17:34 ` [dpdk-dev] [EXT] [PATCH 1/3] common/cnxk: add const values to ec groups Akhil Goyal
  2 siblings, 0 replies; 4+ messages in thread
From: kirankumark @ 2021-07-26  4:48 UTC (permalink / raw)
  To: Anoob Joseph; +Cc: dev, Kiran Kumar K

From: Kiran Kumar K <kirankumark@marvell.com>

Adding changes to asymmetric ECDSA messages to align with
the new ucode for octeontx2 device.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
---
 drivers/common/cpt/cpt_mcode_defines.h |  17 +-
 drivers/common/cpt/cpt_ucode_asym.h    | 267 +++++++++++++++----------
 2 files changed, 176 insertions(+), 108 deletions(-)

diff --git a/drivers/common/cpt/cpt_mcode_defines.h b/drivers/common/cpt/cpt_mcode_defines.h
index f63fae6b59..f16ee44297 100644
--- a/drivers/common/cpt/cpt_mcode_defines.h
+++ b/drivers/common/cpt/cpt_mcode_defines.h
@@ -220,7 +220,10 @@ typedef enum {
 	CPT_EC_ID_P256 = 2,
 	CPT_EC_ID_P384 = 3,
 	CPT_EC_ID_P521 = 4,
-	CPT_EC_ID_PMAX = 5
+	CPT_EC_ID_P160 = 5,
+	CPT_EC_ID_P320 = 6,
+	CPT_EC_ID_P512 = 7,
+	CPT_EC_ID_PMAX = 8
 } cpt_ec_id_t;
 
 typedef struct sglist_comp {
@@ -344,6 +347,18 @@ struct cpt_ec_group {
 		uint8_t data[66];
 		unsigned int length;
 	} order;
+
+	struct {
+		/* P521 maximum length */
+		uint8_t data[66];
+		unsigned int length;
+	} consta;
+
+	struct {
+		/* P521 maximum length */
+		uint8_t data[66];
+		unsigned int length;
+	} constb;
 };
 
 struct cpt_asym_ec_ctx {
diff --git a/drivers/common/cpt/cpt_ucode_asym.h b/drivers/common/cpt/cpt_ucode_asym.h
index 50c6f58d3a..a67ded642a 100644
--- a/drivers/common/cpt/cpt_ucode_asym.h
+++ b/drivers/common/cpt/cpt_ucode_asym.h
@@ -486,117 +486,150 @@ cpt_enqueue_rsa_op(struct rte_crypto_op *op,
 static const struct cpt_ec_group ec_grp[CPT_EC_ID_PMAX] = {
 	{
 		.prime = {
-			.data =	{
-				0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-				0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE,
-				0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
+				.data = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+					 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+					 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF,
+					 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+				.length = 24,
 			},
-			.length = 24,
-		},
-		.order = {
-			.data = {
-				0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-				0xFF, 0xFF, 0xFF, 0xFF, 0x99, 0xDE, 0xF8, 0x36,
-				0x14, 0x6B, 0xC9, 0xB1, 0xB4, 0xD2, 0x28, 0x31
-			},
-			.length = 24
-		},
+		.order = {.data = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+				   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+				   0x99, 0xDE, 0xF8, 0x36, 0x14, 0x6B,
+				   0xC9, 0xB1, 0xB4, 0xD2, 0x28, 0x31},
+			  .length = 24},
+		.consta = {.data = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+				    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+				    0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF,
+				    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC},
+			   .length = 24},
+		.constb = {.data = {0x64, 0x21, 0x05, 0x19, 0xE5, 0x9C,
+				    0x80, 0xE7, 0x0F, 0xA7, 0xE9, 0xAB,
+				    0x72, 0x24, 0x30, 0x49, 0xFE, 0xB8,
+				    0xDE, 0xEC, 0xC1, 0x46, 0xB9, 0xB1},
+			   .length = 24},
 	},
 	{
-		.prime = {
-			.data = {
-				0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-				0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-				0x00, 0x00, 0x00, 0x01
-			},
-			.length = 28
-		},
-		.order = {
-			.data = {
-				0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
-				0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X16, 0XA2,
-				0XE0, 0XB8, 0XF0, 0X3E, 0X13, 0XDD, 0X29, 0X45,
-				0X5C, 0X5C, 0X2A, 0X3D
-			},
-			.length = 28
-		},
+		.prime = {.data = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+				   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+				   0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
+				   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
+			  .length = 28},
+		.order = {.data = {0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+				   0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+				   0X16, 0XA2, 0XE0, 0XB8, 0XF0, 0X3E, 0X13,
+				   0XDD, 0X29, 0X45, 0X5C, 0X5C, 0X2A, 0X3D},
+			  .length = 28},
+		.consta = {.data = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+				    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+				    0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+				    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE},
+			   .length = 28},
+		.constb = {.data = {0xB4, 0x05, 0x0A, 0x85, 0x0C, 0x04, 0xB3,
+				    0xAB, 0xF5, 0x41, 0x32, 0x56, 0x50, 0x44,
+				    0xB0, 0xB7, 0xD7, 0xBF, 0xD8, 0xBA, 0x27,
+				    0x0B, 0x39, 0x43, 0x23, 0x55, 0xFF, 0xB4},
+			   .length = 28},
 	},
 	{
-		.prime = {
-			.data = {
-				0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01,
-				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-				0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
-				0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
-			},
-			.length = 32
-		},
-		.order = {
-			.data = {
-				0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
-				0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-				0xBC, 0xE6, 0xFA, 0xAD, 0xA7, 0x17, 0x9E, 0x84,
-				0xF3, 0xB9, 0xCA, 0xC2, 0xFC, 0x63, 0x25, 0x51
-			},
-			.length = 32
-		},
+		.prime = {.data = {0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00,
+				   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+				   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
+				   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+				   0xFF, 0xFF, 0xFF, 0xFF},
+			  .length = 32},
+		.order = {.data = {0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00,
+				   0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+				   0xFF, 0xFF, 0xBC, 0xE6, 0xFA, 0xAD, 0xA7,
+				   0x17, 0x9E, 0x84, 0xF3, 0xB9, 0xCA, 0xC2,
+				   0xFC, 0x63, 0x25, 0x51},
+			  .length = 32},
+		.consta = {.data = {0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00,
+				    0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+				    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
+				    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+				    0xFF, 0xFF, 0xFF, 0xFC},
+			   .length = 32},
+		.constb = {.data = {0x5A, 0xC6, 0x35, 0xD8, 0xAA, 0x3A, 0x93,
+				    0xE7, 0xB3, 0xEB, 0xBD, 0x55, 0x76, 0x98,
+				    0x86, 0xBC, 0x65, 0x1D, 0x06, 0xB0, 0xCC,
+				    0x53, 0xB0, 0xF6, 0x3B, 0xCE, 0x3C, 0x3E,
+				    0x27, 0xD2, 0x60, 0x4B},
+			   .length = 32},
 	},
 	{
-		.prime = {
-			.data = {
-				0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-				0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-				0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-				0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE,
-				0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
-				0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF
-			},
-			.length = 48
-		},
-		.order = {
-			.data = {
-				0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-				0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-				0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-				0xC7, 0x63, 0x4D, 0x81, 0xF4, 0x37, 0x2D, 0xDF,
-				0x58, 0x1A, 0x0D, 0xB2, 0x48, 0xB0, 0xA7, 0x7A,
-				0xEC, 0xEC, 0x19, 0x6A, 0xCC, 0xC5, 0x29, 0x73
-			},
-			.length = 48
-		}
+		.prime = {.data = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+				   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+				   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+				   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+				   0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF,
+				   0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+				   0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF},
+			  .length = 48},
+		.order = {.data = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+				   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+				   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+				   0xFF, 0xFF, 0xFF, 0xC7, 0x63, 0x4D, 0x81,
+				   0xF4, 0x37, 0x2D, 0xDF, 0x58, 0x1A, 0x0D,
+				   0xB2, 0x48, 0xB0, 0xA7, 0x7A, 0xEC, 0xEC,
+				   0x19, 0x6A, 0xCC, 0xC5, 0x29, 0x73},
+			  .length = 48},
+		.consta = {.data = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+				    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+				    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+				    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+				    0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF,
+				    0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+				    0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFC},
+			   .length = 48},
+		.constb = {.data = {0xB3, 0x31, 0x2F, 0xA7, 0xE2, 0x3E, 0xE7,
+				    0xE4, 0x98, 0x8E, 0x05, 0x6B, 0xE3, 0xF8,
+				    0x2D, 0x19, 0x18, 0x1D, 0x9C, 0x6E, 0xFE,
+				    0x81, 0x41, 0x12, 0x03, 0x14, 0x08, 0x8F,
+				    0x50, 0x13, 0x87, 0x5A, 0xC6, 0x56, 0x39,
+				    0x8D, 0x8A, 0x2E, 0xD1, 0x9D, 0x2A, 0x85,
+				    0xC8, 0xED, 0xD3, 0xEC, 0x2A, 0xEF},
+			   .length = 48},
 	},
-	{
-		.prime = {
-			.data = {
-				0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-				0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-				0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-				0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-				0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-				0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-				0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-				0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-				0xFF, 0xFF
-			},
-			.length = 66
-		},
-		.order = {
-			.data = {
-				0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-				0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-				0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-				0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-				0xFF, 0xFA, 0x51, 0x86, 0x87, 0x83, 0xBF, 0x2F,
-				0x96, 0x6B, 0x7F, 0xCC, 0x01, 0x48, 0xF7, 0x09,
-				0xA5, 0xD0, 0x3B, 0xB5, 0xC9, 0xB8, 0x89, 0x9C,
-				0x47, 0xAE, 0xBB, 0x6F, 0xB7, 0x1E, 0x91, 0x38,
-				0x64, 0x09
-			},
-			.length = 66
-		}
-	}
-};
+	{.prime = {.data = {0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			    0xFF, 0xFF},
+		   .length = 66},
+	 .order = {.data = {0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			    0xFF, 0xFA, 0x51, 0x86, 0x87, 0x83, 0xBF, 0x2F,
+			    0x96, 0x6B, 0x7F, 0xCC, 0x01, 0x48, 0xF7, 0x09,
+			    0xA5, 0xD0, 0x3B, 0xB5, 0xC9, 0xB8, 0x89, 0x9C,
+			    0x47, 0xAE, 0xBB, 0x6F, 0xB7, 0x1E, 0x91, 0x38,
+			    0x64, 0x09},
+		   .length = 66},
+	 .consta = {.data = {0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			     0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			     0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			     0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			     0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			     0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			     0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			     0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			     0xFF, 0xFC},
+		    .length = 66},
+	 .constb = {.data = {0x00, 0x51, 0x95, 0x3E, 0xB9, 0x61, 0x8E, 0x1C,
+			     0x9A, 0x1F, 0x92, 0x9A, 0x21, 0xA0, 0xB6, 0x85,
+			     0x40, 0xEE, 0xA2, 0xDA, 0x72, 0x5B, 0x99, 0xB3,
+			     0x15, 0xF3, 0xB8, 0xB4, 0x89, 0x91, 0x8E, 0xF1,
+			     0x09, 0xE1, 0x56, 0x19, 0x39, 0x51, 0xEC, 0x7E,
+			     0x93, 0x7B, 0x16, 0x52, 0xC0, 0xBD, 0x3B, 0xB1,
+			     0xBF, 0x07, 0x35, 0x73, 0xDF, 0x88, 0x3D, 0x2C,
+			     0x34, 0xF1, 0xEF, 0x45, 0x1F, 0xD4, 0x6B, 0x50,
+			     0x3F, 0x00},
+		    .length = 66}}};
 
 static __rte_always_inline void
 cpt_ecdsa_sign_prep(struct rte_crypto_ecdsa_op_param *ecdsa,
@@ -641,7 +674,7 @@ cpt_ecdsa_sign_prep(struct rte_crypto_ecdsa_op_param *ecdsa,
 	 * Please note, private key, order cannot exceed prime
 	 * length i.e 3 * p_align.
 	 */
-	dlen = sizeof(fpm_table_iova) + k_align + m_align + p_align * 3;
+	dlen = sizeof(fpm_table_iova) + k_align + m_align + p_align * 5;
 
 	memset(dptr, 0, dlen);
 
@@ -663,6 +696,12 @@ cpt_ecdsa_sign_prep(struct rte_crypto_ecdsa_op_param *ecdsa,
 	memcpy(dptr, ecdsa->message.data, message_len);
 	dptr += m_align;
 
+	memcpy(dptr, ec_grp[curveid].consta.data, prime_len);
+	dptr += p_align;
+
+	memcpy(dptr, ec_grp[curveid].constb.data, prime_len);
+	dptr += p_align;
+
 	/* 2 * prime length (for sign r and s ) */
 	rlen = 2 * p_align;
 
@@ -672,7 +711,7 @@ cpt_ecdsa_sign_prep(struct rte_crypto_ecdsa_op_param *ecdsa,
 
 	/* GP op header */
 	vq_cmd_w0.s.param1 = curveid | (message_len << 8);
-	vq_cmd_w0.s.param2 = k_len;
+	vq_cmd_w0.s.param2 = (pkey_len << 8) | k_len;
 	vq_cmd_w0.s.dlen = dlen;
 
 	/* Filling cpt_request_info structure */
@@ -743,7 +782,7 @@ cpt_ecdsa_verify_prep(struct rte_crypto_ecdsa_op_param *ecdsa,
 	 * Please note sign, public key and order can not excede prime length
 	 * i.e. 6 * p_align
 	 */
-	dlen = sizeof(fpm_table_iova) + m_align + (6 * p_align);
+	dlen = sizeof(fpm_table_iova) + m_align + (8 * p_align);
 
 	memset(dptr, 0, dlen);
 
@@ -771,6 +810,12 @@ cpt_ecdsa_verify_prep(struct rte_crypto_ecdsa_op_param *ecdsa,
 	memcpy(dptr + qy_offset, ecdsa->q.y.data, qy_len);
 	dptr += p_align;
 
+	memcpy(dptr, ec_grp[curveid].consta.data, prime_len);
+	dptr += p_align;
+
+	memcpy(dptr, ec_grp[curveid].constb.data, prime_len);
+	dptr += p_align;
+
 	/* Setup opcodes */
 	vq_cmd_w0.s.opcode.major = CPT_MAJOR_OP_ECDSA;
 	vq_cmd_w0.s.opcode.minor = CPT_MINOR_OP_ECDSA_VERIFY;
@@ -849,7 +894,7 @@ cpt_ecpm_prep(struct rte_crypto_ecpm_op_param *ecpm,
 	 * scalar length),
 	 * Please note point length is equivalent to prime of the curve
 	 */
-	dlen = 3 * p_align + scalar_align;
+	dlen = 5 * p_align + scalar_align;
 
 	x1_offset = prime_len - x1_len;
 	y1_offset = prime_len - y1_len;
@@ -866,6 +911,14 @@ cpt_ecpm_prep(struct rte_crypto_ecpm_op_param *ecpm,
 	memcpy(dptr, ec_grp[curveid].prime.data, ec_grp[curveid].prime.length);
 	dptr += p_align;
 
+	memcpy(dptr, ec_grp[curveid].consta.data,
+	       ec_grp[curveid].consta.length);
+	dptr += p_align;
+
+	memcpy(dptr, ec_grp[curveid].constb.data,
+	       ec_grp[curveid].constb.length);
+	dptr += p_align;
+
 	/* Setup opcodes */
 	vq_cmd_w0.s.opcode.major = CPT_MAJOR_OP_ECC;
 	vq_cmd_w0.s.opcode.minor = CPT_MINOR_OP_ECC_UMP;
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [dpdk-dev] [EXT] [PATCH 1/3] common/cnxk: add const values to ec groups
  2021-07-26  4:48 [dpdk-dev] [PATCH 1/3] common/cnxk: add const values to ec groups kirankumark
  2021-07-26  4:48 ` [dpdk-dev] [PATCH 2/3] crypto/cnxk: update asym ECDSA messages in sync with ucode kirankumark
  2021-07-26  4:48 ` [dpdk-dev] [PATCH 3/3] common/cpt: " kirankumark
@ 2021-07-27 17:34 ` Akhil Goyal
  2 siblings, 0 replies; 4+ messages in thread
From: Akhil Goyal @ 2021-07-27 17:34 UTC (permalink / raw)
  To: Kiran Kumar Kokkilagadda, Nithin Kumar Dabilpuram,
	Kiran Kumar Kokkilagadda, Sunil Kumar Kori,
	Satha Koteswara Rao Kottidi
  Cc: dev

> 
> New ucode expects const values A and B for asymmetric ECDSA
> messages. Adding roc support for this.
> 
> Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
> ---
Series Acked-by: Akhil Goyal <gakhil@marvell.com>

Applied to dpdk-next-crypto

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-07-27 17:34 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-26  4:48 [dpdk-dev] [PATCH 1/3] common/cnxk: add const values to ec groups kirankumark
2021-07-26  4:48 ` [dpdk-dev] [PATCH 2/3] crypto/cnxk: update asym ECDSA messages in sync with ucode kirankumark
2021-07-26  4:48 ` [dpdk-dev] [PATCH 3/3] common/cpt: " kirankumark
2021-07-27 17:34 ` [dpdk-dev] [EXT] [PATCH 1/3] common/cnxk: add const values to ec groups Akhil Goyal

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.