summaryrefslogtreecommitdiff
path: root/sys-apps/systemd/files
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2022-07-19 20:39:44 +0100
committerV3n3RiX <venerix@koprulu.sector>2022-07-19 20:39:44 +0100
commit54eca75a4e3e380e1d386f4d235baeb7d4ff332e (patch)
tree5f59a3e7b9069e5ab5ae4c5b46184560dc318692 /sys-apps/systemd/files
parentfc7e841956ae3cc385629bf33433de23a6d04db6 (diff)
gentoo auto-resync : 19:07:2022 - 20:39:44
Diffstat (limited to 'sys-apps/systemd/files')
-rw-r--r--sys-apps/systemd/files/250.4-random-seed-hash.patch74
1 files changed, 0 insertions, 74 deletions
diff --git a/sys-apps/systemd/files/250.4-random-seed-hash.patch b/sys-apps/systemd/files/250.4-random-seed-hash.patch
deleted file mode 100644
index efaa8cdfcaac..000000000000
--- a/sys-apps/systemd/files/250.4-random-seed-hash.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-https://github.com/systemd/systemd-stable/commit/ed46ff2bd6ca21d83cae4a94c3ed752ad1b64cce
-
-From: "Jason A. Donenfeld" <Jason@zx2c4.com>
-Date: Mon, 3 Jan 2022 18:11:32 +0100
-Subject: [PATCH] random-seed: hash together old seed and new seed before
- writing out file
-
-If we're consuming an on-disk seed, we usually write out a new one after
-consuming it. In that case, we might be at early boot and the randomness
-could be rather poor, and the kernel doesn't guarantee that it'll use
-the new randomness right away for us. In order to prevent the new
-entropy from getting any worse, hash together the old seed and the new
-seed, and replace the final bytes of the new seed with the hash output.
-This way, entropy strictly increases and never regresses.
-
-(cherry picked from commit da2862ef06f22fc8d31dafced6d2d6dc14f2ee0b)
---- a/src/random-seed/random-seed.c
-+++ b/src/random-seed/random-seed.c
-@@ -26,6 +26,7 @@
- #include "random-util.h"
- #include "string-util.h"
- #include "sync-util.h"
-+#include "sha256.h"
- #include "util.h"
- #include "xattr-util.h"
-
-@@ -106,9 +107,11 @@ static int run(int argc, char *argv[]) {
- _cleanup_close_ int seed_fd = -1, random_fd = -1;
- bool read_seed_file, write_seed_file, synchronous;
- _cleanup_free_ void* buf = NULL;
-+ struct sha256_ctx hash_state;
-+ uint8_t hash[32];
- size_t buf_size;
- struct stat st;
-- ssize_t k;
-+ ssize_t k, l;
- int r;
-
- log_setup();
-@@ -242,6 +245,16 @@ static int run(int argc, char *argv[]) {
- if (r < 0)
- log_error_errno(r, "Failed to write seed to /dev/urandom: %m");
- }
-+ /* If we're going to later write out a seed file, initialize a hash state with
-+ * the contents of the seed file we just read, so that the new one can't regress
-+ * in entropy. */
-+ if (write_seed_file) {
-+ sha256_init_ctx(&hash_state);
-+ if (k < 0)
-+ k = 0;
-+ sha256_process_bytes(&k, sizeof(k), &hash_state);
-+ sha256_process_bytes(buf, k, &hash_state);
-+ }
- }
-
- if (write_seed_file) {
-@@ -277,6 +290,17 @@ static int run(int argc, char *argv[]) {
- "Got EOF while reading from /dev/urandom.");
- }
-
-+ /* If we previously read in a seed file, then hash the new seed into the old one,
-+ * and replace the last 32 bytes of the seed with the hash output, so that the
-+ * new seed file can't regress in entropy. */
-+ if (read_seed_file) {
-+ sha256_process_bytes(&k, sizeof(k), &hash_state);
-+ sha256_process_bytes(buf, k, &hash_state);
-+ sha256_finish_ctx(&hash_state, hash);
-+ l = MIN(k, 32);
-+ memcpy((uint8_t *)buf + k - l, hash, l);
-+ }
-+
- r = loop_write(seed_fd, buf, (size_t) k, false);
- if (r < 0)
- return log_error_errno(r, "Failed to write new random seed file: %m");