All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefan Berger <stefanb@linux.ibm.com>
To: keyrings@vger.kernel.org, linux-crypto@vger.kernel.org,
	herbert@gondor.apana.org.au, davem@davemloft.net
Cc: linux-kernel@vger.kernel.org, saulo.alessandre@tse.jus.br,
	lukas@wunner.de, Stefan Berger <stefanb@linux.ibm.com>
Subject: [PATCH v4 05/12] crypto: ecc - Add nbits field to ecc_curve structure
Date: Thu, 29 Feb 2024 21:20:00 -0500	[thread overview]
Message-ID: <20240301022007.344948-6-stefanb@linux.ibm.com> (raw)
In-Reply-To: <20240301022007.344948-1-stefanb@linux.ibm.com>

Add the number of bits a curve has to the ecc_curve definition and set it
on all cruve definitions.

Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
---
 crypto/ecc_curve_defs.h    | 4 ++++
 crypto/ecrdsa_defs.h       | 5 +++++
 include/crypto/ecc_curve.h | 3 +++
 3 files changed, 12 insertions(+)

diff --git a/crypto/ecc_curve_defs.h b/crypto/ecc_curve_defs.h
index 9719934c9428..ab1ef3d94be5 100644
--- a/crypto/ecc_curve_defs.h
+++ b/crypto/ecc_curve_defs.h
@@ -17,6 +17,7 @@ static u64 nist_p192_b[] = { 0xFEB8DEECC146B9B1ull, 0x0FA7E9AB72243049ull,
 				0x64210519E59C80E7ull };
 static struct ecc_curve nist_p192 = {
 	.name = "nist_192",
+	.nbits = 192,
 	.g = {
 		.x = nist_p192_g_x,
 		.y = nist_p192_g_y,
@@ -43,6 +44,7 @@ static u64 nist_p256_b[] = { 0x3BCE3C3E27D2604Bull, 0x651D06B0CC53B0F6ull,
 				0xB3EBBD55769886BCull, 0x5AC635D8AA3A93E7ull };
 static struct ecc_curve nist_p256 = {
 	.name = "nist_256",
+	.nbits = 256,
 	.g = {
 		.x = nist_p256_g_x,
 		.y = nist_p256_g_y,
@@ -75,6 +77,7 @@ static u64 nist_p384_b[] = { 0x2a85c8edd3ec2aefull, 0xc656398d8a2ed19dull,
 				0x988e056be3f82d19ull, 0xb3312fa7e23ee7e4ull };
 static struct ecc_curve nist_p384 = {
 	.name = "nist_384",
+	.nbits = 384,
 	.g = {
 		.x = nist_p384_g_x,
 		.y = nist_p384_g_y,
@@ -95,6 +98,7 @@ static u64 curve25519_a[] = { 0x000000000001DB41, 0x0000000000000000,
 				0x0000000000000000, 0x0000000000000000 };
 static const struct ecc_curve ecc_25519 = {
 	.name = "curve25519",
+	.nbits = 255,
 	.g = {
 		.x = curve25519_g_x,
 		.ndigits = 4,
diff --git a/crypto/ecrdsa_defs.h b/crypto/ecrdsa_defs.h
index 0056335b9d03..1c2c2449e331 100644
--- a/crypto/ecrdsa_defs.h
+++ b/crypto/ecrdsa_defs.h
@@ -47,6 +47,7 @@ static u64 cp256a_b[] = {
 
 static struct ecc_curve gost_cp256a = {
 	.name = "cp256a",
+	.nbits = 256,
 	.g = {
 		.x = cp256a_g_x,
 		.y = cp256a_g_y,
@@ -80,6 +81,7 @@ static u64 cp256b_b[] = {
 
 static struct ecc_curve gost_cp256b = {
 	.name = "cp256b",
+	.nbits = 256,
 	.g = {
 		.x = cp256b_g_x,
 		.y = cp256b_g_y,
@@ -117,6 +119,7 @@ static u64 cp256c_b[] = {
 
 static struct ecc_curve gost_cp256c = {
 	.name = "cp256c",
+	.nbits = 256,
 	.g = {
 		.x = cp256c_g_x,
 		.y = cp256c_g_y,
@@ -166,6 +169,7 @@ static u64 tc512a_b[] = {
 
 static struct ecc_curve gost_tc512a = {
 	.name = "tc512a",
+	.nbits = 512,
 	.g = {
 		.x = tc512a_g_x,
 		.y = tc512a_g_y,
@@ -211,6 +215,7 @@ static u64 tc512b_b[] = {
 
 static struct ecc_curve gost_tc512b = {
 	.name = "tc512b",
+	.nbits = 512,
 	.g = {
 		.x = tc512b_g_x,
 		.y = tc512b_g_y,
diff --git a/include/crypto/ecc_curve.h b/include/crypto/ecc_curve.h
index 70964781eb68..337a44956926 100644
--- a/include/crypto/ecc_curve.h
+++ b/include/crypto/ecc_curve.h
@@ -23,6 +23,8 @@ struct ecc_point {
  * struct ecc_curve - definition of elliptic curve
  *
  * @name:	Short name of the curve.
+ * @nbits:      Curves that do not use all bits in their ndigits must specify
+ *              their number of bits here, otherwise can leave at 0.
  * @g:		Generator point of the curve.
  * @p:		Prime number, if Barrett's reduction is used for this curve
  *		pre-calculated value 'mu' is appended to the @p after ndigits.
@@ -34,6 +36,7 @@ struct ecc_point {
  */
 struct ecc_curve {
 	char *name;
+	unsigned int nbits;
 	struct ecc_point g;
 	u64 *p;
 	u64 *n;
-- 
2.43.0


  parent reply	other threads:[~2024-03-01  2:20 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-01  2:19 [PATCH v4 00/12] Add support for NIST P521 to ecdsa Stefan Berger
2024-03-01  2:19 ` [PATCH v4 01/12] crypto: ecdsa - Convert byte arrays with key coordinates to digits Stefan Berger
2024-03-01 20:36   ` Jarkko Sakkinen
2024-03-02 21:34   ` Lukas Wunner
2024-03-03  6:37     ` James Bottomley
2024-03-03 16:34     ` Stefan Berger
2024-03-01  2:19 ` [PATCH v4 02/12] crypto: ecdsa - Adjust tests on length of key parameters Stefan Berger
2024-03-01  2:19 ` [PATCH v4 03/12] crypto: ecdsa - Extend res.x mod n calculation for NIST P521 Stefan Berger
2024-03-01  2:19 ` [PATCH v4 04/12] crypto: ecc - Implement vli_mmod_fast_521 for NIST p521 Stefan Berger
2024-03-03 11:05   ` Lukas Wunner
2024-03-03 16:29     ` Stefan Berger
2024-03-01  2:20 ` Stefan Berger [this message]
2024-03-03 11:07   ` [PATCH v4 05/12] crypto: ecc - Add nbits field to ecc_curve structure Lukas Wunner
2024-03-03 16:32     ` Stefan Berger
2024-03-01  2:20 ` [PATCH v4 06/12] crypto: ecc - Add special case for NIST P521 in ecc_point_mult Stefan Berger
2024-03-01  2:20 ` [PATCH v4 07/12] crypto: ecc - Add NIST P521 curve parameters Stefan Berger
2024-03-01  2:20 ` [PATCH v4 08/12] crypto: ecdsa - Replace ndigits with nbits where precision is needed Stefan Berger
2024-03-01  2:20 ` [PATCH v4 09/12] crypto: ecdsa - Rename keylen to bufsize where necessary Stefan Berger
2024-03-01 20:41   ` Jarkko Sakkinen
2024-03-01 20:47     ` Stefan Berger
2024-03-01 20:50       ` Jarkko Sakkinen
2024-03-01 21:20         ` Stefan Berger
2024-03-01  2:20 ` [PATCH v4 10/12] crypto: ecdsa - Register NIST P521 and extend test suite Stefan Berger
2024-03-01  2:20 ` [PATCH v4 11/12] crypto: asymmetric_keys - Adjust signature size calculation for NIST P521 Stefan Berger
2024-03-03 18:47   ` Lukas Wunner
2024-03-03 21:03     ` Stefan Berger
2024-03-01  2:20 ` [PATCH v4 12/12] crypto: x509 - Add OID for NIST P521 and extend parser for it Stefan Berger
2024-03-04 18:10 ` [PATCH v4 00/12] Add support for NIST P521 to ecdsa Lukas Wunner
2024-03-04 19:01   ` Stefan Berger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240301022007.344948-6-stefanb@linux.ibm.com \
    --to=stefanb@linux.ibm.com \
    --cc=davem@davemloft.net \
    --cc=herbert@gondor.apana.org.au \
    --cc=keyrings@vger.kernel.org \
    --cc=linux-crypto@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lukas@wunner.de \
    --cc=saulo.alessandre@tse.jus.br \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.