Use hash_type macro for sha512::Hash
Currently we are defining the `sha512::Hash` type manually instead of using the `hash_type` macro. The generated code using the macro is identical to that without it (although I didn't actually look at the generated code :)
This commit is contained in:
parent
d51c1857fd
commit
71454d438a
|
@ -10,7 +10,12 @@ use core::{cmp, str};
|
||||||
|
|
||||||
use crate::{FromSliceError, HashEngine as _};
|
use crate::{FromSliceError, HashEngine as _};
|
||||||
|
|
||||||
crate::internal_macros::hash_trait_impls!(512, false);
|
crate::internal_macros::hash_type! {
|
||||||
|
512,
|
||||||
|
false,
|
||||||
|
"Output of the SHA512 hash function.",
|
||||||
|
"crate::util::json_hex_string::len_64"
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(not(hashes_fuzz))]
|
#[cfg(not(hashes_fuzz))]
|
||||||
pub(crate) fn from_engine(mut e: HashEngine) -> Hash {
|
pub(crate) fn from_engine(mut e: HashEngine) -> Hash {
|
||||||
|
@ -105,24 +110,6 @@ impl crate::HashEngine for HashEngine {
|
||||||
engine_input_impl!();
|
engine_input_impl!();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Output of the SHA512 hash function.
|
|
||||||
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
|
||||||
#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
|
|
||||||
#[repr(transparent)]
|
|
||||||
pub struct Hash(
|
|
||||||
#[cfg_attr(
|
|
||||||
feature = "schemars",
|
|
||||||
schemars(schema_with = "crate::util::json_hex_string::len_64")
|
|
||||||
)]
|
|
||||||
[u8; 64],
|
|
||||||
);
|
|
||||||
|
|
||||||
impl Hash {
|
|
||||||
fn internal_new(arr: [u8; 64]) -> Self { Hash(arr) }
|
|
||||||
|
|
||||||
fn internal_engine() -> HashEngine { Default::default() }
|
|
||||||
}
|
|
||||||
|
|
||||||
#[allow(non_snake_case)]
|
#[allow(non_snake_case)]
|
||||||
fn Ch(x: u64, y: u64, z: u64) -> u64 { z ^ (x & (y ^ z)) }
|
fn Ch(x: u64, y: u64, z: u64) -> u64 { z ^ (x & (y ^ z)) }
|
||||||
#[allow(non_snake_case)]
|
#[allow(non_snake_case)]
|
||||||
|
|
Loading…
Reference in New Issue