Skip to content

Commit 8d6994f

Browse files
author
MarcoFalke
committed
Merge #21100: test: remove unused function xor_bytes
f64adc1 test: remove unused function xor_bytes (Sebastian Falbesoner) Pull request description: The function `xor_bytes` was introduced in commit 3c22663 (#19953, BIP340-342 validation), even [code-reviewed](https://github.com/bitcoin/bitcoin/pull/19953/files#r509383731), but actually never used. The [default signing algorithm in BIP340](https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki#Default_Signing) needs a xor operation, but this step is currently done by a single xor operation on large integer operands: ``` t = (sec ^ int.from_bytes(TaggedHash("BIP0340/aux", aux), 'big')).to_bytes(32, 'big') ``` Alternatively, we could keep the function and as well use it: ```diff --- a/test/functional/test_framework/key.py +++ b/test/functional/test_framework/key.py @@ -492,7 +492,7 @@ def sign_schnorr(key, msg, aux=None, flip_p=False, flip_r=False): P = SECP256K1.affine(SECP256K1.mul([(SECP256K1_G, sec)])) if SECP256K1.has_even_y(P) == flip_p: sec = SECP256K1_ORDER - sec - t = (sec ^ int.from_bytes(TaggedHash("BIP0340/aux", aux), 'big')).to_bytes(32, 'big') + t = xor_bytes(sec.to_bytes(32, 'big'), TaggedHash("BIP0340/aux", aux)) kp = int.from_bytes(TaggedHash("BIP0340/nonce", t + P[0].to_bytes(32, 'big') + msg), 'big') % SECP256K1_ORDER assert kp != 0 R = SECP256K1.affine(SECP256K1.mul([(SECP256K1_G, kp)])) ``` ACKs for top commit: practicalswift: cr ACK f64adc1: untested unused code should be removed Tree-SHA512: e9afae303488f19c6f6f44874d3537ed1c8164a197490e2b4e34853db886b858825b719648fa1a30b95177dcee9cf241f94ee9b835f0a2cae07024ce38a8c090
2 parents 45ea103 + f64adc1 commit 8d6994f

File tree

1 file changed

+1
-5
lines changed
  • test/functional/test_framework

1 file changed

+1
-5
lines changed

test/functional/test_framework/key.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,6 @@ def TaggedHash(tag, data):
2020
ss += data
2121
return hashlib.sha256(ss).digest()
2222

23-
def xor_bytes(b0, b1):
24-
assert len(b0) == len(b1)
25-
return bytes(x ^ y for (x, y) in zip(b0, b1))
26-
2723
def jacobi_symbol(n, k):
2824
"""Compute the Jacobi symbol of n modulo k
2925
@@ -510,7 +506,7 @@ def test_schnorr(self):
510506
if pubkey is not None:
511507
keys[privkey] = pubkey
512508
for msg in byte_arrays: # test every combination of message, signing key, verification key
513-
for sign_privkey, sign_pubkey in keys.items():
509+
for sign_privkey, _ in keys.items():
514510
sig = sign_schnorr(sign_privkey, msg)
515511
for verify_privkey, verify_pubkey in keys.items():
516512
if verify_privkey == sign_privkey:

0 commit comments

Comments
 (0)