add a gpg_user function in monkeysphere to add some gpg quieting
authorJameson Graef Rollins <jrollins@finestructure.net>
Thu, 19 Feb 2009 20:31:17 +0000 (15:31 -0500)
committerJameson Graef Rollins <jrollins@finestructure.net>
Thu, 19 Feb 2009 20:31:17 +0000 (15:31 -0500)
option, and use it in all gpg invocations.
add a trap to subkey_to_ssh_agent.

src/monkeysphere
src/share/m/gen_subkey
src/share/m/import_subkey
src/share/m/ssh_proxycommand
src/share/m/subkey_to_ssh_agent

index 4169f2a541cd4e1fe18d7b87abeb97bfcc48d568..cac9a02399bc086bf64dcbbb6c172f3c172fe087 100755 (executable)
@@ -56,6 +56,11 @@ subcommands:
 EOF
 }
 
+# user gpg command to define common options
+gpg_user() {
+    gpg --no-greeting --quiet --no-tty "$@"
+}
+
 # take a secret key ID and check that only zero or one ID is provided,
 # and that it corresponds to only a single secret key ID
 check_gpg_sec_key_id() {
@@ -63,10 +68,10 @@ check_gpg_sec_key_id() {
 
     case "$#" in
        0)
-           gpgSecOut=$(gpg --quiet --fixed-list-mode --list-secret-keys --with-colons 2>/dev/null | egrep '^sec:')
+           gpgSecOut=$(gpg_user --fixed-list-mode --list-secret-keys --with-colons 2>/dev/null | egrep '^sec:')
            ;;
        1)
-           gpgSecOut=$(gpg --quiet --fixed-list-mode --list-secret-keys --with-colons "$keyID" | egrep '^sec:') || failure
+           gpgSecOut=$(gpg_user --fixed-list-mode --list-secret-keys --with-colons "$keyID" | egrep '^sec:') || failure
            ;;
        *)
            failure "You must specify only a single primary key ID."
@@ -104,7 +109,7 @@ check_gpg_authentication_subkey() {
 
     # check that a valid authentication key does not already exist
     IFS=$'\n'
-    for line in $(gpg --quiet --fixed-list-mode --list-keys --with-colons "$keyID") ; do
+    for line in $(gpg_user --fixed-list-mode --list-keys --with-colons "$keyID") ; do
        type=$(echo "$line" | cut -d: -f1)
        validity=$(echo "$line" | cut -d: -f2)
        usage=$(echo "$line" | cut -d: -f12)
@@ -119,7 +124,7 @@ check_gpg_authentication_subkey() {
        fi
        # if authentication key is valid, prompt to continue
        if [ "$validity" = 'u' ] ; then
-           log error "A valid authentication key already exists for primary key '$keyID'."
+           echo "A valid authentication key already exists for primary key '$keyID'."
            if [ "$PROMPT" = "true" ] ; then
                read -p "Are you sure you would like to generate another one? (y/N) " OK; OK=${OK:N}
                if [ "${OK/y/Y}" != 'Y' ] ; then
index 7c3ebb7e54ddc7b0bc04850fde94c9191961364c..dbd9dd69da0da47ae2fc51bf0508b550794fd9ad 100644 (file)
@@ -64,7 +64,7 @@ EOF
     (umask 077 && mkfifo "$fifoDir/pass")
 
     log verbose "generating subkey..."
-    echo "$editCommands" | gpg --passphrase-fd 3 3< "$fifoDir/pass" --expert --command-fd 0 --edit-key "$keyID" &
+    echo "$editCommands" | gpg_user --passphrase-fd 3 3< "$fifoDir/pass" --expert --command-fd 0 --edit-key "$keyID" &
 
     # FIXME: this needs to fail more gracefully if the passphrase is incorrect
     passphrase_prompt  "Please enter your passphrase for $keyID: " "$fifoDir/pass"
index d71c2581719db705ce4dd8b44afe624b68ef569e..f3ca957092bc7001e538f8ba02ff1714364463d3 100644 (file)
@@ -43,11 +43,11 @@ import_subkey() {
     if [ "$sshKeyFile" = '-' ] ; then
        log verbose "importing ssh key from stdin..."
        ssh2openpgp \
-           | gpg --passphrase-fd 3 3< "$fifoDir/pass" --expert --command-fd 0 --import &
+           | gpg_user --passphrase-fd 3 3< "$fifoDir/pass" --expert --command-fd 0 --import &
     else
        log verbose "importing ssh key from file '$sshKeyFile'..."
        ssh2openpgp <"$sshKeyFile" \
-           | gpg --passphrase-fd 3 3< "$fifoDir/pass" --expert --command-fd 0 --import &
+           | gpg_user --passphrase-fd 3 3< "$fifoDir/pass" --expert --command-fd 0 --import &
     fi
 
     # get the password if needed
index e07b637d26ce79debc7c34131aba0d6a652cc598..d2b45278e1bd3c2e207b0895932f72e5659d0e9a 100644 (file)
@@ -43,7 +43,7 @@ EOF
     # found?
 
     # get the gpg info for userid
-    gpgOut=$(gpg --list-key --fixed-list-mode --with-colon \
+    gpgOut=$(gpg_user --list-key --fixed-list-mode --with-colon \
        --with-fingerprint --with-fingerprint \
        ="$userID" 2>/dev/null)
 
@@ -71,7 +71,7 @@ EOF
                    rm -f "$sshKeyGPGFile"
 
                    # get the sigs for the matching key
-                   gpgSigOut=$(gpg --check-sigs \
+                   gpgSigOut=$(gpg_user --check-sigs \
                        --list-options show-uid-validity \
                        "$keyid")
 
@@ -171,7 +171,7 @@ URI="ssh://${HOSTP}"
 # CHECK_KEYSERVER variable in the monkeysphere.conf file.
 
 # if the host is in the gpg keyring...
-if gpg --list-key ="${URI}" 2>&1 >/dev/null ; then
+if gpg_user --list-key ="${URI}" 2>&1 >/dev/null ; then
     # do not check the keyserver
     CHECK_KEYSERVER=${CHECK_KEYSERVER:="false"}
 
index a92718efee93ce042fe82b848e0573c2df790365..818f4f70c3ae65a86ed58c169a02c31b89884d5e 100644 (file)
@@ -46,7 +46,8 @@ For more details, see:
     
     # get list of secret keys (to work around bug
     # https://bugs.g10code.com/gnupg/issue945):
-    secretkeys=$(gpg --list-secret-keys --with-colons --fixed-list-mode --fingerprint | \
+    secretkeys=$(gpg_user --list-secret-keys --with-colons --fixed-list-mode \
+       --fingerprint | \
        grep '^fpr:' | cut -f10 -d: | awk '{ print "0x" $1 "!" }')
 
     if [ -z "$secretkeys" ]; then
@@ -54,7 +55,7 @@ For more details, see:
 You might want to run 'gpg --gen-key'."
     fi
     
-    authsubkeys=$(gpg --list-secret-keys --with-colons --fixed-list-mode \
+    authsubkeys=$(gpg_user --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)
@@ -65,6 +66,7 @@ You might want to 'monkeysphere gen-subkey'"
     fi
 
     workingdir=$(msmktempdir)
+    trap "rm -rf $workingdir" EXIT
     umask 077
     mkfifo "$workingdir/passphrase"
     keysuccess=1
@@ -79,19 +81,19 @@ You might want to 'monkeysphere gen-subkey'"
        # fingerprint, but filtering out all / characters to make sure
        # the filename is legit.
 
-       primaryuid=$(gpg --with-colons --list-key "0x${subkey}!" | grep '^pub:' | cut -f10 -d: | tr -d /)
+       primaryuid=$(gpg_user --with-colons --list-key "0x${subkey}!" | grep '^pub:' | cut -f10 -d: | tr -d /)
 
        #kname="[monkeysphere] $primaryuid"
        kname="$primaryuid"
 
        if [ "$1" = '-d' ]; then
            # we're removing the subkey:
-           gpg --export "0x${subkey}!" | openpgp2ssh "$subkey" > "$workingdir/$kname"
+           gpg_user --export "0x${subkey}!" | openpgp2ssh "$subkey" > "$workingdir/$kname"
            (cd "$workingdir" && ssh-add -d "$kname")
        else
            # we're adding the subkey:
            mkfifo "$workingdir/$kname"
-           gpg --quiet --passphrase-fd 3 3<"$workingdir/passphrase" \
+           gpg_user --passphrase-fd 3 3<"$workingdir/passphrase" \
                --export-options export-reset-subkey-passwd,export-minimal,no-export-attributes \
                --export-secret-subkeys "0x${subkey}!" | openpgp2ssh "$subkey" > "$workingdir/$kname" &
            (cd "$workingdir" && DISPLAY=nosuchdisplay SSH_ASKPASS=/bin/false ssh-add "$@" "$kname" </dev/null )&
@@ -104,6 +106,7 @@ You might want to 'monkeysphere gen-subkey'"
        rm -f "$workingdir/$kname"
     done
 
+    trap - EXIT
     rm -rf "$workingdir"
 
     # FIXME: sort out the return values: we're just returning the