Electroneum
ecmult.h
Go to the documentation of this file.
1
/***********************************************************************
2
* Copyright (c) 2013, 2014, 2017 Pieter Wuille, Andrew Poelstra *
3
* Distributed under the MIT software license, see the accompanying *
4
* file COPYING or https://www.opensource.org/licenses/mit-license.php.*
5
***********************************************************************/
6
7
#ifndef SECP256K1_ECMULT_H
8
#define SECP256K1_ECMULT_H
9
10
#include "
group.h
"
11
#include "
scalar.h
"
12
#include "
scratch.h
"
13
14
#ifndef ECMULT_WINDOW_SIZE
15
# define ECMULT_WINDOW_SIZE 15
16
# ifdef DEBUG_CONFIG
17
# pragma message DEBUG_CONFIG_MSG("ECMULT_WINDOW_SIZE undefined, assuming default value")
18
# endif
19
#endif
20
21
#ifdef DEBUG_CONFIG
22
# pragma message DEBUG_CONFIG_DEF(ECMULT_WINDOW_SIZE)
23
#endif
24
25
/* Noone will ever need more than a window size of 24. The code might
26
* be correct for larger values of ECMULT_WINDOW_SIZE but this is not
27
* tested.
28
*
29
* The following limitations are known, and there are probably more:
30
* If WINDOW_G > 27 and size_t has 32 bits, then the code is incorrect
31
* because the size of the memory object that we allocate (in bytes)
32
* will not fit in a size_t.
33
* If WINDOW_G > 31 and int has 32 bits, then the code is incorrect
34
* because certain expressions will overflow.
35
*/
36
#if ECMULT_WINDOW_SIZE < 2 || ECMULT_WINDOW_SIZE > 24
37
# error Set ECMULT_WINDOW_SIZE to an integer in range [2..24].
38
#endif
39
41
#define ECMULT_TABLE_SIZE(w) (1L << ((w)-2))
42
44
static
void
secp256k1_ecmult(
secp256k1_gej
*r,
const
secp256k1_gej
*
a
,
const
secp256k1_scalar
*na,
const
secp256k1_scalar
*ng);
45
46
typedef
int (
secp256k1_ecmult_multi_callback
)(
secp256k1_scalar
*sc,
secp256k1_ge
*pt,
size_t
idx,
void
*data);
47
59
static
int
secp256k1_ecmult_multi_var(
const
secp256k1_callback
* error_callback,
secp256k1_scratch
*scratch,
secp256k1_gej
*r,
const
secp256k1_scalar
*inp_g_sc,
secp256k1_ecmult_multi_callback
cb,
void
*cbdata,
size_t
n);
60
61
#endif
/* SECP256K1_ECMULT_H */
scratch.h
group.h
secp256k1_gej
Definition:
group.h:28
scalar.h
secp256k1_ge
Definition:
group.h:16
secp256k1_scalar
Definition:
scalar_4x64.h:13
a
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
Definition:
pointer.h:1124
secp256k1_ecmult_multi_callback
int() secp256k1_ecmult_multi_callback(secp256k1_scalar *sc, secp256k1_ge *pt, size_t idx, void *data)
Definition:
ecmult.h:46
secp256k1_scratch_space_struct
Definition:
scratch.h:12
secp256k1_callback
Definition:
util.h:20
external
secp256k1
src
ecmult.h
Generated on Sun Mar 10 2024 12:00:00 for Electroneum by
1.8.14