mirror of
https://github.com/autc04/Retro68.git
synced 2024-09-08 20:55:01 +00:00
29 lines
702 B
Go
29 lines
702 B
Go
// Copyright 2018 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
//go:build js && wasm
|
|
|
|
package rand
|
|
|
|
import "syscall/js"
|
|
|
|
func init() {
|
|
Reader = &reader{}
|
|
}
|
|
|
|
var jsCrypto = js.Global().Get("crypto")
|
|
var uint8Array = js.Global().Get("Uint8Array")
|
|
|
|
// reader implements a pseudorandom generator
|
|
// using JavaScript crypto.getRandomValues method.
|
|
// See https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues.
|
|
type reader struct{}
|
|
|
|
func (r *reader) Read(b []byte) (int, error) {
|
|
a := uint8Array.New(len(b))
|
|
jsCrypto.Call("getRandomValues", a)
|
|
js.CopyBytesToGo(b, a)
|
|
return len(b), nil
|
|
}
|