Optimize secp256k1_fe_normalize_weak calls.
Move secp256k1_fe_normalize_weak calls out of ECMULT_TABLE_GET_GE and ECMULT_TABLE_GET_GE_STORAGE and into secp256k1_ge_globalz_set_table_gej instead.
This commit is contained in:
parent
1e6f1f5ad5
commit
9bd89c836b
|
@ -166,7 +166,8 @@ static void secp256k1_ecmult_odd_multiples_table_storage_var(int n, secp256k1_ge
|
||||||
if ((n) > 0) { \
|
if ((n) > 0) { \
|
||||||
*(r) = (pre)[((n)-1)/2]; \
|
*(r) = (pre)[((n)-1)/2]; \
|
||||||
} else { \
|
} else { \
|
||||||
secp256k1_ge_neg((r), &(pre)[(-(n)-1)/2]); \
|
*(r) = (pre)[(-(n)-1)/2]; \
|
||||||
|
secp256k1_fe_negate(&((r)->y), &((r)->y), 1); \
|
||||||
} \
|
} \
|
||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
|
@ -178,7 +179,7 @@ static void secp256k1_ecmult_odd_multiples_table_storage_var(int n, secp256k1_ge
|
||||||
secp256k1_ge_from_storage((r), &(pre)[((n)-1)/2]); \
|
secp256k1_ge_from_storage((r), &(pre)[((n)-1)/2]); \
|
||||||
} else { \
|
} else { \
|
||||||
secp256k1_ge_from_storage((r), &(pre)[(-(n)-1)/2]); \
|
secp256k1_ge_from_storage((r), &(pre)[(-(n)-1)/2]); \
|
||||||
secp256k1_ge_neg((r), (r)); \
|
secp256k1_fe_negate(&((r)->y), &((r)->y), 1); \
|
||||||
} \
|
} \
|
||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
|
|
|
@ -178,6 +178,8 @@ static void secp256k1_ge_globalz_set_table_gej(size_t len, secp256k1_ge *r, secp
|
||||||
/* The z of the final point gives us the "global Z" for the table. */
|
/* The z of the final point gives us the "global Z" for the table. */
|
||||||
r[i].x = a[i].x;
|
r[i].x = a[i].x;
|
||||||
r[i].y = a[i].y;
|
r[i].y = a[i].y;
|
||||||
|
/* Ensure all y values are in weak normal form for fast negation of points */
|
||||||
|
secp256k1_fe_normalize_weak(&r[i].y);
|
||||||
*globalz = a[i].z;
|
*globalz = a[i].z;
|
||||||
r[i].infinity = 0;
|
r[i].infinity = 0;
|
||||||
zs = zr[i];
|
zs = zr[i];
|
||||||
|
|
Loading…
Reference in New Issue