Fix bip340_algo missing space for null-terminator in C++
This commit is contained in:
parent
2efe69b68e
commit
e7fe52f1b6
@ -36753,7 +36753,7 @@ static void secp256k1_nonce_function_bip340_sha256_tagged_aux(secp256k1_sha256 *
|
||||
|
||||
/* algo argument for nonce_function_bip340 to derive the nonce exactly as stated in BIP-340
|
||||
* by using the correct tagged hash function. */
|
||||
static const unsigned char bip340_algo[13] = "BIP0340/nonce";
|
||||
static const unsigned char bip340_algo[13 + 1] = "BIP0340/nonce";
|
||||
|
||||
static const unsigned char schnorrsig_extraparams_magic[4] = SECP256K1_SCHNORRSIG_EXTRAPARAMS_MAGIC;
|
||||
|
||||
@ -36789,7 +36789,7 @@ static int nonce_function_bip340(unsigned char *nonce32, const unsigned char *ms
|
||||
/* Tag the hash with algo which is important to avoid nonce reuse across
|
||||
* algorithms. If this nonce function is used in BIP-340 signing as defined
|
||||
* in the spec, an optimized tagging implementation is used. */
|
||||
if (algolen == sizeof(bip340_algo)
|
||||
if (algolen == (sizeof(bip340_algo) - 1)
|
||||
&& secp256k1_memcmp_var(algo, bip340_algo, algolen) == 0) {
|
||||
secp256k1_nonce_function_bip340_sha256_tagged(&sha);
|
||||
} else {
|
||||
@ -36869,7 +36869,7 @@ static int secp256k1_schnorrsig_sign_internal(const secp256k1_context* ctx, unsi
|
||||
|
||||
secp256k1_scalar_get_b32(seckey, &sk);
|
||||
secp256k1_fe_get_b32(pk_buf, &pk.x);
|
||||
ret &= !!noncefp(buf, msg, msglen, seckey, pk_buf, bip340_algo, sizeof(bip340_algo), ndata);
|
||||
ret &= !!noncefp(buf, msg, msglen, seckey, pk_buf, bip340_algo, (sizeof(bip340_algo) - 1), ndata);
|
||||
secp256k1_scalar_set_b32(&k, buf, NULL);
|
||||
ret &= !secp256k1_scalar_is_zero(&k);
|
||||
secp256k1_scalar_cmov(&k, &secp256k1_scalar_one, !ret);
|
||||
|
@ -36981,7 +36981,7 @@ static void secp256k1_nonce_function_bip340_sha256_tagged_aux(secp256k1_sha256 *
|
||||
|
||||
/* algo argument for nonce_function_bip340 to derive the nonce exactly as stated in BIP-340
|
||||
* by using the correct tagged hash function. */
|
||||
static const unsigned char bip340_algo[13] = "BIP0340/nonce";
|
||||
static const unsigned char bip340_algo[13 + 1] = "BIP0340/nonce";
|
||||
|
||||
static const unsigned char schnorrsig_extraparams_magic[4] = SECP256K1_SCHNORRSIG_EXTRAPARAMS_MAGIC;
|
||||
|
||||
@ -37017,7 +37017,7 @@ static int nonce_function_bip340(unsigned char *nonce32, const unsigned char *ms
|
||||
/* Tag the hash with algo which is important to avoid nonce reuse across
|
||||
* algorithms. If this nonce function is used in BIP-340 signing as defined
|
||||
* in the spec, an optimized tagging implementation is used. */
|
||||
if (algolen == sizeof(bip340_algo)
|
||||
if (algolen == (sizeof(bip340_algo) - 1)
|
||||
&& secp256k1_memcmp_var(algo, bip340_algo, algolen) == 0) {
|
||||
secp256k1_nonce_function_bip340_sha256_tagged(&sha);
|
||||
} else {
|
||||
@ -37097,7 +37097,7 @@ static int secp256k1_schnorrsig_sign_internal(const secp256k1_context* ctx, unsi
|
||||
|
||||
secp256k1_scalar_get_b32(seckey, &sk);
|
||||
secp256k1_fe_get_b32(pk_buf, &pk.x);
|
||||
ret &= !!noncefp(buf, msg, msglen, seckey, pk_buf, bip340_algo, sizeof(bip340_algo), ndata);
|
||||
ret &= !!noncefp(buf, msg, msglen, seckey, pk_buf, bip340_algo, (sizeof(bip340_algo) - 1), ndata);
|
||||
secp256k1_scalar_set_b32(&k, buf, NULL);
|
||||
ret &= !secp256k1_scalar_is_zero(&k);
|
||||
secp256k1_scalar_cmov(&k, &secp256k1_scalar_one, !ret);
|
||||
|
@ -36370,7 +36370,7 @@ static void secp256k1_nonce_function_bip340_sha256_tagged_aux(secp256k1_sha256 *
|
||||
|
||||
/* algo argument for nonce_function_bip340 to derive the nonce exactly as stated in BIP-340
|
||||
* by using the correct tagged hash function. */
|
||||
static const unsigned char bip340_algo[13] = "BIP0340/nonce";
|
||||
static const unsigned char bip340_algo[13 + 1] = "BIP0340/nonce";
|
||||
|
||||
static const unsigned char schnorrsig_extraparams_magic[4] = SECP256K1_SCHNORRSIG_EXTRAPARAMS_MAGIC;
|
||||
|
||||
@ -36406,7 +36406,7 @@ static int nonce_function_bip340(unsigned char *nonce32, const unsigned char *ms
|
||||
/* Tag the hash with algo which is important to avoid nonce reuse across
|
||||
* algorithms. If this nonce function is used in BIP-340 signing as defined
|
||||
* in the spec, an optimized tagging implementation is used. */
|
||||
if (algolen == sizeof(bip340_algo)
|
||||
if (algolen == (sizeof(bip340_algo) - 1)
|
||||
&& secp256k1_memcmp_var(algo, bip340_algo, algolen) == 0) {
|
||||
secp256k1_nonce_function_bip340_sha256_tagged(&sha);
|
||||
} else {
|
||||
@ -36486,7 +36486,7 @@ static int secp256k1_schnorrsig_sign_internal(const secp256k1_context* ctx, unsi
|
||||
|
||||
secp256k1_scalar_get_b32(seckey, &sk);
|
||||
secp256k1_fe_get_b32(pk_buf, &pk.x);
|
||||
ret &= !!noncefp(buf, msg, msglen, seckey, pk_buf, bip340_algo, sizeof(bip340_algo), ndata);
|
||||
ret &= !!noncefp(buf, msg, msglen, seckey, pk_buf, bip340_algo, (sizeof(bip340_algo) - 1), ndata);
|
||||
secp256k1_scalar_set_b32(&k, buf, NULL);
|
||||
ret &= !secp256k1_scalar_is_zero(&k);
|
||||
secp256k1_scalar_cmov(&k, &secp256k1_scalar_one, !ret);
|
||||
|
@ -369,6 +369,16 @@ int main(int argc, char *argv[])
|
||||
file.buffer = StringReplace(file.buffer,
|
||||
STRING("secp256k1_sha256_write(&sha, data, 32)"),
|
||||
STRING("secp256k1_sha256_write(&sha, (const unsigned char *)data, 32)"));
|
||||
|
||||
// NOTE: C++ requires that a string array initialised by a literal has a space for the null-terminator
|
||||
file.buffer = StringReplace(file.buffer,
|
||||
STRING("unsigned char bip340_algo[13] ="),
|
||||
STRING("unsigned char bip340_algo[13 + 1] ="));
|
||||
|
||||
// NOTE: Code that relied on sizeof(bip340_algo) must be adjusted to account for the null-terminator now
|
||||
file.buffer = StringReplace(file.buffer,
|
||||
STRING("sizeof(bip340_algo)"),
|
||||
STRING("(sizeof(bip340_algo) - 1)"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -759,7 +769,7 @@ int main(int argc, char *argv[])
|
||||
// NOTE: Misc patches to source code
|
||||
{
|
||||
// NOTE: Delete any Windows style new-lines if there were any
|
||||
// buffer = StringReplace(buffer, STRING("\r"), STRING(""));
|
||||
buffer = StringReplace(buffer, STRING("\r"), STRING(""));
|
||||
}
|
||||
|
||||
// NOTE: Output file
|
||||
|
Loading…
Reference in New Issue
Block a user