跳到主要内容

GPG

查看所有公钥

gpg --list-keys
# 或者
gpg -k

查看所有私钥

gpg --list-secret-keys
# 或者
gpg -K

Card 操作

检查 Card 是否正常连接/查看 Card 状态

gpg --card-status

编辑 Card 中的信息

gpg --card-edit

和 Git 配合使用

查看 GPG Key ID

$ gpg -K
sec> ed25519 2022-06-14 [SC]
42629E67B3AFA71A7E01EF79F489027A7F9BB2A7
uid [ unknown] YunShu <im@yunshu.site>
ssb> ed25519 2022-06-14 [A] [expires: 2024-06-13]
ssb> cv25519 2022-06-14 [E]

这个 42629E67B3AFA71A7E01EF79F489027A7F9BB2A7 就是 Key ID

git config --global user.signingkey <key-id>
git config --global commit.gpgsign true # 设置每次必须签名

如果没有设置 commit.gpgsign,则可以在每次提交时使用 -S 参数来签名

git commit -S -m "commit message"
信息

如果是在 Windows 下,需要通过 Git Bash 来执行上述命令,使用的 gpg 也是 Git Bash 自带的

缓存密码

首先,设置缓存时间

~/.gnupg/gpg-agent.conf
max-cache-ttl 60480000
default-cache-ttl 60480000

如果使用 OpenPGP Card,需要更改卡片设置:

使用以下命令编辑卡片设置:

gpg --edit-card

查看该设置项:

Signature PIN ....: forced

forced 代表强制要求输入 PIN, 需要改成 not forced :

# 输入 admin 进入管理员模式
gpg/card> admin
Admin commands are allowed
# 输入 help 查看所有命令
gpg/card> help
quit quit this menu
admin show admin commands
help show this help
list list all available data
name change card holder's name
url change URL to retrieve key
fetch fetch the key specified in the card URL
login change the login name
lang change the language preferences
salutation change card holder's salutation
cafpr change a CA fingerprint
forcesig toggle the signature force PIN flag
generate generate new keys
passwd menu to change or unblock the PIN
verify verify the PIN and list all data
unblock unblock the PIN using a Reset Code
factory-reset destroy all keys and data
kdf-setup setup KDF for PIN authentication (on/single/off)
key-attr change the key attribute
uif change the User Interaction Flag
openpgp switch to the OpenPGP app

# 输入 forcesig 切换到 not forced
gpg/card> forcesig

# 之后退出即可
gpg/card> quit