use rgp::{
Components, Decrypt, Encrypt, decrypt, encrypt, extract_components_mut, generate_fingerprint,
};
pub fn main() -> Result<(), &'static str> {
let (fingerprint, verifier) = generate_fingerprint();
let hmac_key = [0u8; 32];
let hmac_value = [1u8; 32];
let content = vec![0u8; 5_000_000];
let (mut encrypted_content, content_key) = encrypt(
fingerprint,
content.clone(),
Encrypt::Hmac(hmac_key, hmac_value, 42),
)?;
if let Components::Hmac(itr) = extract_components_mut(0, &mut encrypted_content) {
assert_eq!(itr, 42);
let (decrypted_content, hashed_content_key) = decrypt(
Some(&verifier),
&encrypted_content,
Decrypt::Hmac(hmac_key, hmac_value),
)?;
assert_eq!(decrypted_content, content);
assert_eq!(hashed_content_key, content_key);
};
Ok(())
}