By convention if API, BOOT, MONITOR, and WWW are all operating on the
[myplc.git] / plc.d / gpg
index 7f146a9..5fd3923 100755 (executable)
--- a/plc.d/gpg
+++ b/plc.d/gpg
@@ -7,7 +7,7 @@
 # Mark Huang <mlhuang@cs.princeton.edu>
 # Copyright (C) 2006 The Trustees of Princeton University
 #
-# $Id: gpg 129 2007-03-20 12:04:03Z thierry $
+# $Id$
 #
 
 # Source function library and configuration
@@ -22,6 +22,15 @@ case "$1" in
        # Make temporary GPG home directory
        homedir=$(mktemp -d /tmp/gpg.XXXXXX)
 
+       # in case a previous gpg invocation failed in some weird way
+       # and left behind a zero length gpg key (pub or priv).
+       if [ -f $PLC_ROOT_GPG_KEY_PUB -a ! -s $PLC_ROOT_GPG_KEY_PUB ] ; then
+           rm -f $PLC_ROOT_GPG_KEY_PUB 
+       fi
+       if [ -f $PLC_ROOT_GPG_KEY -a ! -s $PLC_ROOT_GPG_KEY ] ; then
+           rm -f $PLC_ROOT_GPG_KEY
+       fi
+
        if [ ! -f $PLC_ROOT_GPG_KEY_PUB -o ! -f $PLC_ROOT_GPG_KEY ] ; then
            # Generate new GPG keyring
            MESSAGE=$"Generating GPG keys"
@@ -33,7 +42,10 @@ case "$1" in
            # Temporarily replace /dev/random with /dev/urandom to
            # avoid running out of entropy.
            rm -f /dev/random
+           # 1 9 is /dev/urandom
            mknod /dev/random c 1 9
+           # sometimes mknod fails within an improperly setup vserver
+           check
            gpg --homedir=$homedir --no-permission-warning --batch --no-tty --yes \
                --gen-key <<EOF
 Key-Type: DSA