Fast AVR asm mmod is for secp256k1 (#50)

This commit is contained in:
Ken MacKay
2016-01-07 23:21:33 -08:00
parent f870194aae
commit 39bedb17a2
2 changed files with 11 additions and 11 deletions
+9 -9
View File
@@ -451,9 +451,9 @@ static void vli_mmod_fast_secp160r1(uECC_word_t *result, uECC_word_t *product) {
#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 @@ static void vli_mmod_fast_secp256r1(uECC_word_t *result, uECC_word_t *product) {
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) */
+2 -2
View File
@@ -1152,7 +1152,7 @@ static void x_side_secp256k1(uECC_word_t *result, const uECC_word_t *x, uECC_Cur
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 @@ static void omega_mult_secp256k1(uint64_t * result, const uint64_t * right) {
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 */