[][src]Struct tink_daead::subtle::AesSiv

pub struct AesSiv { /* fields omitted */ }

AesSiv is an implementation of AES-SIV-CMAC as defined in RFC 5297.

AesSiv implements a deterministic encryption with additional data (i.e. the DeterministicAEAD trait). Hence the implementation below is restricted to one AD component.

Security Note:

Chatterjee, Menezes and Sarkar analyze AES-SIV in Section 5.1 of "Another Look at Tightness"

Their analysis shows that AES-SIV is susceptible to an attack in a multi-user setting. Concretely, if an attacker knows the encryption of a message m encrypted and authenticated with k different keys, then it is possible to find one of the MAC keys in time 2^b / k where b is the size of the MAC key. A consequence of this attack is that 128-bit MAC keys give unsufficient security. Since 192-bit AES keys are not supported by tink for voodoo reasons and RFC 5297 only supports same size encryption and MAC keys this implies that keys must be 64 bytes (2*256 bits) long.

Implementations

impl AesSiv[src]

pub fn new(key: &[u8]) -> Result<AesSiv, TinkError>[src]

Return an AesSiv instance.

Trait Implementations

impl Clone for AesSiv[src]

impl DeterministicAead for AesSiv[src]

Auto Trait Implementations

impl !RefUnwindSafe for AesSiv

impl !Send for AesSiv

impl !Sync for AesSiv

impl Unpin for AesSiv

impl !UnwindSafe for AesSiv

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> DeterministicAeadBoxClone for T where
    T: 'static + DeterministicAead + Clone
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,