From 3609af76c2055371a8bc620c98da30a749e5fad2 Mon Sep 17 00:00:00 2001 From: Nuno Cardoso Date: Sun, 1 Jul 2012 18:26:32 +0100 Subject: [PATCH] Changed gpg-agent plugin to allow forwarded ssh-agents --- plugins/gpg-agent/gpg-agent.plugin.zsh | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/plugins/gpg-agent/gpg-agent.plugin.zsh b/plugins/gpg-agent/gpg-agent.plugin.zsh index 8cc71fd57..059973391 100644 --- a/plugins/gpg-agent/gpg-agent.plugin.zsh +++ b/plugins/gpg-agent/gpg-agent.plugin.zsh @@ -8,19 +8,39 @@ function start_agent { . ${GPG_ENV} > /dev/null } +if [[ -n $SSH_AUTH_SOCK && -n $SSH_CONNECTION ]]; then + case $GPG_USE_FORWARDED_SSH_AGENT in + 'always') + FOWARDED_AGENT=1 + ;; + 'never') + ;; + *) + echo "Use forwarded ssh-agent?(y/N) " + read + [[ $REPLY == 'y' ]] && FOWARDED_AGENT=1 + esac + if [[ -n $FOWARDED_AGENT ]]; then + SSH_AUTH_SOCK_TMP=$SSH_AUTH_SOCK + fi +fi + # Source GPG agent settings, if applicable if [ -f "${GPG_ENV}" ]; then . ${GPG_ENV} > /dev/null - ps -ef | grep ${SSH_AGENT_PID} | grep gpg-agent > /dev/null || { + command ps -ef | grep ${SSH_AGENT_PID} | grep gpg-agent > /dev/null || { start_agent; } else start_agent; fi +[[ -n $FOWARDED_AGENT ]] && SSH_AUTH_SOCK=$SSH_AUTH_SOCK_TMP + export GPG_AGENT_INFO export SSH_AUTH_SOCK export SSH_AGENT_PID + GPG_TTY=$(tty) export GPG_TTY