-
Notifications
You must be signed in to change notification settings - Fork 209
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Move ecmult table computation code to separate file
- Loading branch information
Showing
4 changed files
with
68 additions
and
34 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
/***************************************************************************************************** | ||
* Copyright (c) 2013, 2014, 2017, 2021 Pieter Wuille, Andrew Poelstra, Jonas Nick, Russell O'Connor * | ||
* Distributed under the MIT software license, see the accompanying * | ||
* file COPYING or https://www.opensource.org/licenses/mit-license.php. * | ||
*****************************************************************************************************/ | ||
|
||
#ifndef SECP256K1_ECMULT_COMPUTE_TABLE_H | ||
#define SECP256K1_ECMULT_COMPUTE_TABLE_H | ||
|
||
/* Construct table of all odd multiples of gen in range 1..(2**(window_g-1)-1). */ | ||
static void secp256k1_ecmult_compute_table(secp256k1_ge_storage* table, int window_g, const secp256k1_gej* gen); | ||
|
||
/* Like secp256k1_ecmult_compute_table, but one for both gen and gen*2^128. */ | ||
static void secp256k1_ecmult_compute_two_tables(secp256k1_ge_storage* table, secp256k1_ge_storage* table_128, int window_g, const secp256k1_ge* gen); | ||
|
||
#endif /* SECP256K1_ECMULT_COMPUTE_TABLE_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
/***************************************************************************************************** | ||
* Copyright (c) 2013, 2014, 2017, 2021 Pieter Wuille, Andrew Poelstra, Jonas Nick, Russell O'Connor * | ||
* Distributed under the MIT software license, see the accompanying * | ||
* file COPYING or https://www.opensource.org/licenses/mit-license.php. * | ||
*****************************************************************************************************/ | ||
|
||
#ifndef SECP256K1_ECMULT_COMPUTE_TABLE_IMPL_H | ||
#define SECP256K1_ECMULT_COMPUTE_TABLE_IMPL_H | ||
|
||
#include "ecmult_compute_table.h" | ||
#include "group_impl.h" | ||
#include "field_impl.h" | ||
#include "ecmult.h" | ||
#include "util.h" | ||
|
||
static void secp256k1_ecmult_compute_table(secp256k1_ge_storage* table, int window_g, const secp256k1_gej* gen) { | ||
secp256k1_gej gj; | ||
secp256k1_ge ge, dgen; | ||
int j; | ||
|
||
gj = *gen; | ||
secp256k1_ge_set_gej_var(&ge, &gj); | ||
secp256k1_ge_to_storage(&table[0], &ge); | ||
|
||
secp256k1_gej_double_var(&gj, gen, NULL); | ||
secp256k1_ge_set_gej_var(&dgen, &gj); | ||
|
||
for (j = 1; j < ECMULT_TABLE_SIZE(window_g); ++j) { | ||
secp256k1_gej_set_ge(&gj, &ge); | ||
secp256k1_gej_add_ge_var(&gj, &gj, &dgen, NULL); | ||
secp256k1_ge_set_gej_var(&ge, &gj); | ||
secp256k1_ge_to_storage(&table[j], &ge); | ||
} | ||
} | ||
|
||
/* Like secp256k1_ecmult_compute_table, but one for both gen and gen*2^128. */ | ||
static void secp256k1_ecmult_compute_two_tables(secp256k1_ge_storage* table, secp256k1_ge_storage* table_128, int window_g, const secp256k1_ge* gen) { | ||
secp256k1_gej gj; | ||
int i; | ||
|
||
secp256k1_gej_set_ge(&gj, gen); | ||
secp256k1_ecmult_compute_table(table, window_g, &gj); | ||
for (i = 0; i < 128; ++i) { | ||
secp256k1_gej_double_var(&gj, &gj, NULL); | ||
} | ||
secp256k1_ecmult_compute_table(table_128, window_g, &gj); | ||
} | ||
|
||
#endif /* SECP256K1_ECMULT_COMPUTE_TABLE_IMPL_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters