Struct crypto::hmac::HMAC

source ·
pub struct HMAC;

Implementations§

source§

impl HMAC

source

pub fn mac(input: &[u8], secret_key: &[u8]) -> [u8; 20]

This implements HMAC for SHA1. The function takes in the bytes to hash and a secret key used to hash. The high level overview looks like this: input: &u8: the message to hash secret_key: &u8: the secret key to use in hashing.

  1. The secret key is sized appropriately. (64 bytes in SHA-1)
  • If the key is too long or too short, it is set to 64 bytes.
  • If too short, it is padded with zeroes on the right
  • if too long, it is hashed and then padded with zeroes on the right
  1. Two keys are generated
  • An outer key, which takes the sized key and xors it with 0x5c
  • And inner key, which is xored with 0x36.
  1. The inner key is concatenated with the input and then hashed.
  2. And then the hash is calculated of the outer key concatenated by that result.
source

fn block_size_key(secret_key: &[u8]) -> [u8; 64]

Auto Trait Implementations§

§

impl Freeze for HMAC

§

impl RefUnwindSafe for HMAC

§

impl Send for HMAC

§

impl Sync for HMAC

§

impl Unpin for HMAC

§

impl UnwindSafe for HMAC

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, U> FromLossy<T> for U
where U: From<T>,

§

fn from_lossy(t: T) -> U

Convert to this type lossily
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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, U> IntoLossy<T> for U
where T: FromLossy<U>,

§

fn into_lossy(self) -> T

Convert this type lossily
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.