From cd389833d4d11c53b5ea07985e24d34a5ca5df68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B6nke=20Holz?= Date: Thu, 22 Feb 2024 20:02:19 +0100 Subject: [PATCH] Kernel/riscv64: Use TimeManagement as an entropy source for now Better entropy will require us to parse the riscv,isa devicetree property and then use the Zkr extension, if present. --- Kernel/Security/Random.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Kernel/Security/Random.cpp b/Kernel/Security/Random.cpp index b785dadb922..d4b02c27c40 100644 --- a/Kernel/Security/Random.cpp +++ b/Kernel/Security/Random.cpp @@ -77,6 +77,15 @@ UNMAP_AFTER_INIT KernelRng::KernelRng() current_time += 0x40b2u; } } +#elif ARCH(RISCV64) + // Fallback to TimeManagement as entropy + dmesgln("KernelRng: Using bad entropy source TimeManagement"); + auto current_time = static_cast(TimeManagement::now().milliseconds_since_epoch()); + for (size_t i = 0; i < pool_count * reseed_threshold; ++i) { + add_random_event(current_time, i % 32); + current_time *= 0x574au; + current_time += 0x40b2u; + } #else dmesgln("KernelRng: No entropy source available!"); #endif