keymanagement.sh 1.96 KB
SSH_KEYGEN="/usr/bin/ssh-keygen"
SSH_ADD="/usr/bin/ssh-add"

export SSH_KEYGEN SSH_ADD

IDENTITY_FILE="/mnt/auth/ghopp/.ssh/ident"
SSH_AGENT_FILE="${HOME}/.ssh/agent.info"

GPG_TTY=$(tty)

export IDENTITY_FILE SSH_AGENT_FILE GPG_TTY

alias ssh_init_github="ssh-add /mnt/auth/ghopp/.ssh/ident-github ~/.ssh/getcred_github.sh"

function ssh-keygen() {
	ident="${1:-${IDENTITY_FILE}}"
	${SSH_KEYGEN} -f "${ident}" "$@"
}

function ssh-add() {
	ident="${1:-${IDENTITY_FILE}}"
	ask_pass="${2:-${HOME}/.ssh/getcred.sh}"

	if [ '-' != "${ident:0:1}" ]
	then
		DISPLAY=:0.0 SSH_ASKPASS="${ask_pass}" \
			${SSH_ADD} ${ident} 2>/dev/null </dev/null
	else
		${SSH_ADD} "$@"
	fi
}

function ssh-init-agent() {
	local CAT="/bin/cat"
	local PS="/bin/ps"
	local ECHO="/bin/echo"
	local SSH_AGENT="/usr/bin/ssh-agent"

	test -e "${SSH_AGENT_FILE}" && eval `${CAT} "${SSH_AGENT_FILE}"` >/dev/null

	if [ "x" != x${SSH_AGENT_PID} ]
	then
		if [ "ssh-agent" = "`${PS} -p ${SSH_AGENT_PID} -o comm=`" ]
		then
			return
		fi
	fi

	${ECHO} -n "start ssh-agent ... "
	${SSH_AGENT} >"${SSH_AGENT_FILE}"
	if [ 0 -eq $? ]
	then
		eval `${CAT} "${SSH_AGENT_FILE}"` >/dev/null
		${ECHO} "OK"
		ssh-add
	else
		${ECHO} "FAILED"
	fi
}

function gpg-init-agent() {
	local FUSER="/bin/fuser"
	local CAT="/bin/cat"
	local PS="/bin/ps"
	local ECHO="/bin/echo"
	local CUT="/usr/bin/cut"
	local GPG_AGENT="/usr/bin/gpg-agent --daemon --allow-preset-passphrase"
	local GPG_PRESET="/usr/libexec/gpg-preset-passphrase"
	local CREDDIR="/mnt/auth/ghopp/gnupg/"
	local KEYGRIP="D17D6099DA4F7CF580991F6525BAC9DB841C9B30"
	local SUBKEYGRIP="BE4A9914142B488736792B9CBE01AE3A94D96E7A"

	if ${FUSER} ${HOME}/.gnupg/S.gpg-agent >/dev/null 2>&1
	then
		return
	else
		${ECHO} -n "start gpg-agent ... "
		${GPG_AGENT}
		if [ 0 -eq $? ]
		then
			${ECHO} "OK"
			${CAT} "${CREDDIR}/gpg.pw" | ${GPG_PRESET} --preset ${KEYGRIP}
			${CAT} "${CREDDIR}/gpg.pw" | ${GPG_PRESET} --preset ${SUBKEYGRIP}
		else
			${ECHO} "FAILED"
		fi
	fi
}

# vim: set ft=sh ts=4 sw=4: