# -*-shell-script-*-
# This should be sourced by bash (though we welcome changes to make it POSIX sh compliant)

# Monkeysphere host gen-key subcommand
#
# The monkeysphere scripts are written by:
# Jameson Rollins <jrollins@finestructure.net>
# Jamie McClelland <jm@mayfirst.org>
# Daniel Kahn Gillmor <dkg@fifthhorseman.net>
#
# They are Copyright 2008-2009, and are all released under the GPL,
# version 3 or later.

gen_key() {

local hostName=$(hostname -f)
local keyType="RSA"
local keyLength="2048"
local keyUsage="auth"
local keyExpire="0"
local userID

# get options
while true ; do
	case "$1" in
	    -l|--length)
		keyLength="$2"
		shift 2
		;;
	    *)
		if [ "$(echo "$1" | cut -c 1)" = '-' ] ; then
		    failure "Unknown option '$1'.
Type '$PGRM help' for usage."
		fi
		break
		;;
	esac
done

hostName="$1"
userID="ssh://${hostName}"

# create host home
mkdir -p "$GNUPGHOME_HOST"
chmod 700 "$GNUPGHOME_HOST"

log debug "generating host key..."
gpg_host --batch --gen-key <<EOF
Key-Type: $keyType
Key-Length: $keyLength
Key-Usage: $keyUsage
Name-Real: $userID
Expire-Date: $keyExpire

%commit
%echo done

EOF

# load the new host fpr into the fpr variable
load_fingerprint_secret

# export to ssh secret key file
create_ssh_sec_file

# export to ssh public key file
create_ssh_pub_file

# export to gpg public key to file
create_gpg_pub_file

# show info about new key
show_key

}