Struct holochain_types::prelude::hash::Hash512Bits
[−]pub struct Hash512Bits(_);
Expand description
512 Bit generic hash.
Trait Implementations
impl AsRef<[u8]> for Hash512Bits
impl AsRef<[u8]> for Hash512Bits
impl Debug for Hash512Bits
impl Debug for Hash512Bits
The only meaningful debug information for a cryptograhpic secret is the literal bytes. Also, encodings like base64 are not constant time so debugging could open some weird side channel issue trying to be ‘human friendly’. It seems better to never try to encode secrets.
impl<'de> Deserialize<'de> for Hash512Bits
impl<'de> Deserialize<'de> for Hash512Bits
fn deserialize<D>(
deserializer: D
) -> Result<Hash512Bits, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
fn deserialize<D>(
deserializer: D
) -> Result<Hash512Bits, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
impl From<[u8; 64]> for Hash512Bits
impl From<[u8; 64]> for Hash512Bits
Trivial new type derivation. Secrets should have private interiors and be constructed directly from fixed length arrays of known length.
fn from(b: [u8; 64]) -> Hash512Bits
fn from(b: [u8; 64]) -> Hash512Bits
impl PartialEq<Hash512Bits> for Hash512Bits
impl PartialEq<Hash512Bits> for Hash512Bits
Constant time equality check. This mitigates timing attacks where a remote agent can reverse engineer data by measuring tiny changes in latency associated with optimised equality checks. More matching bytes = more latency = vulnerability. This type of attack has been successfully demonstrated over a network despite varied latencies.
fn eq(&self, other: &Hash512Bits) -> bool
fn eq(&self, other: &Hash512Bits) -> bool
impl Serialize for Hash512Bits
impl Serialize for Hash512Bits
fn serialize<S>(
&self,
serializer: S
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
fn serialize<S>(
&self,
serializer: S
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
impl TryFrom<&[u8]> for Hash512Bits
impl TryFrom<&[u8]> for Hash512Bits
type Error = SecurePrimitiveError
type Error = SecurePrimitiveError
fn try_from(
slice: &[u8]
) -> Result<Hash512Bits, <Hash512Bits as TryFrom<&[u8]>>::Error>
fn try_from(
slice: &[u8]
) -> Result<Hash512Bits, <Hash512Bits as TryFrom<&[u8]>>::Error>
impl TryFrom<Vec<u8, Global>> for Hash512Bits
impl TryFrom<Vec<u8, Global>> for Hash512Bits
impl Eq for Hash512Bits
Auto Trait Implementations
impl RefUnwindSafe for Hash512Bits
impl Send for Hash512Bits
impl Sync for Hash512Bits
impl Unpin for Hash512Bits
impl UnwindSafe for Hash512Bits
Blanket Implementations
impl<T> Any for Twhere
T: Any + ?Sized,
impl<T> Any for Twhere
T: Any + ?Sized,
fn type_id_compat(&self) -> TypeId
fn type_id_compat(&self) -> TypeId
impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
type ArchivedMetadata = ()
type ArchivedMetadata = ()
fn pointer_metadata(
&<T as ArchivePointee>::ArchivedMetadata
) -> <T as Pointee>::Metadata
fn pointer_metadata(
&<T as ArchivePointee>::ArchivedMetadata
) -> <T as Pointee>::Metadata
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<F, W, T, D> Deserialize<With<T, W>, D> for Fwhere
W: DeserializeWith<F, T, D>,
D: Fallible + ?Sized,
F: ?Sized,
impl<F, W, T, D> Deserialize<With<T, W>, D> for Fwhere
W: DeserializeWith<F, T, D>,
D: Fallible + ?Sized,
F: ?Sized,
fn deserialize(
&self,
deserializer: &mut D
) -> Result<With<T, W>, <D as Fallible>::Error>
fn deserialize(
&self,
deserializer: &mut D
) -> Result<With<T, W>, <D as Fallible>::Error>
sourceimpl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
sourcefn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.impl<T> FutureExt for T
impl<T> FutureExt for T
fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
impl<T> Pointable for T
impl<T> Pointable for T
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self
from the equivalent element of its
superset. Read morefn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self
is actually part of its subset T
(and can be converted to it).fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset
but without any property checks. Always succeeds.fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.