Tweak how empty authorized_user_ids and known_hosts files are handled.
[monkeysphere.git] / src / monkeysphere
index 2227b9156741ab25941c4296fac5b4e1f8c06027..3f127e6f1c0f7dd49a2c08517814350d992ee602 100755 (executable)
@@ -94,23 +94,18 @@ gen_subkey(){
        failure "You must specify the key ID of your primary key."
     fi
 
-    gpgOut=$(gpg --quiet --fixed-list-mode --list-keys --with-colons \
-       "$keyID" 2> /dev/null)
+    # get key output, and fail if not found
+    gpgOut=$(gpg --quiet --fixed-list-mode --list-secret-keys --with-colons \
+       "$keyID") || failure
 
-    # fail if there only "tru" lines are output from gpg, which
-    # indicates the key was not found.
-    if [ -z "$(echo "$gpgOut" | grep -v '^tru:')" ] ; then
-       failure "Key ID '$keyID' not found."
-    fi
-
-    # fail if multiple pub lines are returned, which means the id given
-    # is not unique
-    if [ $(echo "$gpgOut" | grep '^pub:' | wc -l) -gt '1' ] ; then
+    # fail if multiple sec lines are returned, which means the id
+    # given is not unique
+    if [ $(echo "$gpgOut" | grep '^sec:' | wc -l) -gt '1' ] ; then
        failure "Key ID '$keyID' is not unique."
     fi
 
     # prompt if an authentication subkey already exists
-    if echo "$gpgOut" | egrep "^(pub|sub):" | cut -d: -f 12 | grep -q a ; then
+    if echo "$gpgOut" | egrep "^(sec|ssb):" | cut -d: -f 12 | grep -q a ; then
        echo "An authentication subkey already exists for key '$keyID'."
        read -p "Are you sure you would like to generate another one? (y/N) " OK; OK=${OK:N}
        if [ "${OK/y/Y}" != 'Y' ] ; then
@@ -221,8 +216,8 @@ case $COMMAND in
         # otherwise, if no hosts are specified, process every host
         # in the user's known_hosts file
        else
-           if [ ! -s "$KNOWN_HOSTS" ] ; then
-               failure "known_hosts file '$KNOWN_HOSTS' is empty or does not exist."
+           if [ ! -e "$KNOWN_HOSTS" ] ; then
+               failure "known_hosts file '$KNOWN_HOSTS' does not exist."
            fi
 
            process_known_hosts
@@ -234,8 +229,8 @@ case $COMMAND in
        MODE='authorized_keys'
 
         # fail if the authorized_user_ids file is empty
-       if [ ! -s "$AUTHORIZED_USER_IDS" ] ; then
-           failure "authorized_user_ids file '$AUTHORIZED_USER_IDS' is empty or does not exist."
+       if [ ! -e "$AUTHORIZED_USER_IDS" ] ; then
+           failure "authorized_user_ids file '$AUTHORIZED_USER_IDS' does not exist."
        fi
 
        if ! check_key_file_permissions "$USER" "$AUTHORIZED_USER_IDS" ; then