pub struct CtPoly1305 { /* private fields */ }allow-non-fips only.Expand description
Provides a constant-time interface for updating the MAC computation, enhancing resistance against side-channel attacks.
§Example
use wolf_crypto::{mac::{Poly1305, poly1305::Key}, aead::Tag};
let key: Key = [42u8; 32].into();
let ct_poly = Poly1305::new(key.as_ref())
.update_ct(b"constant time ")
.update_ct(b"chunk")
.finalize()
.unwrap();Implementations§
Source§impl CtPoly1305
impl CtPoly1305
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())
.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. The only error which could occur:
One of the provided inputs had a length which was 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())
.update_ct(b"chunk1")
.update_ct(b"chunk2")
.finalize()
.unwrap();Sourcepub fn finalize_no_padding(self) -> Result<Tag, Unspecified>
pub fn finalize_no_padding(self) -> Result<Tag, Unspecified>
Finalizes the constant-time streaming MAC computation and returns the resulting Tag.
§Note
It is far more common in practice to use to pad the finalize method. This is only here
for XSalsa20Poly1305.
§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. The only error which could occur:
One of the provided inputs had a length which was 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())
.update_ct(b"chunk1")
.update_ct(b"chunk2")
.finalize_no_padding()
.unwrap();