pub struct Key<T> { /* private fields */ }
Expand description

A key used to encrypt or decrypt values. It represents both an algorithm and a key.

Keys which have been deserialized from a string or file cannot encrypt new values; only freshly created keys have that ability. This is indicated by the type parameter T.

The canonical serialized representation of a Key is a string consisting of an algorithm identifier, followed by a :, followed by the base64 encoded bytes of the key. The Display and FromStr implementations serialize and deserialize in this format.

The only algorithm currently supported is AES 256 GCM, which uses the identifier AES.

Implementations§

source§

impl Key<ReadWrite>

source

pub fn random_aes() -> Result<Key<ReadWrite>>

Creates a random AES key.

source

pub fn encrypt(&mut self, value: &str) -> Result<String>

Encrypts a string with this key.

source§

impl Key<ReadOnly>

source

pub fn from_file<P>(path: P) -> Result<Option<Key<ReadOnly>>>
where P: AsRef<Path>,

A convenience function which deserializes a Key from a file.

If the file does not exist, None is returned. Otherwise, the contents of the file are parsed via Key’s FromStr implementation.

source§

impl<T> Key<T>

source

pub fn decrypt(&self, value: &str) -> Result<String>

Decrypts a string with this key.

Trait Implementations§

source§

impl<T> Display for Key<T>

source§

fn fmt(&self, fmt: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl FromStr for Key<ReadOnly>

§

type Err = Error

The associated error which can be returned from parsing.
source§

fn from_str(s: &str) -> Result<Key<ReadOnly>>

Parses a string s to return a value of this type. Read more

Auto Trait Implementations§

§

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

§

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

§

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

§

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

§

impl<T> UnwindSafe for Key<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> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

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>,

§

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