diff --git a/Makefile.dep b/Makefile.dep index fac5838696..f89090bbb5 100644 --- a/Makefile.dep +++ b/Makefile.dep @@ -661,6 +661,10 @@ ifneq (,$(filter random,$(USEMODULE))) USEMODULE += hashes endif + ifeq (,$(filter puf_sram,$(USEMODULE))) + FEATURES_OPTIONAL += periph_hwrng + endif + USEMODULE += luid endif diff --git a/sys/random/random.c b/sys/random/random.c index 3d356c8dca..ffd23fcfff 100644 --- a/sys/random/random.c +++ b/sys/random/random.c @@ -1,5 +1,6 @@ /** * Copyright (C) 2017 Kaspar Schleiser + * 2019 Freie Universität Berlin * * This file is subject to the terms and conditions of the GNU Lesser * General Public License v2.1. See the file LICENSE in the top level @@ -14,6 +15,7 @@ * @brief PRNG seeding * * @author Kaspar Schleiser + * @author Hauke Petersen * @} */ @@ -25,6 +27,9 @@ #ifdef MODULE_PUF_SRAM #include "puf_sram.h" #endif +#ifdef MODULE_PERIPH_HWRNG +#include "periph/hwrng.h" +#endif #ifdef MODULE_PERIPH_CPUID #include "periph/cpuid.h" #endif @@ -41,6 +46,8 @@ void auto_init_random(void) LOG_WARNING("random: PUF SEED not fresh\n"); } seed = puf_sram_seed; +#elif defined (MODULE_PERIPH_HWRNG) + hwrng_read(&seed, 4); #elif defined (MODULE_PERIPH_CPUID) luid_get(&seed, 4); #else