git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 12/12] config.mak.uname: add a note about CSPRNG_METHOD for Linux

From
Ramsay Jones <ramsay@ramsayjones.plus.com>
Date
Mar 15, 2025, 02:49 UTC
Message-ID
<8c8e16ae-87a2-44bf-a87b-7422eb04fec2@ramsayjones.plus.com>

Commit 05cd988dce ("wrapper: add a helper to generate numbers from a CSPRNG", 2022-01-17) added a csprng_bytes() function which used one of several interfaces to provide a source of cryptographically secure pseudorandom numbers. The CSPRNG_METHOD make variable was provided to determine the choice of available 'backends' for the source of random bytes.

Commit 05cd988dce did not set CSPRNG_METHOD in the Linux section of the config.mak.uname file, so it defaults to using '/dev/urandom' as the source of random bytes. The 'backend' values which could be used on Linux, in order of preference, are 'arc4random', 'getrandom' or 'getentropy' ('openssl' is an option, but seems to be discouraged).

The arc4random routines (ar4random_buf() is the one actually used) were added to glibc in version 2.36, while both getrandom() and getentropy() were included in 2.25. So, some of the more up-to-date distributions of Linux (eg Debian 12, Ubuntu 24.04) would be able to use the preferred 'arc4random' setting.

If the meson build system is used on a newer platform, then they will be configured to use 'arc4random', whereas the make build will currently default to using '/dev/urandom'. Add a note to the config.mak.uname file, in the Linux section, to prompt make users to override CSPRNG_METHOD in the config.mak file, if appropriate.

Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
---
 config.mak.uname | 2 ++
 1 file changed, 2 insertions(+)
diff --git a/config.mak.uname b/config.mak.uname
index 4f6770a5f4..1a897bd022 100644
--- a/config.mak.uname
+++ b/config.mak.uname
@@ -50,6 +50,8 @@ ifeq ($(uname_S),Linux)
 	HAVE_ALLOCA_H = YesPlease
 	# override in config.mak if you have glibc >= 2.38
 	NO_STRLCPY = YesPlease
+	# set to arc4random (in config.mak) if you have glibc >= 2.36
+	CSPRNG_METHOD =
 	HAVE_PATHS_H = YesPlease
 	LIBC_CONTAINS_LIBINTL = YesPlease
 	HAVE_DEV_TTY = YesPlease
-- 
2.49.0
Next: brian m. carlson
Message 1 of 10 in “config.mak.uname: add a note about CSPRNG_METHOD for Linux”
  1. 12/12 config.mak.uname: add a note about CSPRNG_METHOD for LinuxRamsay Jones, Mar 15, 2025
  2. brian m. carlsonMar 16, 2025
  3. Junio C HamanoMar 16, 2025
  4. Ramsay JonesMar 16, 2025
  5. Patrick SteinhardtMar 19, 2025
  6. Ramsay JonesMar 20, 2025
  7. Patrick SteinhardtMar 20, 2025
  8. Ramsay JonesMar 20, 2025
  9. Ramsay JonesMar 16, 2025
  10. brian m. carlsonMar 16, 2025

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.