hc
2024-10-12 a5969cabbb4660eab42b6ef0412cbbd1200cf14d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/bin/sh
### BEGIN INIT INFO
# Provides:          urandom
# Required-Start:    $local_fs mountvirtfs
# Required-Stop:     $local_fs
# Default-Start:     S
# Default-Stop:      0 6
# Short-Description: Save and restore the random seed
# Description:       Save the random seed on shutdown and restore it on boot,
#                    to ensure that the seed isn't predicable on startup
#                    (because the boot process is predictable)
### END INIT INFO
 
test -c /dev/urandom || exit 0
 
RANDOM_SEED_FILE=/var/lib/urandom/random-seed
 
. /etc/default/rcS
[ -f /etc/default/urandom ] && . /etc/default/urandom
 
case "$1" in
   start|"")
       test "$VERBOSE" != no && echo "Initializing random number generator..."
       # Load and then save 512 bytes, which is the size of the entropy
       # pool. Also load the current date, in case the seed file is
       # empty.
       ( date +%s.%N; [ -f "$RANDOM_SEED_FILE" ] && cat "$RANDOM_SEED_FILE" ) \
           >/dev/urandom
       rm -f "$RANDOM_SEED_FILE"
       umask 077
       dd if=/dev/urandom of=$RANDOM_SEED_FILE count=1 \
           >/dev/null 2>&1 || echo "urandom start: failed."
       umask 022
       ;;
   stop)
       # Carry a random seed from shut-down to start-up;
       # see documentation in linux/drivers/char/random.c
       test "$VERBOSE" != no && echo "Saving random seed..."
       umask 077
       dd if=/dev/urandom of=$RANDOM_SEED_FILE count=1 \
           >/dev/null 2>&1 || echo "urandom stop: failed."
       ;;
   *)
       echo "Usage: urandom {start|stop}" >&2
       exit 1
       ;;
esac
 
exit 0