Commit Graph

3162 Commits

Author SHA1 Message Date
Andrew Poelstra cc3b5a080b
Merge rust-bitcoin/rust-bitcoin#1621: Rename `from_slice` methods to `decode`
32d2d62e0f Rename from_slice methods to decode (Tobin C. Harding)

Pull request description:

  The `TaprootMerkleBranch` and `ControlBlock` both have methods on them called `from_slice` but these methods do more that just basic copy from a slice. `decode` is a more descriptive name.

  Deprecate the `from_slice` methods and implement `decode`, on other changes to the logic.

  cc sanket1729

ACKs for top commit:
  apoelstra:
    ACK 32d2d62e0f
  Kixunil:
    ACK 32d2d62e0f

Tree-SHA512: e8c089545411a214ef9393f65d3990be46983000bd045182cc27dd70b62273bf48ac97adaf89d1e7fc807c72964a01eef176c7685684e8f87a01c219746d6d3d
2023-02-07 16:49:55 +00:00
Andrew Poelstra a58460bc3c
Merge rust-bitcoin/rust-bitcoin#1611: Instruct devs to use nightly for embedded
55d17f2c18 Instruct devs to use nightly for embedded (Tobin C. Harding)

Pull request description:

  The embedded test crate requires usage of the nightly toolchain, fix the docs to show this.

ACKs for top commit:
  apoelstra:
    ACK 55d17f2c18
  Kixunil:
    ACK 55d17f2c18

Tree-SHA512: 5d3d611ff4331d8475f77d260ebaa3da3ae71960b709eb4603056d7034885306b8bcc39be488f3391697d47a1074a695979fb50b6cb31af414f873da8e82bdbd
2023-02-07 15:24:38 +00:00
Andrew Poelstra 6db85c1d7e
Merge rust-bitcoin/rust-bitcoin#1601: Add '_ back into the BitStreamWriter
86f372774b Add '_ back into the BitStreamWriter (Tobin C. Harding)

Pull request description:

  Recently we merged `commit 53d4fe66b57c255086def2b5e47afaddee776b75` to fix CI even though a better approach is to use `'_` because it assists reading the code (shows that the bit stream writer is not writing from a reference since its writing a `Copy` type `n`).

  Add back in the `'_` (I forget what its called).

ACKs for top commit:
  apoelstra:
    ACK 86f372774b
  Kixunil:
    ACK 86f372774b

Tree-SHA512: 2a9989164562dbe7bf133e3aeb090fbff7831bfeefb0ac8431e75b17d57184c4d60ac206578c6ebbcff903a3832502a162027ed9f37e5ed87e42a6bf61efa594
2023-02-07 14:34:41 +00:00
Tobin C. Harding a9108d3939
Refactor script module
The `script` module is large and unwieldy.

Refactor the `script` module, splitting it up into a tree of modules.
Here are a few of the changes and their stated benefits

- Split the two script types out into separate files: Readers of the
methods can then tell immediately from the file name which type they are
reading.
- Put all the impls for the two script types together: Makes parsing the
API easier because one can more quickly see which traits are implemented
on what i.e., all the `AsRef` imlps are grouped together.
- Put the impls for the two script types in order, first `Script` then
`ScriptBuf`: Makes it easier for us to see if we missed something.
- Put the `Builder` and `Instruction` (and associated) types in their
own modules: Some devs find long files hard to navigate, so far there
hasn't been too much push back against short files.
- Put tests in a separate file: This idea was recently discussed.

This is only moving code and fixing import statements etc. No other
changes to the code.
2023-02-07 16:07:54 +11:00
Tobin C. Harding 32d2d62e0f
Rename from_slice methods to decode
The `TaprootMerkleBranch` and `ControlBlock` both have methods on them
called `from_slice` but these methods do more that just basic copy from
a slice. `decode` is a more descriptive name.

Deprecate the `from_slice` methods and implement `decode`, on other
changes to the logic.
2023-02-07 14:54:08 +11:00
Andrew Poelstra 611772ca0e
Merge rust-bitcoin/rust-bitcoin#1624: Improve `sighash` module documentation
75b266a129 Improve `sighash` module documentation (Martin Habovstiak)

Pull request description:

  "Sighash" is a technical term that newbies in Bitcoin may not know and could get lost when trying to find how to sign a transaction. This change attempts to make it more obvious that this module is needed for signing.

  Closes #1463

ACKs for top commit:
  tcharding:
    ACK 75b266a129
  apoelstra:
    ACK 75b266a129

Tree-SHA512: 7157566c1639c63ce0fba2832e8e5e846e689d89e24077ed7769b721c5db4613cd7fd8d91464992eb78de74b42912ca877e7182a9c3c9c8848bf94d89767b8cc
2023-02-07 01:21:51 +00:00
Andrew Poelstra 0aba8e56f6
Merge rust-bitcoin/rust-bitcoin#1625: Improve `SighashCache` API
b3188bbac3 Add `Transaction` accessors to `SighashCache` (Martin Habovstiak)
7c6854fe02 Use `Borrow` instead of `Deref` in `SighashCache` (Martin Habovstiak)

Pull request description:

  This changes the bound from `Deref<Target = Transaction>` to `Borrow<Transaction>` (with respective `mut` changes) and adds accessors.

  Closes #1423 (PSBT stuff will be separate issue).

ACKs for top commit:
  tcharding:
    ACK b3188bbac3
  apoelstra:
    ACK b3188bbac3

Tree-SHA512: 9db2c5890b26e9eefd483d697b42e84b1d7d3b8676fc39b4f39075c149e12697aa538828a757f9187578a958d72a592bb913f8f5788c93feb273db5370979d99
2023-02-07 01:02:09 +00:00
Andrew Poelstra 44ec22f396
Merge rust-bitcoin/rust-bitcoin#1613: Implement from arrays for `TaprootMerkleBranch`
118a593c89 Implement from arrays for TaprootMerkleBranch (Tobin C. Harding)

Pull request description:

  The `TaprootMerkleBranch` contains a vector of `TapNodeHash`s, as such it can trivially be constructed from an array of the same type.

  Implement `From` for all array sizes 1 - 128 inclusive.

  Fix: #1469

ACKs for top commit:
  Kixunil:
    ACK 118a593c89
  apoelstra:
    ACK 118a593c89

Tree-SHA512: dd497abd9143ea8b43485133beaccac9049fb915a95a3422d41c1f99961b59ec95df93efe759aa02f62ba1cf3e1afc4597671f1202ff0fa78eeee8b305d21305
2023-02-07 00:41:43 +00:00
Tobin C. Harding 118a593c89
Implement from arrays for TaprootMerkleBranch
The `TaprootMerkleBranch` contains a vector of `TapNodeHash`s, as such
it can trivially be constructed from an array of the same type.

Implement `From` for all array sizes 1 - 128 inclusive.
2023-02-07 08:10:59 +11:00
Martin Habovstiak 75b266a129 Improve `sighash` module documentation
"Sighash" is a technical term that newbies in Bitcoin may not know and
could get lost when trying to find how to sign a transaction. This
change attempts to make it more obvious that this module is needed for
signing.

Closes #1463
2023-02-06 22:07:21 +01:00
Tobin C. Harding 69688b6487
Merge rust-bitcoin/rust-bitcoin#1610: Add KeyPair import to rustdoc example
277e8e96bd Add KeyPair import to rustdoc example (Tobin C. Harding)

Pull request description:

  Recently, and bizarrely, a PR merged that broke `cargo test --doc`.

  Add an import for `KeyPair` to the `schnorr` rustdoc example.

ACKs for top commit:
  apoelstra:
    ACK 277e8e96bd
  Kixunil:
    ACK 277e8e96bd

Tree-SHA512: ad214b668827b35848cc7b260cbd2104a916a82a5a6d242bdc498c62edc9a0e864f4bdb4abcade42924dbaf951223ae80feacbe68d8a4ccb4562d8ead50b23a9
2023-02-07 08:05:35 +11:00
Andrew Poelstra 12298ddc14
Merge rust-bitcoin/rust-bitcoin#1608: Set `rustv_1_53` in build script
bb612fdafa Set rustv_1_53 in build script (Tobin C. Harding)

Pull request description:

  The rust version is supposed to be set by the build script so that users automagically get features matching the toolchain in use. Currently we have a feature in the manifest for `rustv_1_53` instead setting a compiler conditional configuration option in the build script. This causes `cargo +1.41.1 --all-features check` to fail.

  ## Note

  I don't see `rustv_1_46` used anywhere, do we need that still?

ACKs for top commit:
  apoelstra:
    ACK bb612fdafa
  Kixunil:
    ACK bb612fdafa

Tree-SHA512: f74195d4ee5a5bc5f209e99d30789df3552cef10aee5ea8b61a5a701b753999c34d04be9fe0321ccee7a8ec14fa5a05e0b454b9dc5f8deddd7b5b8d4f3d7e744
2023-02-06 14:11:01 +00:00
Andrew Poelstra 51acce8358
Merge rust-bitcoin/rust-bitcoin#1617: Do not export unusual hash types at crate root
aae03999a5 Do not export unusual hash types at crate root (Tobin C. Harding)

Pull request description:

  Currently we use a wildcard to export all the hash types in `hash_types`. We are moving to a world were we only export normal/standard types from the crate root.

  Remove the reexport of the following hash types:

  - `FilterHash`
  - `FilterHeader`
  - `TxMerkleNode`
  - `WitnessCommitment`
  - `WitnessMerkleNode`
  - `XpubIdentifier`

  Fix: #1541

ACKs for top commit:
  Kixunil:
    ACK aae03999a5
  apoelstra:
    ACK aae03999a5

Tree-SHA512: 957b5af9fe582b4c94e73be5cd8fa957112c3eddda09ae45c7f735e4618e130031dd2aec446b721c4f393bbfc8584c64f57eb4957cf5411ea00a752bc8ed0e64
2023-02-06 13:59:44 +00:00
Martin Habovstiak b3188bbac3 Add `Transaction` accessors to `SighashCache`
It may be useful to access the transaction stored in `SighashCache`
during signing or afterwards, especially when the transaction is stored
without indirection (to enable long-lived storage).

This change adds the appropriate accessors.
2023-02-06 12:14:30 +01:00
Martin Habovstiak 7c6854fe02 Use `Borrow` instead of `Deref` in `SighashCache`
The requirement for a type dereferencing to `Transaction` prevented
storing the cache in long-lived data without resorting to silly
wrappers. Since `Borrow` is implemented both for `T` and for smart
pointers it's a more flexible bound which this change implements.

While this is technically breaking, all usual non-generic code will
continue to work beause smart pointers generally have `Borrow`
implemented.
2023-02-06 12:14:25 +01:00
Tobin C. Harding aae03999a5
Do not export unusual hash types at crate root
Currently we use a wildcard to export all the hash types in
`hash_types`. We are moving to a world were we only export
normal/standard types from the crate root.

Remove the reexport of the following hash types:

- `FilterHash`
- `FilterHeader`
- `TxMerkleNode`
- `WitnessCommitment`
- `WitnessMerkleNode`
- `XpubIdentifier`
- `Sighash`

Fix: #1541
2023-02-04 13:34:20 +11:00
Andrew Poelstra 732dd038ff
Merge rust-bitcoin/rust-bitcoin#1618: Add newline in rustdoc
f0e4e38844 Add newline in rustdoc (Tobin C. Harding)

Pull request description:

  Docs created with the `sha256t_hash_newtype` macro are missing a newline between the doc heading and doc main section.

  Note that the strings used span multiple lines and therefor the subsequent lines must be aligned with the start of the line (not indented).

  Fix: #1540

ACKs for top commit:
  Kixunil:
    ACK f0e4e38844
  apoelstra:
    ACK f0e4e38844

Tree-SHA512: 240c68864da63688c400498903d5cc345bee224dcd3235df0127dcf391c66ee08c487d31fe59f890009c674574810b689d9a53628d07d8cdd46b79bc0ac3eb2b
2023-02-03 20:08:02 +00:00
Andrew Poelstra 397d71ad7c
Merge rust-bitcoin/rust-bitcoin#1609: Associate io, encode errors with psbt::Error
0ffd928a7d Carry ConsensusEncoding(encode::Error) (DanGould)
126cbb00ef Associate io::Error with psbt::Error (DanGould)

Pull request description:

  - patch 1 fix #1590
  - patch 2 addresses [this related comment](https://github.com/rust-bitcoin/rust-bitcoin/pull/1532/files#r1067812911) about associated `encode::Error`

  EDIT (by Tobin): fix #1548

  I believe this closes out PSBT refactoring and makes way for PSBTv2 in the epic 😎

  patch 1 uses match to check the error type in tests. If msrv were 1.42 we could use assert!(matches!(...)); one liners instead.

ACKs for top commit:
  apoelstra:
    ACK 0ffd928a7d
  tcharding:
    ACK 0ffd928a7d
  Kixunil:
    ACK 0ffd928a7d

Tree-SHA512: 264d6025f8979dcd1e31545fbeb2ff8d7c02f161d9aa2cc500dc07f7f4d9554fcb5ce0ff7ce473db0729560a278c71d3d41004f2613584d9b19d25103973b2ab
2023-02-03 18:00:54 +00:00
Tobin C. Harding f0e4e38844
Add newline in rustdoc
Docs created with the `sha256t_hash_newtype` macro are missing a newline
between the doc heading and doc main section.

Note that the strings used span multiple lines and therefor the
subsequent lines must be aligned with the start of the line (not
indented).

Fix: #1540
2023-02-03 14:11:53 +11:00
Tobin C. Harding 55d17f2c18
Instruct devs to use nightly for embedded
The embedded test crate requires usage of the nightly toolchain, fix the
docs to show this.
2023-02-03 08:44:47 +11:00
DanGould 0ffd928a7d
Carry ConsensusEncoding(encode::Error)
When psbt::Error was Eq, it could not have associated dyn error types.
2023-02-02 13:05:59 -05:00
DanGould 126cbb00ef
Associate io::Error with psbt::Error
In order to associate the error, psbt::Error must not derive so many
traits. Tests are also adjusted for the new error type.
2023-02-02 13:02:33 -05:00
Tobin C. Harding 277e8e96bd
Add KeyPair import to rustdoc example
Recently, and bizarrely, a PR merged that broke `cargo test --doc`.

Add an import for `KeyPair` to the `schnorr` rustdoc example.
2023-02-02 12:22:47 +11:00
Tobin C. Harding bb612fdafa
Set rustv_1_53 in build script
The rust version is supposed to be set by the build script so that users
automagically get features matching the toolchain in use. Currently we
have a feature in the manifest for `rustv_1_53` instead setting a
compiler conditional configuration option in the build script. This
causes `cargo +1.41.1 --all-features check` to fail.
2023-02-02 10:12:16 +11:00
Tobin C. Harding 4a03e2e721
psbt: Remove unused error variant
This error variant is never used, remove it.
2023-02-02 08:10:55 +11:00
Andrew Poelstra f52301151c
Merge rust-bitcoin/rust-bitcoin#1565: Reduce usage of `FromHex`
32ca6cc320 Remove hex_from_slice and display Sighash forwards (Tobin C. Harding)
a308e1e2ea Remove FromHex for all types except Vec and array (Tobin C. Harding)
3e70c01826 Manually format a bunch of vecs (Tobin C. Harding)
83e1c40c4d Remove script:: prefix from unambiguous types (Tobin C. Harding)
5ab5c264d2 Use fully qualified path in macro (Tobin C. Harding)
7e85452cd9 hashes: Implement std::error::Error (Tobin C. Harding)
5e3abc5e11 Fix feature gating on unit tests (Tobin C. Harding)
3344cf6be2 Favour $reverse instead of $reversed (Tobin C. Harding)

Pull request description:

  This work started out, as the branch name suggests, as an effort to use the `hex_lit` crate. But once I got to this stage it seems that the `hex!` macro we have provides different, useful, functionality than the `hex_lit::hex!` macro (it allows usage with non-consts). So I'm unsure if we want to remove it now.

  - Patches 1 - 6 are preparatory clean ups
  - Patch 7 reduces usage of  `FromHex`, please see git log for full description
  - Patch 8 removes `hex_from_slice` and fixes a bug in how we display `Sighash`

ACKs for top commit:
  apoelstra:
    ACK 32ca6cc320
  Kixunil:
    ACK 32ca6cc320

Tree-SHA512: 11b45b39ec2fc0f837d7395b5fb86de7cc44641fd51cf7e93394a635e6a8fb1c7ac441a6070d5516dae60e084c04cc6e8b605a5167093f964679e445ef60c271
2023-02-01 18:09:56 +00:00
Andrew Poelstra ef53871754
Merge rust-bitcoin/rust-bitcoin#1583: Add conversions for `TweakedKeyPair` -> `TweakedPublicKey`
facaefc49c Add conversions for TweakedKeyPair -> TweakedPublicKey (Tobin C. Harding)
2407f241e4 Remove sep256k1 path from Parity (Tobin C. Harding)

Pull request description:

  It is trivially possible to get `TweakedPublicKey` from a `TweakedKeyPair`, add conversion methods for doing so.

  Patch 1 is preparatory cleanup. Please note `From` is not implemented because the conversion returns the `Parity` also.

  Fix: #1452

ACKs for top commit:
  apoelstra:
    ACK facaefc49c
  Kixunil:
    ACK facaefc49c

Tree-SHA512: 597026c481fe2622a625cbeb381cac345af6f49f4a115418b69817345fc3c2140bbdbc5208eae1149d7d171f94c776365d302ffe1f9c01d944e738807db28a89
2023-02-01 17:58:33 +00:00
Tobin C. Harding 32ca6cc320
Remove hex_from_slice and display Sighash forwards
`Sighash` should be displayed forwards according to BIP143. Currently we
are displaying it backwards (as we do for double SHA256). This is
working because parse using `Vec::from_hex`.

We have the means to parse hex strings directly for hashes, we no longer
need `hex_from_slice`.

BIP143 test vectors display double SHA256 forwards but we display
backwards, this is acceptable because there is no fixed display in the
ecosystem for double SHA256 hashes. In order to overcome this we parse
test vector hex strings with into `Vec` when needed.
2023-02-01 08:26:46 +11:00
Tobin C. Harding a308e1e2ea
Remove FromHex for all types except Vec and array
Remove `FromHex` from hash and script types

- Remove the `FromHex` implementation from hash types and `ScriptBuf`
- Remove the `FromStr` implementation from `ScriptBuf` because it does not
  roundtrip with `Display`.
- Implement a method `from_hex` on `ScriptBuf`.
- Implement `FromStr` on hash types using a fixed size array.

This leaves `FromHex` implementations only on `Vec` and fixed size arrays.
2023-02-01 08:26:46 +11:00
Tobin C. Harding 3e70c01826
Manually format a bunch of vecs
In preparation for modifying some unit test data structures, manually
format the code so it is uniform.

Move elements added to a vec with `vec!` onto a new line so they all
line up and one can better see what fields go where.

Refactor only, no logic changes.
2023-02-01 08:22:47 +11:00
Tobin C. Harding 83e1c40c4d
Remove script:: prefix from unambiguous types
There is no need to qualify `Script` and `ScriptBuf` with the `script::`
prefix, remove it.
2023-02-01 08:22:46 +11:00
Tobin C. Harding 5ab5c264d2
Use fully qualified path in macro
It is easier to maintain code if macros use the fully qualified path to
types and functions instead of relying on code that uses the macro to
import said type or function.
2023-02-01 08:22:46 +11:00
Tobin C. Harding 7e85452cd9
hashes: Implement std::error::Error
We have old Rust 1.29 error handling code still in `hashes`. Implement
`std::error::Error` for the `hex::Error` and `error::Error` types in
line with "modern" Rust 1.41.1 error handling.
2023-02-01 08:22:46 +11:00
Tobin C. Harding 5e3abc5e11
Fix feature gating on unit tests
Currently we have incorrect feature gating on unit tests and imports
leading to unused import warnings.
2023-02-01 08:22:46 +11:00
Tobin C. Harding 3344cf6be2
Favour $reverse instead of $reversed
Currently we have two things that are the same but use different
identifiers, use `$reverse` instead of `$reversed`.
2023-02-01 08:22:46 +11:00
Andrew Poelstra ca902e65f8
Merge rust-bitcoin/rust-bitcoin#1596: Implement fmt traits for ScriptBuf
ed6f6d11dd Implement fmt traits for ScriptBuf (Tobin C. Harding)

Pull request description:

  We can improve ergonomics of the `script` module by implementing the `fmt` traits on `ScriptBuf`, trivial because we can call through to the `Script` implementations.

  Fix: #1585

ACKs for top commit:
  Kixunil:
    ACK ed6f6d11dd
  apoelstra:
    ACK ed6f6d11dd

Tree-SHA512: 878a1522af4ed1e10d1d8d60d150e6571008c008b5e5c662c67462f9e09075b4f1fe4e399ed50e98cd7253b6815937c6732cd1ce02b74a5be017d5b8fcdbbd2f
2023-01-31 14:40:50 +00:00
Andrew Poelstra d3eab3d5bd
Merge rust-bitcoin/rust-bitcoin#1603: Make max/min_value functions const
7dde3b3b22 Make max/min_value functions const (Tobin C. Harding)

Pull request description:

  The `max_value` and `min_value` functions only exist to be compatible/uniform with Rust 1.41.1 they will never change and they just return a constant value. They can therefore be made const functions.

ACKs for top commit:
  apoelstra:
    ACK 7dde3b3b22
  Kixunil:
    ACK 7dde3b3b22

Tree-SHA512: a998dcc68d409ee01188f1e1e157182b93fae17ad41c6b7440b69dcea367c6f65d7ecbdcdbbcdd6a0a8349e248ff13e06175ca1505df1e01be1935143bbffb3c
2023-01-31 13:43:59 +00:00
Tobin C. Harding ed6f6d11dd Implement fmt traits for ScriptBuf
We can improve ergonomics of the `script` module by implementing the
`fmt` traits on `ScriptBuf`, trivial because we can call through to the
`Script` implementations.
2023-01-31 17:48:01 +11:00
Tobin C. Harding facaefc49c Add conversions for TweakedKeyPair -> TweakedPublicKey
It is trivially possible to get `TweakedPublicKey` from a
`TweakedKeyPair`, add conversion methods for doing so.
2023-01-31 17:21:56 +11:00
Tobin C. Harding 2407f241e4 Remove sep256k1 path from Parity
The `Parity` type is unambiguous, no need to use the `secp256k1` path
all the time just import the type.

Refactor only, no logic changes.
2023-01-31 17:21:56 +11:00
Tobin C. Harding 7dde3b3b22 Make max/min_value functions const
The `max_value` and `min_value` functions only exist to be
compatible/uniform with Rust 1.41.1 they will never change and they just
return a constant value. They can therefore be made const functions.
2023-01-31 08:35:32 +11:00
Tobin C. Harding 2eb68caf81 Remove the rustfmt required_version config option
The `rustfmt` config option `required_version` causes grief in CI
because everytime `rustfmt` is update our `nightly` job fails. Since we
require nightly anyways to run `rustfmt` the config option is basically
redundant.
2023-01-31 08:20:38 +11:00
Tobin C. Harding 86f372774b Add '_ back into the BitStreamWriter
Recently we merged `commit 53d4fe66b57c255086def2b5e47afaddee776b75` to
fix CI even though a better approach is to use `'_` because it assists
reading the code (shows that the bit stream writer is not writing from a
reference since its writing a `Copy` type `n`).

Add back in the `'_` (I forget what its called).
2023-01-31 08:07:05 +11:00
Andrew Poelstra a43de831e4
Merge rust-bitcoin/rust-bitcoin#1584: Add new hex parse error variant
877f9af364 Add new hex parse error variant (Tobin C. Harding)

Pull request description:

  Recently we used an error type that holds only one expected hex string length when parsing but for `PublicKey`s we have two (66 and 130). Add a new error variant to express the error. Requires adding a variant to `bip32` for the same thing.

  Fix: #1281

ACKs for top commit:
  Kixunil:
    ACK 877f9af364
  apoelstra:
    ACK 877f9af364

Tree-SHA512: c1ca493ee30418bd82bc326b35c18731260e4217c371f37301a73c64f9a6631163801acc217c6c2c7b14f632a2ad5043174266c1b4fdce127698e68ab8494f20
2023-01-30 20:55:08 +00:00
Andrew Poelstra 4ad0c63774
Merge rust-bitcoin/rust-bitcoin#1574: Add standard constants to lock times
3c0598b399 Add standard constants to lock times (Tobin C. Harding)

Pull request description:

  Some of the lock time structs (`Height`, `Time` ect.) are missing standard constants for min, max ect.

  Add standard constants taking into consideration the various locktime corner cases.

  Add `max_value` and `min_value` to be consistent with Rust 1.41.1 (incl. `Sequence`).

  Fix: #1451

  This PR is not complex in itself but **locktimes are notoriously complex, please wait for 3 acks before merging** - and ack'ing makes no guarantee that reviewer got all corner cases :)

  There is no rush on this one, apoelstra, Kixunil, sanket1729 please just review when your brain is fresh.

ACKs for top commit:
  apoelstra:
    ACK 3c0598b399
  Kixunil:
    ACK 3c0598b399

Tree-SHA512: aa3d112db83b4785edb0a7a517cc335ded59f5967eb39b8979a6d68f9bba4644a27e5ca400fcabf368a1f8c0eecdef0b87b1011933ac7fd96b467b8501533203
2023-01-30 16:36:07 +00:00
Andrew Poelstra 042b453f28
Merge rust-bitcoin/rust-bitcoin#1594: Remove unnecessary lifetime
53d4fe66b5 Remove unnecessary lifetime (Tobin C. Harding)

Pull request description:

  Clippy emits:

    warning: the following explicit lifetimes could be elided: 'a

  As suggested, remove the unnecessary lifetime.

ACKs for top commit:
  apoelstra:
    ACK 53d4fe66b5
  Kixunil:
    ACK 53d4fe66b5

Tree-SHA512: cc881164f319c6876cea9284aad5c613d3928864fe41e22f8c9c23a65aa6334e4c9fa6037f4ca7bed117e7915a389f152de2411f0b470975dd7e871e48de79c7
2023-01-30 15:47:21 +00:00
Tobin C. Harding 877f9af364 Add new hex parse error variant
Recently we used an error type that holds only one expected hex string
length when parsing but for `PublicKey`s we have two (66 and 130). Add a
new error variant to express the error. Requires adding a variant to
`bip32` for the same thing.

Fix: #1281
2023-01-28 07:53:47 +11:00
Tobin C. Harding 53d4fe66b5 Remove unnecessary lifetime
Clippy emits:

  warning: the following explicit lifetimes could be elided: 'a

As suggested, remove the unnecessary lifetime.
2023-01-27 08:34:12 +11:00
Andrew Poelstra f90338021b
Merge rust-bitcoin/rust-bitcoin#1591: Improve downflow of information in `psbt::Error`
68abfdb0b9 Better downflow of information in `psbt::Error` (Arturo Marquez)

Pull request description:

  See third point in https://github.com/rust-bitcoin/rust-bitcoin/issues/837

  Closes: https://github.com/rust-bitcoin/rust-bitcoin/issues/1589

ACKs for top commit:
  apoelstra:
    ACK 68abfdb0b9
  tcharding:
    ACK 68abfdb0b9

Tree-SHA512: 8accfd6a1ae9c413b48a5a5861ec036a166a5cd5a73ee242169ee9d34a91f85f4f152e2feba628e20b8b89d7177694c3d2af60551a37c2d9c9a4408036f55262
2023-01-26 13:35:45 +00:00
Tobin C. Harding a121e19e94
hashes: Implement AsRef for fixed size arrays
Implement `AsRef<[u8; X]>` for hash types including wrapped hash types.
Doing so means at times the compiler can no longer infer the type because we have
`AsRef<[u8]` implemented also but we can use `into_inner` and `as_inner`
to get the inner array if needed.
2023-01-26 11:00:57 +11:00