mirror of
https://github.com/apache/nuttx.git
synced 2026-06-06 00:14:22 +08:00
Add entropy pool and strong random number generator
Entropy pool gathers environmental noise from device drivers, user-space, etc., and returns good random numbers, suitable for cryptographic use. Based on entropy pool design from *BSDs and uses BLAKE2Xs algorithm for CSPRNG output. Patch also adds /dev/urandom support for using entropy pool RNG and new 'getrandom' system call for getting randomness without file-descriptor usage (thus avoiding file-descriptor exhaustion attacks). The 'getrandom' interface is similar as 'getentropy' and 'getrandom' available on OpenBSD and Linux respectively.
This commit is contained in:
committed by
Gregory Nutt
parent
21545ab643
commit
dffb8a67e3
@@ -42,6 +42,7 @@
|
||||
#include <debug.h>
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/irq.h>
|
||||
#include <nuttx/random.h>
|
||||
|
||||
#include "irq/irq.h"
|
||||
|
||||
@@ -53,7 +54,7 @@
|
||||
* Name: irq_dispatch
|
||||
*
|
||||
* Description:
|
||||
* This function must be called from the achitecture-specific logic in
|
||||
* This function must be called from the architecture-specific logic in
|
||||
* order to dispatch an interrupt to the appropriate, registered handling
|
||||
* logic.
|
||||
*
|
||||
@@ -97,6 +98,12 @@ void irq_dispatch(int irq, FAR void *context)
|
||||
arg = NULL;
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CRYPTO_RANDOM_POOL_COLLECT_IRQ_RANDOMNESS
|
||||
/* Add interrupt timing randomness to entropy pool */
|
||||
|
||||
add_irq_randomness(irq);
|
||||
#endif
|
||||
|
||||
/* Then dispatch to the interrupt handler */
|
||||
|
||||
vector(irq, context, arg);
|
||||
|
||||
Reference in New Issue
Block a user