simplifying find_host_user_id function.
[monkeysphere.git] / src / share / mh / revoke_hostname
index 77f1f0dcc71ddb3eb82d3bc8919268baf9ae60cd..b3b8d7a330481e70acfa17d7bc88f0670221d51d 100644 (file)
@@ -19,7 +19,6 @@ local userID
 local fingerprint
 local tmpuidMatch
 local line
 local fingerprint
 local tmpuidMatch
 local line
-local uidIndex
 local message
 local revuidCommand
 
 local message
 local revuidCommand
 
@@ -27,47 +26,26 @@ if [ -z "$1" ] ; then
     failure "You must specify a hostname to revoke."
 fi
 
     failure "You must specify a hostname to revoke."
 fi
 
-echo "WARNING: There is a known bug in this function."
-echo "This function has been known to occasionally revoke the wrong user ID."
-echo "Please see the following bug report for more information:"
-echo "https://labs.riseup.net/code/issues/show/422"
-read -p "Are you sure you would like to proceed? (y/N) " OK; OK=${OK:=N}
-if [ ${OK/y/Y} != 'Y' ] ; then
-    failure "aborting."
-fi
-
 userID="ssh://${1}"
 
 # make sure the user ID to revoke
 userID="ssh://${1}"
 
 # make sure the user ID to revoke
-uidIndex=$(find_host_userid) || \
+find_host_userid "$userID" || \
     failure "No non-revoked user ID found matching '$userID'."
 
 if [ "$PROMPT" = "true" ] ; then
     failure "No non-revoked user ID found matching '$userID'."
 
 if [ "$PROMPT" = "true" ] ; then
-    echo "The following host key user ID will be revoked:"
-    echo "  $userID"
-    read -p "Are you sure you would like to revoke this user ID? (y/N) " OK; OK=${OK:=N}
-    if [ ${OK/y/Y} != 'Y' ] ; then
+    printf "The following host key user ID will be revoked:\n  %s\nAre you sure you would like to revoke this user ID? (Y/n) " "$userID" >&2
+    read OK; OK=${OK:=Y}
+    if [ "${OK/y/Y}" != 'Y' ] ; then
        failure "User ID not revoked."
     fi
 else
     log debug "revoking user ID without prompting."
 fi
 
        failure "User ID not revoked."
     fi
 else
     log debug "revoking user ID without prompting."
 fi
 
-# edit-key script command to revoke user ID
-revuidCommand=$(cat <<EOF
-$uidIndex
-revuid
-y
-4
-Hostname removed by monkeysphere-host: $DATE
-
-y
-save
-EOF
-    )  
-
-# execute edit-key script
-if echo "$revuidCommand" | gpg_host_edit ; then
+# actually revoke:
+if <"$GNUPGHOME_HOST/secring.gpg" "$SYSSHAREDIR/keytrans" revokeuserid \
+    "$HOST_FINGERPRINT" "$userID" | gpg_host --import ; then
+    gpg_host --check-trustdb
 
     update_gpg_pub_file
 
 
     update_gpg_pub_file