Bitcoin Core
32.1.0
P2P Digital Currency
Toggle main menu visibility
Loading...
Searching...
No Matches
src
secp256k1
src
eckey_impl.h
Go to the documentation of this file.
1
/***********************************************************************
2
* Copyright (c) 2013, 2014 Pieter Wuille *
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_ECKEY_IMPL_H
8
#define SECP256K1_ECKEY_IMPL_H
9
10
#include "
eckey.h
"
11
12
#include "
util.h
"
13
#include "
scalar.h
"
14
#include "
field.h
"
15
#include "
group.h
"
16
#include "
ecmult_gen.h
"
17
18
static
int
secp256k1_eckey_seckey_tweak_add
(
secp256k1_scalar
*key,
const
secp256k1_scalar
*
tweak
) {
19
secp256k1_scalar_add(key, key,
tweak
);
20
return
!secp256k1_scalar_is_zero(key);
21
}
22
23
static
int
secp256k1_eckey_pubkey_tweak_add
(
secp256k1_ge
*key,
const
secp256k1_scalar
*
tweak
) {
24
secp256k1_gej
pt;
25
secp256k1_gej_set_ge(&pt, key);
26
secp256k1_ecmult(&pt, &pt, &secp256k1_scalar_one,
tweak
);
27
28
if
(secp256k1_gej_is_infinity(&pt)) {
29
return
0;
30
}
31
secp256k1_ge_set_gej(key, &pt);
32
return
1;
33
}
34
35
static
int
secp256k1_eckey_seckey_tweak_mul
(
secp256k1_scalar
*key,
const
secp256k1_scalar
*
tweak
) {
36
int
ret
;
37
ret
= !secp256k1_scalar_is_zero(
tweak
);
38
39
secp256k1_scalar_mul(key, key,
tweak
);
40
return
ret
;
41
}
42
43
static
int
secp256k1_eckey_pubkey_tweak_mul
(
secp256k1_ge
*key,
const
secp256k1_scalar
*
tweak
) {
44
secp256k1_gej
pt;
45
if
(secp256k1_scalar_is_zero(
tweak
)) {
46
return
0;
47
}
48
49
secp256k1_gej_set_ge(&pt, key);
50
secp256k1_ecmult(&pt, &pt,
tweak
, NULL);
51
secp256k1_ge_set_gej(key, &pt);
52
return
1;
53
}
54
55
#endif
/* SECP256K1_ECKEY_IMPL_H */
ret
int ret
Definition
bitcoin-cli.cpp:1691
eckey.h
secp256k1_eckey_pubkey_tweak_mul
static int secp256k1_eckey_pubkey_tweak_mul(secp256k1_ge *key, const secp256k1_scalar *tweak)
secp256k1_eckey_pubkey_tweak_add
static int secp256k1_eckey_pubkey_tweak_add(secp256k1_ge *key, const secp256k1_scalar *tweak)
secp256k1_eckey_seckey_tweak_mul
static int secp256k1_eckey_seckey_tweak_mul(secp256k1_scalar *key, const secp256k1_scalar *tweak)
secp256k1_eckey_seckey_tweak_add
static int secp256k1_eckey_seckey_tweak_add(secp256k1_scalar *key, const secp256k1_scalar *tweak)
ecmult_gen.h
field.h
group.h
tweak
static int tweak(const secp256k1_context *ctx, secp256k1_xonly_pubkey *agg_pk, secp256k1_musig_keyagg_cache *cache)
Definition
musig.c:64
scalar.h
util.h
secp256k1_ge
A group element in affine coordinates on the secp256k1 curve, or occasionally on an isomorphic curve ...
Definition
group.h:16
secp256k1_gej
A group element of the secp256k1 curve, in jacobian coordinates.
Definition
group.h:28
secp256k1_scalar
A scalar modulo the group order of the secp256k1 curve.
Definition
scalar_4x64.h:13
Generated on
for Bitcoin Core by
1.18.0