Pinnry GnuPG dependendo da presença da GUI

2

No MacOSX, estou usando gnupg21 para assinar git commit . Dependendo do projeto em que estou trabalhando atualmente, estou usando o IDE (aqui IntellijIDEA ) para interagir com git e algum dia diretamente em terminal .

Eu tive que configurar

pinentry-program /usr/local/bin/pinentry-mac

para poder continuar trabalhando em IntellijIDEA .

No entanto, não sou muito fã de solicitar a GUI quando estou usando terminal . Você acha que é possível configurar o gnupg21 para escolher o programa pinentry em relação à situação?

  • na GUI - > %código%
  • No terminal - > %código%

Editar: meus arquivos de configuração atuais

gpg-agent.conf

enable-ssh-support
default-cache-ttl 14400
max-cache-ttl 86400
log-file /var/log/gpg-agent.log
pinentry-program /usr/local/bin/pinentry-mac

gpg.conf

keyserver hkp://keys.gnupg.net
no-tty
use-agent
    
por Kakawait 03.08.2016 / 10:45

2 respostas

3

Executando Múltiplos gpg-agent s

O gpg-agent do GnuPG pode ser configurado para usar diferentes soquetes antes do GnuPG 2.1; você poderia ter usado diferentes gpg-agent s em execução em paralelo com diferentes configurações (implementações de pinentry).

Com o GnuPG 2.1, isso não é mais possível. O GnuPG desde 2.1 sempre usa um caminho de soquete fixo.

Comutação de pinças

A única possibilidade limpa para ativar tal recurso é provavelmente escrever uma implementação de "switch" de pinentry, decidindo qual pinagem real chamar dependendo de ser chamada de uma linha de comando ou da GUI (por exemplo, dependendo de qual DISPLAY ou Variáveis tty estão definidas).

Modo de Pinagem de Loopback

Uma alternativa seria usar o recurso de pinback de loopback, que é desativado em gpg-agent por padrão por motivos de segurança. O loopback de Pinentry terá gpg-agent query gpg para a frase secreta em vez da consulta de senha de pinagem fora de banda. Isso potencialmente abre problemas de segurança, já que o aplicativo GnuPG bastante grande e complexo (com maior chance de vulnerabilidades) obtém acesso à senha e, portanto, à chave privada, que de outra forma estaria limitada à implementação gpg-agent e pinentry.

Para fazer isso de qualquer maneira, adicione uma linha allow-loopback-pinentry em ~/.gnupg/gpg-agent.conf , killall gpg-agent (para que ela seja reiniciada com a opção ativada na próxima vez que o GnuPG desejar usá-la). Quando você quiser usar a pinagem da GUI, inicie o GnuPG normalmente; para operações de linha de comando, chame gpg21 --pinentry-mode loopback (que, claro, pode ser um alias para gpg21 ).

    
por 03.08.2016 / 18:41
2

Desculpe pela resposta tardia, mas tive a mesma pergunta e encontrei uma solução que parece mais limpa do que alterar a configuração pinentry-program e reiniciar o gpg-agent toda vez.

Embora não esteja documentado em lugar algum fora da fonte, pinentry-mac retornará ao método de entrada de PIN da CLI se a variável de ambiente PINENTRY_USER_DATA estiver definida como USE_CURSES=1 . Você pode deixar o pinentry-mac como o padrão em seu gpg-agent.conf e slap:

export PINENTRY_USER_DATA="USE_CURSES=1"

no seu perfil bash ou equivalente.

    
por 04.09.2018 / 06:28

Tags