Add sshfpr subcommand to monkeysphere
authorJameson Graef Rollins <jrollins@finestructure.net>
Thu, 30 Apr 2009 22:42:16 +0000 (15:42 -0700)
committerJameson Graef Rollins <jrollins@finestructure.net>
Thu, 30 Apr 2009 22:42:16 +0000 (15:42 -0700)
This is a very simple subcommand that outputs the ssh fingerprint of a
key in your gpg keyring, by keyid.

man/man1/monkeysphere.1
man/man8/monkeysphere-authentication.8
man/man8/monkeysphere-host.8
packaging/debian/changelog
src/monkeysphere

index 320cdfdc487a6b57233e0934c755d423a5a092e3..5badaa9be70e6d52f8b045f74cb9de9bf7a9be63 100644 (file)
@@ -126,6 +126,14 @@ specify the full fingerprints of specific keys to add to the agent
 (space separated), instead of adding them all.  `s' may be used in
 place of `subkey\-to\-ssh\-agent'.
 .TP
+.B sshfpr KEYID
+Output the ssh fingerprint of a key in your gpg keyring. `f' may be
+used in place of `fingerprint'.
+.TP
+.B version
+Show the monkeysphere version number.  `v' may be used in place of
+`version'.
+.TP
 .B help
 Output a brief usage summary.  `h' or `?' may be used in place of
 `help'.
index a28922c7cb071887661b52691eacde97781be1f8..811e47aabca9e15ea39ad3d9c6ad43a00de580e3 100644 (file)
@@ -59,12 +59,14 @@ Instruct system to ignore user identity certifications made by KEYID.
 List key IDs trusted by the system to certify user identities.  `c'
 may be used in place of `list\-id\-certifiers'.
 .TP
+.B version
+Show the monkeysphere version number.  `v' may be used in place of
+`version'.
+.TP
 .B help
 Output a brief usage summary.  `h' or `?' may be used in place of
 `help'.
-.TP
-.B version
-show version number
+
 
 Other commands:
 .TP
index e96a497eafed2de796288d9fff84a5cf79a2cc55..131b8c75ed786cff2027d89734fe36ec45a48a52 100644 (file)
@@ -78,12 +78,13 @@ Publish the host's OpenPGP key to the public keyservers.  `p' may be
 used in place of `publish-key'.  Note that there is no way to remove a
 key from the public keyservers once it is published!
 .TP
+.B version
+Show the monkeysphere version number.  `v' may be used in place of
+`version'.
+.TP
 .B help
 Output a brief usage summary.  `h' or `?' may be used in place of
 `help'.
-.TP
-.B version
-show version number
 
 
 Other commands:
index 9d404a8beaf281a5535c241b52806c8f646a9bab..b6592ad7a09ceeb1d5a93992bad69b8fc0276c4f 100644 (file)
@@ -7,10 +7,11 @@ monkeysphere (0.25-1~pre) UNRELEASED; urgency=low
     - clean out some redundant "cat"s
     - fix monkeysphere update-known_hosts for sshd running on non-standard
       ports
+    - add 'sshfpr' subcommand to output the ssh fingerprint of a gpg key
     - some portability improvements
   * update Standard-Version to 3.8.1
 
- -- Jameson Graef Rollins <jrollins@finestructure.net>  Mon, 06 Apr 2009 22:20:55 -0700
+ -- Jameson Graef Rollins <jrollins@finestructure.net>  Thu, 30 Apr 2009 15:34:28 -0700
 
 monkeysphere (0.24-1) unstable; urgency=low
 
index 147c179403d993aa80d6ea6f1acf9c0e7bf389be..6f43632307b25d235ed5094457e96fe77de5b7a8 100755 (executable)
@@ -50,6 +50,7 @@ subcommands:
  ssh-proxycommand HOST [PORT]        monkeysphere ssh ProxyCommand
    --no-connect                        do not make TCP connection to host
  subkey-to-ssh-agent (s)             store authentication subkey in ssh-agent
+ sshfpr (f) KEYID                    output ssh fingerprint of gpg key
  version (v)                         show version number
  help (h,?)                          this help
 
@@ -61,6 +62,23 @@ gpg_user() {
     gpg --no-greeting --quiet --no-tty "$@"
 }
 
+# output the ssh fingerprint of a gpg key
+gpg_ssh_fingerprint() {
+    keyid="$1"
+    local tmpfile=$(mktemp)
+
+    # trap to remove tmp file if break
+    trap "rm -f $tmpfile" EXIT
+
+    # use temporary file, since ssh-keygen won't accept keys on stdin
+    gpg_user --export "$keyid" | openpgp2ssh "$keyid" >"$tmpfile"
+    ssh-keygen -l -f "$tmpfile" | awk '{ print $1, $2, $4 }'
+
+    # remove the tmp file
+    trap - EXIT
+    rm -rf "$tmpfile"
+}
+
 # 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() {
@@ -243,6 +261,10 @@ case $COMMAND in
        subkey_to_ssh_agent "$@"
        ;;
 
+    'sshfpr'|'f')
+       gpg_ssh_fingerprint "$@"
+       ;;
+
     'version'|'v')
        version
        ;;