#!/bin/sh
#
# Urandom script based on the one by the Yocto project, but without the
# SysV-Init-specific stuff. It's always verbose now. 
#
# 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)


test -c /dev/urandom || exit 0

case "$1" in
        start|"")
                echo "Initializing random number generator..."
                # Load and then save 512 bytes,
                # which is the size of the entropy pool
                if test -f /opt/userdata/urandom/random-seed
                then
                     cat /opt/userdata/urandom/random-seed >/dev/urandom
                fi
                rm -f /opt/userdata/urandom/random-seed
                umask 077
                dd if=/dev/urandom of=/opt/userdata/urandom/random-seed 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
                echo "Saving random seed..."
                umask 077
                dd if=/dev/urandom of=/opt/userdata/urandom/random-seed count=1 \
                     >/dev/null 2>&1 || echo "urandom stop: failed."
                ;;
        *)
                echo "Usage: urandom {start|stop}" >&2
                exit 1
                ;;
esac

exit 0
