7 #ifndef SECP256K1_SCALAR_IMPL_H 8 #define SECP256K1_SCALAR_IMPL_H 13 #if defined HAVE_CONFIG_H 17 #if defined(EXHAUSTIVE_TEST_ORDER) 19 #elif defined(USE_SCALAR_4X64) 21 #elif defined(USE_SCALAR_8X32) 24 #error "Please select scalar implementation" 36 #if defined(EXHAUSTIVE_TEST_ORDER) 37 static const unsigned char order[32] = {
44 static const unsigned char order[32] = {
45 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
46 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,
47 0xBA,0xAE,0xDC,0xE6,0xAF,0x48,0xA0,0x3B,
48 0xBF,0xD2,0x5E,0x8C,0xD0,0x36,0x41,0x41
56 #if defined(EXHAUSTIVE_TEST_ORDER) 91 for (i = 0; i < 5; i++) {
97 for (i = 0; i < 13; i++) {
103 for (i = 0; i < 27; i++) {
109 for (i = 0; i < 55; i++) {
115 for (i = 0; i < 13; i++) {
122 for (i = 0; i < 3; i++) {
126 for (i = 0; i < 4; i++) {
130 for (i = 0; i < 4; i++) {
134 for (i = 0; i < 5; i++) {
138 for (i = 0; i < 4; i++) {
142 for (i = 0; i < 4; i++) {
146 for (i = 0; i < 5; i++) {
150 for (i = 0; i < 6; i++) {
154 for (i = 0; i < 4; i++) {
158 for (i = 0; i < 3; i++) {
162 for (i = 0; i < 5; i++) {
166 for (i = 0; i < 6; i++) {
170 for (i = 0; i < 10; i++) {
174 for (i = 0; i < 4; i++) {
178 for (i = 0; i < 9; i++) {
182 for (i = 0; i < 5; i++) {
186 for (i = 0; i < 6; i++) {
190 for (i = 0; i < 4; i++) {
194 for (i = 0; i < 5; i++) {
198 for (i = 0; i < 6; i++) {
202 for (i = 0; i < 10; i++) {
206 for (i = 0; i < 4; i++) {
210 for (i = 0; i < 6; i++) {
214 for (i = 0; i < 8; i++) {
221 return !(a->
d[0] & 1);
226 #if defined(USE_SCALAR_INV_BUILTIN) 228 #elif defined(USE_SCALAR_INV_NUM) 242 #error "Please select scalar inverse implementation" 246 #ifdef USE_ENDOMORPHISM 247 #if defined(EXHAUSTIVE_TEST_ORDER) 300 0xAC9C52B3UL, 0x3FA3CF1FUL, 0x5AD9E3FDUL, 0x77ED9BA4UL,
301 0xA880B9FCUL, 0x8EC739C2UL, 0xE0CFC810UL, 0xB51283CFUL
304 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
305 0xE4437ED6UL, 0x010E8828UL, 0x6F547FA9UL, 0x0ABFE4C3UL
308 0xFFFFFFFFUL, 0xFFFFFFFFUL, 0xFFFFFFFFUL, 0xFFFFFFFEUL,
309 0x8A280AC5UL, 0x0774346DUL, 0xD765CDA8UL, 0x3DB1562CUL
312 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00003086UL,
313 0xD221A7D4UL, 0x6BCDE86CUL, 0x90E49284UL, 0xEB153DABUL
316 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x0000E443UL,
317 0x7ED6010EUL, 0x88286F54UL, 0x7FA90ABFUL, 0xE4C42212UL
static void secp256k1_scalar_mul(secp256k1_scalar *r, const secp256k1_scalar *a, const secp256k1_scalar *b)
#define VERIFY_CHECK(cond)
Definition: util.h:67
static void secp256k1_num_set_bin(secp256k1_num *r, const unsigned char *a, unsigned int alen)
static void secp256k1_scalar_inverse(secp256k1_scalar *r, const secp256k1_scalar *x)
Definition: scalar_impl.h:55
static void secp256k1_scalar_set_b32(secp256k1_scalar *r, const unsigned char *bin, int *overflow)
static void secp256k1_num_mod_inverse(secp256k1_num *r, const secp256k1_num *a, const secp256k1_num *m)
m
Definition: linearize-data.py:266
static void secp256k1_scalar_mul_shift_var(secp256k1_scalar *r, const secp256k1_scalar *a, const secp256k1_scalar *b, unsigned int shift)
#define EXHAUSTIVE_TEST_LAMBDA
Definition: tests_exhaustive.c:21
#define SECP256K1_INLINE
Definition: secp256k1.h:123
static void secp256k1_scalar_inverse_var(secp256k1_scalar *r, const secp256k1_scalar *x)
Definition: scalar_impl.h:225
#define SECP256K1_SCALAR_CONST(d7, d6, d5, d4, d3, d2, d1, d0)
Definition: scalar_4x64.h:17
static void secp256k1_scalar_sqr(secp256k1_scalar *r, const secp256k1_scalar *a)
#define CHECK(cond)
Definition: util.h:52
Definition: scalar_4x64.h:13
static void secp256k1_scalar_get_b32(unsigned char *bin, const secp256k1_scalar *a)
uint64_t d[4]
Definition: scalar_4x64.h:14
static int secp256k1_scalar_add(secp256k1_scalar *r, const secp256k1_scalar *a, const secp256k1_scalar *b)
#define EXHAUSTIVE_TEST_ORDER
Definition: tests_exhaustive.c:20
static void secp256k1_scalar_get_num(secp256k1_num *r, const secp256k1_scalar *a)
Definition: scalar_impl.h:28
static void secp256k1_scalar_order_get_num(secp256k1_num *r)
Definition: scalar_impl.h:35
static SECP256K1_INLINE int secp256k1_scalar_is_even(const secp256k1_scalar *a)
Definition: scalar_impl.h:220
static void secp256k1_num_get_bin(unsigned char *r, unsigned int rlen, const secp256k1_num *a)
static int secp256k1_scalar_is_one(const secp256k1_scalar *a)