|
Bitcoin Core
21.99.0
P2P Digital Currency
|
Go to the documentation of this file.
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);
88 memset(t, 0,
sizeof(t));
123 for (i = 0; i < m->
limbs; i++) {
142 memset(g, 0,
sizeof(g));
143 memset(u, 0,
sizeof(u));
144 memset(v, 0,
sizeof(v));
154 mpz_inits(ga, gb, NULL);
156 mpz_import(gb, b->
limbs, -1,
sizeof(mp_limb_t), 0, 0, b->
data);
157 mpz_import(ga, a->
limbs, -1,
sizeof(mp_limb_t), 0, 0, a->
data);
162 ret = mpz_jacobi(ga, gb);
164 mpz_clears(ga, gb, NULL);
170 return (a->
limbs == 1 && a->
data[0] == 1);
174 return (a->
limbs == 1 && a->
data[0] == 0);
205 if (!(b->
neg ^ bneg ^ a->
neg)) {
259 memset(tmp, 0,
sizeof(tmp));
263 if (bits % GMP_NUMB_BITS) {
265 mpn_rshift(r->
data, r->
data, r->
limbs, bits % GMP_NUMB_BITS);
267 if (bits >= GMP_NUMB_BITS) {
270 for (i = 0; i < r->
limbs; i++) {
271 int index = i + (bits / GMP_NUMB_BITS);
272 if (index < r->limbs && index < 2*
NUM_LIMBS) {
static int secp256k1_num_eq(const secp256k1_num *a, const secp256k1_num *b)
#define secp256k1_num_sanity(a)
static void secp256k1_num_mul(secp256k1_num *r, const secp256k1_num *a, const secp256k1_num *b)
#define VERIFY_CHECK(cond)
static int secp256k1_num_jacobi(const secp256k1_num *a, const secp256k1_num *b)
static int secp256k1_num_is_neg(const secp256k1_num *a)
static void secp256k1_num_add(secp256k1_num *r, const secp256k1_num *a, const secp256k1_num *b)
static void secp256k1_num_copy(secp256k1_num *r, const secp256k1_num *a)
static void secp256k1_num_add_abs(secp256k1_num *r, const secp256k1_num *a, const secp256k1_num *b)
static void secp256k1_num_mod(secp256k1_num *r, const secp256k1_num *m)
static void secp256k1_num_subadd(secp256k1_num *r, const secp256k1_num *a, const secp256k1_num *b, int bneg)
static void secp256k1_num_sub(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_set_bin(secp256k1_num *r, const unsigned char *a, unsigned int alen)
static int secp256k1_num_cmp(const secp256k1_num *a, const secp256k1_num *b)
static void secp256k1_num_negate(secp256k1_num *r)
static int secp256k1_num_is_zero(const secp256k1_num *a)
static void secp256k1_num_get_bin(unsigned char *r, unsigned int rlen, const secp256k1_num *a)
mp_limb_t data[2 *NUM_LIMBS]
static int secp256k1_num_is_one(const secp256k1_num *a)
static void secp256k1_num_mod_inverse(secp256k1_num *r, const secp256k1_num *a, const secp256k1_num *m)