Crates.io | hapi-iron-oxide |
lib.rs | hapi-iron-oxide |
version | 0.1.0 |
source | src |
created_at | 2023-05-10 10:21:13.126773 |
updated_at | 2023-05-10 10:21:13.126773 |
description | iron-webcrypto and hapi-iron implementation in Rust |
homepage | https://github.com/grindarius/hapi-iron-oxide |
repository | https://github.com/grindarius/hapi-iron-oxide |
max_upload_size | |
id | 861252 |
size | 61,031 |
This module is made to be compatible with brc-dd/iron-webcrypto, which is the crate that backs vvo/iron-session. This allows APIs made in Rust be able to talk to Next.js.
cargo add hapi-iron-oxide
Salt size can be customized from both const generics. The first generic argument is the salt size of the encryption algorithm (AES-256, AES-128). And the second generic argument is the salt size of integrity algorithm (SHA-256).
use hapi_iron_oxide::*;
let password = "passwordpasswordpasswordpasswordpasswordpasswordpasswordpassword";
let data = "Hello World Please";
let sealed = seal::<32, 32, _>(data.to_string(), password, Default::default());
let unsealed = unseal(sealed, password.clone(), Default::default());
assert_eq!(unsealed.unwrap(), data.to_string());
The options struct can be customized like This
use hapi_iron_oxide::*;
let password = "passwordpasswordpasswordpasswordpasswordpasswordpasswordpassword";
let data = "Hello World Please";
let options = SealOptionsBuilder::new().ttl(1000);
let sealed = seal::<32, 32, _>(data.to_string(), password, options);
assert_eq!(
options,
SealOptions {
encryption: EncryptionOptions {
algorithm: Algorithm::Aes256Cbc,
iterations: 1,
minimum_password_length: 32,
},
integrity: EncryptionOptions {
algorithm: Algorithm::Sha256,
iterations: 1,
minimum_password_length: 32,
},
ttl: 1000,
timestamp_skew: 60,
local_offset: 0,
}
);
assert!(!sealed.is_empty());
Thank you to