openwrt/package/base-files/files/etc/init.d/urandom_seed

30 lines
674 B
Plaintext
Raw Normal View History

#!/bin/sh /etc/rc.common
START=99
EXTRA_COMMANDS="save"
_log() {
logger -t urandom_seed "$1"
}
_save() {
touch $1.tmp || { _log "touch $1 failed"; return; }
chown root:root $1.tmp || { _log "chown $1 failed"; return; }
chmod 600 $1.tmp || { _log "chmod $1 failed"; return; }
getrandom 512 > $1.tmp || { _log "getrandom failed"; return; }
mv $1.tmp $1 || { _log "mv $1 failed"; return; }
}
save() {
SEED="$(uci -q get system.@system[0].urandom_seed)"
[ "${SEED:0:1}" == "/" ] && _save "$SEED" && _log "Seed saved ($SEED)"
SEED=/etc/urandom.seed
[ ! -f $SEED ] && _save "$SEED" && _log "Seed saved ($SEED)"
}
boot() {
save
}