* Reduce key duplication by enabling hardware RNG * Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Apply suggestion from @Copilot Use micros() for worst case random seed for nrf52 Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Minor cleanup, remove dead code and clarify comment * trunk * Add useRadioEntropy bool, default false. --------- Co-authored-by: Ben Meadors <benmmeadors@gmail.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Jonathan Bennett <jbennett@incomsystems.biz>
29 lines
844 B
C++
29 lines
844 B
C++
#pragma once
|
|
|
|
#include <cstddef>
|
|
#include <cstdint>
|
|
|
|
namespace HardwareRNG
|
|
{
|
|
|
|
/**
|
|
* Fill the provided buffer with random bytes sourced from the most
|
|
* appropriate hardware-backed RNG available on the current platform.
|
|
*
|
|
* @param buffer Destination buffer for random bytes
|
|
* @param length Number of bytes to write
|
|
* @param useRadioEntropy If true, attempt to mix radio entropy into the output as well.
|
|
* @return true if the buffer was fully populated with entropy, false on failure
|
|
*/
|
|
bool fill(uint8_t *buffer, size_t length, bool useRadioEntropy = false);
|
|
|
|
/**
|
|
* Populate a 32-bit seed value with hardware-backed randomness where possible.
|
|
*
|
|
* @param seedOut Destination for the generated seed value
|
|
* @return true if a seed was produced from a reliable entropy source
|
|
*/
|
|
bool seed(uint32_t &seedOut);
|
|
|
|
} // namespace HardwareRNG
|