Browse Source

Make gpg-agent and ssh-agent work with each other

master
Sorin Ionescu 12 years ago
parent
commit
1622abb830
  1. 11
      modules/gpg/README.md
  2. 27
      modules/gpg/init.zsh

11
modules/gpg/README.md

@ -3,6 +3,17 @@ GPG
Provides for an easier use of [GPG][1] by setting up [gpg-agent][2]. Provides for an easier use of [GPG][1] by setting up [gpg-agent][2].
### SSH
To enable OpenSSH Agent protocol emulation, and make `gpg-agent` a drop-in
replacement for `ssh-agent`, add the following line to
*~/.gnupg/gpg-agent.conf*:
enable-ssh-support
When OpenSSH Agent protocol emulation is enabled, this module will load the SSH
module for additional processing.
Authors Authors
------- -------

27
modules/gpg/init.zsh

@ -10,19 +10,32 @@ if (( ! $+commands[gpg-agent] )); then
return 1 return 1
fi fi
# Set the default path to the gpg-agent-info file. # Set the default paths to gpg-agent files.
_gpg_agent_info="$HOME/.gpg-agent-info" _gpg_agent_conf="$HOME/.gnupg/gpg-agent.conf"
_gpg_agent_env="$TMPDIR/gpg-agent.env"
# Start gpg-agent if not started. # Start gpg-agent if not started.
ps -U "$USER" -o ucomm | grep -q gpg-agent \ if ! ps -U "$USER" -o ucomm | grep -q gpg-agent; then
|| gpg-agent --daemon >! "$_gpg_agent_info" eval "$(gpg-agent --daemon | tee "$_gpg_agent_env")"
else
# Export environment variables. # Export environment variables.
source "$_gpg_agent_env" 2> /dev/null
fi
# Inform gpg-agent of the current TTY for user prompts.
export GPG_TTY="$(tty)" export GPG_TTY="$(tty)"
source "$_gpg_agent_info"
# Integrate with the SSH module.
if grep 'enable-ssh-support' "$_gpg_agent_conf" &> /dev/null; then
# Override the ssh-agent environment file default path.
_ssh_agent_env="$_gpg_agent_env"
# Load the SSH module for additional processing.
pmodload 'ssh'
fi
# Clean up. # Clean up.
unset _gpg_agent_info unset _gpg_agent_{conf,env}
# Disable GUI prompts inside SSH. # Disable GUI prompts inside SSH.
if [[ -n "$SSH_CONNECTION" ]]; then if [[ -n "$SSH_CONNECTION" ]]; then

Loading…
Cancel
Save