CtPoly1305Aead

Struct CtPoly1305Aead 

Source
pub struct CtPoly1305Aead { /* private fields */ }
Available on crate feature allow-non-fips only.
Expand description

Provides a constant-time interface for updating the MAC computation, enhancing resistance against side-channel attacks.

This uses the recent TLS AEAD padding scheme on finalization, if this is not desired see CtPoly1305.

§Example

use wolf_crypto::{mac::{Poly1305, poly1305::Key}, aead::Tag};

let key: Key = [42u8; 32].into();
let ct_poly = Poly1305::new(key.as_ref())
    .aead_padding_ct()
    .update_ct(b"constant time ")
    .update_ct(b"chunk")
    .finalize()
    .unwrap();

Implementations§

Source§

impl CtPoly1305Aead

Source

pub fn update_ct(self, input: &[u8]) -> Self

Adds more data to the constant-time streaming MAC computation.

§Arguments
  • input - A byte slice representing the additional data to include.
§Returns

The updated CtPoly1305 instance.

§Example
use wolf_crypto::{mac::{Poly1305, poly1305::Key}, aead::Tag};

let key: Key = [42u8; 32].into();
let ct_poly = Poly1305::new(key.as_ref())
    .aead_padding_ct()
    .update_ct(b"chunk1")
    .update_ct(b"chunk2")
    .finalize()
    .unwrap();
Source

pub const fn is_ok(&self) -> bool

Returns true if no errors have been encountered to this point.

Source

pub const fn is_err(&self) -> bool

Returns true if an error has been encountered at some point.

Source

pub fn finalize(self) -> Result<Tag, Unspecified>

Finalizes the constant-time streaming MAC computation and returns the resulting Tag.

§Returns

The associated authentication tag representing all updates and the total length of the updates.

§Errors

The CtPoly1305 instance accumulates errors throughout the updating process without branching. There are two ways that this will return an error based on prior updates:

  • One of the provided inputs had a length which was greater than u32::MAX.
  • The total length, accumulated from all inputs, is greater than u32::MAX.
§Example
use wolf_crypto::{mac::{Poly1305, poly1305::Key}, aead::Tag};

let key: Key = [42u8; 32].into();
let tag = Poly1305::new(key.as_ref())
    .aead_padding_ct()
    .update_ct(b"chunk1")
    .update_ct(b"chunk2")
    .finalize()
    .unwrap();

Trait Implementations§

Source§

impl Debug for CtPoly1305Aead

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

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> 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, U> TryFrom<U> for T
where U: Into<T>,

Source§

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>,

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.