[][src]Struct chacha20::XChaCha20

pub struct XChaCha20(_);
This is supported on feature="xchacha20" only.

XChaCha20 is a ChaCha20 variant with an extended 192-bit (24-byte) nonce.

The construction is an adaptation of the same techniques used by XSalsa20 as described in the paper "Extending the Salsa20 Nonce", applied to the 96-bit nonce variant of ChaCha20, and derive a separate subkey/nonce for each extended nonce:

https://cr.yp.to/snuffle/xsalsa-20081128.pdf

No authoritative specification exists for XChaCha20, however the construction has "rough consensus and running code" in the form of several interoperable libraries and protocols (e.g. libsodium, WireGuard) and is documented in an (expired) IETF draft:

https://tools.ietf.org/html/draft-arciszewski-xchacha-03

The xchacha20 Cargo feature must be enabled in order to use this (which it is by default).

Trait Implementations

impl NewStreamCipher for XChaCha20[src]

type KeySize = U32

Key size in bytes

type NonceSize = U24

Nonce size in bytes

impl SyncStreamCipher for XChaCha20[src]

impl SyncStreamCipherSeek for XChaCha20[src]

Auto Trait Implementations

impl Send for XChaCha20

impl Sync for XChaCha20

impl Unpin for XChaCha20

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> 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<C> StreamCipher for C where
    C: SyncStreamCipher
[src]

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.