X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=src%2Fmonkeysphere-host;h=8562ec64e9cf74330268fb375d87f24323e18a5b;hb=54e5dd2bd3d63238142c748c64fdf66135a47136;hp=64023e056c7ad6de9e6a1c5bf978d503010ecfbf;hpb=0c874fdd6abfa4b74d7805f2d2d121f08211b4aa;p=monkeysphere.git diff --git a/src/monkeysphere-host b/src/monkeysphere-host index 64023e0..8562ec6 100755 --- a/src/monkeysphere-host +++ b/src/monkeysphere-host @@ -66,12 +66,12 @@ subcommands: revoke-key (r) revoke host key publish-key (p) publish host key to keyserver - expert run expert command - expert help expert command help + import-key (i) [NAME[:PORT]] import existing ssh key to gpg version (v) show version number help (h,?) this help +See ${PGRM}(8) for more info. EOF } @@ -131,14 +131,14 @@ load_fingerprint_secret() { # fail if host key present check_host_key() { - [ -z "$HOST_FINGERPRINT" ] \ + [ ! -s "$HOST_KEY_FILE" ] \ || failure "An OpenPGP host key already exists." } # fail if host key not present check_host_no_key() { - [ "$HOST_FINGERPRINT" ] \ - || failure "You don't appear to have a Monkeysphere host key on this server. Please run 'monkeysphere-host expert import-key' first." + [ -s "$HOST_KEY_FILE" ] \ + || failure "You don't appear to have a Monkeysphere host key on this server. Please run 'monkeysphere-host import-key' first." } # output the index of a user ID on the host key @@ -167,19 +167,35 @@ find_host_userid() { # show info about the host key show_key() { - gpg_host --fingerprint --list-key --list-options show-unusable-uids \ - "0x${HOST_FINGERPRINT}!" 2>/dev/null || true - # FIXME: make sure expiration date is shown + local GNUPGHOME + + # tmp gpghome dir + export GNUPGHOME=$(mktemp -d) + + # trap to remove tmp dir if break + trap "rm -rf $GNUPGHOME" EXIT + + gpg --quiet --import <"$HOST_KEY_FILE" + + HOST_FINGERPRINT=$(gpg --quiet --list-keys --with-colons --with-fingerprint \ + | grep '^fpr:' | cut -d: -f10 ) + + # list the host key info + gpg --list-keys --fingerprint \ + --list-options show-unusable-uids 2>/dev/null + # list the pgp fingerprint echo "OpenPGP fingerprint: $HOST_FINGERPRINT" + # list the ssh fingerprint echo -n "ssh fingerprint: " ssh-keygen -l -f /dev/stdin \ - <<<$( gpg_host --export FEE16FA3 2>/dev/null \ - | openpgp2ssh 8445B5203A8443B4B04F637DD4DE66B2FEE16FA3 2>/dev/null) \ + <<<$(openpgp2ssh <"$HOST_KEY_FILE" 2>/dev/null) \ | awk '{ print $1, $2, $4 }' - # FIXME: other relevant key parameters? + # remove the tmp file + trap - EXIT + rm -rf "$GNUPGHOME" } ######################################################################## @@ -222,94 +238,62 @@ shift case $COMMAND in 'show-key'|'show'|'s') - load_fingerprint check_host_no_key show_key ;; 'set-expire'|'extend-key'|'e') - load_fingerprint check_host_no_key + load_fingerprint source "${MHSHAREDIR}/set_expire" set_expire "$@" ;; 'add-hostname'|'add-name'|'n+') - load_fingerprint check_host_no_key + load_fingerprint source "${MHSHAREDIR}/add_hostname" add_hostname "$@" ;; 'revoke-hostname'|'revoke-name'|'n-') - load_fingerprint check_host_no_key + load_fingerprint source "${MHSHAREDIR}/revoke_hostname" revoke_hostname "$@" ;; 'add-revoker'|'o') - load_fingerprint check_host_no_key + load_fingerprint source "${MHSHAREDIR}/add_revoker" add_revoker "$@" ;; 'revoke-key'|'r') - load_fingerprint check_host_no_key + load_fingerprint source "${MHSHAREDIR}/revoke_key" revoke_key "$@" ;; 'publish-key'|'publish'|'p') - load_fingerprint check_host_no_key + load_fingerprint source "${MHSHAREDIR}/publish_key" publish_key ;; - 'expert') - SUBCOMMAND="$1" - shift - case "$SUBCOMMAND" in - 'help'|'h'|'?') - cat < [options] [args] - -expert subcommands: - import-key (i) [NAME[:PORT]] import existing ssh key to gpg - gen-key (g) [NAME[:PORT]] generate gpg key for the host - --length (-l) BITS key length in bits (2048) - diagnostics (d) monkeysphere host status + 'import-key'|'i') + check_host_key + source "${MHSHAREDIR}/import_key" + import_key "$@" + ;; -EOF - ;; - - 'import-key'|'i') - load_fingerprint - check_host_key - source "${MHSHAREDIR}/import_key" - import_key "$@" - ;; - - 'gen-key'|'g') - load_fingerprint - check_host_key - source "${MHSHAREDIR}/gen_key" - gen_key "$@" - ;; - - 'diagnostics'|'d') - source "${MHSHAREDIR}/diagnostics" - diagnostics - ;; - - *) - failure "Unknown expert subcommand: '$COMMAND' -Type '$PGRM help' for usage." - ;; - esac + 'diagnostics'|'d') + load_fingerprint + source "${MHSHAREDIR}/diagnostics" + diagnostics ;; 'version'|'v')