blob: 02bac1be00ccfeb0c45c8a50eba456b11385c5bc [file] [log] [blame]
// Copyright 2023 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.
//go:build netbsd
package unix
import (
"syscall"
"unsafe"
)
const (
_CTL_KERN = 1
_KERN_ARND = 81
)
func GetEntropy(p []byte) error {
mib := [2]uint32{_CTL_KERN, _KERN_ARND}
n := uintptr(len(p))
_, _, errno := syscall.Syscall6(
syscall.SYS___SYSCTL,
uintptr(unsafe.Pointer(&mib[0])),
uintptr(len(mib)),
uintptr(unsafe.Pointer(&p[0])), // olddata
uintptr(unsafe.Pointer(&n)), // &oldlen
uintptr(unsafe.Pointer(nil)), // newdata
0) // newlen
if errno != 0 {
return syscall.Errno(errno)
}
if n != uintptr(len(p)) {
return syscall.EINVAL
}
return nil
}