Enum FileEncryption

Source
pub enum FileEncryption {
    AES128(Vec<u8>),
    RC4(Vec<u8>),
    Xor(Vec<u8>),
}
Expand description

Some of these algorithms are not secure, and that’s fine, since the goal isn’t necessarily data secrecy. The purpose is to store malware on disk without upsetting anti-virus systems. It would be annoying if security software deleted our carefully curated data!

Variants§

§

AES128(Vec<u8>)

AES-128, to protect from prying eyes.

§

RC4(Vec<u8>)

RC4 with a 16-byte key, to protect from anti-virus

§

Xor(Vec<u8>)

Exclusive OR, to protect from anti-virus

Implementations§

Source§

impl FileEncryption

Source

pub fn new(option: EncryptionOption, bytes: Vec<u8>) -> Result<Self>

Create a key object given the encryption algorithm and key bytes

§Errors

The only error is if the RC4 key isn’t exactly 16 bytes long.

Source

pub fn name(&self) -> &'static str

Return the name of the algorithm used

Source

pub fn key_type(&self) -> EncryptionOption

Return the related EncryptionOption type

Source

pub fn key(&self) -> &[u8]

Return the bytes for the key

Source

pub fn decrypt(&self, data: &[u8], nonce: Option<Vec<u8>>) -> Result<Vec<u8>>

Decrypt some data returning the clear bytes

§Errors
  • If the data is corrupted and decryption fails
Source

pub fn encrypt(&self, data: &[u8], nonce: Option<Vec<u8>>) -> Result<Vec<u8>>

Encrypt some data returning the ciphertext bytes

§Errors

If AES somehow doesn’t have a nonce.

Source

pub fn nonce(&self) -> Option<Vec<u8>>

Generate nonce bytes, if used by the algorithm

Trait Implementations§

Source§

impl Drop for FileEncryption

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl From<EncryptionOption> for FileEncryption

Source§

fn from(option: EncryptionOption) -> Self

Converts to this type from the input type.
Source§

impl Hash for FileEncryption

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for FileEncryption

Source§

fn eq(&self, other: &FileEncryption) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

const fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Zeroize for FileEncryption

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.
Source§

impl Eq for FileEncryption

Source§

impl StructuralPartialEq for FileEncryption

Auto Trait Implementations§

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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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.
Source§

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

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,