From d419cc11bf095d146dd2638ca99c0b278a6555ff Mon Sep 17 00:00:00 2001 From: Ayke van Laethem Date: Sun, 28 Apr 2024 14:36:27 +0200 Subject: [PATCH] simulator: add support for GetRNG This is needed to be able to simulate the Gopher Badge code: https://github.com/conejoninja/gopherbadge --- src/machine/machine_generic.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/machine/machine_generic.go b/src/machine/machine_generic.go index fa12b4b53d..4f040fdbbd 100644 --- a/src/machine/machine_generic.go +++ b/src/machine/machine_generic.go @@ -2,6 +2,10 @@ package machine +import ( + "crypto/rand" +) + // Dummy machine package that calls out to external functions. const deviceName = "generic" @@ -253,3 +257,13 @@ var ( sercomSPIM6 = SPI{6} sercomSPIM7 = SPI{7} ) + +// GetRNG returns 32 bits of random data from the WASI random source. +func GetRNG() (uint32, error) { + var buf [4]byte + _, err := rand.Read(buf[:]) + if err != nil { + return 0, err + } + return uint32(buf[0])<<0 | uint32(buf[1])<<8 | uint32(buf[2])<<16 | uint32(buf[3])<<24, nil +}