github.com/gidoBOSSftw5731/go/src@v0.0.0-20210226122457-d24b0edbf019/crypto/rand/rand_js.go (about) 1 // Copyright 2018 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 //go:build js && wasm 6 // +build js,wasm 7 8 package rand 9 10 import "syscall/js" 11 12 func init() { 13 Reader = &reader{} 14 } 15 16 var jsCrypto = js.Global().Get("crypto") 17 var uint8Array = js.Global().Get("Uint8Array") 18 19 // reader implements a pseudorandom generator 20 // using JavaScript crypto.getRandomValues method. 21 // See https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues. 22 type reader struct{} 23 24 func (r *reader) Read(b []byte) (int, error) { 25 a := uint8Array.New(len(b)) 26 jsCrypto.Call("getRandomValues", a) 27 js.CopyBytesToGo(b, a) 28 return len(b), nil 29 }