Skip to content

Commit e0ca55a

Browse files
committed
taproot: simplify the taptweak selection/flag checking code for tagged hashes
1 parent 01f6e8e commit e0ca55a

File tree

1 file changed

+11
-14
lines changed

1 file changed

+11
-14
lines changed

src/sign.c

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ static const char MSG_PREFIX[] = "\x18" "Bitcoin Signed Message:\n";
1212
static const char TAPTWEAK_BTC[] = "TapTweak";
1313
#ifdef BUILD_ELEMENTS
1414
static const char TAPTWEAK_ELEMENTS[] = "TapTweak/elements";
15-
#define GET_TAPTWEAK(flags) ((flags & EC_FLAG_ELEMENTS)? TAPTWEAK_ELEMENTS : TAPTWEAK_BTC)
15+
#define TAPTWEAK(is_elements) (is_elements) ? TAPTWEAK_ELEMENTS : TAPTWEAK_BTC
1616
#else
17-
#define GET_TAPTWEAK(flags) TAPTWEAK_BTC
17+
#define TAPTWEAK(is_elements) TAPTWEAK_BTC
1818
#endif
1919

2020

@@ -139,13 +139,20 @@ static int get_bip341_tweak(const unsigned char *pub_key, size_t pub_key_len,
139139
unsigned char preimage[EC_XONLY_PUBLIC_KEY_LEN + SHA256_LEN];
140140
const size_t offset = pub_key_len == EC_PUBLIC_KEY_LEN ? 1 : 0;
141141
const size_t preimage_len = merkle_root ? sizeof(preimage) : EC_XONLY_PUBLIC_KEY_LEN;
142-
(void)flags;
142+
143+
#ifdef BUILD_ELEMENTS
144+
if (flags & ~EC_FLAG_ELEMENTS)
145+
#else
146+
if (flags)
147+
#endif
148+
return WALLY_EINVAL;
143149

144150
memcpy(preimage, pub_key + offset, EC_XONLY_PUBLIC_KEY_LEN);
145151
if (merkle_root)
146152
memcpy(preimage + EC_XONLY_PUBLIC_KEY_LEN, merkle_root, SHA256_LEN);
147153
return wally_bip340_tagged_hash(preimage, preimage_len,
148-
GET_TAPTWEAK(flags), tweak, tweak_len);
154+
TAPTWEAK(flags & EC_FLAG_ELEMENTS),
155+
tweak, tweak_len);
149156
}
150157

151158
int wally_ec_public_key_bip341_tweak(
@@ -157,11 +164,6 @@ int wally_ec_public_key_bip341_tweak(
157164
int ret;
158165

159166
if (!pub_key || BYTES_INVALID_N(merkle_root, merkle_root_len, SHA256_LEN) ||
160-
#ifdef BUILD_ELEMENTS
161-
(flags & ~EC_FLAG_ELEMENTS) ||
162-
#else
163-
flags ||
164-
#endif
165167
!bytes_out || len != EC_PUBLIC_KEY_LEN)
166168
return WALLY_EINVAL;
167169

@@ -194,11 +196,6 @@ int wally_ec_private_key_bip341_tweak(
194196

195197
if (!priv_key || priv_key_len != EC_PRIVATE_KEY_LEN ||
196198
BYTES_INVALID_N(merkle_root, merkle_root_len, SHA256_LEN) ||
197-
#ifdef BUILD_ELEMENTS
198-
(flags & ~EC_FLAG_ELEMENTS) ||
199-
#else
200-
flags ||
201-
#endif
202199
!bytes_out || len != EC_PRIVATE_KEY_LEN)
203200
return WALLY_EINVAL;
204201

0 commit comments

Comments
 (0)