summaryrefslogtreecommitdiff
path: root/src/monkeysphere
diff options
context:
space:
mode:
authorJameson Graef Rollins <jrollins@finestructure.net>2009-04-30 15:42:16 -0700
committerJameson Graef Rollins <jrollins@finestructure.net>2009-04-30 15:42:16 -0700
commitdfdaec4fdfeeca291b40e8d1c2bec314c230d83d (patch)
treeee4cde0b60a0861fe2566f077a2f3ba38bc25fa3 /src/monkeysphere
parent34c6ff8bca96f301d13bd75ea9a8e534e1e67c54 (diff)
Add sshfpr subcommand to monkeysphere
This is a very simple subcommand that outputs the ssh fingerprint of a key in your gpg keyring, by keyid.
Diffstat (limited to 'src/monkeysphere')
-rwxr-xr-xsrc/monkeysphere22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/monkeysphere b/src/monkeysphere
index 147c179..6f43632 100755
--- a/src/monkeysphere
+++ b/src/monkeysphere
@@ -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
;;