-
Notifications
You must be signed in to change notification settings - Fork 6k
BIP-376: add python ref implementation and initial test vectors #2139
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
lucia-w
wants to merge
5
commits into
bitcoin:master
Choose a base branch
from
lucia-w:bip-0376
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
5 commits
Select commit
Hold shift + click to select a range
652b940
This fills in the remaining TODO sections in BIP-376
lucia-w b0b2cf4
BIP-0376: use PSBT vectors for signer tests
lucia-w 9ebb27f
bip-0376: remove error message checks from invalid vectors
lucia-w 58a43d4
BIP-0376: use PSBT vectors for signer tests
lucia-w b718f2e
bip-0376: vendor test deps and add PSBTv2 vectors
lucia-w File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -146,11 +146,30 @@ These are new fields added to the existing PSBT format. Because PSBT is designed | |
|
|
||
| == Reference implementation == | ||
|
|
||
| '''''TODO''''' | ||
| A Python reference implementation is provided in [[bip-0376/reference.py|<code>bip-0376/reference.py</code>]]. | ||
| It uses the vendored <code>bitcoin_test</code> PSBT components and <code>secp256k1lab</code> test-only secp256k1 implementation from BIP 375. | ||
|
|
||
| It demonstrates the Signer behavior specified in this BIP: | ||
|
|
||
| * Key derivation using ''d = (b<sub>spend</sub> + tweak) mod n''. | ||
| * Key negation when ''d·G'' has odd y-coordinate. | ||
| * Verification that the resulting x-only public key matches the output key ''P''. | ||
| * BIP 340 signing with the derived key. | ||
|
|
||
| === Test vectors === | ||
|
|
||
| '''''TODO''''' | ||
| Machine-readable test vectors are provided in [[bip-0376/test-vectors.json|<code>bip-0376/test-vectors.json</code>]]. | ||
|
|
||
| The vector set includes: | ||
|
|
||
| * Valid signing cases with and without key negation. | ||
| * Invalid cases for output-key mismatch, zero tweaked key, and out-of-range spend key. | ||
|
|
||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This should be updated too. I would use the test cases descriptions here, flagging each test case as valid or invalid. |
||
| The reference implementation can be run against the vectors with: | ||
|
|
||
| <pre> | ||
| ./bip-0376/reference.py bip-0376/test-vectors.json | ||
| </pre> | ||
|
|
||
| == Appendix == | ||
|
|
||
|
|
||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should be updated.