Bitcoin Core  22.99.0
P2P Digital Currency
Macros | Typedefs | Functions
ecmult.h File Reference
#include "group.h"
#include "scalar.h"
#include "scratch.h"
Include dependency graph for ecmult.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.


#define ECMULT_TABLE_SIZE(w)   (1L << ((w)-2))
 The number of entries a table with precomputed multiples needs to have. More...


typedef int() secp256k1_ecmult_multi_callback(secp256k1_scalar *sc, secp256k1_ge *pt, size_t idx, void *data)


static void secp256k1_ecmult (secp256k1_gej *r, const secp256k1_gej *a, const secp256k1_scalar *na, const secp256k1_scalar *ng)
 Double multiply: R = na*A + ng*G. More...
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)
 Multi-multiply: R = inp_g_sc * G + sum_i ni * Ai. More...

Macro Definition Documentation


#define ECMULT_TABLE_SIZE (   w)    (1L << ((w)-2))

The number of entries a table with precomputed multiples needs to have.

Definition at line 30 of file ecmult.h.

Typedef Documentation

◆ secp256k1_ecmult_multi_callback

typedef int() secp256k1_ecmult_multi_callback(secp256k1_scalar *sc, secp256k1_ge *pt, size_t idx, void *data)

Definition at line 35 of file ecmult.h.

Function Documentation

◆ secp256k1_ecmult()

static void secp256k1_ecmult ( secp256k1_gej r,
const secp256k1_gej a,
const secp256k1_scalar na,
const secp256k1_scalar ng 

Double multiply: R = na*A + ng*G.

Here is the caller graph for this function:

◆ secp256k1_ecmult_multi_var()

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 

Multi-multiply: R = inp_g_sc * G + sum_i ni * Ai.

Chooses the right algorithm for a given number of points and scratch space size. Resets and overwrites the given scratch space. If the points do not fit in the scratch space the algorithm is repeatedly run with batches of points. If no scratch space is given then a simple algorithm is used that simply multiplies the points with the corresponding scalars and adds them up. Returns: 1 on success (including when inp_g_sc is NULL and n is 0) 0 if there is not enough scratch space for a single point or callback returns 0

Here is the caller graph for this function: