Fast AVR asm mmod is for secp256k1 (#50)
diff --git a/asm_avr.inc b/asm_avr.inc
index 0d4582f..b6c4a41 100644
--- a/asm_avr.inc
+++ b/asm_avr.inc
@@ -451,9 +451,9 @@
#define asm_mmod_fast_secp160r1 1
#endif /* uECC_SUPPORTS_secp160r1 */
-#if uECC_SUPPORTS_secp256r1
-static const struct uECC_Curve_t curve_secp256r1;
-static void vli_mmod_fast_secp256r1(uECC_word_t *result, uECC_word_t *product) {
+#if uECC_SUPPORTS_secp256k1
+static const struct uECC_Curve_t curve_secp256k1;
+static void vli_mmod_fast_secp256k1(uECC_word_t *result, uECC_word_t *product) {
uint8_t carry = 0;
__asm__ volatile (
"in r30, __SP_L__ \n\t"
@@ -764,17 +764,17 @@
if (carry > 0) {
--carry;
- uECC_vli_sub(result, result, curve_secp256r1.p, 32);
+ uECC_vli_sub(result, result, curve_secp256k1.p, 32);
}
if (carry > 0) {
- uECC_vli_sub(result, result, curve_secp256r1.p, 32);
+ uECC_vli_sub(result, result, curve_secp256k1.p, 32);
}
- if (uECC_vli_cmp_unsafe(result, curve_secp256r1.p, 32) > 0) {
- uECC_vli_sub(result, result, curve_secp256r1.p, 32);
+ if (uECC_vli_cmp_unsafe(result, curve_secp256k1.p, 32) > 0) {
+ uECC_vli_sub(result, result, curve_secp256k1.p, 32);
}
}
-#define asm_mmod_fast_secp256r1 1
-#endif /* uECC_SUPPORTS_secp256r1 */
+#define asm_mmod_fast_secp256k1 1
+#endif /* uECC_SUPPORTS_secp256k1 */
#endif /* (uECC_OPTIMIZATION_LEVEL >= 2) */
diff --git a/curve-specific.inc b/curve-specific.inc
index 15586c3..81f725f 100644
--- a/curve-specific.inc
+++ b/curve-specific.inc
@@ -1152,7 +1152,7 @@
uECC_vli_modAdd(result, result, curve->b, curve->p, num_words_secp256k1); /* r = x^3 + b */
}
-#if (uECC_OPTIMIZATION_LEVEL > 0)
+#if (uECC_OPTIMIZATION_LEVEL > 0 && !asm_mmod_fast_secp256k1)
static void omega_mult_secp256k1(uECC_word_t *result, const uECC_word_t *right);
static void vli_mmod_fast_secp256k1(uECC_word_t *result, uECC_word_t *product) {
uECC_word_t tmp[2 * num_words_secp256k1];
@@ -1241,7 +1241,7 @@
result[num_words_secp256k1] = r0;
}
#endif /* uECC_WORD_SIZE */
-#endif /* (uECC_OPTIMIZATION_LEVEL > 0) */
+#endif /* (uECC_OPTIMIZATION_LEVEL > 0 && && !asm_mmod_fast_secp256k1) */
#endif /* uECC_SUPPORTS_secp256k1 */