Bitcoin ABC 0.26.3
P2P Digital Currency
|
Go to the source code of this file.
Variables | |
static const unsigned char | bip340_algo16 [16] = "BIP0340/nonce\0\0\0" |
const secp256k1_nonce_function_hardened | secp256k1_nonce_function_bip340 = nonce_function_bip340 |
An implementation of the nonce generation function as defined in Bitcoin Improvement Proposal 340 "Schnorr Signatures for secp256k1" (https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki). | |
|
static |
Definition at line 50 of file main_impl.h.
|
static |
Definition at line 16 of file main_impl.h.
|
static |
Definition at line 32 of file main_impl.h.
|
static |
Definition at line 111 of file main_impl.h.
|
static |
Definition at line 98 of file main_impl.h.
int secp256k1_schnorrsig_sign | ( | const secp256k1_context * | ctx, |
unsigned char * | sig64, | ||
const unsigned char * | msg32, | ||
const secp256k1_keypair * | keypair, | ||
secp256k1_nonce_function_hardened | noncefp, | ||
void * | ndata | ||
) |
Create a Schnorr signature.
Does not strictly follow BIP-340 because it does not verify the resulting signature. Instead, you can manually use secp256k1_schnorrsig_verify and abort if it fails.
Otherwise BIP-340 compliant if the noncefp argument is NULL or secp256k1_nonce_function_bip340 and the ndata argument is 32-byte auxiliary randomness.
Returns 1 on success, 0 on failure. Args: ctx: pointer to a context object, initialized for signing (cannot be NULL) Out: sig64: pointer to a 64-byte array to store the serialized signature (cannot be NULL) In: msg32: the 32-byte message being signed (cannot be NULL) keypair: pointer to an initialized keypair (cannot be NULL) noncefp: pointer to a nonce generation function. If NULL, secp256k1_nonce_function_bip340 is used ndata: pointer to arbitrary data used by the nonce generation function (can be NULL). If it is non-NULL and secp256k1_nonce_function_bip340 is used, then ndata must be a pointer to 32-byte auxiliary randomness as per BIP-340.
Definition at line 127 of file main_impl.h.
int secp256k1_schnorrsig_verify | ( | const secp256k1_context * | ctx, |
const unsigned char * | sig64, | ||
const unsigned char * | msg32, | ||
const secp256k1_xonly_pubkey * | pubkey | ||
) |
Verify a Schnorr signature.
Returns: 1: correct signature 0: incorrect signature Args: ctx: a secp256k1 context object, initialized for verification. In: sig64: pointer to the 64-byte signature to verify (cannot be NULL) msg32: the 32-byte message being verified (cannot be NULL) pubkey: pointer to an x-only public key to verify with (cannot be NULL)
Definition at line 190 of file main_impl.h.
|
static |
Definition at line 48 of file main_impl.h.
const secp256k1_nonce_function_hardened secp256k1_nonce_function_bip340 = nonce_function_bip340 |
An implementation of the nonce generation function as defined in Bitcoin Improvement Proposal 340 "Schnorr Signatures for secp256k1" (https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki).
If a data pointer is passed, it is assumed to be a pointer to 32 bytes of auxiliary random data as defined in BIP-340. If the data pointer is NULL, schnorrsig_sign does not produce BIP-340 compliant signatures. The algo16 argument must be non-NULL, otherwise the function will fail and return 0. The hash will be tagged with algo16 after removing all terminating null bytes. Therefore, to create BIP-340 compliant signatures, algo16 must be set to "BIP0340/nonce\0\0\0"
Definition at line 94 of file main_impl.h.