GPG não está pedindo passphrase usando o gnome keyring em awesome

1

Eu estou usando o Ubuntu 16.04.2 LTS e atualmente estou experimentando um gerenciador de janelas incrível (ainda não usei o incrível arquivo de configuração e usei o padrão).

Uma das coisas que não funciona para mim é que o passpharse não é armazenado em cache pelo gpg-agent.

Eu fiz o seguinte no arquivo .xsessionrc,

# GnuPG agent (avoid repeatedly putting passphrase)
gnupglog="${HOME}/.gnupg/gpg-agent.info"
if (pgrep -u "${USER}" gpg-agent); then
  eval 'cat ${gnupglog}'
  eval 'cut -d= -f1 ${gnupglog} | xargs echo export'
else
  eval 'gpg-agent --enable-ssh-support --daemon'
fi

Eu vejo que o agente foi iniciado. No entanto, depois de executar o comando como gpg --decrypt FILE através do terminal não está aparecendo uma caixa de diálogo da interface do usuário e, em vez disso, está me pedindo uma frase secreta através do terminal. Também não está em cache.

O chaveiro gnome funciona perfeitamente se eu usar o traço Unity padrão. Você pode, por favor, sugerir os passos para fazer com que o agente gpg funcione?

    
por Amit Tendulkar 11.07.2017 / 17:26

1 resposta

1

Eu encontrei a causa raiz do problema. O gpg-agent deve definir automaticamente $ GPG_AGENT_INFO durante a chamada, mas não está definindo a variável env. Da mesma forma, o arquivo gpg-agent.info não estava presente, como mencionado no post acima, portanto, o código acima não estava funcionando. De acordo com a documentação do gpg, o GPG_AGENT_INFO deve apontar para o arquivo de soquete do gpg-agent seguido pelo pid do gpg-agent e depois pelo protocolo (padrão 1). Esses três campos devem ser separados por dois pontos.

Então eu coloquei o seguinte código no meu ~ / .profile para resolver o problema (o arquivo S.gpg-agent é o arquivo de soquete criado pelo gpg-agent depois que ele inicia), Código:

if (pgrep -u "${USER}" gpg-agent); then
  export GPG_AGENT_PID='pgrep -u ${USER} gpg-agent'
  export GPG_AGENT_INFO=${HOME}/.gnupg/S.gpg-agent:${GPG_AGENT_PID}:1
else
  eval 'gpg-agent --enable-ssh-support --daemon'
  export GPG_AGENT_PID='pgrep -u ${USER} gpg-agent'
  export GPG_AGENT_INFO=${HOME}/.gnupg/S.gpg-agent:${GPG_AGENT_PID}:1
fi

Ainda não sei por que o gpg-agent não pode definir o GPG_AGENT_INFO.

    
por Amit Tendulkar 17.07.2017 / 07:33