Bitcoin Core
22.99.0
P2P Digital Currency
src
secp256k1
include
secp256k1_extrakeys.h
Go to the documentation of this file.
1
#ifndef SECP256K1_EXTRAKEYS_H
2
#define SECP256K1_EXTRAKEYS_H
3
4
#include "
secp256k1.h
"
5
6
#ifdef __cplusplus
7
extern
"C"
{
8
#endif
9
22
typedef
struct
{
23
unsigned
char
data[64];
24
}
secp256k1_xonly_pubkey
;
25
33
typedef
struct
{
34
unsigned
char
data[96];
35
}
secp256k1_keypair
;
36
47
SECP256K1_API
SECP256K1_WARN_UNUSED_RESULT
int
secp256k1_xonly_pubkey_parse
(
48
const
secp256k1_context
*
ctx
,
49
secp256k1_xonly_pubkey
* pubkey,
50
const
unsigned
char
*input32
51
)
SECP256K1_ARG_NONNULL
(1)
SECP256K1_ARG_NONNULL
(2)
SECP256K1_ARG_NONNULL
(3);
52
61
SECP256K1_API
int
secp256k1_xonly_pubkey_serialize
(
62
const
secp256k1_context
*
ctx
,
63
unsigned
char
*output32,
64
const
secp256k1_xonly_pubkey
* pubkey
65
)
SECP256K1_ARG_NONNULL
(1)
SECP256K1_ARG_NONNULL
(2)
SECP256K1_ARG_NONNULL
(3);
66
76
SECP256K1_API
int
secp256k1_xonly_pubkey_cmp
(
77
const
secp256k1_context
*
ctx
,
78
const
secp256k1_xonly_pubkey
* pk1,
79
const
secp256k1_xonly_pubkey
* pk2
80
)
SECP256K1_ARG_NONNULL
(1)
SECP256K1_ARG_NONNULL
(2)
SECP256K1_ARG_NONNULL
(3);
81
94
SECP256K1_API
SECP256K1_WARN_UNUSED_RESULT
int
secp256k1_xonly_pubkey_from_pubkey
(
95
const
secp256k1_context
*
ctx
,
96
secp256k1_xonly_pubkey
*xonly_pubkey,
97
int
*pk_parity,
98
const
secp256k1_pubkey
*pubkey
99
)
SECP256K1_ARG_NONNULL
(1)
SECP256K1_ARG_NONNULL
(2)
SECP256K1_ARG_NONNULL
(4);
100
121
SECP256K1_API
SECP256K1_WARN_UNUSED_RESULT
int
secp256k1_xonly_pubkey_tweak_add
(
122
const
secp256k1_context
*
ctx
,
123
secp256k1_pubkey
*output_pubkey,
124
const
secp256k1_xonly_pubkey
*internal_pubkey,
125
const
unsigned
char
*tweak32
126
)
SECP256K1_ARG_NONNULL
(1)
SECP256K1_ARG_NONNULL
(2)
SECP256K1_ARG_NONNULL
(3)
SECP256K1_ARG_NONNULL
(4);
127
151
SECP256K1_API
SECP256K1_WARN_UNUSED_RESULT
int
secp256k1_xonly_pubkey_tweak_add_check
(
152
const
secp256k1_context
*
ctx
,
153
const
unsigned
char
*tweaked_pubkey32,
154
int
tweaked_pk_parity,
155
const
secp256k1_xonly_pubkey
*internal_pubkey,
156
const
unsigned
char
*tweak32
157
)
SECP256K1_ARG_NONNULL
(1)
SECP256K1_ARG_NONNULL
(2)
SECP256K1_ARG_NONNULL
(4)
SECP256K1_ARG_NONNULL
(5);
158
167
SECP256K1_API
SECP256K1_WARN_UNUSED_RESULT
int
secp256k1_keypair_create
(
168
const
secp256k1_context
*
ctx
,
169
secp256k1_keypair
*keypair,
170
const
unsigned
char
*seckey
171
)
SECP256K1_ARG_NONNULL
(1)
SECP256K1_ARG_NONNULL
(2)
SECP256K1_ARG_NONNULL
(3);
172
180
SECP256K1_API
SECP256K1_WARN_UNUSED_RESULT
int
secp256k1_keypair_sec
(
181
const
secp256k1_context
*
ctx
,
182
unsigned
char
*seckey,
183
const
secp256k1_keypair
*keypair
184
)
SECP256K1_ARG_NONNULL
(1)
SECP256K1_ARG_NONNULL
(2)
SECP256K1_ARG_NONNULL
(3);
185
194
SECP256K1_API
SECP256K1_WARN_UNUSED_RESULT
int
secp256k1_keypair_pub
(
195
const
secp256k1_context
*
ctx
,
196
secp256k1_pubkey
*pubkey,
197
const
secp256k1_keypair
*keypair
198
)
SECP256K1_ARG_NONNULL
(1)
SECP256K1_ARG_NONNULL
(2)
SECP256K1_ARG_NONNULL
(3);
199
214
SECP256K1_API
SECP256K1_WARN_UNUSED_RESULT
int
secp256k1_keypair_xonly_pub
(
215
const
secp256k1_context
*
ctx
,
216
secp256k1_xonly_pubkey
*pubkey,
217
int
*pk_parity,
218
const
secp256k1_keypair
*keypair
219
)
SECP256K1_ARG_NONNULL
(1)
SECP256K1_ARG_NONNULL
(2)
SECP256K1_ARG_NONNULL
(4);
220
240
SECP256K1_API
SECP256K1_WARN_UNUSED_RESULT
int
secp256k1_keypair_xonly_tweak_add
(
241
const
secp256k1_context
*
ctx
,
242
secp256k1_keypair
*keypair,
243
const
unsigned
char
*tweak32
244
)
SECP256K1_ARG_NONNULL
(1)
SECP256K1_ARG_NONNULL
(2)
SECP256K1_ARG_NONNULL
(3);
245
246
#ifdef __cplusplus
247
}
248
#endif
249
250
#endif
/* SECP256K1_EXTRAKEYS_H */
secp256k1_xonly_pubkey_cmp
SECP256K1_API int secp256k1_xonly_pubkey_cmp(const secp256k1_context *ctx, const secp256k1_xonly_pubkey *pk1, const secp256k1_xonly_pubkey *pk2) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3)
Compare two x-only public keys using lexicographic order.
Definition:
main_impl.h:58
secp256k1_context_struct
Definition:
secp256k1.c:47
secp256k1_xonly_pubkey_from_pubkey
SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_xonly_pubkey_from_pubkey(const secp256k1_context *ctx, secp256k1_xonly_pubkey *xonly_pubkey, int *pk_parity, const secp256k1_pubkey *pubkey) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(4)
Converts a secp256k1_pubkey into a secp256k1_xonly_pubkey.
Definition:
main_impl.h:98
secp256k1_keypair_xonly_pub
SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_keypair_xonly_pub(const secp256k1_context *ctx, secp256k1_xonly_pubkey *pubkey, int *pk_parity, const secp256k1_keypair *keypair) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(4)
Get the x-only public key from a keypair.
Definition:
main_impl.h:233
secp256k1_keypair_sec
SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_keypair_sec(const secp256k1_context *ctx, unsigned char *seckey, const secp256k1_keypair *keypair) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3)
Get the secret key from a keypair.
Definition:
main_impl.h:213
secp256k1_keypair
Opaque data structure that holds a keypair consisting of a secret and a public key.
Definition:
secp256k1_extrakeys.h:33
SECP256K1_API
#define SECP256K1_API
Definition:
secp256k1.h:154
secp256k1.h
secp256k1_keypair_create
SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_keypair_create(const secp256k1_context *ctx, secp256k1_keypair *keypair, const unsigned char *seckey) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3)
Compute the keypair for a secret key.
Definition:
main_impl.h:195
secp256k1_keypair_pub
SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_keypair_pub(const secp256k1_context *ctx, secp256k1_pubkey *pubkey, const secp256k1_keypair *keypair) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3)
Get the public key from a keypair.
Definition:
main_impl.h:223
secp256k1_xonly_pubkey_tweak_add_check
SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_xonly_pubkey_tweak_add_check(const secp256k1_context *ctx, const unsigned char *tweaked_pubkey32, int tweaked_pk_parity, const secp256k1_xonly_pubkey *internal_pubkey, const unsigned char *tweak32) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(4) SECP256K1_ARG_NONNULL(5)
Checks that a tweaked pubkey is the result of calling secp256k1_xonly_pubkey_tweak_add with internal_...
Definition:
main_impl.h:134
SECP256K1_WARN_UNUSED_RESULT
#define SECP256K1_WARN_UNUSED_RESULT
Warning attributes NONNULL is not used if SECP256K1_BUILD is set to avoid the compiler optimizing out...
Definition:
secp256k1.h:164
secp256k1_xonly_pubkey_parse
SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_xonly_pubkey_parse(const secp256k1_context *ctx, secp256k1_xonly_pubkey *pubkey, const unsigned char *input32) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3)
Parse a 32-byte sequence into a xonly_pubkey object.
Definition:
main_impl.h:21
secp256k1_xonly_pubkey_serialize
SECP256K1_API int secp256k1_xonly_pubkey_serialize(const secp256k1_context *ctx, unsigned char *output32, const secp256k1_xonly_pubkey *pubkey) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3)
Serialize an xonly_pubkey object into a 32-byte sequence.
Definition:
main_impl.h:43
SECP256K1_ARG_NONNULL
#define SECP256K1_ARG_NONNULL(_x)
Definition:
secp256k1.h:169
secp256k1_keypair_xonly_tweak_add
SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_keypair_xonly_tweak_add(const secp256k1_context *ctx, secp256k1_keypair *keypair, const unsigned char *tweak32) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3)
Tweak a keypair by adding tweak32 to the secret key and updating the public key accordingly.
Definition:
main_impl.h:254
secp256k1_xonly_pubkey_tweak_add
SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_xonly_pubkey_tweak_add(const secp256k1_context *ctx, secp256k1_pubkey *output_pubkey, const secp256k1_xonly_pubkey *internal_pubkey, const unsigned char *tweak32) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4)
Tweak an x-only public key by adding the generator multiplied with tweak32 to it.
Definition:
main_impl.h:117
secp256k1_pubkey
Opaque data structure that holds a parsed and valid public key.
Definition:
secp256k1.h:70
ctx
static secp256k1_context * ctx
Definition:
tests.c:32
secp256k1_xonly_pubkey
Opaque data structure that holds a parsed and valid "x-only" public key.
Definition:
secp256k1_extrakeys.h:22
Generated on Fri Feb 18 2022 20:03:28 for Bitcoin Core by
1.8.17