// Copyright 2016 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. package sysrand import "internal/syscall/unix" func read(b []byte) error { for len(b) > 0 { size := len(b) // "Returns independent uniformly distributed bytes at random each time, // as many as requested up to 256, derived from the system entropy pool; // see rnd(4)." -- man sysctl(7) if size > 256 { size = 256 } if err := unix.Arandom(b[:size]); err != nil { return err } b = b[size:] } return nil }