]>
Commit | Line | Data |
---|---|---|
71712b27 GM |
1 | /********************************************************************** |
2 | * Copyright (c) 2013, 2014 Pieter Wuille * | |
3 | * Distributed under the MIT software license, see the accompanying * | |
4 | * file COPYING or http://www.opensource.org/licenses/mit-license.php.* | |
5 | **********************************************************************/ | |
0a433ea2 | 6 | |
581ef48b PW |
7 | #ifndef _SECP256K1_ECMULT_ |
8 | #define _SECP256K1_ECMULT_ | |
9 | ||
949bea92 | 10 | #include "num.h" |
f11ff5be | 11 | #include "group.h" |
581ef48b | 12 | |
a9b6595e PW |
13 | typedef struct { |
14 | /* For accelerating the computation of a*P + b*G: */ | |
15 | secp256k1_ge_storage_t (*pre_g)[]; /* odd multiples of the generator */ | |
16 | #ifdef USE_ENDOMORPHISM | |
17 | secp256k1_ge_storage_t (*pre_g_128)[]; /* odd multiples of 2^128*generator */ | |
18 | #endif | |
19 | } secp256k1_ecmult_context_t; | |
20 | ||
21 | static void secp256k1_ecmult_context_init(secp256k1_ecmult_context_t *ctx); | |
22 | static void secp256k1_ecmult_context_build(secp256k1_ecmult_context_t *ctx); | |
d899b5b6 AP |
23 | static void secp256k1_ecmult_context_clone(secp256k1_ecmult_context_t *dst, |
24 | const secp256k1_ecmult_context_t *src); | |
a9b6595e PW |
25 | static void secp256k1_ecmult_context_clear(secp256k1_ecmult_context_t *ctx); |
26 | static int secp256k1_ecmult_context_is_built(const secp256k1_ecmult_context_t *ctx); | |
b1483f87 | 27 | |
b1483f87 | 28 | /** Double multiply: R = na*A + ng*G */ |
a9b6595e | 29 | static void secp256k1_ecmult(const secp256k1_ecmult_context_t *ctx, secp256k1_gej_t *r, const secp256k1_gej_t *a, const secp256k1_scalar_t *na, const secp256k1_scalar_t *ng); |
cb4d29c8 | 30 | |
581ef48b | 31 | #endif |