EntropyPool

Trait EntropyPool 

Source
pub trait EntropyPool {
    // Required methods
    fn new() -> Self;
    fn try_fill(&mut self, dest: &mut [u8]) -> Result<usize, EntropyError>;
    fn add_entropy(&mut self, data: &[u8], entropy_bits: usize);
    fn get_entropy_count(&self) -> usize;

    // Provided method
    fn is_seeded(&self) -> bool { ... }
}
Expand description

核心熵池(Entropy Pool)的 trait,定义了管理和提供高质量随机数的方法。

Required Methods§

Source

fn new() -> Self

创建一个新的熵池实例。

Source

fn try_fill(&mut self, dest: &mut [u8]) -> Result<usize, EntropyError>

尝试从熵池中提取随机字节来填充目标缓冲区。

这个操作通常会消耗熵池中的熵,并且依赖于内部的 CSPRNG 算法。

§参数
  • dest: 待填充的缓冲区。
§返回

成功时返回填充的字节数(如果是非阻塞模式,可能少于请求的字节数), 失败时返回 EntropyError。

Source

fn add_entropy(&mut self, data: &[u8], entropy_bits: usize)

向熵池注入新的原始熵数据。

这是外部熵源(如驱动程序、计时器抖动、TRNG)更新熵池的主要方法。

§参数
  • data: 待注入的原始数据。
  • entropy_bits: 估计数据中包含的真实熵位数。
§关键:

实现必须负责将数据混合到熵池状态中(例如 SHA-256 哈希或 Gigue 混合函数)。

Source

fn get_entropy_count(&self) -> usize

获取当前估计的熵池中高品质熵的位数。

用于判断熵池的健康状态和是否可以安全地提供随机数。

Provided Methods§

Source

fn is_seeded(&self) -> bool

检查熵池是否已经收集了足够的初始熵,可以安全地进行操作。

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§