From 64489e8b444efde859e9f048b17707e5da88a983 Mon Sep 17 00:00:00 2001
From: Hauke Petersen <hauke.petersen@fu-berlin.de>
Date: Fri, 8 Feb 2019 14:41:57 +0100
Subject: [PATCH] sys/random: add hwrng as seed source (if available)

---
 Makefile.dep        | 4 ++++
 sys/random/random.c | 7 +++++++
 2 files changed, 11 insertions(+)

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 <kaspar@schleiser.de>
+ *               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 <kaspar@schleiser.de>
+ * @author      Hauke Petersen <hauke.petersen@fu-berlin.de>
  * @}
  */
 
@@ -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
-- 
GitLab