Struct Key
pub struct Key { /* private fields */ }Expand description
A key to use for HMAC signing.
Implementations§
§impl Key
impl Key
pub fn generate(
algorithm: Algorithm,
rng: &dyn SecureRandom,
) -> Result<Key, Unspecified>
pub fn generate( algorithm: Algorithm, rng: &dyn SecureRandom, ) -> Result<Key, Unspecified>
Generate an HMAC signing key using the given digest algorithm with a
random value generated from rng.
The key will be digest_alg.output_len bytes long, based on the
recommendation in RFC 2104 Section 3.
§Errors
error::Unspecified is the rng fails.
pub fn new(algorithm: Algorithm, key_value: &[u8]) -> Key
pub fn new(algorithm: Algorithm, key_value: &[u8]) -> Key
Construct an HMAC signing key using the given digest algorithm and key value.
key_value should be a value generated using a secure random number
generator (e.g. the key_value output by
SealingKey::generate_serializable()) or derived from a random key by
a key derivation function (e.g. aws_lc_rs::hkdf). In particular,
key_value shouldn’t be a password.
As specified in RFC 2104, if key_value is shorter than the digest
algorithm’s block length (as returned by digest::Algorithm::block_len,
not the digest length returned by digest::Algorithm::output_len) then
it will be padded with zeros. Similarly, if it is longer than the block
length then it will be compressed using the digest algorithm.
You should not use keys larger than the digest_alg.block_len because
the truncation described above reduces their strength to only
digest_alg.output_len * 8 bits.
§Panics
Panics if the HMAC context cannot be constructed
Trait Implementations§
impl Send for Key
impl Sync for Key
Auto Trait Implementations§
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§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> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§fn and<P, B, E>(self, other: P) -> And<T, P>
fn and<P, B, E>(self, other: P) -> And<T, P>
Policy that returns Action::Follow only if self and other return
Action::Follow. Read more