gpt4 book ai didi

git - 如何设置 gpg key 的默认 uid 以在 git 中签署提交和标签?

转载 作者:行者123 更新时间:2023-12-03 17:14:57 25 4
gpt4 key购买 nike

我曾经有两个单独的 gpg key (一对 key )——一个用于加密我的个人电子邮件,其中包含我在 uid 中的 gmail 地址,第二个 key 用于公开签署我的提交并将它们与我的另一封电子邮件一起发布。

我最近改变了这种方法,只是将两封电子邮件都添加到一个 key 中,另一个刚刚过期。我知道我公开了我的 gmail 地址,这对我来说很好。

现在,问题来了:当我编码并想要签署标签/提交时,我必须将我的“开发”邮件设置为主要邮件。但是,在使用 Thunderbird 或 gajim 时,私有(private) gmail 地址应列在最前面,以免混淆。

目前,我必须通过在终端中写入手动将一个 uid 或另一个设置为主要:

gpg2 --edit <keyid>
uid 1 (or 2)
primary
save

现在有人有更有效的方法吗?我知道设置 git config --global 或编辑 ~/.gitconfig 文件。我知道我可以把 signingkey那里的选项,这就是我所做的,因为我总是生成单独的(第三个) key 只是为了签名以避免使用主键(所以我可以只撤销子键)。

但是这个选项只指 key 指纹,而不是uid。
Git config user.email 和 user.name 听起来是一种解决方案,但它们与 gpg 身份不对应。

简而言之:有没有办法设置 git 使用的默认 gpg uid 还是我注定要手动切换/拥有两个单独的键?

最佳答案

当开发人员验证您的 git 提交时,为他们显示的主要 uid 是您的公钥的本地副本上的那个,而不是您签署提交时设置的主要 uid。例如:

# Setup test key
export GNUPGHOME=./test_gpg_home
mkdir -m700 "$GNUPGHOME"
gpg --quick-gen-key "personal" ed25519 cert
# Set $FPR to be the test key fingerprint (40 char identifier)
FPR="0000000000000000000000000000000000000000"
gpg --quick-add-uid "$FPR" "developer"
gpg --quick-add-key "$FPR" cv25519 encr
gpg --quick-add-key "$FPR" ed25519 sign

# Send a personal contact a public key with personal as primary
mkdir -m700 ./personal_gpg_home
gpg --quick-set-primary-uid "$FPR" "personal"
gpg --output ./personal.gpg --export "$FPR"
gpg --homedir=./personal_gpg_home --import < ./personal.gpg

# Send a dev contact a public key with developer as primary
mkdir -m700 ./dev_gpg_home
gpg --quick-set-primary-uid "$FPR" "developer"
gpg --output ./dev.gpg --export "$FPR"
gpg --homedir=./dev_gpg_home --import < ./dev.gpg

# Add new uid and set it to primary
gpg --quick-add-uid "$FPR" "unshared"
gpg --quick-set-primary-uid "$FPR" "unshared"

# Encryption
echo "my message" > msg.txt
gpg --homedir=./personal_gpg_home --recipient "personal" --encrypt msg.txt
# ... (should show personal as recipient)
gpg --homedir=./dev_gpg_home --recipient "developer" --encrypt msg.txt
# ... (should show developer as recipient)
gpg --decrypt msg.txt.gpg
# ... (should show unshared as recipient)

# Verification
gpg --default-key "$FPR" --sign msg.txt
# ... (will appear as if you are signing as unshared)
gpg --homedir=./personal_gpg_home --verify msg.txt.gpg
# ... (should show personal as primary uid)
gpg --homedir=./dev_gpg_home --verify msg.txt.gpg
# ... (should show developer as primary uid)
您可以为您的个人联系人提供一个将您的个人 uid 设置为主要的公钥,并为其他开发人员提供一个将您的开发人员 uid 设置为主要的公钥,但如果他们刷新您的 key 副本,则主要 uid 将是最近的放。

关于git - 如何设置 gpg key 的默认 uid 以在 git 中签署提交和标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51343316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com