#session #hapi-iron #iron-webcrypto #iron-session

hapi-iron-oxide

使用 Rust 实现的 iron-webcrypto 和 hapi-iron

1 个不稳定版本

0.1.0 2023 年 5 月 10 日

#164 in #session

MIT/Apache

48KB
1K SLoC

hapi-iron-oxide

此模块旨在与 brc-dd/iron-webcrypto 兼容,该crate是vvo/iron-session的后端。这允许 Rust 中创建的 API 能够与 Next.js 通信。

安装

cargo add hapi-iron-oxide

使用方法

盐的大小可以通过 const generics 进行自定义。第一个泛型参数是加密算法(AES-256,AES-128)的盐大小。第二个泛型参数是完整性算法(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());

选项结构体可以像这样进行自定义

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());

感谢

感谢

依赖项

~4.5MB
~86K SLoC