SymmetricKey

Struct SymmetricKey 

pub struct SymmetricKey { /* private fields */ }
Expand description

Symmetric encryption key.

These keys are used by SecureCell objects.

Note that managing keys is your responsibility. You have to make sure that keys are stored safely and are never disclosed to untrusted parties. You can consult our guidelines for some advice on key management.

§Examples

Generating a new symmetric key is trivial:

use themis::keys::SymmetricKey;
use themis::secure_cell::SecureCell;

let key = SymmetricKey::new();

let cell = SecureCell::with_key(&key)?.seal();

let encrypted = cell.encrypt(b"message")?;
let decrypted = cell.decrypt(&encrypted)?;
assert_eq!(decrypted, b"message");

Keys can be converted into a byte slice via the standard AsRef trait so that you can easily write them into files, send via network, pass to other Themis functions, and so on:

use std::fs::File;
use std::io::Write;

let mut file = File::create("master.key")?;
file.write_all(key.as_ref())?;

You can also restore the keys from raw bytes using try_from_slice method. It checks that the byte slice indeed contains a valid Themis key:

use std::fs::File;
use std::io::Read;

let mut file = File::open("master.key")?;

let mut buffer = Vec::new();
file.read_to_end(&mut buffer)?;

let key = SymmetricKey::try_from_slice(&buffer)?;

Implementations§

§

impl SymmetricKey

pub fn new() -> Self

Generates a new symmetric key.

§Panics

This function may panic in case of unrecoverable errors inside the library (e.g., out-of-memory or assertion violations).

pub fn try_from_slice(bytes: impl AsRef<[u8]>) -> Result<Self>

Parses a key from a byte slice.

Returns an error if the slice does not contain a valid symmetric key.

Trait Implementations§

§

impl AsRef<[u8]> for SymmetricKey

§

fn as_ref(&self) -> &[u8]

Converts this type into a shared reference of the (usually inferred) input type.
§

impl Clone for SymmetricKey

§

fn clone(&self) -> SymmetricKey

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
§

impl Debug for SymmetricKey

§

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

Formats the value using the given formatter. Read more
§

impl Default for SymmetricKey

§

fn default() -> Self

Returns the “default value” for a type. Read more
§

impl Hash for SymmetricKey

§

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
§

impl PartialEq for SymmetricKey

§

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

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

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

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

impl Eq for SymmetricKey

§

impl StructuralPartialEq for SymmetricKey

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