Fix a bug in setup where gpg was called instead of gpg_core. This
[monkeysphere.git] / src / share / ma / setup
index 764fdb8080ddc13d8b7b3a885386495302bed174..263e5ca6868c407e9e139c9efe623f2b4487d801 100644 (file)
 # version 3 or later.
 
 setup() {
 # version 3 or later.
 
 setup() {
-    # make the core and the sphere:
-    mkdir -p ${SYSDATADIR}/authentication
-    mkdir -p ${GNUPGHOME_SPHERE}
-    mkdir -p ${GNUPGHOME_CORE}
+    # make all needed directories
+    mkdir -p "${MADATADIR}"
+    mkdir -p "${MATMPDIR}"
+    mkdir -p "${GNUPGHOME_CORE}"
+    chmod 700 "${GNUPGHOME_CORE}"
+    mkdir -p "${GNUPGHOME_SPHERE}"
+    chmod 700 "${GNUPGHOME_SPHERE}"
+    mkdir -p "${MADATADIR}"/authorized_keys
 
     # deliberately replace the config files via truncation
     # FIXME: should we be dumping to tmp files and then moving atomically?
 
     # deliberately replace the config files via truncation
     # FIXME: should we be dumping to tmp files and then moving atomically?
-    cat >${GNUPGHOME_CORE}/gpg.conf <<EOF
+    cat >"${GNUPGHOME_CORE}"/gpg.conf <<EOF
 # Monkeysphere trust core GnuPG configuration
 # This file is maintained by the Monkeysphere software.
 # Edits will be overwritten.
 # Monkeysphere trust core GnuPG configuration
 # This file is maintained by the Monkeysphere software.
 # Edits will be overwritten.
@@ -27,17 +31,21 @@ no-greeting
 list-options show-uid-validity
 EOF
     
 list-options show-uid-validity
 EOF
     
-    cat >${GNUPGHOME_SPHERE}/gpg.conf <<EOF
+    cat >"${GNUPGHOME_SPHERE}"/gpg.conf <<EOF
 # Monkeysphere trust sphere GnuPG configuration
 # This file is maintained by the Monkeysphere software.
 # Edits will be overwritten.
 no-greeting
 primary-keyring ${GNUPGHOME_SPHERE}/pubring.gpg
 # Monkeysphere trust sphere GnuPG configuration
 # This file is maintained by the Monkeysphere software.
 # Edits will be overwritten.
 no-greeting
 primary-keyring ${GNUPGHOME_SPHERE}/pubring.gpg
-keyring ${GNUPGHOME_CORE}/pubring.gpg
-
 list-options show-uid-validity
 EOF
 
 list-options show-uid-validity
 EOF
 
+    # make sure the monkeysphere user owns everything in th sphere
+    # gnupghome
+    chown -R "$MONKEYPSHER_USER" "${GNUPGHOME_SPHERE}"
+    chgrp -R "$MONKEYPSHER_USER" "${GNUPGHOME_SPHERE}"
+
+    # get fingerprint of core key.  this should be empty on unconfigured systems.
     local CORE_FPR=$(gpg_core --with-colons --fixed-list-mode --fingerprint --list-secret-key | grep ^fpr: | cut -f10 -d: )
 
     if [ -z "$CORE_FPR" ] ; then
     local CORE_FPR=$(gpg_core --with-colons --fixed-list-mode --fingerprint --list-secret-key | grep ^fpr: | cut -f10 -d: )
 
     if [ -z "$CORE_FPR" ] ; then
@@ -45,20 +53,19 @@ EOF
 
        local CORE_UID=$(printf "Monkeysphere authentication trust core UID (random string: %s)" $(head -c21 </dev/urandom | base64))
     
 
        local CORE_UID=$(printf "Monkeysphere authentication trust core UID (random string: %s)" $(head -c21 </dev/urandom | base64))
     
-       local TMPLOC=$(mktemp -d ${MATMPDIR}/tmp.XXXXXXXXXX) || failure "Could not create temporary directory!"
-       ssh-keygen -q -b 2048 -t rsa -N'' "${TMPLOC}/authkey" || failure "Could not generate new key for Monkeysphere authentication trust core"
+       local TMPLOC=$(mktemp -d "${MATMPDIR}"/tmp.XXXXXXXXXX) || failure "Could not create temporary directory!"
 
 
+       # generate the key with ssh-keygen...
+       ssh-keygen -q -b 1024 -t rsa -N '' -f "${TMPLOC}/authkey" || failure "Could not generate new key for Monkeysphere authentication trust core"
+       # and then translate to openpgp encoding and import
        # FIXME: pem2openpgp currently sets the A flag and a short
        # expiration date.  We should set the C flag and no expiration
        # date.
        # FIXME: pem2openpgp currently sets the A flag and a short
        # expiration date.  We should set the C flag and no expiration
        # date.
-       < "${TMPLOC}/authkey" pem2openpgp "$CORE_UID" | gpg --import || failure "Could not import new key for Monkeysphere authentication trust core"
+       < "${TMPLOC}/authkey" pem2openpgp "$CORE_UID" | gpg_core --import || failure "Could not import new key for Monkeysphere authentication trust core"
 
 
-       then
-           CORE_FPR=$(gpg_core --with-colons --fixed-list-mode --fingerprint --list-secret-key | grep ^fpr: | cut -f10 -d: )
-           if [ -z "$CORE_FPR" ] ; then
-               failure "Failed to find fingerprint of Monkeysphere authentication trust core!"
-           fi
-       else
+       # get fingerprint of core key.  should definitely not be empty at this point
+       CORE_FPR=$(gpg_core --with-colons --fixed-list-mode --fingerprint --list-secret-key | grep ^fpr: | cut -f10 -d: )
+       if [ -z "$CORE_FPR" ] ; then
            failure "Failed to create Monkeysphere authentication trust core!"
        fi
        
            failure "Failed to create Monkeysphere authentication trust core!"
        fi
        
@@ -71,11 +78,11 @@ EOF
     printf "%s:6:\n" "$CORE_FPR" | gpg_sphere --import-ownertrust
     local ORIG_TRUST
     if ORIG_TRUST=$(gpg_sphere --export-ownertrust | grep '^[^#]') ; then
     printf "%s:6:\n" "$CORE_FPR" | gpg_sphere --import-ownertrust
     local ORIG_TRUST
     if ORIG_TRUST=$(gpg_sphere --export-ownertrust | grep '^[^#]') ; then
-       if [ "$CORE_FPR:6:" != "$ORIG_TRUST" ] ; then
+       if [ "${CORE_FPR}:6:" != "$ORIG_TRUST" ] ; then
            failure "Monkeysphere authentication trust sphere should explicitly trust the core.  It does not have proper ownertrust settings."
        fi
     else
            failure "Monkeysphere authentication trust sphere should explicitly trust the core.  It does not have proper ownertrust settings."
        fi
     else
-       failure "Could not get monkeysphere-authentication trust guidleines."
+       failure "Could not get monkeysphere-authentication trust guidelines."
     fi
 
     # ensure that we're using the extended trust model (1), and that
     fi
 
     # ensure that we're using the extended trust model (1), and that