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