O emacs pode usar o gpg-agent em um terminal?

7

Eu entendo que há problemas em fazer o pinentry-curses trabalhar com o emacs (veja alguns dos comentários no link ), e assim, usar o emacs em um terminal não é compatível com o gpg-agent por causa disso.

Eu não posso usar uma ferramenta de pinagem gráfica neste caso, já que esta é uma conexão ssh com uma máquina remota.

No entanto, é possível alimentar antecipadamente o gpg-agent com a passphrase e então usar o emacs, mas não pedir uma passphrase se o agente ainda não tiver essa informação?

Quais configurações permitiriam que isso funcionasse com notmuch.el e EasyPG ?

Ou existem métodos alternativos de armazenar em cache a frase secreta que teriam o mesmo efeito, mas podem ter problemas de segurança (qual é a razão pela qual o gpg-agent existe em primeiro lugar)?

    
por David Gardner 13.11.2012 / 20:42

2 respostas

4

Uma alternativa, se você tiver um recente pinentry / gpg2 (testado com 0.9.7 e 2.1.11 respectivamente no Arch Linux), é usar link .

Instale pinentry de M-x list-packages e, em seguida, coloque

allow-emacs-pinentry

no seu .gnupg/gpg-agent.conf e coloque

(setenv "INSIDE_EMACS" (format "%s,comint" emacs-version))
(pinentry-start)

no seu .emacs.d/init.el . Eu tive que colocar o setenv lá porque, apesar de INSIDE_EMACS ser definido quando rodando M-x shell , ele não está definido quando simplesmente abrindo um arquivo .gpg .

Agora o gpg-agent usa a versão regular de curses do terminal, e de dentro do Emacs usa read-passwd (que oculta os caracteres do prompt e de view-lossage ).

EDIT: Parece que o pacote Debian tem um patch para remover o suporte do Emacs, então, por enquanto, esta solução só funciona para outras distros / pessoas preparadas para compilar o Pinentry.

    
por 25.04.2016 / 10:02
3

ISSO! - > link

Você terá que fazer algumas torções, mas usar essa coisa funcionou para mim. coloque o script em um diretório em seu PATH e, em seguida, adicione a seguinte entrada a ~/.gnupg/gpg-agent.conf :

pinentry-program <path-to-pinentry-emacs>/pinentry-emacs

Em seguida, recarregue o agente:

$ echo RELOADAGENT | gpg-connect-agent

Funciona como um sonho para mim:)

    
por 03.12.2014 / 18:30