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
impl SymmetricKey
pub fn new() -> Self
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>
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
impl AsRef<[u8]> for SymmetricKey
§impl Clone for SymmetricKey
impl Clone for SymmetricKey
§fn clone(&self) -> SymmetricKey
fn clone(&self) -> SymmetricKey
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more