Commit Graph

1174 Commits

Author SHA1 Message Date
Andrew Poelstra 4244fec9ad
Merge rust-bitcoin/rust-secp256k1#666: Remove unnecessary code comment
458712212d Improve code comments (Tobin C. Harding)

Pull request description:

  These comments say what the code is doing, they add no value.

ACKs for top commit:
  Kixunil:
    ACK 458712212d
  apoelstra:
    ACK 458712212d

Tree-SHA512: 0f31d36d7dfbde5bf32d622c3ba1845d5c6989c3eff0e520b77eeee595453299551172331851176e50aef4f78eacb7033c0ff798077e44e1c63313013b073f0b
2023-11-15 18:09:23 +00:00
Tobin C. Harding 458712212d
Improve code comments
"what" comments add no value. Remove one and make the other describe
"why" the cast is ok.
2023-11-15 10:13:50 +11:00
Andrew Poelstra fb280a3179
Merge rust-bitcoin/rust-secp256k1#664: Fix unit test import statements
dd6bf7c10d Fix unit test import statements (Tobin C. Harding)

Pull request description:

  In `lib.rs` unit tests we are getting build warnings because of how we are importing things, just import with `super::*` unconditionally and be done with it.

  This patch is the only good one out of #661.

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

Tree-SHA512: 3970f4c1374ec6de4798bfb52b561e9ac4611ec3a3885edc79639566f777e1fbb502cb36fa7abd015f3fd4a9ca4b6a4931b4ecb2e629e967b4e49391db97a97f
2023-11-03 19:33:50 +00:00
Andrew Poelstra 09810e7fd8
Merge rust-bitcoin/rust-secp256k1#659: Implement `Ord` for `SerializedSignature`
e55c1f0960 Implement `Ord` for `SerializedSignature` (Martin Habovstiak)

Pull request description:

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

Tree-SHA512: b9a7529f44e5d38ab449af7ee06007f3d0480b31cb21c371190f71bea4e3d9142c6c249fcc5564aa21139c0bdcd3951823cea70f29a63f3ef6d35b7e9c7a8e8c
2023-11-02 11:53:21 +00:00
Tobin C. Harding dd6bf7c10d
Fix unit test import statements
In `lib.rs` unit tests we are getting build warnings because of how we
are importing things, just import with `super::*` unconditionally and be
done with it.
2023-11-01 09:06:16 +11:00
Martin Habovstiak e55c1f0960 Implement `Ord` for `SerializedSignature` 2023-10-31 20:23:27 +01:00
Andrew Poelstra fe2905d8e3
Merge rust-bitcoin/rust-secp256k1#658: Serialized signture improvements
62c839c9e0 Implement conversion traits (Martin Habovstiak)
dc3eab7aaa Implement `Borrow<[u8]>`, `PartialEq<[u8]>`, `Hash` (Martin Habovstiak)
7dac91d973 Deprecate `capacity` and `is_empty` (Martin Habovstiak)

Pull request description:

  This deprecates methods returning constants and impls a few traits.

ACKs for top commit:
  apoelstra:
    ACK 62c839c9e0

Tree-SHA512: 724a08af7dc915e166e3efcdc4be681a53ae14a55d9cbd62dd4c5240fa8c0f13110498d03ebb0edc1d56f969901f978aa33bae9df19376957ff7f51698ed9535
2023-10-31 15:12:35 +00:00
Martin Habovstiak 62c839c9e0 Implement conversion traits
Converting signature to serialized signature and back is natural, so the
conversion traits should be implemented.
2023-10-31 15:07:01 +01:00
Martin Habovstiak dc3eab7aaa Implement `Borrow<[u8]>`, `PartialEq<[u8]>`, `Hash`
These traits were missing and could be useful if e.g. one wants to store
serialized signatures in a set/map and access them using `[u8]`.
2023-10-31 15:06:20 +01:00
Martin Habovstiak 7dac91d973 Deprecate `capacity` and `is_empty`
These functions always return the same value so are not useful and
actually calling them is a red flag.
2023-10-31 14:12:39 +01:00
Andrew Poelstra 902150cc7c
Merge rust-bitcoin/rust-secp256k1#656: Check for changes to the public API
e9e17a0039 Check for changes to the public API (Tobin C. Harding)

Pull request description:

  We would like to get to a stage where we can commit to the public API. To help us achieve this add a script that generates the public API and checks it against three committed files, one for each feature set: no features, alloc, std.

  The idea is that with this applied any PR that changes the public API should include a final patch that is just the changes to the api/*.txt files, that way reviewers can discuss the changes without even needing to look at the code, quickly giving concept ACK/NACKs. We also run the script in CI to make sure we have not accidentally changed the public API so that we can be confident that don't break semver during releases. The script can also be used to diff between two release versions to get a complete list of API changes, useful for writing release notes and for users upgrading.

  There is a development burden involved if we apply this patch.

ACKs for top commit:
  apoelstra:
    ACK e9e17a0039

Tree-SHA512: 94a2cedb132db457b67b3c60cde8843d9db1d2bc8dba0530cd5c518ebed955bd66a1649c61e0cb96b6f293ce6b9b0395582877ce9f1de003e0020a66100d172f
2023-10-26 14:21:37 +00:00
Tobin C. Harding e9e17a0039
Check for changes to the public API
We would like to get to a stage where we can commit to the public API.
To help us achieve this add a script that generates the public API and
checks it against three committed files, one for each feature set: no
features, alloc, std.

The idea is that with this applied any PR that changes the public API
should include a final patch that is just the changes to the api/*.txt
files, that way reviewers can discuss the changes without even needing
to look at the code, quickly giving concept ACK/NACKs. We also run the
script in CI to make sure we have not accidentally changed the public
API so that we can be confident that don't break semver during releases.
The script can also be used to diff between two release versions to get
a complete list of API changes, useful for writing release notes and for
users upgrading.

There is a development burden involved if we apply this patch.
2023-10-26 10:56:54 +11:00
Andrew Poelstra 7de09c8050
Merge rust-bitcoin/rust-secp256k1#650: Tracking PR for release: `secp256k1 v0.28.0` and `secp256k-sys 0.10.0`
3dc5b16540 Bump version to v0.28.0 (Tobin C. Harding)

Pull request description:

  Bump the version of `secp256k1` ready for release.

  Includes changelog for the already-bumped `secp256k1-sys`, changelog for `secp256k1`, and the version bump for `secp256k1`.

ACKs for top commit:
  apoelstra:
    ACK 3dc5b16540

Tree-SHA512: 404a5512f7bb245cde12d11eb20f2e7bedfa5a8d4124101e04bf51010301fe7d186c3baedf8744006d1c56c0af1bf214f0226c71a54dc6677384ecc8dcc8fde0
2023-10-09 22:51:31 +00:00
Tobin C. Harding 3dc5b16540
Bump version to v0.28.0
Prepare for release by doing:

- Add changelog entry to `secp256k1-sys` for the recent version bump ready
  for release.
- Bump the version of secp256k1 to 0.28.0
- Add changelog entry to `secp256k1` for the imminent release.
2023-10-10 09:40:07 +11:00
Andrew Poelstra 3aada83180
Merge rust-bitcoin/rust-secp256k1#627: Add bindings to the ElligatorSwift implementation
39febcb866 Create rust-bidings (Davidson Souza)

Pull request description:

  ~**Marking as draft as this is an unreleased feature from libsecp**~

  From upstream:
  This implements encoding of curve points using the ElligatorSwift algorithm, using 4 new API calls:

      secp256k1_ellswift_encode, which converts a public key to a 64-byte pseudorandom encoding.
      secp256k1_ellswift_decode, the reverse operation to convert back to normal public keys.
      secp256k1_ellswift_create, which can be seen as a combination of secp256k1_ec_pubkey_create + secp256k1_ellswift_encode, but is somewhat safer.
      secp256k1_ellswift_xdh, which implements x-only Diffie-Hellman directly on top of 64-byte encoded public keys, and more efficiently than decoding + invoking normal ECDH.

  This algorithm allows mapping any pair of field elements (u, t) to a (valid) x coordinate in the curve. This allows representing a field element as a 64-bytes bit string that is indistinguishable from random. You can build a pair of (u, t) from any group element as well.
  We also have an integrated x-only ECDH that can be used to establish a shared secret between two parties. All algorithms are compatible with BIP324 and are tested against the BIP's test cases.

  I have a few questions about the rust side of the implementation:
  Should it be always on, or leave it behind a cargo feature? In `libsecp` this module is default on, but you can disable it.
  I'm not exposing the low-level functions, instead you can use high-level types to interact with ellswift. Is it reasonable to also expose a safe version of the functions above?

ACKs for top commit:
  tcharding:
    ACK 39febcb866
  apoelstra:
    ACK 39febcb866

Tree-SHA512: a3c06304a03af9509ff3ef16fd39ee56ec22fc12d1b36be4c20aaa2ad01e98dd34ea64c66db782d3a2c10c3a7b44c701762d45f8d82f45b62db3379710c89c42
2023-10-09 21:26:45 +00:00
Davidson Souza 39febcb866
Create rust-bidings
Create bindings for all methods and static types in ellswift.h in
secp256k1-sys and their respective safe-rust types.

All methods are extensively commented and tested using BIP324's
test vectors
2023-10-09 14:57:54 -03:00
Andrew Poelstra da4f67b274
Merge rust-bitcoin/rust-secp256k1#653: Update vendored lib secp256k1 to v0.4.0
80b2a8d4aa Update vendored libsecp to v0.4.0 (Davidson Souza)
d2285c929a ci: Remove MIPS* from CI (Davidson Souza)
0d58f50d52 ci: generalize grp in "illegal callback" test (Andrew Poelstra)
acf9ac13e9 delete `test_manual_create_destroy` test (Andrew Poelstra)
04ce50891b lib: fix bad unit test (Andrew Poelstra)
e4cca901ea gitignore: remove things that shouldn't be there (Andrew Poelstra)

Pull request description:

  Replaces  #645 and #652. Precedes #627.

  I'm basically using #652 but resolving the linking problems,

  My local CI is erring on windows cross-test, but I can compile without issue with `cargo build --target x86_64-pc-windows-gnu`. Some MIPS jobs failed before even installing cross, I think those aren't really related to this PR. Any ideas on what can be happening?

ACKs for top commit:
  apoelstra:
    ACK 80b2a8d4aa

Tree-SHA512: 62c2e04348110e3995111fa666f10dcc403b963770d047361f9209cf45b45db8744a7eb6d9ee3278d18007412dab5131ac3e1dd3e3d704963c6a6f232d57199a
2023-09-30 17:43:22 +00:00
Davidson Souza 80b2a8d4aa
Update vendored libsecp to v0.4.0 2023-09-30 12:04:45 -03:00
Davidson Souza d2285c929a
ci: Remove MIPS* from CI
MIPS was recently downgraded to Tier 3, which means it won't be installable by
rustup and may not work as expected. This commit removes all MIPS-related
CI jobs.
2023-09-30 12:04:45 -03:00
Andrew Poelstra 0d58f50d52
ci: generalize grp in "illegal callback" test 2023-09-30 12:04:45 -03:00
Andrew Poelstra acf9ac13e9
delete `test_manual_create_destroy` test
This is just a bad test. It constructs a preallocated context object by
starting from a non-preallocated context object, in a way that can't be
done by users (since it directly constructs a `Secp256k1` struct) and a
way that is very difficult to unwind, because you wind up with two
pointers to the same underlying context object, one a "preallocated" one
and one a normal one.

If you then drop the preallocated one, it will call
`secp256k1_context_destroy`, forcing you to manually deallocate the
other one. If you drop the normally-allocated one, you need to
mem::forget the preallocated one to avoid calling
`secp256k1_context_destroy` twice. The whole thing is pretty fragile.

There is another unit test, `test_raw_ctx`, which gets into the same
situation but using the public API, and demonstrates a few ways to get
out of it.
2023-09-30 12:04:45 -03:00
Andrew Poelstra 04ce50891b
lib: fix bad unit test 2023-09-30 12:04:44 -03:00
Andrew Poelstra e4cca901ea
gitignore: remove things that shouldn't be there
upstream libsecp now has a CMakeLists.txt file. Many years ago we added
some things to .gitignore which appear to be local developers committing
the names of their own stray files, and now this is causing the
revendoring script to lose track of vendored files.
2023-09-30 12:04:44 -03:00
Andrew Poelstra 302ff20b3d
Merge rust-bitcoin/rust-secp256k1#649: Use range dependency for hashes v0.12.0 - v0.13.0
936421476e Use range dependency for hashes v0.12.0 - v0.13.0 (Tobin C. Harding)

Pull request description:

  There are zero code changes required to support v.0.13.0 so we elect to use a range dependency to make the upgrade path for downstream users more pleasant.

  Upgrade the dependency of `hashes` to be either v0.12.0 or v0.13.0

  Use v0.13.0 in the recent/minimal lockfiles.

ACKs for top commit:
  apoelstra:
    ACK 936421476e

Tree-SHA512: c411acbd6025a751920fe2c432bf8c9ab78e891a3b32170f85873732c595777e075bd8b1277bf7b156e941a3caf532af71af36e99f88aa36dadbd66c61384166
2023-08-26 16:21:45 +00:00
Tobin C. Harding 936421476e
Use range dependency for hashes v0.12.0 - v0.13.0
There are zero code changes required to support v.0.13.0 so we elect to
use a range dependency to make the upgrade path for downstream users
more pleasant.

Upgrade the dependency of `hashes` to be either v0.12.0 or v0.13.0

Use v0.13.0 in the recent/minimal lockfiles.
2023-08-26 07:25:04 +10:00
Andrew Poelstra 83a2245582
Merge rust-bitcoin/rust-secp256k1#643: Update docs to mention ECDSA
aa4489c71b key: Improve docs (Tobin C. Harding)

Pull request description:

  `PublicKey` types are for verifying ECDSA signatures, when these docs where written there were no other types of signatures. With the addition of taproot these docs have become stale.

ACKs for top commit:
  apoelstra:
    ACK aa4489c71b

Tree-SHA512: bb24d82f2bf316f8907b1bf02132d454d21f0b13d57f06f09f9985bc7fbf7b36e6972a0fdaf3a68967577dbe1995f2a14fd06fddd38eb46718f04bca1c50a445
2023-08-20 14:04:38 +00:00
Andrew Poelstra d9aadc6eaa
Merge rust-bitcoin/rust-secp256k1#648: Rename KeyPair to Keypair
33747bb16f Rename KeyPair to Keypair (Tobin C. Harding)

Pull request description:

  We use "keypair" in identifiers (local vars and function names) but `KeyPair` - one of them is wrong.

  Elect to follow upstream and define keypair as a single word i.e., use `Keypair` for type name and `keypair` in identifiers.

  This patch can be reproduced mechanically by doing two search-and-replace operations on all files excluding the CHANGELOG

  - Replace "KeyPair" with "Keypair"
  - Replace "key_pair" with "keypair"

  Fix #647

ACKs for top commit:
  apoelstra:
    ACK 33747bb16f

Tree-SHA512: 2cb67cde3a39c4681e0628b17b12724fe17d00bc71e985b4eb0b3ad58d574f4a372aa782fc9cb7221cd2032d8312c579195ad2230a3eeb4c550865fa36e42c0b
2023-08-20 14:02:00 +00:00
Tobin C. Harding 33747bb16f
Rename KeyPair to Keypair
We use "keypair" in identifiers (local vars and function names) but
`KeyPair` - one of them is wrong.

Elect to follow upstream and define keypair as a single word i.e., use
`Keypair` for type name and `keypair` in identifiers.

This patch can be reproduced mechanically by doing two
search-and-replace operations on all files excluding the CHANGELOG

- Replace "KeyPair" with "Keypair"
- Replace "key_pair" with "keypair"
2023-08-19 08:35:47 +10:00
Tobin C. Harding aa4489c71b
key: Improve docs
Crypto is _hard_. Make an effort to improve the docs with a minimum of
exactly correct information.
2023-08-19 07:50:24 +10:00
Andrew Poelstra 1f9c01af18
Merge rust-bitcoin/rust-secp256k1#628: Clean up the hashes dependency/feature
6fdd3b1da5 Clean up hashes import statements (Tobin C. Harding)
6d7c653b64 Use hashes instead of bitcoin_hashes (Tobin C. Harding)

Pull request description:

  Use the more terse `hashes` by way of the `package` field in the manifest.

  Allows us to remove the ugly feature alias "bitcoin-hashes" -> "bitcoin_hashes" and removes all the bother with the underscore.

ACKs for top commit:
  apoelstra:
    ACK 6fdd3b1da5

Tree-SHA512: 2c6c81b6ef900bfe930df48ddd32e795997c107a2a94b9e2ea014da0be7aefaa952e1259ddb570b30f5ad7e94c0a9443b691645cb386a8d0349dc7a81f659ed6
2023-08-15 16:54:42 +00:00
Tobin C. Harding 6fdd3b1da5
Clean up hashes import statements
Now that we have `hashes` as the crate name of `bitcoin_hashes` we can
slightly clean up the import statements.

This is based on the convention we have to import things directly from
the crate if we depend on it and not from the crate level re-export.
2023-08-15 14:54:55 +10:00
Tobin C. Harding 6d7c653b64
Use hashes instead of bitcoin_hashes
Use the more terse `hashes` by way of the `package` field in the
manifest.

Allows us to remove the ugly feature alias "bitcoin-hashes" ->
"bitcoin_hashes" and removes all the bother with the underscore.

Why did we not think of this 2 years ago?
2023-08-15 14:54:55 +10:00
Andrew Poelstra 70585395c3
Merge rust-bitcoin/rust-secp256k1#632: CI: test with commited lock files
3da39c6fb6 Run test with recent/minimal lock files (Tobin C. Harding)
4b9168ca25 Run WASM tests from test wrapper script (Tobin C. Harding)
637d08f1fe Add a layer of indirection to the test script (Tobin C. Harding)
d9b70d27b0 Remove trailing whitespace (Tobin C. Harding)
461bae9244 Move recent/minimal lock files (Tobin C. Harding)

Pull request description:

  A while back we added two lock files, one for testing with recent dependency versions and one for testing with minimal dependency versions but at the time we never used them in CI.

  Move the two current lock files and use them in CI (mirroring what is done in `rust-bitcoin`).

ACKs for top commit:
  apoelstra:
    ACK 3da39c6fb6

Tree-SHA512: 5d293689e8a67373cbf0d6b04894c38e636bb7da19db62ac2cc1b83f1dc8184e92169a834d9adf4de3c61c34d5f6f443a1be1d0c2503bb03f08fc486d68beb71
2023-08-14 16:01:42 +00:00
Tobin C. Harding 3da39c6fb6
Run test with recent/minimal lock files
Update the CI scripts to use the minimal/recent lockfiles, requires
using `--locked` for various `cargo` incantations.
2023-08-14 14:45:50 +10:00
Tobin C. Harding 4b9168ca25
Run WASM tests from test wrapper script
The `wasm-pack` command does not honour `cargo` flags passed to it so we
cannot use `--locked` and test against pre-made lock files. Instead just
run the WASM test from the test script wrapper.
2023-08-14 14:45:50 +10:00
Tobin C. Harding 637d08f1fe
Add a layer of indirection to the test script
We would like to be able to run the test script with different lock
files, in preparation for doing so move the `test.sh` script to
`_test.sh` and add a new `test.sh` that runs `_test.sh`.

Keep the outer script as `test.sh` so that we do not change the workflow
for those running the script including the github actions.
2023-08-14 14:45:49 +10:00
Tobin C. Harding d9b70d27b0
Remove trailing whitespace 2023-08-14 14:45:49 +10:00
Tobin C. Harding 461bae9244
Move recent/minimal lock files
A while back we added two lock files that were to track dependencies of
two successful test runs, one with a minimal set of dependencies and one
with a recent set of dependencies (ie, recent dependency versions). We
never used these lock files in CI however.

In preparation for using the lock files in CI, and in order to be
uniform with `rust-bitcoin`, move the lock files to the crate root and
rename them to:

- Cargo-minimal.lock
- Cargo-recent.lock
2023-08-14 14:45:49 +10:00
Andrew Poelstra 6f05b57233
Merge rust-bitcoin/rust-secp256k1#642: Add a `verify` function to `PublicKey`
b9cb37d69f Add a verify function to PublicKey (Tobin C. Harding)

Pull request description:

  To be uniform with `XOnlyPublicKey` add a `verify` function to the `PublicKey`.

  Should have been done when we did #618

ACKs for top commit:
  apoelstra:
    ACK b9cb37d69f

Tree-SHA512: e1d8127daafd18d3c9b5df6edc46a961ed49e87a44c650b92c695606002f1d4c1aee3e89822e188a65ba888abd50c5b6f247570d73fa8508d739efa8bc4df7f0
2023-08-11 18:54:27 +00:00
Tobin C. Harding b9cb37d69f
Add a verify function to PublicKey
To be uniform with `XOnlyPublicKey` add a `verify` function to the
`PublicKey`.
2023-08-11 11:49:09 +10:00
Andrew Poelstra 14e82186d1
Merge rust-bitcoin/rust-secp256k1#644: Improve `Message` constructors
cd40ae7f19 Improve Message constructors (Tobin C. Harding)

Pull request description:

  Observe:

  - The word "hash" can be a verb or a noun, its usage in function names is therefore at times ambiguous.
  - The function name `from_slice` gives no indication as to what the slice input is.

  Improve Message constructors by doing:

  - Add a constructor `Message::from_digest` that takes a 32 byte array as input.
  - Rename `Message::from_slice` to `Message::from_digest_slice` (deprecate `from_slice` and add `from_digest_slice`)
  - Improve the docs while we are at it.

  ### Note

  The original PR conflate 2 separate issues, the `Message` constructor naming clarity issue and the upgrade difficulty issue, PR is now only a solution to the first. The second will be done as a separate PR.

ACKs for top commit:
  apoelstra:
    ACK cd40ae7f19

Tree-SHA512: 4e5aeccf15cca95073f4c3a518b9e1f54f0e33c92c45dfecd1daa31d052022cd28c71bb6df6cff8a6548993e3e22788f11cd2633214ab5a580c753e66d2ea749
2023-08-10 15:05:43 +00:00
Andrew Poelstra 090f073772
Merge rust-bitcoin/rust-secp256k1#641: Fix CI
92778efe92 CI: Pin cc in ASAN no_std_test crate (Tobin C. Harding)
5e6dd8a467 CI: Use bash instead of sh (Tobin C. Harding)
cf5f1034ca Target panic message at lib users (Tobin C. Harding)
ec9c9643d7 Allow stuff after unconditional panic (Tobin C. Harding)
3bbf08348e no_std_test: Remove internal_features (Tobin C. Harding)
cff7a3dae7 CI: Grep for exact error message (Tobin C. Harding)
79e184f08a CI: Update MSRV pins (Tobin C. Harding)

Pull request description:

  CI has a bunch of things broken.

  This is #640 followed by #639 followed by  a few addition fixes to get CI green again. Includes clippy warnings in feature gated code which is not strictly necessary and a fix to a panic message, also not strictly necessary.

ACKs for top commit:
  apoelstra:
    ACK 92778efe92

Tree-SHA512: f99b01e17fade7df394299bdb6bf385bec3f88d6568d43962238049b33a94c364d48c266acb358e72a48dd55a4aac6300ace6478b0821275b89cb86eba639d8b
2023-08-10 15:01:20 +00:00
Tobin C. Harding 92778efe92
CI: Pin cc in ASAN no_std_test crate
Looks like a recent version of `cc` breaks our ASAN job. Pin to the
previous version.
2023-08-10 09:54:50 +10:00
Tobin C. Harding 5e6dd8a467
CI: Use bash instead of sh
In preparation for using `pushd`/`popd` use `bash` to run the CI script
instead of `sh`.
2023-08-10 09:48:40 +10:00
Tobin C. Harding cf5f1034ca
Target panic message at lib users
Currently the panic message refers to stuff related to development of
the library, this is meaningless for users of the lib. Target panic
message at secp users instead.
2023-08-10 09:16:13 +10:00
Tobin C. Harding ec9c9643d7
Allow stuff after unconditional panic
We have an unconditional panic for some combination of features, this
causes clippy to give a bunch of useless warnings.

Add allow attributes to quieten down clippy.
2023-08-10 09:16:13 +10:00
Tobin C. Harding 3bbf08348e
no_std_test: Remove internal_features
Remove the `internal_features` attribute, not sure what it was supposed
to be doing but the crate works without it.
2023-08-10 09:16:13 +10:00
Tobin C. Harding cff7a3dae7
CI: Grep for exact error message
`cargo +nightly` output of panic recently changed breaking our grep
statement by adding the code line and a newline.

Grep for the exact second line of the error message.
2023-08-10 09:16:13 +10:00
Tobin C. Harding 79e184f08a
CI: Update MSRV pins
Pinning is broken again, update the pins it CI so that the following
sequence of commands would work

```bash
rm Cargo.lock
cargo +1.48 update -p wasm-bindgen-test --precise 0.3.34
cargo +1.48 update -p serde_test --precise 1.0.175
cargo +1.48 test --all-features
```

Note, solely out of interest, `cargo +1.48 build` does not need
pinning (at the moment :)
2023-08-10 08:50:45 +10:00
Tobin C. Harding cd40ae7f19
Improve Message constructors
Observe:

- The word "hash" can be a verb or a noun, its usage in function names
  is therefore at times ambiguous.
- The function name `from_slice` gives no indication as to what the
  slice input is.

Improve Message constructors by doing:

- Add a constructor `Message::from_digest` that takes a 32 byte array as
  input.
- Rename `Message::from_slice` to `Message::from_digest_slice`
  (deprecate `from_slice` and add `from_digest_slice`)
- Improve the docs while we are at it.
2023-08-10 08:20:46 +10:00