xref: /netbsd-src/lib/libc/gen/getentropy.3 (revision 7d62b00eb9ad855ffcd7da46b41e23feb5476fac)
1.\"	$NetBSD: getentropy.3,v 1.4 2022/05/31 13:42:59 riastradh Exp $ $
2.\"
3.\" Copyright (c) 2020 The NetBSD Foundation, Inc.
4.\" All rights reserved.
5.\"
6.\" This code is derived from software contributed to The NetBSD Foundation
7.\" by Nia Alarie.
8.\"
9.\" Redistribution and use in source and binary forms, with or without
10.\" modification, are permitted provided that the following conditions
11.\" are met:
12.\" 1. Redistributions of source code must retain the above copyright
13.\"    notice, this list of conditions and the following disclaimer.
14.\" 2. Redistributions in binary form must reproduce the above copyright
15.\"    notice, this list of conditions and the following disclaimer in the
16.\"    documentation and/or other materials provided with the distribution.
17.\"
18.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
19.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
20.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21.\" PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
22.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28.\" POSSIBILITY OF SUCH DAMAGE.
29.\"
30.Dd May 1, 2020
31.Dt GETENTROPY 3
32.Os
33.Sh NAME
34.Nm getentropy
35.Nd fill a buffer with high quality random data
36.Sh LIBRARY
37.Lb libc
38.Sh SYNOPSIS
39.In unistd.h
40.Ft int
41.Fn getentropy "void *buf" "size_t buflen"
42.In limits.h
43.Li #define GETENTROPY_MAX	256
44.Sh DESCRIPTION
45.Pp
46The
47.Fn getentropy
48function fills a buffer with high quality random data, suitable for seeding
49cryptographically secure psuedorandom number generators.
50.Pp
51.Fn getentropy
52is only intended for seeding random number generators and is not intended
53for use by regular code which simply needs secure random data.
54For this purpose, please use
55.Xr arc4random 3 .
56.Pp
57The maximum value for
58.Li buflen
59is 256 bytes.
60.Sh IMPLEMENTATION NOTES
61.Fn getentropy
62reads from the
63.Xr sysctl 7
64variable
65.Li kern.arandom .
66.Sh RETURN VALUES
67.Rv -std getentropy
68.Sh ERRORS
69.Fn getentropy
70will succeed unless:
71.Bl -tag -width Er
72.It Bq Er EFAULT
73The
74.Fa buf
75argument points to an invalid memory address.
76.It Bq Er EINVAL
77More than 256 bytes were requested.
78.Sh SEE ALSO
79.Xr arc4random 3 ,
80.Xr rnd 4
81.Sh STANDARDS
82The
83.Fn getentropy
84function is non-standard.
85However, it is likely to be included in the next revision of POSIX.
86.Sh HISTORY
87The
88.Fn getentropy
89function first appeared in
90.Ox 5.6 ,
91then in
92.Fx 12.0 ,
93and
94.Nx 10 .
95