0
0
Fork 0
mirror of https://github.com/bitcoin/bitcoin.git synced 2025-02-10 10:52:31 -05:00
bitcoin-bitcoin-core/test/functional/test_framework
Andrew Chow 5bbf735def
Merge bitcoin/bitcoin#27653: test: add unit test coverage for Python ECDSA implementation
96b3f2dbe4 test: add unit test coverage for Python ECDSA implementation (Sebastian Falbesoner)

Pull request description:

  This PR adds missing unit test coverage for the Python ECDSA implementation, which should be useful for detecting potential problems early whenever changes in the test framework's Python implementation of secp256k1 are made (e.g. #26222). Note that right now we don't call `ECPubKey.verify_ecdsa` anywhere in our tests, so we wouldn't notice if it is broken at some point.

  To keep it simple, the already existing unit test for Schnorr signatures is extended to also check ECDSA signatures. For that purpose, the dictionary storing private-key/public-key entries use their legacy types `ECKey/ECPubKey` instead of bare byte-arrays, and for Schnorr signing/verification the necessary conversions (ECKey -> bare private key, ECPubKey -> x-only pubkey) is done later when needed. To avoid code duplication, a helper function `random_bitflip` for damaging signatures is introduced.

  The unit test can be run by either calling it for this single module:
  `$ python3 -m unittest ./test/functional/test_framework/key.py`
  or simply running `$ ./test/functional/test_runner.py` which calls all test framework module's unit tests at the start (see TEST_FRAMEWORK_MODULES list).

ACKs for top commit:
  achow101:
    ACK 96b3f2dbe4
  sipa:
    utACK 96b3f2dbe4
  stratospher:
    tested ACK 96b3f2d.

Tree-SHA512: b993f25b843fa047376addda4ce4b0f15750ffba926528b5cca4c5f99b9af456206f4e8af885d25a017dddddf382ddebf38765819b3d16a3f28810d03b010808
2023-09-29 14:49:58 -04:00
..
__init__.py Rename rpc-tests directory to functional 2017-03-20 10:40:31 -04:00
address.py refactor: move address_to_scriptpubkey to address.py 2023-03-28 16:54:28 +01:00
authproxy.py test: Rename EncodeDecimal to serialization_fallback 2023-06-29 19:51:43 +02:00
bdb.py scripted-diff: Bump copyright headers 2021-11-10 11:10:24 +01:00
bip340_test_vectors.csv tests: add BIP340 Schnorr signature support to test framework 2020-10-12 17:18:47 -07:00
blockfilter.py test: add compact block filter (BIP158) helper routines 2022-10-20 01:33:17 +02:00
blocktools.py refactor: use address_to_scriptpubkey to retrieve addresses scriptpubkey 2023-03-28 16:58:16 +01:00
coverage.py test: fix PEP484 no implicit optional argument types errors 2023-06-29 16:14:07 -06:00
descriptors.py Output a descriptor in createmultisig and addmultisigaddress 2020-01-30 23:55:36 -05:00
ellswift.py test: add ellswift test vectors from BIP324 2023-06-29 23:32:56 +05:30
ellswift_decode_test_vectors.csv test: add ellswift test vectors from BIP324 2023-06-29 23:32:56 +05:30
key.py test: add unit test coverage for Python ECDSA implementation 2023-09-20 18:19:29 +02:00
messages.py test: add support for all networks in CAddress in messages.py 2023-07-10 10:07:40 -04:00
muhash.py test: remove modinv python util helper function 2023-04-28 14:19:18 +02:00
netutil.py scripted-diff: Bump copyright headers 2022-12-24 23:49:50 +00:00
p2p.py test: Combine sync_send_with_ping and sync_with_ping 2023-09-05 12:11:10 +02:00
psbt.py test: PSBT: eliminate magic numbers for global unsigned tx key (0) 2023-03-04 12:43:38 +01:00
ripemd160.py Add pure Python RIPEMD-160 2021-12-08 14:29:34 -05:00
script.py test: refactor: deduplicate segwitv0 ECDSA signing for tx inputs 2023-07-25 22:15:56 +02:00
script_util.py scripted-diff: Bump copyright headers 2022-12-24 23:49:50 +00:00
secp256k1.py test: EC: optimize scalar multiplication of G by using lookup table 2023-06-27 09:34:52 -04:00
segwit_addr.py Use Bech32m encoding for v1+ segwit addresses 2021-03-16 10:48:36 -07:00
siphash.py test: python E721 updates 2023-07-31 12:13:46 -06:00
socks5.py test: add keep_alive option to socks5 proxy in test_framework 2023-07-10 10:07:45 -04:00
test_framework.py script, test: add missing python type annotations 2023-06-29 16:13:51 -06:00
test_node.py Merge bitcoin/bitcoin#28199: test: tx orphan handling 2023-08-22 17:03:37 -04:00
test_shell.py scripted-diff: Bump copyright headers 2022-12-24 23:49:50 +00:00
util.py test: fix PEP484 no implicit optional argument types errors 2023-06-29 16:14:07 -06:00
wallet.py [test framework] add ability to spend only confirmed utxos 2023-09-13 16:14:18 +01:00
wallet_util.py test: refactor: introduce generate_keypair helper with WIF support 2023-06-19 17:38:14 +02:00
xswiftec_inv_test_vectors.csv test: add ellswift test vectors from BIP324 2023-06-29 23:32:56 +05:30