| // 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 rand | |
| import ( | |
| "internal/syscall/unix" | |
| ) | |
| func init() { | |
| altGetRandom = getRandomOpenBSD | |
| } | |
| func getRandomOpenBSD(p []byte) (ok bool) { | |
| // getentropy(2) returns a maximum of 256 bytes per call | |
| for i := 0; i < len(p); i += 256 { | |
| end := i + 256 | |
| if len(p) < end { | |
| end = len(p) | |
| } | |
| err := unix.GetEntropy(p[i:end]) | |
| if err != nil { | |
| return false | |
| } | |
| } | |
| return true | |
| } |