Expand description
Module for symmetric/asymmetric encryption/decryption.
This module contains everything related to encryption. You can use it to encrypt and decrypt data using either a shared key of a keypair.
Either way, the encryption will give you a Ciphertext, which has a method to decrypt it.
§Symmetric
use devolutions_crypto::utils::generate_key;
use devolutions_crypto::ciphertext::{ encrypt, CiphertextVersion, Ciphertext };
let key: Vec<u8> = generate_key(32);
let data = b"somesecretdata";
let encrypted_data: Ciphertext = encrypt(data, &key, CiphertextVersion::Latest).expect("encryption shouldn't fail");
let decrypted_data = encrypted_data.decrypt(&key).expect("The decryption shouldn't fail");
assert_eq!(decrypted_data, data);§Asymmetric
Here, you will need a PublicKey to encrypt data and the corresponding
PrivateKey to decrypt it. You can generate them by using generate_keypair
in the Key module.
use devolutions_crypto::key::{generate_keypair, KeyVersion, KeyPair};
use devolutions_crypto::ciphertext::{ encrypt_asymmetric, CiphertextVersion, Ciphertext };
let keypair: KeyPair = generate_keypair(KeyVersion::Latest);
let data = b"somesecretdata";
let encrypted_data: Ciphertext = encrypt_asymmetric(data, &keypair.public_key, CiphertextVersion::Latest).expect("encryption shouldn't fail");
let decrypted_data = encrypted_data.decrypt_asymmetric(&keypair.private_key).expect("The decryption shouldn't fail");
assert_eq!(decrypted_data, data);Re-exports§
pub use super::CiphertextVersion;
Structs§
- Ciphertext
- A versionned ciphertext. Can be either symmetric or asymmetric.
Functions§
- encrypt
- Returns an
Ciphertextfrom cleartext data and a key. - encrypt_
asymmetric - Returns an
Ciphertextfrom cleartext data and aPublicKey. You will need the correspondingPrivateKeyto decrypt it. - encrypt_
asymmetric_ with_ aad - Returns an
Ciphertextfrom cleartext data and aPublicKey. You will need the correspondingPrivateKeyto decrypt it. - encrypt_
with_ aad - Returns an
Ciphertextfrom cleartext data and a key.