Signed-off-by: Dmitry Eremin-Solenikov <[email protected]>
---
 Makefile.in | 12 ++++++------
 eccdata.c   | 34 +++++++++++++---------------------
 2 files changed, 19 insertions(+), 27 deletions(-)

diff --git a/Makefile.in b/Makefile.in
index 1aa2b29db702..fc93a689053d 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -326,7 +326,7 @@ des.$(OBJEXT): des.c des.h $(des_headers)
 #      k =  7, c = 6, 320 entries, ~15 KB
 #      k =  9, c = 7, 512 entries, ~24 KB
 ecc-192.h: eccdata.stamp
-       ./eccdata$(EXEEXT_FOR_BUILD) 192 7 6 $(NUMB_BITS) > $@T && mv $@T $@
+       ./eccdata$(EXEEXT_FOR_BUILD) secp192r1 7 6 $(NUMB_BITS) > $@T && mv $@T 
$@
 # Some possible choices for 224:
 #      k = 18, c = 4,  64 entries,  ~4 KB
 #      k = 24, c = 6, 128 entries,  ~8 KB
@@ -334,7 +334,7 @@ ecc-192.h: eccdata.stamp
 #      k =  8, c = 6, 320 entries, ~20 KB
 #      k = 10, c = 7, 512 entries, ~32 KB
 ecc-224.h: eccdata.stamp
-       ./eccdata$(EXEEXT_FOR_BUILD) 224 12 6 $(NUMB_BITS) > $@T && mv $@T $@
+       ./eccdata$(EXEEXT_FOR_BUILD) secp224r1 12 6 $(NUMB_BITS) > $@T && mv 
$@T $@
 # Some possible choices for 256:
 #      k = 20, c = 4,  64 entries,  ~4 KB
 #      k = 27, c = 6, 128 entries,  ~8 KB
@@ -342,7 +342,7 @@ ecc-224.h: eccdata.stamp
 #      k =  9, c = 6, 320 entries, ~20 KB
 #      k = 12, c = 7, 512 entries, ~32 KB
 ecc-256.h: eccdata.stamp
-       ./eccdata$(EXEEXT_FOR_BUILD) 256 14 6 $(NUMB_BITS) > $@T && mv $@T $@
+       ./eccdata$(EXEEXT_FOR_BUILD) secp256r1 14 6 $(NUMB_BITS) > $@T && mv 
$@T $@
 # Some possible choices for 384:
 #      k = 31, c = 4,  64 entries,  ~6 KB
 #      k = 41, c = 6, 128 entries, ~12 KB
@@ -350,7 +350,7 @@ ecc-256.h: eccdata.stamp
 #      k = 14, c = 6, 320 entries, ~30 KB
 #      k = 18, c = 7, 512 entries, ~48 KB
 ecc-384.h: eccdata.stamp
-       ./eccdata$(EXEEXT_FOR_BUILD) 384 41 6 $(NUMB_BITS) > $@T && mv $@T $@
+       ./eccdata$(EXEEXT_FOR_BUILD) secp384r1 41 6 $(NUMB_BITS) > $@T && mv 
$@T $@
 # Some possible choices for 521:
 #      k = 42, c = 4,  64 entries,  ~9 KB
 #      k = 56, c = 6, 128 entries, ~18 KB
@@ -358,10 +358,10 @@ ecc-384.h: eccdata.stamp
 #      k = 19, c = 6, 320 entries, ~44 KB
 #      k = 24, c = 7, 512 entries, ~70 KB
 ecc-521.h: eccdata.stamp
-       ./eccdata$(EXEEXT_FOR_BUILD) 521 56 6 $(NUMB_BITS) > $@T && mv $@T $@
+       ./eccdata$(EXEEXT_FOR_BUILD) secp521r1 56 6 $(NUMB_BITS) > $@T && mv 
$@T $@
 
 ecc-25519.h: eccdata.stamp
-       ./eccdata$(EXEEXT_FOR_BUILD) 255 14 6 $(NUMB_BITS) > $@T && mv $@T $@
+       ./eccdata$(EXEEXT_FOR_BUILD) curve25519 14 6 $(NUMB_BITS) > $@T && mv 
$@T $@
 
 eccdata.stamp: eccdata.c
        $(MAKE) eccdata$(EXEEXT_FOR_BUILD)
diff --git a/eccdata.c b/eccdata.c
index a1f5b1135ab2..271be31ee580 100644
--- a/eccdata.c
+++ b/eccdata.c
@@ -397,11 +397,9 @@ ecc_curve_init_str (struct ecc_curve *ecc, enum ecc_type 
type,
 }
 
 static void
-ecc_curve_init (struct ecc_curve *ecc, unsigned bit_size)
+ecc_curve_init (struct ecc_curve *ecc, const char *curve)
 {
-  switch (bit_size)
-    {
-    case 192:      
+  if (!strcmp(curve, "secp192r1")) {
       ecc_curve_init_str (ecc, ECC_TYPE_WEIERSTRASS,
                          /* p = 2^{192} - 2^{64} - 1 */
                          "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE"
@@ -434,8 +432,7 @@ ecc_curve_init (struct ecc_curve *ecc, unsigned bit_size)
                   "35433907297cc378b0015703374729d7a4fe46647084e4ba",
                   "a2649984f2135c301ea3acb0776cd4f125389b311db3be32");
 
-      break;
-    case 224:
+  } else if (!strcmp(curve, "secp224r1")) {
       ecc_curve_init_str (ecc, ECC_TYPE_WEIERSTRASS,
                          /* p = 2^{224} - 2^{96} + 1 */
                          "ffffffffffffffffffffffffffffffff"
@@ -469,8 +466,7 @@ ecc_curve_init (struct ecc_curve *ecc, unsigned bit_size)
                   "ae99feebb5d26945b54892092a8aee02912930fa41cd114e40447301",
                   "482580a0ec5bc47e88bc8c378632cd196cb3fa058a7114eb03054c9");
 
-      break;
-    case 256:
+  } else if (!strcmp(curve, "secp256r1")) {
       ecc_curve_init_str (ecc, ECC_TYPE_WEIERSTRASS,
                          /* p = 2^{256} - 2^{224} + 2^{192} + 2^{96} - 1 */
                          "FFFFFFFF000000010000000000000000"
@@ -504,8 +500,7 @@ ecc_curve_init (struct ecc_curve *ecc, unsigned bit_size)
                   
"e2534a3532d08fbba02dde659ee62bd0031fe2db785596ef509302446b030852",
                   
"e0f1575a4c633cc719dfee5fda862d764efc96c3f30ee0055c42c23f184ed8c6");
 
-      break;
-    case 384:
+  } else if (!strcmp(curve, "secp384r1")) {
       ecc_curve_init_str (ecc, ECC_TYPE_WEIERSTRASS,
                          /* p = 2^{384} - 2^{128} - 2^{96} + 2^{32} - 1 */
                          "ffffffffffffffffffffffffffffffff"
@@ -544,8 +539,7 @@ ecc_curve_init (struct ecc_curve *ecc, unsigned bit_size)
                   
"138251cd52ac9298c1c8aad977321deb97e709bd0b4ca0aca55dc8ad51dcfc9d1589a1597e3a5120e1efd631c63e1835",
                   
"cacae29869a62e1631e8a28181ab56616dc45d918abc09f3ab0e63cf792aa4dced7387be37bba569549f1c02b270ed67");
 
-      break;
-    case 521:
+  } else if (!strcmp (curve, "secp521r1")) {
       ecc_curve_init_str (ecc, ECC_TYPE_WEIERSTRASS,
                          "1ff" /* p = 2^{521} - 1 */
                          "ffffffffffffffffffffffffffffffff"
@@ -593,8 +587,7 @@ ecc_curve_init (struct ecc_curve *ecc, unsigned bit_size)
                   
"35b5df64ae2ac204c354b483487c9070cdc61c891c5ff39afc06c5d55541d3ceac8659e24afe3d0750e8b88e9f078af066a1d5025b08e5a5e2fbc87412871902f3",
                   
"82096f84261279d2b673e0178eb0b4abb65521aef6e6e32e1b5ae63fe2f19907f279f283e54ba385405224f750a95b85eebb7faef04699d1d9e21f47fc346e4d0d");
 
-      break;
-    case 255:
+  } else if (!strcmp(curve, "curve25519")) {
       /* Edwards curve used for eddsa25519 and curve25519,
 
           -x^2 + y^2 = 1 - (121665/121666) x^2 y^2, with p = 2^{255} - 19.
@@ -658,13 +651,12 @@ ecc_curve_init (struct ecc_curve *ecc, unsigned bit_size)
                   "1a739ec193ce1547493aa657c4c9f870",
                   "47d0e827cb1595e1470eb88580d5716c"
                   "4cf22832ea2f0ff0df38ab61ca32112f");
-      break;
 
-    default:
-      fprintf (stderr, "No known curve for size %d\n", bit_size);
+  } else {
+      fprintf (stderr, "No known curve for name %s\n", curve);
       exit(EXIT_FAILURE);     
-    }
-  ecc->bit_size = bit_size;
+  }
+  ecc->bit_size = mpz_sizeinbase(ecc->p, 2);
 }
 
 static void
@@ -1174,11 +1166,11 @@ main (int argc, char **argv)
 
   if (argc < 4)
     {
-      fprintf (stderr, "Usage: %s CURVE-BITS K C [BITS-PER-LIMB]\n", argv[0]);
+      fprintf (stderr, "Usage: %s CURVE K C [BITS-PER-LIMB]\n", argv[0]);
       return EXIT_FAILURE;
     }
 
-  ecc_curve_init (&ecc, atoi(argv[1]));
+  ecc_curve_init (&ecc, argv[1]);
 
   ecc_pippenger_precompute (&ecc, atoi(argv[2]), atoi(argv[3]));
 
-- 
2.14.2

_______________________________________________
nettle-bugs mailing list
[email protected]
http://lists.lysator.liu.se/mailman/listinfo/nettle-bugs

Reply via email to