Trait wasmtime_wasi_http::random::Host
source · pub trait Host {
// Required methods
fn get_random_bytes(&mut self, len: u64) -> Result<Vec<u8>>;
fn get_random_u64(&mut self) -> Result<u64>;
fn insecure_random(&mut self) -> Result<(u64, u64)>;
}
Required Methods§
sourcefn get_random_bytes(&mut self, len: u64) -> Result<Vec<u8>>
fn get_random_bytes(&mut self, len: u64) -> Result<Vec<u8>>
Return len
cryptographically-secure pseudo-random bytes.
This function must produce data from an adequately seeded cryptographically-secure pseudo-random number generator (CSPRNG), so it must not block, from the perspective of the calling program, and the returned data is always unpredictable.
This function must always return fresh pseudo-random data. Deterministic environments must omit this function, rather than implementing it with deterministic data.
sourcefn get_random_u64(&mut self) -> Result<u64>
fn get_random_u64(&mut self) -> Result<u64>
Return a cryptographically-secure pseudo-random u64
value.
This function returns the same type of pseudo-random data as
get-random-bytes
, represented as a u64
.
sourcefn insecure_random(&mut self) -> Result<(u64, u64)>
fn insecure_random(&mut self) -> Result<(u64, u64)>
Return a 128-bit value that may contain a pseudo-random value.
The returned value is not required to be computed from a CSPRNG, and may even be entirely deterministic. Host implementations are encouraged to provide pseudo-random values to any program exposed to attacker-controlled content, to enable DoS protection built into many languages’ hash-map implementations.
This function is intended to only be called once, by a source language to initialize Denial Of Service (DoS) protection in its hash-map implementation.
Expected future evolution
This will likely be changed to a value import, to prevent it from being called multiple times and potentially used for purposes other than DoS protection.