Commit Graph

8 Commits

Author SHA1 Message Date
Andrew Poelstra 0aeff359f5
hashes: reformat
Essentially this just adds indentation after the previous commit.
2025-05-05 17:00:12 +00:00
Andrew Poelstra aadd7df266
hashes: move `from_engine` fn impl out of macro body
This macro is pretty weird -- it requires that a freestanding
`from_engine` method exists, which it uses to implement a `from_engine`
method within an impl block, by just calling through to the freestanding
method.

To reduce indirection, at a very small cost in increased repeated code
(we now need to add a `impl Hash {` and `}` and doccomment around each
freestanding function, we just remove this from the macro entirely.

This will allow us to implement `from_engine` for `sha256t::Hash` in a
different way than for the non-generic hash types.

To minimize the diff, we do not re-indent the freestanding
`from_engine`. We will do that in the next commit. However, the diff is
still a bit noisy because I had to replace `fn from_engine` with `pub fn
from_engine` in every case. I took the opportunity to also change the
return type from `Hash` to `Self` to make it clearer that these are
constructors.
2025-05-05 17:00:07 +00:00
Tobin C. Harding e1bac7da55
Bound HmacEngine on HashEngine
We would like to do away with the `GeneralHash` trait. Currently we
bound `Hmac` and `HmacEngine` on it but this is unnecessary now that we
have added `HashEngine::finalize` and `HashEngine::Hash`.

Bound the `HmacEngine` on `HashEngine` (which has an associated `Hash`
type returned by `finilalize`).

Bound `Hmac` type on `T::Hash` where `T` is `HashEngine`.

Includes some minor shortening of local variable names around hmac
engine usage.

Note this means that `Hmac` no longer implements `GeneralHash`.
2025-03-06 11:47:26 +11:00
Tobin C. Harding ab63b7a0ff
Add Hash type and finalize method to HashEngine
Add an associated const `Hash` to the `HashEngine` trait. Also add a
`finalize` method that converts the engine to the associated hash.

For now just use the existent `from_engine` stuff. We can refactor
later.
2025-03-06 11:43:51 +11:00
Tobin C. Harding 50c0af7138
Stop using Hash::from_slice
This function is deprecated, stop using it in favour of
`Hash::from_byte_array`.

Patch only touches test code, I'm guessing that is why lint warnings
were no showing up.
2025-02-17 12:39:11 +11:00
Jamil Lambert, PhD e7c6564d38
Add missing hex feature gate
`hex` was previously enabled by `alloc`, now it is optional add the
missing feature gate to tests.
2025-02-14 11:44:55 +00:00
Tobin C. Harding 6263b9c6af
hashes: Derive Debug for all hash engines
Public types typically should implement `Debug`.

Derive `Debug` for all the hash engines
2025-02-07 11:16:59 +11:00
Tobin C. Harding 1bfd1e071a
hashes: Make module subdirectories
In preparation for removing a bunch of macros move all the modules to
`<mod>/mod.rs`.

Do so by running the following shell:

```bash
for mod in hash160 ripemd160 sha1 sha256 sha256d sha256t \
sha384 sha512 sha512_256 siphash24 hkdf hmac; do
mkdir $mod
mv "$mod.rs" "$mod/mod.rs"
done
```

Internal change only.
2025-02-06 07:10:02 +11:00