pub struct CtPoly1305Aead { /* private fields */ }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
impl CtPoly1305Aead
Sourcepub fn update_ct(self, input: &[u8]) -> Self
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();Sourcepub const fn is_ok(&self) -> bool
pub const fn is_ok(&self) -> bool
Returns true if no errors have been encountered to this point.
Sourcepub const fn is_err(&self) -> bool
pub const fn is_err(&self) -> bool
Returns true if an error has been encountered at some point.
Sourcepub fn finalize(self) -> Result<Tag, Unspecified>
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();