SYSDATADIR=${MONKEYSPHERE_SYSDATADIR:-"/var/lib/monkeysphere/host"}
export SYSDATADIR
-# monkeysphere temp directory, in sysdatadir to enable atomic moves of
-# authorized_keys files
-MSTMPDIR="${SYSDATADIR}/tmp"
-export MSTMPDIR
-
# UTC date in ISO 8601 format if needed
DATE=$(date -u '+%FT%T')
publish-key (p) publish server host key to keyserver
expert
- import-key (i) NAME[:PORT] import existing ssh key to gpg
+ import-key (i) [NAME[:PORT]] import existing ssh key to gpg
--keyfile (-f) FILE key file to import
--expire (-e) EXPIRE date to expire
- gen-key (g) NAME[:PORT] generate gpg key for the host
+ gen-key (g) [NAME[:PORT]] generate gpg key for the host
--length (-l) BITS key length in bits (2048)
--expire (-e) EXPIRE date to expire
- --revoker (-r) FINGERPRINT add a revoker
diagnostics (d) monkeysphere host status
version (v) show version number
|| failure "You don't appear to have a Monkeysphere host key on this server. Please run 'monkeysphere-server gen-key' first."
}
+# show info about the host key
+show_key() {
+ local fingerprintPGP
+ local fingerprintSSH
+ local ret=0
+
+ # FIXME: you shouldn't have to be root to see the host key fingerprint
+ if is_root ; then
+ check_host_keyring
+ fingerprintPGP=$(fingerprint_server_key)
+ gpg_authentication "--fingerprint --list-key --list-options show-unusable-uids $fingerprintPGP" 2>/dev/null
+ echo "OpenPGP fingerprint: $fingerprintPGP"
+ else
+ log info "You must be root to see host OpenPGP fingerprint."
+ ret='1'
+ fi
+
+ if [ -f "${SYSDATADIR}/ssh_host_rsa_key.pub" ] ; then
+ fingerprintSSH=$(ssh-keygen -l -f "${SYSDATADIR}/ssh_host_rsa_key.pub" | \
+ awk '{ print $1, $2, $4 }')
+ echo "ssh fingerprint: $fingerprintSSH"
+ else
+ log info "SSH host key not found."
+ ret='1'
+ fi
+
+return $ret
+}
+
########################################################################
# MAIN
########################################################################
# add hostname user ID to server key
+add_hostname() {
+
local userID
local fingerprint
local tmpuidMatch
# update the trustdb for the authentication keyring
gpg_authentication "--check-trustdb"
- show_server_key
+ show_key
echo
echo "NOTE: User ID added to key, but key not published."
else
failure "Problem adding user ID."
fi
+
+}
# add a revoker to the host key
+add_revoker() {
+
# FIXME: implement!
failure "not implemented yet!"
+
+}
# They are Copyright 2008, and are all released under the GPL, version 3
# or later.
-# * check on the status and validity of the key and public certificates
+# check on the status and validity of the key and public certificates
+
+diagnostics() {
+
local seckey
local keysfound
local curdate
else
echo "Everything seems to be in order!"
fi
+
+}
# extend the lifetime of a host key:
+extend_key() {
+
local fpr=$(fingerprint_server_key)
local extendTo="$1"
echo
echo "NOTE: Host key expiration date adjusted, but not yet published."
echo "Run '$PGRM publish-key' to publish the new expiration date."
+
+}
local keyLength="2048"
local keyUsage="auth"
local keyExpire
-local revoker
local hostName=$(hostname -f)
local userID
local keyParameters
keyExpire="$2"
shift 2
;;
- -r|--revoker)
- revoker="$2"
- shift 2
- ;;
*)
if [ "$(echo "$1" | cut -c 1)" = '-' ] ; then
failure "Unknown option '$1'.
Name-Real: $userID
Expire-Date: $keyExpire"
-# add the revoker field if specified
-# FIXME: the "1:" below assumes that $REVOKER's key is an RSA key.
-# FIXME: key is marked "sensitive"? is this appropriate?
-if [ "$revoker" ] ; then
- keyParameters=\
-"${keyParameters}
-Revoker: 1:${revoker} sensitive"
-fi
-
echo "The following key parameters will be used for the host private key:"
echo "$keyParameters"
log info "SSH host public key in OpenPGP form: ${SYSDATADIR}/ssh_host_rsa_key.pub.gpg"
# show info about new key
-show_server_key
+show_key
log info "SSH host public key in OpenPGP form: ${SYSDATADIR}/ssh_host_rsa_key.pub.gpg"
# show info about new key
-show_server_key
+show_key
# publish server key to keyserver
+publish_key() {
+
read -p "Really publish host key to $KEYSERVER? (y/N) " OK; OK=${OK:=N}
if [ ${OK/y/Y} != 'Y' ] ; then
failure "key not published."
# publish host key
gpg_authentication "--keyserver $KEYSERVER --send-keys '0x${fingerprint}!'"
+
+}
# revoke hostname user ID from host key
+revoke_hostname() {
+
local userID
local fingerprint
local tmpuidMatch
# update the trustdb for the authentication keyring
gpg_authentication "--check-trustdb"
- show_server_key
+ show_key
echo
echo "NOTE: User ID revoked, but revocation not published."
else
failure "Problem revoking user ID."
fi
+
+}
# revoke host key
+revoke_key() {
+
# FIXME: implement!
failure "not implemented yet!"
+
+}
+++ /dev/null
-#!/usr/bin/env bash
-
-# Monkeysphere host show-key subcommand
-#
-# The monkeysphere scripts are written by:
-# Jameson Rollins <jrollins@fifthhorseman.net>
-# Jamie McClelland <jm@mayfirst.org>
-# Daniel Kahn Gillmor <dkg@fifthhorseman.net>
-#
-# They are Copyright 2008, and are all released under the GPL, version 3
-# or later.
-
-local fingerprintPGP
-local fingerprintSSH
-local ret=0
-
-# FIXME: you shouldn't have to be root to see the host key fingerprint
-if is_root ; then
- check_host_keyring
- fingerprintPGP=$(fingerprint_server_key)
- gpg_authentication "--fingerprint --list-key --list-options show-unusable-uids $fingerprintPGP" 2>/dev/null
- echo "OpenPGP fingerprint: $fingerprintPGP"
-else
- log info "You must be root to see host OpenPGP fingerprint."
- ret='1'
-fi
-
-if [ -f "${SYSDATADIR}/ssh_host_rsa_key.pub" ] ; then
- fingerprintSSH=$(ssh-keygen -l -f "${SYSDATADIR}/ssh_host_rsa_key.pub" | \
- awk '{ print $1, $2, $4 }')
- echo "ssh fingerprint: $fingerprintSSH"
-else
- log info "SSH host key not found."
- ret='1'
-fi
-
-return $ret