Skip to main content

CipherState

Struct CipherState 

Source
pub struct CipherState<C: Cipher> { /* private fields */ }
Expand description

Cipherstate for encrypting and decrypting messages

Contains the encryption key and nonce and provides methods for encrypting and decrypting data. Will automatically increment the nonce and return an error if that overflows.

Implementations§

Source§

impl<C: Cipher> CipherState<C>

Source

pub fn new(k: &[u8], n: u64) -> Self

Initialize with given key and nonce

§Panics

Panics if key data has incorrect length

Source

pub fn encrypt_with_ad( &mut self, ad: &[u8], plaintext: &[u8], out: &mut [u8], ) -> CipherResult<()>

AEAD encryption

Source

pub fn encrypt_with_ad_in_place( &mut self, ad: &[u8], in_out: &mut [u8], plaintext_len: usize, ) -> CipherResult<usize>

AEAD encryption in place

Source

pub fn decrypt_with_ad( &mut self, ad: &[u8], ciphertext: &[u8], out: &mut [u8], ) -> CipherResult<()>

AEAD decryption

Source

pub fn decrypt_with_ad_in_place( &mut self, ad: &[u8], in_out: &mut [u8], ciphertext_len: usize, ) -> CipherResult<usize>

AEAD decryption in place

Source

pub fn get_nonce(&self) -> u64

Get current nonce value

Source

pub fn set_nonce(&mut self, nonce: u64)

Set nonce value

§Warning

Do not reuse nonces. Doing so WILL LEAD to a catastrophic crypto failure.

Source

pub fn take(self) -> (C::Key, u64)

Take ownership of key and nonce of this state

§Warning

Use with care

Source

pub fn rekey(&mut self) -> CipherResult<()>

Rekey

Rekeys as per Noise spec parts 4.2 and 11.3

Trait Implementations§

Source§

impl<C: Clone + Cipher> Clone for CipherState<C>
where C::Key: Clone,

Source§

fn clone(&self) -> CipherState<C>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<C: Cipher> CryptoComponent for CipherState<C>

Source§

fn name() -> &'static str

Name of this algorithm
Source§

impl<C: Cipher> Drop for CipherState<C>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl<C: Cipher> Zeroize for CipherState<C>

Source§

fn zeroize(&mut self)

Zero out this object from memory using Rust intrinsics which ensure the zeroization operation is not “optimized away” by the compiler.

Auto Trait Implementations§

§

impl<C> Freeze for CipherState<C>
where <C as Cipher>::Key: Freeze,

§

impl<C> RefUnwindSafe for CipherState<C>
where <C as Cipher>::Key: RefUnwindSafe,

§

impl<C> Send for CipherState<C>
where <C as Cipher>::Key: Send,

§

impl<C> Sync for CipherState<C>
where <C as Cipher>::Key: Sync,

§

impl<C> Unpin for CipherState<C>
where <C as Cipher>::Key: Unpin,

§

impl<C> UnwindSafe for CipherState<C>
where <C as Cipher>::Key: UnwindSafe,

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.