diff options
Diffstat (limited to 'init.d/urandom.in')
| -rw-r--r-- | init.d/urandom.in | 41 | 
1 files changed, 23 insertions, 18 deletions
| diff --git a/init.d/urandom.in b/init.d/urandom.in index 0d6ab66e..cda431fd 100644 --- a/init.d/urandom.in +++ b/init.d/urandom.in @@ -1,5 +1,5 @@  #!@SBINDIR@/openrc-run -# Copyright (c) 2007-2015 The OpenRC Authors. +# Copyright (c) 2007-2022 The OpenRC Authors.  # See the Authors file at the top-level directory of this distribution and  # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS  # @@ -9,7 +9,10 @@  # This file may not be copied, modified, propagated, or distributed  # except according to the terms contained in the LICENSE file. -: ${urandom_seed:=${URANDOM_SEED:-/var/lib/misc/random-seed}} +export SEEDRNG_SEED_DIR="${seed_dir:-/var/lib/seedrng}" +export SEEDRNG_LOCK_FILE="${lock_file:-/var/run/seedrng.lock}" +export SEEDRNG_SKIP_CREDIT="${skip_credit:-false}" +: ${urandom_seed:=${SEEDRNG_SEED_DIR}/../misc/random-seed}  description="Initializes the random number generator."  depend() @@ -21,33 +24,35 @@ depend()  save_seed()  { -	local psz=1 - -	if [ -e /proc/sys/kernel/random/poolsize ]; then -		: $(( psz = $(cat /proc/sys/kernel/random/poolsize) / 4096 )) -	fi -  	(	# sub shell to prevent umask pollution  		umask 077 -		dd if=/dev/urandom of="$urandom_seed" count=${psz} 2>/dev/null +		dd if=/dev/urandom of="$urandom_seed" count=1 2>/dev/null  	)  }  start()  { -	[ -c /dev/urandom ] || return -	if [ -f "$urandom_seed" ]; then -		ebegin "Initializing random number generator" -		cat "$urandom_seed" > /dev/urandom -		eend $? "Error initializing random number generator" +	if [ "$RC_UNAME" = Linux ]; then +		seedrng +	else +		[ -c /dev/urandom ] || return +		if [ -f "$urandom_seed" ]; then +			ebegin "Initializing random number generator" +			cat "$urandom_seed" > /dev/urandom +			eend $? "Error initializing random number generator" +		fi +		rm -f "$urandom_seed" && save_seed  	fi -	rm -f "$urandom_seed" && save_seed  	return 0  }  stop()  { -	ebegin "Saving random seed" -	save_seed -	eend $? "Failed to save random seed" +	if [ "$RC_UNAME" = Linux ]; then +		seedrng +	else +		ebegin "Saving random seed" +		save_seed +		eend $? "Failed to save random seed" +	fi  } | 
