Struct Encrusted

Source
pub struct Encrusted<T>
where T: Encrustable + Zeroize,
{ /* private fields */ }
Expand description

Container struct for encrust, accepting Encrustable + Zeroize types for obfuscation and deobfuscation when needed.

Care should be taken if T has a non-trivial Drop implementation, as T is not dropped until zeroize has been called on it.

Implementations§

Source§

impl<T> Encrusted<T>
where T: Encrustable + Zeroize,

Source

pub fn new(data: T, seed: u64) -> Self

Accepts Encrustable + Zeroize data and obfuscates it using the provided seed.

Source

pub fn reseed(&mut self, new_seed: u64)

Changes the seed used to obfuscate the underlying data.

Source

pub fn decrust(&mut self) -> Decrusted<'_, T>

Deobfuscates the data contained in Encrusted and returns a Decrusted object that can be used to access and modify the actual data.

Trait Implementations§

Source§

impl<T> Drop for Encrusted<T>
where T: Encrustable + Zeroize,

Source§

fn drop(&mut self)

Encrusted’s drop implementation calls zeroize on the underlying data including the seed to prevent secrets from staying in memory when they are no longer needed.

Note that the data is zeroized prior to being dropped, which may cause problems for the drop implementation of the underlying data.

Auto Trait Implementations§

§

impl<T> Freeze for Encrusted<T>
where T: Freeze,

§

impl<T> RefUnwindSafe for Encrusted<T>
where T: RefUnwindSafe,

§

impl<T> Send for Encrusted<T>
where T: Send,

§

impl<T> Sync for Encrusted<T>
where T: Sync,

§

impl<T> Unpin for Encrusted<T>
where T: Unpin,

§

impl<T> UnwindSafe for Encrusted<T>
where T: 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> 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, 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.