[−][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 |
encrypt_asymmetric | Returns an |