7 #ifndef _SECP256K1_NUM_REPR_IMPL_H_ 8 #define _SECP256K1_NUM_REPR_IMPL_H_ 22 #define secp256k1_num_sanity(a) do { } while(0) 30 unsigned char tmp[65];
34 len = mpn_get_str(tmp, 256, (mp_limb_t*)a->
data, a->
limbs);
36 while (shift < len && tmp[shift] == 0) shift++;
38 memset(r, 0, rlen - len + shift);
40 memcpy(r + rlen - len + shift, tmp + shift, len - shift);
42 memset(tmp, 0,
sizeof(tmp));
49 len = mpn_set_str(r->
data, a, alen, 256);
85 if (r->
limbs >=
m->limbs) {
88 memset(t, 0,
sizeof(t));
123 for (i = 0; i <
m->limbs; i++) {
128 gn = mpn_gcdext(g, r->
data, &sn, u,
m->limbs, v,
m->limbs);
134 mpn_sub(r->
data,
m->data,
m->limbs, r->
data, -sn);
142 memset(g, 0,
sizeof(g));
143 memset(u, 0,
sizeof(u));
144 memset(v, 0,
sizeof(v));
148 return (a->
limbs == 1 && a->
data[0] == 0);
179 if (!(b->
neg ^ bneg ^ a->
neg)) {
233 memset(tmp, 0,
sizeof(tmp));
237 if (bits % GMP_NUMB_BITS) {
239 mpn_rshift(r->
data, r->
data, r->
limbs, bits % GMP_NUMB_BITS);
241 if (bits >= GMP_NUMB_BITS) {
244 for (i = 0; i < r->
limbs; i++) {
245 int index = i + (bits / GMP_NUMB_BITS);
246 if (index < r->limbs && index < 2*
NUM_LIMBS) {
#define VERIFY_CHECK(cond)
static int secp256k1_num_cmp(const secp256k1_num *a, const secp256k1_num *b)
static void secp256k1_num_mul(secp256k1_num *r, const secp256k1_num *a, const secp256k1_num *b)
static void secp256k1_num_subadd(secp256k1_num *r, const secp256k1_num *a, const secp256k1_num *b, int bneg)
static void secp256k1_num_copy(secp256k1_num *r, const secp256k1_num *a)
static void secp256k1_num_sub(secp256k1_num *r, const secp256k1_num *a, const secp256k1_num *b)
mp_limb_t data[2 *NUM_LIMBS]
static void secp256k1_num_add_abs(secp256k1_num *r, const secp256k1_num *a, const secp256k1_num *b)
static void secp256k1_num_sub_abs(secp256k1_num *r, const secp256k1_num *a, const secp256k1_num *b)
static void secp256k1_num_shift(secp256k1_num *r, int bits)
static void secp256k1_num_add(secp256k1_num *r, const secp256k1_num *a, const secp256k1_num *b)
#define secp256k1_num_sanity(a)
static int secp256k1_num_is_zero(const secp256k1_num *a)
static void secp256k1_num_negate(secp256k1_num *r)
static void secp256k1_num_mod_inverse(secp256k1_num *r, const secp256k1_num *a, const secp256k1_num *m)
static void secp256k1_num_set_bin(secp256k1_num *r, const unsigned char *a, unsigned int alen)
static void secp256k1_num_get_bin(unsigned char *r, unsigned int rlen, const secp256k1_num *a)
static void secp256k1_num_mod(secp256k1_num *r, const secp256k1_num *m)
void * memcpy(void *a, const void *b, size_t c)
static int secp256k1_num_eq(const secp256k1_num *a, const secp256k1_num *b)
static int secp256k1_num_is_neg(const secp256k1_num *a)