This introduces the signed-digit multi-comb multiplication algorithm for constant-time G multiplications (ecmult_gen). It is based on section 3.3 of "Fast and compact elliptic-curve cryptography" by Mike Hamburg (see https://eprint.iacr.org/2012/309). Original implementation by Peter Dettman, with changes by Pieter Wuille to use scalars for recoding, and additional comments.
27 lines
924 B
C
27 lines
924 B
C
/*********************************************************************************
|
|
* Copyright (c) 2013, 2014, 2015, 2021 Thomas Daede, Cory Fields, Pieter Wuille *
|
|
* Distributed under the MIT software license, see the accompanying *
|
|
* file COPYING or https://www.opensource.org/licenses/mit-license.php. *
|
|
*********************************************************************************/
|
|
|
|
#ifndef SECP256K1_PRECOMPUTED_ECMULT_GEN_H
|
|
#define SECP256K1_PRECOMPUTED_ECMULT_GEN_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include "group.h"
|
|
#include "ecmult_gen.h"
|
|
#ifdef EXHAUSTIVE_TEST_ORDER
|
|
static secp256k1_ge_storage secp256k1_ecmult_gen_prec_table[COMB_BLOCKS][COMB_POINTS];
|
|
#else
|
|
extern const secp256k1_ge_storage secp256k1_ecmult_gen_prec_table[COMB_BLOCKS][COMB_POINTS];
|
|
#endif /* defined(EXHAUSTIVE_TEST_ORDER) */
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* SECP256K1_PRECOMPUTED_ECMULT_GEN_H */
|