Struct Key
pub struct Key(/* private fields */);Expand description
A 256-bit encryption key for CLLW Order-Revealing Encryption.
The key is used to encrypt and decrypt values while preserving their ordering. All encryption operations are deterministic for a given key.
§Examples
use cllw_ore::Key;
// Create a key from a 32-byte array
let key = Key::from([0u8; 32]);
// Encrypt an integer
let plaintext: u32 = 42;
let ciphertext = key.encrypt(plaintext).unwrap();
// Decrypt back to the original value
let decrypted = key.decrypt(ciphertext).unwrap();
assert_eq!(plaintext, decrypted);Implementations§
§impl Key
impl Key
pub fn encrypt<T>(
&self,
input: T,
) -> Result<<T as CllwOreEncrypt>::Output, Error>where
T: CllwOreEncrypt,
pub fn encrypt<T>(
&self,
input: T,
) -> Result<<T as CllwOreEncrypt>::Output, Error>where
T: CllwOreEncrypt,
Encrypts a value using CLLW Order-Revealing Encryption.
The encryption is deterministic and preserves the ordering of values.
Supported types: u16, u32, u64, u128, &str, &[u8]
§Examples
use cllw_ore::Key;
use std::cmp::Ordering;
let key = Key::from([0u8; 32]);
// Order is preserved
let a = key.encrypt(10u32).unwrap();
let b = key.encrypt(20u32).unwrap();
assert_eq!(a.cmp(&b), Ordering::Less);
// Encryption is deterministic
let c = key.encrypt(10u32).unwrap();
assert_eq!(a, c);pub fn decrypt<T>(
&self,
input: T,
) -> Result<<T as CllwOreDecrypt>::Output, Error>where
T: CllwOreDecrypt,
pub fn decrypt<T>(
&self,
input: T,
) -> Result<<T as CllwOreDecrypt>::Output, Error>where
T: CllwOreDecrypt,
Decrypts a ciphertext back to its original value.
§Examples
use cllw_ore::Key;
let key = Key::from([0u8; 32]);
let plaintext = 12345u64;
let ciphertext = key.encrypt(plaintext).unwrap();
let decrypted = key.decrypt(ciphertext).unwrap();
assert_eq!(plaintext, decrypted);Trait Implementations§
Auto Trait Implementations§
impl Freeze for Key
impl RefUnwindSafe for Key
impl Send for Key
impl Sync for Key
impl Unpin for Key
impl UnwindSafe for Key
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more