* \brief High-level random number generation functions.
* \author Giovanni Bajo <rasky@develer.com>
*
+ * $WIZ$ module_name = "random"
+ * $WIZ$ module_configuration = "bertos/cfg/cfg_random.h"
+ * $WIZ$ module_depends = "isaac", "cipher", "sha1", "yarrow", "yarrow_pool", "x917", "aes"
+ * $WIZ$ module_supports = "stm32 or lm3s"
*/
#ifndef SEC_RANDOM_H
#define SEC_RANDOM_H
+#include "cfg/cfg_random.h"
#include <cfg/compiler.h>
-#define RANDOM_SECURITY_MINIMUM 0
-#define RANDOM_SECURITY_MEDIUM 1
-#define RANDOM_SECURITY_STRONG 2
-
/**
+ * \name Security level definition
+ *
+ *
* Configure the security level required by the application.
- *
+ *
* Application developers are suggested to keep the strongest
* setting (default) unless there are memory or code size issues.
- *
+ *
* Available settings are:
- *
+ *
* * \a RANDOM_SECURITY_STRONG: The random library will use
* an entropy pool, automatically feeded by drivers, to gather
* entropy from hardware sources. Data from the pool will
* be used to reseed a secure random number generator. Moreover,
* the generator will be automatically initialised
- * with enough entropy to generate safe random numbers even
+ * with enough entropy to generate safe random numbers even
* immediately after hw reset.
* The overall structure is the same as used by modern
- * desktop PCs for generating secure random numbers.
- *
+ * desktop PCs for generating secure random numbers.
+ *
* * \a RANDOM_SECURITY_MEDIUM: This intermediate settings will
- * avoid usage of an entropy pool, to reduce memory and code
+ * avoid usage of an entropy pool, to reduce memory and code
* usage. The security of this settings relies only on the
* good behaviour of the random number generator (even though
* it will be well-seeded at startup).
- *
+ *
* * \a RANDOM_SECURITY_MINIMUM: This is the lighter setting that
* allows minimal memory and code usage, and it suggested only
* for extremely constrained systems, that only generates few
* random numbers. Even if the generator is still secure on
* paper, its seeding will not be safe (though still entropic
* to allow different sequences to be generated after each reset).
+ *
+ * $WIZ$ random_level = "RANDOM_SECURITY_MINIMUM", "RANDOM_SECURITY_MEDIUM", "RANDOM_SECURITY_STRONG"
+ * \{
*/
-#define RANDOM_SECURITY_LEVEL RANDOM_SECURITY_MEDIUM // FIXME: RANDOM_SECURITY_STRONG
-
+#define RANDOM_SECURITY_MINIMUM 0
+#define RANDOM_SECURITY_MEDIUM 1
+#define RANDOM_SECURITY_STRONG 2
+/** \} */
void random_init(void);
{
uint8_t x;
random_gen(&x, 2);
- return x;
+ return x;
}
INLINE uint32_t random_gen32(void)
{
uint8_t x;
random_gen(&x, 4);
- return x;
+ return x;
}
#endif /* SEC_RANDOM_H */