Skip to main content

Kmac128

Struct Kmac128 

Source
pub struct Kmac128 { /* private fields */ }
Expand description

SP 800-185 KMAC128, offering 128-bit security.

Implementations§

Source§

impl Kmac128

Source

pub fn new(key: &[u8], custom: &[u8]) -> Self

Start a KMAC with key and a customization string.

Pass an empty custom when the key has only one use.

Source

pub fn update(&mut self, data: &[u8])

Absorb more of the message.

Source

pub fn finalize(self, out: &mut [u8])

Produce a tag of exactly out.len() bytes.

The length is bound into the computation, so tags of different lengths over the same input are unrelated.

Source

pub fn finalize_xof(self, out: &mut [u8])

Produce an arbitrary-length stream instead of a fixed tag.

Encodes a length of zero, per SP 800-185 section 4.3.1.

Source

pub fn mac(key: &[u8], custom: &[u8], data: &[u8], out: &mut [u8])

One-shot fixed-length tag.

Source

pub fn mac_xof(key: &[u8], custom: &[u8], data: &[u8], out: &mut [u8])

One-shot XOF mode.

Source

pub fn verify(key: &[u8], custom: &[u8], data: &[u8], tag: &[u8]) -> Result<()>

Verify a tag in constant time.

Compare with this rather than ==. An early-exit comparison leaks how many leading bytes matched, which is enough to recover a valid tag one byte at a time.

Trait Implementations§

Source§

impl Algorithm for Kmac128

Source§

const ID: &'static str = "kmac128"

Stable ontology identifier for this algorithm.
Source§

const NAME: &'static str = "KMAC128"

Human-facing display name (for example "SHA-256").
Source§

impl Clone for Kmac128

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl SelfTest for Kmac128

Source§

fn self_test() -> Result<()>

§Provenance

No pinned vector. The unit tests check KMAC against an independent construction from SP 800-185’s own definition — stronger evidence than a value this code produced — and cSHAKE beneath it is checked against a Keccak written from FIPS 202. docs/FIPS.md records that. What this adds at startup is that the code still computes what it computed when those tests last ran, and that its structural properties hold.

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

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

Source§

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.