#rng #nist #pqc

no-std nist-pqc-seeded-rng

NIST PQC竞赛中用于生成KATs的RNG实现

3个版本

0.1.2 2024年7月16日
0.1.1 2024年7月15日
0.1.0 2024年7月15日

#844 in 密码学

Download history 264/week @ 2024-07-11 54/week @ 2024-07-18 4/week @ 2024-07-25 2/week @ 2024-08-01

每月324次下载

Apache-2.0 OR MIT

11KB
165

NIST PQC:用于已知答案测试的RNG

该软件包提供了一个可播种的RNG,其输出与NIST PQC项目提交中使用的rng.c兼容,用于从初始种子中获得已知答案测试。

安全注意事项

该软件包未经过安全审计。使用风险自负。

最低支持的Rust版本

该软件包至少需要Rust 1.70。最低支持版本可能在未来更改,但此更改将伴随次要版本的升级。

许可证

该软件包根据Apache-2.0或MIT许可证授权。


lib.rs:

用法

可以使用48字节的种子通过各种选项实例化RNG:首先使用在可播种API接口中定义的SeedableRng::from_seed。为了避免用户处理用于表示种子的[GenericArray]的转换,提供了[From]的便利实现,用于48个元素的[u8]数组以及[[u8]]切片的[TryFrom]。

以下三个示例功能上等效。让我们从使用[Seed]初始化开始

use nist_pqc_seeded_rng::{NistPqcAes256CtrRng, Seed, SeedableRng};

let seed: Seed = (*b"012345678901234567890123456789012345678901234567").into();
let rng = NistPqcAes256CtrRng::from_seed(seed);

使用u8数组

use nist_pqc_seeded_rng::{NistPqcAes256CtrRng, Seed, SeedableRng};

let seed: [u8; 48] = *b"012345678901234567890123456789012345678901234567";
let rng = NistPqcAes256CtrRng::from(seed);

使用切片

use nist_pqc_seeded_rng::{NistPqcAes256CtrRng, Seed, SeedableRng};

let seed = *b"012345678901234567890123456789012345678901234567";
let rng = NistPqcAes256CtrRng::try_from(seed).expect("seed of invalid length");

依赖项

~1–1.7MB
~38K SLoC