Gpg
GPG:為多個文件生成簽名
當簽名密鑰儲存在鑰匙卡上時,有沒有辦法用 GPG 簽署多個文件?(或者更具體地說,在我的情況下,一個 Yubikey)。
目前,我有一個腳本,我在其中循環了許多要簽名的文件,例如:
for pkg in html/packages/*.tar; do gpg2 --detach-sign --armor -o $pkg.sig $pkg done
這可行,但是由於我的鑰匙卡上有一個密碼,我被提示為每個文件輸入我的密碼,這在幾個文件之後就變得非常煩人。
有沒有辦法一次簽署所有文件?或者,對於簽名過程是否有一些解決方法,以便可以在呼叫之間記憶體 pin 碼?
如果您可以將 PIN 碼放入腳本可以使用的變數中,則可以執行以下操作:
for pkg in html/packages/*.tar; do echo ${PIN} | gpg --batch --yes --passphrase-fd 0 --detach-sign --armor -o $pkg.sig $pkg done
從
man
頁面:--passphrase-fd n Read the passphrase from file descriptor n. Only the first line will be read from file descriptor n. If you use 0 for n, the passphrase will be read from STDIN. This can only be used if only one passphrase is supplied. Note that since Version 2.0 this passphrase is only used if the option --batch has also been given. Since Version 2.1 the --pinentry-mode also needs to be set to loopback.
有關
passphrase-fd
(gpg
應該從哪裡接收密碼)選項的更多詳細資訊,https ://stackoverflow.com/questions/19895122/how-to-use-gnupgs-passphrase-fd-argument 可能會有所幫助