blob: 7b427e4cf628d69b9b661ffbc8a0abc567560d9d (
plain)
- # -*-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
- # check for presense of a key
- [ "$HOST_FINGERPRINT" ] && \
- failure "An OpenPGP host key already exists."
- # 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
- # find the key fingerprint of the newly converted key
- HOST_FINGERPRINT=$(get_host_fingerprint)
- export HOST_FINGERPRINT
- # translate the private key to ssh format, and export to a file
- # for sshs usage.
- # NOTE: assumes that the primary key is the proper key to use
- log debug "exporting ssh secret key..."
- (umask 077 && \
- gpg_host --export-secret-key "$HOST_FINGERPRINT" | \
- openpgp2ssh "$HOST_FINGERPRINT" > "${MHDATADIR}/ssh_host_rsa_key")
- log info "SSH host private key output to file: ${MHDATADIR}/ssh_host_rsa_key"
- log debug "creating ssh public key..."
- ssh-keygen -y -f "${MHDATADIR}/ssh_host_rsa_key" > "$HOST_KEY_PUB"
- log info "SSH host public key output to file: $HOST_KEY_PUB"
- # export public key to file
- gpg_host_export_to_ssh_file
- # show info about new key
- show_key
- }
|