Module ciphertext

Module ciphertext 

Source
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 Ciphertext from cleartext data and a key.
encrypt_asymmetric
Returns an Ciphertext from cleartext data and a PublicKey. You will need the corresponding PrivateKey to decrypt it.
encrypt_asymmetric_with_aad
Returns an Ciphertext from cleartext data and a PublicKey. You will need the corresponding PrivateKey to decrypt it.
encrypt_with_aad
Returns an Ciphertext from cleartext data and a key.