Changeset View
Changeset View
Standalone View
Standalone View
src/secp256k1/src/field_5x52_impl.h
Show First 20 Lines • Show All 443 Lines • ▼ Show 20 Lines | #ifdef VERIFY | ||||
r->magnitude = 1; | r->magnitude = 1; | ||||
r->normalized = 0; | r->normalized = 0; | ||||
secp256k1_fe_verify(r); | secp256k1_fe_verify(r); | ||||
#endif | #endif | ||||
} | } | ||||
static SECP256K1_INLINE void secp256k1_fe_cmov(secp256k1_fe *r, const secp256k1_fe *a, int flag) { | static SECP256K1_INLINE void secp256k1_fe_cmov(secp256k1_fe *r, const secp256k1_fe *a, int flag) { | ||||
uint64_t mask0, mask1; | uint64_t mask0, mask1; | ||||
VG_CHECK_VERIFY(r->n, sizeof(r->n)); | |||||
mask0 = flag + ~((uint64_t)0); | mask0 = flag + ~((uint64_t)0); | ||||
mask1 = ~mask0; | mask1 = ~mask0; | ||||
r->n[0] = (r->n[0] & mask0) | (a->n[0] & mask1); | r->n[0] = (r->n[0] & mask0) | (a->n[0] & mask1); | ||||
r->n[1] = (r->n[1] & mask0) | (a->n[1] & mask1); | r->n[1] = (r->n[1] & mask0) | (a->n[1] & mask1); | ||||
r->n[2] = (r->n[2] & mask0) | (a->n[2] & mask1); | r->n[2] = (r->n[2] & mask0) | (a->n[2] & mask1); | ||||
r->n[3] = (r->n[3] & mask0) | (a->n[3] & mask1); | r->n[3] = (r->n[3] & mask0) | (a->n[3] & mask1); | ||||
r->n[4] = (r->n[4] & mask0) | (a->n[4] & mask1); | r->n[4] = (r->n[4] & mask0) | (a->n[4] & mask1); | ||||
#ifdef VERIFY | #ifdef VERIFY | ||||
if (flag) { | if (flag) { | ||||
r->magnitude = a->magnitude; | r->magnitude = a->magnitude; | ||||
r->normalized = a->normalized; | r->normalized = a->normalized; | ||||
} | } | ||||
#endif | #endif | ||||
} | } | ||||
static SECP256K1_INLINE void secp256k1_fe_storage_cmov(secp256k1_fe_storage *r, const secp256k1_fe_storage *a, int flag) { | static SECP256K1_INLINE void secp256k1_fe_storage_cmov(secp256k1_fe_storage *r, const secp256k1_fe_storage *a, int flag) { | ||||
uint64_t mask0, mask1; | uint64_t mask0, mask1; | ||||
VG_CHECK_VERIFY(r->n, sizeof(r->n)); | |||||
mask0 = flag + ~((uint64_t)0); | mask0 = flag + ~((uint64_t)0); | ||||
mask1 = ~mask0; | mask1 = ~mask0; | ||||
r->n[0] = (r->n[0] & mask0) | (a->n[0] & mask1); | r->n[0] = (r->n[0] & mask0) | (a->n[0] & mask1); | ||||
r->n[1] = (r->n[1] & mask0) | (a->n[1] & mask1); | r->n[1] = (r->n[1] & mask0) | (a->n[1] & mask1); | ||||
r->n[2] = (r->n[2] & mask0) | (a->n[2] & mask1); | r->n[2] = (r->n[2] & mask0) | (a->n[2] & mask1); | ||||
r->n[3] = (r->n[3] & mask0) | (a->n[3] & mask1); | r->n[3] = (r->n[3] & mask0) | (a->n[3] & mask1); | ||||
} | } | ||||
Show All 23 Lines |