Skip to content

Instantly share code, notes, and snippets.

@deadprogram
Created January 17, 2023 06:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save deadprogram/b39ffffc6ddc035350a1d3b26cf9c71f to your computer and use it in GitHub Desktop.
Save deadprogram/b39ffffc6ddc035350a1d3b26cf9c71f to your computer and use it in GitHub Desktop.
// NOT true random number generation on RP2040 but good enough for quick demos.
// Do not use in important production systems.
// Seriously, don't.
package main
import (
"machine"
"crypto/rand"
)
func init() {
rand.Reader = &reader{}
}
type reader struct {}
func (r *reader) Read(b []byte) (n int, err error) {
if len(b) == 0 {
return
}
var randomByte uint32
for i := range b {
if i%4 == 0 {
randomByte, err = machine.GetRNG()
if err != nil {
return n, err
}
} else {
randomByte >>= 8
}
b[i] = byte(randomByte)
}
return len(b), nil
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment