mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-07 04:23:41 +00:00
8135be4e90
TODO: Remove the go.mod/go.sum in internal/tools once doing so doesn't break CI (e.g. once we drop support for go 1.19) * builder/cc1as.h: fix typo found by 'make spell' * GNUmakefile: remove exception for inbetween, fix instance now found by 'make spell' * GNUmakefile: remove exception for programmmer, fix instance now found by 'make spell' * go.mod: use updated misspell. GNUmakefile: add spellfix target, use it. * ignore directories properly when invoking spellchecker. * make spell: give internal/tools its own go.mod, as misspell requires newer go * make lint: depend on tools and run the installed revive (which was perhaps implied by the change that added revive to internal/tools, but not required in GNUmakefile until we gave internal/tools its own temporary go.mod) * .github: now that 'make spell' works well, run it from CI * GNUmakefile: make spell now aborts if it finds misspelt words, so what it finds doesn't get lost in CI logs * GNUmakefile: tools: avoid -C option on go generate to make test-llvm15-go119 circleci job happy, see https://cs.opensource.google/go/go/+/2af48cbb7d85e5fdc635e75b99f949010c607786 * internal/tools/go.mod: fix format of go version to leave out patchlevel, else go complains.
32 lines
747 B
Go
32 lines
747 B
Go
//go:build darwin || wasip1 || wasip2 || wasm
|
|
|
|
// This implementation of crypto/rand uses the arc4random_buf function
|
|
// (available on both MacOS and WASI) to generate random numbers.
|
|
//
|
|
// Note: arc4random_buf (unlike what the name suggests) does not use the insecure
|
|
// RC4 cipher. Instead, it uses a high-quality cipher, varying by the libc
|
|
// implementation.
|
|
|
|
package rand
|
|
|
|
import "unsafe"
|
|
|
|
func init() {
|
|
Reader = &reader{}
|
|
}
|
|
|
|
type reader struct {
|
|
}
|
|
|
|
func (r *reader) Read(b []byte) (n int, err error) {
|
|
if len(b) != 0 {
|
|
libc_arc4random_buf(unsafe.Pointer(&b[0]), uint(len(b)))
|
|
}
|
|
return len(b), nil
|
|
}
|
|
|
|
// void arc4random_buf(void *buf, size_t buflen);
|
|
//
|
|
//export arc4random_buf
|
|
func libc_arc4random_buf(buf unsafe.Pointer, buflen uint)
|