Jakov Asked: 2021-06-09 04:23:21 +0800 CST2021-06-09 04:23:21 +0800 CST 2021-06-09 04:23:21 +0800 CST GnuPG:用自定义 GUI 替换“pinentry” 772 我在我的应用程序中使用 GnuPG,有时我需要输入一个 pin 才能继续。 当我这样做时,我得到以下pinentry对话框: 但我想改变那个对话框并把我的自定义设置(我使用 React 创建的那个)。 我该怎么做? gnupg dialog 1 个回答 Voted Best Answer user1686 2021-06-09T04:50:49+08:002021-06-09T04:50:49+08:00 GnuPG 使用基于文本的协议“Assuan IPC”与 pinentry 交互。整体格式与 gpg-agent、scdaemon 和其他 GnuPG 组件使用的格式完全相同。 要实现它,您的程序需要能够通过标准输入接收命令并通过标准输出接收响应。Assuan IPC 协议完全基于文本,每行一个命令,并具有百分比编码的值(如在 URL 中,除了空格不转换为 +)。 pinentry 使用的命令记录在info "(pinentry)Protocol"信息页面中。您的程序需要接受诸如 OPTION、SETPROMPT、SETTITLE、SETDESC 等命令并返回 OK/ERR 响应。 */usr/bin/pinentry is started* Pinentry: OK Carlos' React-based Pinentry Ready! GnuPG: OPTION display=:0 Pinentry: OK GnuPG: SETDESC Please%20unlock%20the%20card Pinentry: OK GnuPG: GETPIN *the GUI window shows up* *user enters "secret password"* Pinentry: D secret%20password Pinentry: OK 一旦你收到GETPINorCONFIRM命令,你就可以显示相应的窗口,一旦你有输入,你必须通过标准输出将它作为“数据”响应返回(“确定”之前的“D”)。 最后,配置~/.gnupg/gpg-agent.conf为使用您的自定义“pinentry-program”而不是标准的。
GnuPG 使用基于文本的协议“Assuan IPC”与 pinentry 交互。整体格式与 gpg-agent、scdaemon 和其他 GnuPG 组件使用的格式完全相同。
要实现它,您的程序需要能够通过标准输入接收命令并通过标准输出接收响应。Assuan IPC 协议完全基于文本,每行一个命令,并具有百分比编码的值(如在 URL 中,除了空格不转换为 +)。
pinentry 使用的命令记录在
info "(pinentry)Protocol"
信息页面中。您的程序需要接受诸如 OPTION、SETPROMPT、SETTITLE、SETDESC 等命令并返回 OK/ERR 响应。一旦你收到
GETPIN
orCONFIRM
命令,你就可以显示相应的窗口,一旦你有输入,你必须通过标准输出将它作为“数据”响应返回(“确定”之前的“D”)。最后,配置
~/.gnupg/gpg-agent.conf
为使用您的自定义“pinentry-program”而不是标准的。