[][src]Module devolutions_crypto::ciphertext

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 or derive_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);

Structs

Ciphertext

A versionned ciphertext. Can be either symmetric or asymmetric.

Enums

CiphertextVersion

The versions of the encryption scheme to use.

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.