...

Source file src/pkg/crypto/rand/rand.go

     1	// Copyright 2010 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	// Package rand implements a cryptographically secure
     6	// random number generator.
     7	package rand
     8	
     9	import "io"
    10	
    11	// Reader is a global, shared instance of a cryptographically
    12	// secure random number generator.
    13	//
    14	// On Linux and FreeBSD, Reader uses getrandom(2) if available, /dev/urandom otherwise.
    15	// On OpenBSD, Reader uses getentropy(2).
    16	// On other Unix-like systems, Reader reads from /dev/urandom.
    17	// On Windows systems, Reader uses the CryptGenRandom API.
    18	// On Wasm, Reader uses the Web Crypto API.
    19	var Reader io.Reader
    20	
    21	// Read is a helper function that calls Reader.Read using io.ReadFull.
    22	// On return, n == len(b) if and only if err == nil.
    23	func Read(b []byte) (n int, err error) {
    24		return io.ReadFull(Reader, b)
    25	}
    26	
    27	func warnBlocked() {
    28		println("crypto/rand: blocked for 60 seconds waiting to read random data from the kernel")
    29	}
    30	

View as plain text