From 2fd0eb16c8a99d4660631e40e30466b98ebfbdfd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se>
Date: Wed, 27 Feb 2013 15:15:53 +0100
Subject: [PATCH] Fixed bug in 64-bit ecc_384_modp.

---
 ChangeLog | 3 +++
 ecc-384.c | 2 +-
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index 6171c7a1..7829ae3c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2013-02-27  Niels Möller  <nisse@lysator.liu.se>
 
+	* ecc-384.c (ecc_384_modp): Fixed typo which broke carry handling
+	in the 64-bit version.
+
 	* examples/ecc-benchmark.c (bench_add_jjj): Typo fix, benchmark
 	the right function.
 
diff --git a/ecc-384.c b/ecc-384.c
index dc91f320..6595b152 100644
--- a/ecc-384.c
+++ b/ecc-384.c
@@ -114,7 +114,7 @@ ecc_384_modp (const struct ecc_curve *ecc, mp_limb_t *rp)
   /* Reduce from 9 to 6 limbs */
   tp[0] = 0;
   mpn_copyi (tp + 1, rp + 6, 2);
-  tp[3] = rp[8] -= mpn_sub_n (tp, tp, rp + 6, 3);
+  tp[3] = rp[8] - mpn_sub_n (tp, tp, rp + 6, 3);
   tp[4] = mpn_lshift (tp, tp, 4, 32);
 
   cy = mpn_add_n (rp, rp, rp + 6, 3);
-- 
GitLab