diff options
| author | Doug Barton <dougb@FreeBSD.org> | 2001-01-11 13:01:20 +0000 |
|---|---|---|
| committer | Doug Barton <dougb@FreeBSD.org> | 2001-01-11 13:01:20 +0000 |
| commit | 27a803d631193a49a09c117d72371fca3bf4869c (patch) | |
| tree | 087c9e515977b8686cebf7325e8bea79ada19b8c /libexec | |
| parent | ebaf16d37311f0f3724430e04bb1a4fa6794fe17 (diff) | |
Notes
Diffstat (limited to 'libexec')
| -rw-r--r-- | libexec/Makefile | 1 | ||||
| -rw-r--r-- | libexec/save-entropy/Makefile | 10 | ||||
| -rwxr-xr-x | libexec/save-entropy/save-entropy.sh | 82 |
3 files changed, 93 insertions, 0 deletions
diff --git a/libexec/Makefile b/libexec/Makefile index c051e13ff89e..6ee31ed4ab73 100644 --- a/libexec/Makefile +++ b/libexec/Makefile @@ -22,6 +22,7 @@ SUBDIR= atrun \ rpc.rwalld \ rpc.sprayd \ rshd \ + save-entropy \ talkd \ tftpd \ xtend \ diff --git a/libexec/save-entropy/Makefile b/libexec/save-entropy/Makefile new file mode 100644 index 000000000000..c3de2caaf45c --- /dev/null +++ b/libexec/save-entropy/Makefile @@ -0,0 +1,10 @@ +# $FreeBSD$ + +NOMAN= noman + +beforeinstall: + ${INSTALL} -c -o operator -g operator -m 500 \ + ${.CURDIR}/save-entropy.sh ${DESTDIR}${BINDIR}/save-entropy + +.include <bsd.prog.mk> + diff --git a/libexec/save-entropy/save-entropy.sh b/libexec/save-entropy/save-entropy.sh new file mode 100755 index 000000000000..4a84fd741959 --- /dev/null +++ b/libexec/save-entropy/save-entropy.sh @@ -0,0 +1,82 @@ +#!/bin/sh +# +# Copyright (c) 2001 The FreeBSD Project +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# $FreeBSD$ + +# This script is called by cron to store bits of randomness which are +# then used to seed /dev/random on boot. + +PATH=/bin:/usr/bin + +# If there is a global system configuration file, suck it in. +# +if [ -r /etc/defaults/rc.conf ]; then + . /etc/defaults/rc.conf + source_rc_confs +elif [ -r /etc/rc.conf ]; then + . /etc/rc.conf +fi + +case ${entropy_dir} in +[Nn][Oo]) + exit 0 + ;; +*) + entropy_dir=${entropy_dir:-/.entropy} + ;; +esac + +entropy_save_sz=${entropy_save_sz:-2048} +entropy_save_num=${entropy_save_num:-8} +entropy_save_jot=$(($entropy_save_num - 1)) + +if [ ! -d "${entropy_dir}" ]; then + umask 077 + mkdir "${entropy_dir}" || { + logger -is The entropy directory "${entropy_dir}" does not \ +exist, and cannot be created. Therefore no entropy can be saved. ; + exit 1;} + /usr/sbin/chown operator:operator "${entropy_dir}" + chmod 0700 "${entropy_dir}" +fi + +rm -f "${entropy_dir}/saved-entropy.${entropy_save_num}" + +umask 377 + +for file_num in `jot ${entropy_save_jot} ${entropy_save_jot} 1`; do + if [ -f "${entropy_dir}/saved-entropy.${file_num}" ]; then + new_num=$(($file_num + 1)) + mv "${entropy_dir}/saved-entropy.${file_num}" \ + "${entropy_dir}/saved-entropy.${new_num}" + fi +done + +dd if=/dev/random of="${entropy_dir}/saved-entropy.1" \ + bs=2048 count=1 2> /dev/null + +exit 0 + |
