more updates as i pursue service-specific hostnames.
[monkeysphere.git] / src / monkeysphere
index 2ca36365d19e43615010899c3bcc4c58a8dfa080..d585bfddeb9137d99e7cab111f9410d49073247c 100755 (executable)
@@ -4,6 +4,7 @@
 #
 # The monkeysphere scripts are written by:
 # Jameson Rollins <jrollins@fifthhorseman.net>
+# Daniel Kahn Gillmor <dkg@fifthhorseman.net>
 #
 # They are Copyright 2008, and are all released under the GPL, version 3
 # or later.
@@ -128,25 +129,7 @@ key before joining the monkeysphere. You can do this with:
 
     # set subkey defaults
     # prompt about key expiration if not specified
-    if [ -z "$keyExpire" ] ; then
-       cat <<EOF
-Please specify how long the key should be valid.
-         0 = key does not expire
-      <n>  = key expires in n days
-      <n>w = key expires in n weeks
-      <n>m = key expires in n months
-      <n>y = key expires in n years
-EOF
-       while [ -z "$keyExpire" ] ; do
-           read -p "Key is valid for? (0) " keyExpire
-           if ! test_gpg_expire ${keyExpire:=0} ; then
-               echo "invalid value"
-               unset keyExpire
-           fi
-       done
-    elif ! test_gpg_expire "$keyExpire" ; then
-       failure "invalid key expiration value '$keyExpire'."
-    fi
+    keyExpire=$(get_gpg_expiration "$keyExpire")
 
     # generate the list of commands that will be passed to edit-key
     editCommands=$(cat <<EOF
@@ -177,13 +160,22 @@ EOF
 function subkey_to_ssh_agent() {
     # try to add all authentication subkeys to the agent:
 
-    local authsubkeys
+    local sshaddresponse
     local secretkeys
-    local subkey
+    local authsubkeys
     local workingdir
-    local kname
-    local sshaddresponse
     local keysuccess
+    local subkey
+    local publine
+    local kname
+
+    if ! test_gnu_dummy_s2k_extension ; then
+       failure "Your version of GnuTLS does not seem capable of using with gpg's exported subkeys.
+You may want to consider patching or upgrading.
+
+For more details, see:
+ http://lists.gnu.org/archive/html/gnutls-devel/2008-08/msg00005.html"
+    fi
 
     # if there's no agent running, don't bother:
     if [ -z "$SSH_AUTH_SOCK" ] || ! which ssh-add >/dev/null ; then
@@ -199,28 +191,24 @@ function subkey_to_ssh_agent() {
     fi
     
     # get list of secret keys (to work around https://bugs.g10code.com/gnupg/issue945):
-    secretkeys=$(gpg --list-secret-keys --with-colons --fixed-list-mode --fingerprint | grep '^fpr:' | cut -f10 -d: | awk '{ print "0x" $1 "!" }')
+    secretkeys=$(gpg --list-secret-keys --with-colons --fixed-list-mode --fingerprint | \
+       grep '^fpr:' | cut -f10 -d: | awk '{ print "0x" $1 "!" }')
 
     if [ -z "$secretkeys" ]; then
        failure "You have no secret keys in your keyring!
-You might want to 'gpg --gen-key'"
+You might want to run 'gpg --gen-key'."
     fi
     
-    authsubkeys=$(gpg --list-secret-keys --with-colons --fixed-list-mode --fingerprint --fingerprint $secretkeys | cut -f1,5,10,12 -d: | grep -A1 '^ssb:[^:]*::[^:]*a[^:]*$' | grep '^fpr::' | cut -f3 -d: | sort -u)
+    authsubkeys=$(gpg --list-secret-keys --with-colons --fixed-list-mode \
+       --fingerprint --fingerprint $secretkeys | \
+       cut -f1,5,10,12 -d: | grep -A1 '^ssb:[^:]*::[^:]*a[^:]*$' | \
+       grep '^fpr::' | cut -f3 -d: | sort -u)
 
     if [ -z "$authsubkeys" ]; then
        failure "no authentication-capable subkeys available.
 You might want to 'monkeysphere gen-subkey'"
     fi
 
-    if ! test_gnu_dummy_s2k_extension ; then
-       failure "Your version of GnuTLS does not seem capable of using with gpg's exported subkeys.
-You may want to consider patching or upgrading.
-
-For more details, see:
- http://lists.gnu.org/archive/html/gnutls-devel/2008-08/msg00005.html"
-    fi
-
     workingdir=$(mktemp -d)
     umask 077
     mkfifo "$workingdir/passphrase"
@@ -238,7 +226,8 @@ For more details, see:
 
        primaryuid=$(gpg --with-colons --list-key "0x${subkey}!" | grep '^pub:' | cut -f10 -d: | tr -d /)
 
-       kname="[monkeysphere] $primaryuid"
+       #kname="[monkeysphere] $primaryuid"
+       kname="$primaryuid"
 
        if [ "$1" = '-d' ]; then
            # we're removing the subkey:
@@ -252,7 +241,7 @@ For more details, see:
                --export-secret-subkeys "0x${subkey}!" | openpgp2ssh "$subkey" > "$workingdir/$kname" &
            (cd "$workingdir" && DISPLAY=nosuchdisplay SSH_ASKPASS=/bin/false ssh-add "$@" "$kname" </dev/null )&
 
-           passphrase_prompt "Enter passphrase for key for $primaryuid: " "$workingdir/passphrase"
+           passphrase_prompt "Enter passphrase for key $kname: " "$workingdir/passphrase"
            wait %2
        fi
        keysuccess="$?"