Pignon GnuPG en fonction de la présence GUI

Sur MacOSX, j'utilise gnupg21 pour signer git commit . Selon le projet, je travaille actuellement quelque temps, j'utilise IDE (ici IntellijIDEA ) pour interagir avec git et parfois directement dans le terminal .

J'ai dû configurer

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

Pour pouvoir continuer à travailler sur IntellijIDEA .

Cependant, je ne suis pas vraiment fan sur l'introduction de GUI lorsque j'utilise le terminal . Pensez-vous qu'il est possible de configurer gnupg21 pour choisir le programme pinentry concernant la situation?

  • Sur GUI -> /usr/local/bin/pinentry-mac
  • Sur terminal -> /usr/local/bin/pinentry

Edit: Mes fichiers de configuration actuels

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 

Exécuter plusieurs gpg-agent s

gpg-agent de GnuPG pourrait être configuré pour utiliser différentes sockets avant GnuPG 2.1; Vous pourriez avoir utilisé différents gpg-agent s en parallèle avec différentes configurations (implémentations pinentry).

Avec GnuPG 2.1, cela n'est plus possible. GnuPG depuis 2.1 utilise toujours un chemin d'accès fixe.

Changement de Pinentry

La seule possibilité propre d'activer une telle fonctionnalité est probablement l'écriture d'une implantation de «commutateur» de pinentry, en décidant quelle pinceuse réelle appeler en fonction de l'appel d'une ligne de commande ou de l'interface graphique (par exemple, selon les variables DISPLAY ou tty définies) .

Mode pincement en boucle

Une alternative serait d'utiliser la fonction de pincement de bouclage, qui est désactivée dans gpg-agent par défaut pour des raisons de sécurité. Pinentry loopback aura gpg-agent query gpg pour la phrase de passe au lieu de la requête de mot de passe pinentry hors bande. Cela ouvre potentiellement les problèmes de sécurité, car l'application GnuPG assez large et complexe (avec une plus grande chance de vulnérabilités) accède à la phrase secrète et donc à la clé privée, qui serait autrement limitée à la mise en œuvre gpg-agent et pinentry.

Pour le faire de toute façon, ajoutez une ligne allow-loopback-pinentry dans ~/.gnupg/gpg-agent.conf , killall gpg-agent (de sorte qu'il soit redémarré avec l'option activée la prochaine fois que GnuPG veut l'utiliser). Lorsque vous souhaitez utiliser la pinentry GUI, démarrez GnuPG comme d'habitude; Pour les opérations de ligne de commande, appelez gpg21 --pinentry-mode loopback place (ce qui bien sûr pourrait être un alias pour gpg21 ).