Modify/cleanup add_certifier and add_revoker, so that their code base
[monkeysphere.git] / src / share / ma / add_certifier
index bd41f23966e2c46958ed150e9cc4e3450b0d28a7..024255f162d73308e298bbeabd7332f141ec0aca 100644 (file)
@@ -62,30 +62,47 @@ Type '$PGRM help' for usage."
 done
 
 keyID="$1"
+
+# check that key ID or file is specified
 if [ -z "$keyID" ] ; then
     failure "You must specify the key ID of a key to add, or specify a file to read the key from."
 fi
-if [ -f "$keyID" ] ; then
-    log info "Reading key from file '$keyID':"
 
-    fingerprints=$(su_monkeysphere_user \
+# if file is specified
+if [ -f "$keyID" -o "$keyID" = '-' ] ; then
+    # load the key from stdin
+    if [ "$keyID" = '-' ] ; then
+       local keyID=$(msmktempfile)
+       trap "rm -f $keyID" EXIT
+       log verbose "reading key from stdin..."
+       cat > "$keyID"
+
+    # load the key from the file
+    elif [ -f "$keyID" ] ; then
+       log verbose "reading key from file '$keyID'..."
+    fi
+
+    # check the key is ok as monkeysphere user before loading
+    fingerprint=$(su_monkeysphere_user \
        ". ${SYSSHAREDIR}/common; list_primary_fingerprints" < "$keyID")
 
-    if [ $(printf "%s" "$fingerprints" | egrep -c '^[A-F0-9]{40}$') -ne 1 ] ; then
+    if [ $(printf "%s" "$fingerprint" | egrep -c '^[A-F0-9]{40}$') -ne 1 ] ; then
        failure "There was not exactly one gpg key in the file."
     fi
 
-    gpg_sphere "--import" < "$keyID" || failure "could not read key from '$keyID'"
+    # load the key
+    gpg_sphere "--import" <"$keyID" \
+       || failure "could not read key from '$keyID'"
 
-    keyID="$fingerprints"
+    keyID="$fingerprint"
+
+# else, get the key from the keyserver
 else
-    # get the key from the key server
-    log debug "retrieving key from keyserver..."
-    gpg_sphere "--keyserver $KEYSERVER --recv-key '0x${keyID}!'" || failure "Could not receive a key with this ID from the '$KEYSERVER' keyserver."
+    log verbose "searching keyserver $KEYSERVER for keyID $keyID..."
+    gpg_sphere "--keyserver $KEYSERVER --recv-key '0x${keyID}!'" \
+       || failure "Could not receive a key with this ID from the '$KEYSERVER' keyserver."
 fi
 
-export keyID
-
 # get the full fingerprint of new certifier key
 log debug "getting fingerprint of certifier key..."
 fingerprint=$(gpg_sphere "--list-key --with-colons --with-fingerprint 0x${keyID}!" \