fixing gen-subkey when no agent is present.
authorDaniel Kahn Gillmor <dkg@fifthhorseman.net>
Fri, 15 Aug 2008 20:51:35 +0000 (16:51 -0400)
committerDaniel Kahn Gillmor <dkg@fifthhorseman.net>
Fri, 15 Aug 2008 20:51:35 +0000 (16:51 -0400)
debian/changelog
debian/control
src/monkeysphere
website/bugs/monkeysphere-gen-subkey-fails-without-agent.mdwn

index 59aea1eb0d1373250e3c173c7d088fcf9444f2a2..e6dfccd36bc3158628456f1f34a9ec062f049edb 100644 (file)
@@ -6,6 +6,7 @@ monkeysphere (0.8-1) UNRELEASED; urgency=low
   * More monkeysphere-server diagnostics
   * monkeysphere --gen-subkey now guesses what KeyID you meant.
   * set up host-key revocation
+  * added Recommends: ssh-askpass to ensure monkeysphere --gen-subkey works
 
   [ Jameson Graef Rollins ]
   * fix another bug for when ssh key files are missing.
@@ -15,7 +16,7 @@ monkeysphere (0.8-1) UNRELEASED; urgency=low
   * enabled host key publication.
   * added checking of gpg.conf for keyserver
 
- -- Jameson Graef Rollins <jrollins@phys.columbia.edu>  Fri, 15 Aug 2008 10:46:23 -0700
+ -- Daniel Kahn Gillmor <dkg-debian.org@fifthhorseman.net>  Fri, 15 Aug 2008 16:06:31 -0400
 
 monkeysphere (0.7-1) experimental; urgency=low
 
index 0b3d871fa0b580ce2cac80180d1abbd5f3c60723..7fbcbc77f0d88898727535af15d755983d8eb2f5 100644 (file)
@@ -13,7 +13,7 @@ Format: 3.0 (git)
 Package: monkeysphere
 Architecture: any
 Depends: openssh-client, gnupg | gnupg2, coreutils (>= 6), moreutils, lockfile-progs, adduser, ${shlibs:Depends}
-Recommends: netcat | socat
+Recommends: netcat | socat, ssh-askpass
 Enhances: openssh-client, openssh-server
 Description: use the OpenPGP web of trust to verify ssh connections
  SSH key-based authentication is tried-and-true, but it lacks a true
index 6d9e6c3a28469880895525d2a51e64667cb8de7c..57597e29f696bb2e60c5cbc822c218e06873e770 100755 (executable)
@@ -48,7 +48,6 @@ EOF
 }
 
 # generate a subkey with the 'a' usage flags set
-# FIXME: this needs some tweaking to clean it up
 gen_subkey(){
     local keyLength
     local keyExpire
@@ -163,7 +162,18 @@ EOF
 )
 
     log "generating subkey..."
-    echo "$editCommands" | gpg --expert --command-fd 0 --edit-key "$keyID"
+    fifoDir=$(mktemp -d)
+    (umask 077 && mkfifo "$fifoDir/pass")
+    echo "$editCommands" | gpg --passphrase-fd 3 3< "$fifoDir/pass" --expert --command-fd 0 --edit-key "$keyID" &
+    
+    if [ "$DISPLAY" ] && which ssh-askpass >/dev/null; then
+       ssh-askpass "Please enter your passphrase for $keyID: " > "$fifoDir/pass"
+    else
+       read -s -p "Please enter your passphrase for $keyID: " PASS
+       echo "$PASS" > "$fifoDir/pass"
+    fi
+    rm -rf "$fifoDir"
+    wait
     log "done."
 }
 
index 51cf57e14e802b0b8d50b8f5bd60aaba67fe7139..e97b49ca227f4cfc459721721e2af1a09b32ee7b 100644 (file)
@@ -135,3 +135,10 @@ it.
 Alternately, we could use `--passwd-fd` and `ssh-agent`, along the
 lines i proposed [for handling passphrase-locked secret
 keys](/bugs/handle-passphrase-locked-secret-keys).
+
+--- 
+
+[[bugs/done]] as of 2008-08-15 16:48:26-0400 (to be released in 0.8-1)
+
+I opted to go with the `ssh-askpass` route, and fall back to echoing
+stuff to a fifo directly if `ssh-askpass` is not available.