Source file src/crypto/internal/sysrand/rand_netbsd.go

     1  // Copyright 2016 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 sysrand
     6  
     7  import "internal/syscall/unix"
     8  
     9  func read(b []byte) error {
    10  	for len(b) > 0 {
    11  		size := len(b)
    12  		// "Returns independent uniformly distributed bytes at random each time,
    13  		// as many as requested up to 256, derived from the system entropy pool;
    14  		// see rnd(4)." -- man sysctl(7)
    15  		if size > 256 {
    16  			size = 256
    17  		}
    18  		if err := unix.Arandom(b[:size]); err != nil {
    19  			return err
    20  		}
    21  		b = b[size:]
    22  	}
    23  	return nil
    24  }
    25  

View as plain text