Abstract out verify logic for fe_mul_int
This commit is contained in:
parent
65d82a3445
commit
7e7ad7ff57
10
src/field.h
10
src/field.h
@ -88,6 +88,7 @@ static const secp256k1_fe secp256k1_const_beta = SECP256K1_FE_CONST(
|
|||||||
# define secp256k1_fe_set_b32 secp256k1_fe_impl_set_b32
|
# define secp256k1_fe_set_b32 secp256k1_fe_impl_set_b32
|
||||||
# define secp256k1_fe_get_b32 secp256k1_fe_impl_get_b32
|
# define secp256k1_fe_get_b32 secp256k1_fe_impl_get_b32
|
||||||
# define secp256k1_fe_negate secp256k1_fe_impl_negate
|
# define secp256k1_fe_negate secp256k1_fe_impl_negate
|
||||||
|
# define secp256k1_fe_mul_int secp256k1_fe_impl_mul_int
|
||||||
#endif /* !defined(VERIFY) */
|
#endif /* !defined(VERIFY) */
|
||||||
|
|
||||||
/** Normalize a field element.
|
/** Normalize a field element.
|
||||||
@ -205,8 +206,13 @@ static void secp256k1_fe_negate(secp256k1_fe *r, const secp256k1_fe *a, int m);
|
|||||||
/** Adds a small integer (up to 0x7FFF) to r. The resulting magnitude increases by one. */
|
/** Adds a small integer (up to 0x7FFF) to r. The resulting magnitude increases by one. */
|
||||||
static void secp256k1_fe_add_int(secp256k1_fe *r, int a);
|
static void secp256k1_fe_add_int(secp256k1_fe *r, int a);
|
||||||
|
|
||||||
/** Multiplies the passed field element with a small integer constant. Multiplies the magnitude by that
|
/** Multiply a field element with a small integer.
|
||||||
* small integer. */
|
*
|
||||||
|
* On input, r must be a valid field element. a must be an integer in [0,32].
|
||||||
|
* The magnitude of r times a must not exceed 32.
|
||||||
|
* Performs {r *= a}.
|
||||||
|
* On output, r's magnitude is multiplied by a, and r will not be normalized.
|
||||||
|
*/
|
||||||
static void secp256k1_fe_mul_int(secp256k1_fe *r, int a);
|
static void secp256k1_fe_mul_int(secp256k1_fe *r, int a);
|
||||||
|
|
||||||
/** Adds a field element to another. The result has the sum of the inputs' magnitudes as magnitude. */
|
/** Adds a field element to another. The result has the sum of the inputs' magnitudes as magnitude. */
|
||||||
|
@ -370,7 +370,7 @@ SECP256K1_INLINE static void secp256k1_fe_impl_negate(secp256k1_fe *r, const sec
|
|||||||
r->n[9] = 0x03FFFFFUL * 2 * (m + 1) - a->n[9];
|
r->n[9] = 0x03FFFFFUL * 2 * (m + 1) - a->n[9];
|
||||||
}
|
}
|
||||||
|
|
||||||
SECP256K1_INLINE static void secp256k1_fe_mul_int(secp256k1_fe *r, int a) {
|
SECP256K1_INLINE static void secp256k1_fe_impl_mul_int(secp256k1_fe *r, int a) {
|
||||||
r->n[0] *= a;
|
r->n[0] *= a;
|
||||||
r->n[1] *= a;
|
r->n[1] *= a;
|
||||||
r->n[2] *= a;
|
r->n[2] *= a;
|
||||||
@ -381,11 +381,6 @@ SECP256K1_INLINE static void secp256k1_fe_mul_int(secp256k1_fe *r, int a) {
|
|||||||
r->n[7] *= a;
|
r->n[7] *= a;
|
||||||
r->n[8] *= a;
|
r->n[8] *= a;
|
||||||
r->n[9] *= a;
|
r->n[9] *= a;
|
||||||
#ifdef VERIFY
|
|
||||||
r->magnitude *= a;
|
|
||||||
r->normalized = 0;
|
|
||||||
secp256k1_fe_verify(r);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SECP256K1_INLINE static void secp256k1_fe_add(secp256k1_fe *r, const secp256k1_fe *a) {
|
SECP256K1_INLINE static void secp256k1_fe_add(secp256k1_fe *r, const secp256k1_fe *a) {
|
||||||
|
@ -333,17 +333,12 @@ SECP256K1_INLINE static void secp256k1_fe_impl_negate(secp256k1_fe *r, const sec
|
|||||||
r->n[4] = 0x0FFFFFFFFFFFFULL * 2 * (m + 1) - a->n[4];
|
r->n[4] = 0x0FFFFFFFFFFFFULL * 2 * (m + 1) - a->n[4];
|
||||||
}
|
}
|
||||||
|
|
||||||
SECP256K1_INLINE static void secp256k1_fe_mul_int(secp256k1_fe *r, int a) {
|
SECP256K1_INLINE static void secp256k1_fe_impl_mul_int(secp256k1_fe *r, int a) {
|
||||||
r->n[0] *= a;
|
r->n[0] *= a;
|
||||||
r->n[1] *= a;
|
r->n[1] *= a;
|
||||||
r->n[2] *= a;
|
r->n[2] *= a;
|
||||||
r->n[3] *= a;
|
r->n[3] *= a;
|
||||||
r->n[4] *= a;
|
r->n[4] *= a;
|
||||||
#ifdef VERIFY
|
|
||||||
r->magnitude *= a;
|
|
||||||
r->normalized = 0;
|
|
||||||
secp256k1_fe_verify(r);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SECP256K1_INLINE static void secp256k1_fe_add_int(secp256k1_fe *r, int a) {
|
SECP256K1_INLINE static void secp256k1_fe_add_int(secp256k1_fe *r, int a) {
|
||||||
|
@ -264,6 +264,17 @@ SECP256K1_INLINE static void secp256k1_fe_negate(secp256k1_fe *r, const secp256k
|
|||||||
r->normalized = 0;
|
r->normalized = 0;
|
||||||
secp256k1_fe_verify(r);
|
secp256k1_fe_verify(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void secp256k1_fe_impl_mul_int(secp256k1_fe *r, int a);
|
||||||
|
SECP256K1_INLINE static void secp256k1_fe_mul_int(secp256k1_fe *r, int a) {
|
||||||
|
secp256k1_fe_verify(r);
|
||||||
|
VERIFY_CHECK(a >= 0 && a <= 32);
|
||||||
|
VERIFY_CHECK(a*r->magnitude <= 32);
|
||||||
|
secp256k1_fe_impl_mul_int(r, a);
|
||||||
|
r->magnitude *= a;
|
||||||
|
r->normalized = 0;
|
||||||
|
secp256k1_fe_verify(r);
|
||||||
|
}
|
||||||
#endif /* defined(VERIFY) */
|
#endif /* defined(VERIFY) */
|
||||||
|
|
||||||
#endif /* SECP256K1_FIELD_IMPL_H */
|
#endif /* SECP256K1_FIELD_IMPL_H */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user