xref: /netbsd-src/lib/libc/gen/getentropy.3 (revision 181254a7b1bdde6873432bffef2d2decc4b5c22f)
1.\"	$NetBSD: getentropy.3,v 1.2 2020/05/07 12:55:06 wiz 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.Sh DESCRIPTION
43The
44.Fn getentropy
45function fills a buffer with high quality random data, suitable for seeding
46cryptographically secure pseudo-random number generators.
47.Pp
48.Fn getentropy
49is only intended for seeding random number generators and is not intended
50for use by regular code which simply needs secure random data.
51For this purpose, please use
52.Xr arc4random 3 .
53.Pp
54The maximum value for
55.Li buflen
56is 256 bytes.
57.Sh IMPLEMENTATION NOTES
58.Fn getentropy
59reads from the
60.Xr sysctl 7
61variable
62.Li kern.arandom .
63.Sh RETURN VALUES
64The
65.Fn getentropy
66function returns 0 on success, and \-1 if an error occurred.
67.Sh ERRORS
68.Fn getentropy
69will succeed unless:
70.Bl -tag -width Er
71.It Bq Er EFAULT
72The
73.Fa buf
74argument points to an invalid memory address.
75.It Bq Er EIO
76Too many bytes were requested.
77.El
78.Sh SEE ALSO
79.Xr arc4random 3 ,
80.Xr rnd 4
81.Sh STANDARDS
82The
83.Fn getentropy
84function is non-standard.
85.Sh HISTORY
86The
87.Fn getentropy
88function first appeared in
89.Ox 5.6 ,
90then in
91.Fx 12.0 ,
92and
93.Nx 10 .
94