xref: /freebsd/lib/libc/gen/getentropy.3 (revision 473681a1a506daafdae17900fcb42830e0dcb26e)
1e9ac2743SConrad Meyer.\"	$OpenBSD: getentropy.2,v 1.8 2015/01/31 00:20:12 schwarze Exp $
2e9ac2743SConrad Meyer.\"
3e9ac2743SConrad Meyer.\" Copyright (c) 2018 Conrad Meyer <cem@FreeBSD.org>
4e9ac2743SConrad Meyer.\" Copyright (c) 2014 Theo de Raadt
5e9ac2743SConrad Meyer.\"
6e9ac2743SConrad Meyer.\" Permission to use, copy, modify, and distribute this software for any
7e9ac2743SConrad Meyer.\" purpose with or without fee is hereby granted, provided that the above
8e9ac2743SConrad Meyer.\" copyright notice and this permission notice appear in all copies.
9e9ac2743SConrad Meyer.\"
10e9ac2743SConrad Meyer.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11e9ac2743SConrad Meyer.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12e9ac2743SConrad Meyer.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13e9ac2743SConrad Meyer.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14e9ac2743SConrad Meyer.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15e9ac2743SConrad Meyer.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16e9ac2743SConrad Meyer.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17e9ac2743SConrad Meyer.\"
18*473681a1SEd Maste.Dd January 17, 2025
19e9ac2743SConrad Meyer.Dt GETENTROPY 3
20e9ac2743SConrad Meyer.Os
21e9ac2743SConrad Meyer.Sh NAME
22e9ac2743SConrad Meyer.Nm getentropy
23e9ac2743SConrad Meyer.Nd get entropy
24e9ac2743SConrad Meyer.Sh LIBRARY
25e9ac2743SConrad Meyer.Lb libc
26e9ac2743SConrad Meyer.Sh SYNOPSIS
27e9ac2743SConrad Meyer.In unistd.h
28e9ac2743SConrad Meyer.Ft int
29e9ac2743SConrad Meyer.Fn getentropy "void *buf" "size_t buflen"
30e9ac2743SConrad Meyer.Sh DESCRIPTION
31e9ac2743SConrad Meyer.Fn getentropy
32e9ac2743SConrad Meyerfills a buffer with high-quality random data.
33e9ac2743SConrad Meyer.Pp
34e9ac2743SConrad MeyerThe maximum
35e9ac2743SConrad Meyer.Fa buflen
36e9ac2743SConrad Meyerpermitted is 256 bytes.
37e9ac2743SConrad Meyer.Pp
38e9ac2743SConrad MeyerIf it does not produce an error,
39e9ac2743SConrad Meyer.Fn getentropy
40e9ac2743SConrad Meyeralways provides the requested number of bytes of random data.
41e9ac2743SConrad Meyer.Pp
42e9ac2743SConrad MeyerSimilar to reading from
43e9ac2743SConrad Meyer.Pa /dev/urandom
44e9ac2743SConrad Meyerjust after boot,
45e9ac2743SConrad Meyer.Fn getentropy
46e9ac2743SConrad Meyermay block until the system has collected enough entropy to seed the CSPRNG.
47e9ac2743SConrad Meyer.Sh IMPLEMENTATION NOTES
48e9ac2743SConrad MeyerThe
49e9ac2743SConrad Meyer.Fn getentropy
50e9ac2743SConrad Meyerfunction is implemented using
51e9ac2743SConrad Meyer.Xr getrandom 2 .
52e9ac2743SConrad Meyer.Sh RETURN VALUES
53e9ac2743SConrad Meyer.Rv -std
54e9ac2743SConrad Meyer.Sh ERRORS
55e9ac2743SConrad Meyer.Fn getentropy
56e9ac2743SConrad Meyerwill succeed unless:
57e9ac2743SConrad Meyer.Bl -tag -width Er
58e9ac2743SConrad Meyer.It Bq Er EFAULT
59e9ac2743SConrad MeyerThe
60e9ac2743SConrad Meyer.Fa buf
61e9ac2743SConrad Meyerparameter points to an
62e9ac2743SConrad Meyerinvalid address.
63*473681a1SEd Maste.It Bq Er EINVAL
64*473681a1SEd MasteToo many bytes requested.
65e9ac2743SConrad Meyer.El
66e9ac2743SConrad Meyer.Sh SEE ALSO
67e9ac2743SConrad Meyer.Xr getrandom 2 ,
68eca1933aSEnji Cooper.Xr arc4random 3 ,
69e9ac2743SConrad Meyer.Xr random 4
70e9ac2743SConrad Meyer.Sh STANDARDS
71e9ac2743SConrad Meyer.Fn getentropy
72*473681a1SEd Masteconforms to
7395b71a65SEd Maste.St -p1003.1-2024 .
74e9ac2743SConrad Meyer.Sh HISTORY
75e9ac2743SConrad MeyerThe
76e9ac2743SConrad Meyer.Fn getentropy
77e9ac2743SConrad Meyerfunction appeared in
78e9ac2743SConrad Meyer.Ox 5.6 .
79e9ac2743SConrad MeyerThe
80e9ac2743SConrad Meyer.Fx
81e9ac2743SConrad Meyerlibc compatibility shim first appeared in
82e9ac2743SConrad Meyer.Fx 12.0 .
83