From e02671f1de02798ea4596becfb32ce37d5e3b6a3 Mon Sep 17 00:00:00 2001
From: koalo <koalo@koalo.de>
Date: Wed, 21 Aug 2019 00:18:05 +0200
Subject: [PATCH] feat(pycardium): Seed urandom with TRNG

---
 pycardium/mpconfigport.h |  4 ++++
 pycardium/mphalport.c    | 11 +++++++++++
 2 files changed, 15 insertions(+)

diff --git a/pycardium/mpconfigport.h b/pycardium/mpconfigport.h
index d6affbd4..a1c88a74 100644
--- a/pycardium/mpconfigport.h
+++ b/pycardium/mpconfigport.h
@@ -23,6 +23,9 @@
 
 #define MICROPY_ENABLE_SOURCE_LINE          (1)
 
+/* urandom init */
+int mp_hal_trng_read_int(void);
+
 /* Builtin function and modules */
 #define MICROPY_PY_ALL_SPECIAL_METHODS      (1)
 #define MICROPY_PY_BUILTINS_HELP            (1)
@@ -32,6 +35,7 @@
 #define MICROPY_PY_UJSON                    (1)
 #define MICROPY_PY_URANDOM                  (1)
 #define MICROPY_PY_URANDOM_EXTRA_FUNCS      (1)
+#define MICROPY_PY_URANDOM_SEED_INIT_FUNC   (mp_hal_trng_read_int())
 #define MICROPY_PY_URE                      (1)
 #define MICROPY_PY_URE_MATCH_GROUPS         (1)
 #define MICROPY_PY_URE_MATCH_SPAN_START_END (1)
diff --git a/pycardium/mphalport.c b/pycardium/mphalport.c
index 1fa75b64..60cd9df0 100644
--- a/pycardium/mphalport.c
+++ b/pycardium/mphalport.c
@@ -152,3 +152,14 @@ void NORETURN nlr_jump_fail(void *val)
 
 	Reset_Handler();
 }
+
+/******************************************************************************
+ * TRNG
+ */
+
+int mp_hal_trng_read_int(void)
+{
+	int result;
+	epic_trng_read((uint8_t *)&result, sizeof(result));
+	return result;
+}
-- 
GitLab