gpt4 book ai didi

git - 使用 OpenPGP 子项签署提交失败

转载 作者:太空狗 更新时间:2023-10-29 13:05:51 26 4
gpt4 key购买 nike

我想使用我的 GPS (2) 子 key 之一在 Git 中签署提交/标签即,我新创建的具有长 ID B0##...的 RSA4096 仅签名 key

sec#  ed25519/9F############## 2016-01-07 [expires: 2023-01-05]
Key fingerprint = FC08 HEX HEX HEX
uid [ultimate] MY NAME <MY.NAME@foo bar>
ssb rsa4096/C9############## 2016-01-07 [expires: 2022-01-05]
ssb ed25519/C6############## 2016-01-07 [expires: 2022-01-05]
ssb rsa4096/B0############## 2016-01-13 [expires: 2022-01-11]

作为“更好的 key 策略”,我正在处理删除(备份)主 key 的 key 环

所以,我尝试为 Git 设置签名 key

[user]
...
signingkey = B0##############

但是,提交和签名失败了

> git commit -S  -m "test commit"
gpg: skipped "B0##############": secret key not available
gpg: signing failed: secret key not available
error: gpg failed to sign the data
fatal: failed to write commit object

其中 gpg-agent 启动并运行。

我的第一个猜测是,Git 不理解长键符号,而是尝试了短键符号

> gpg2 --list-secret-keys  --keyid-format short
...
ssb rsa4096/DB###### 2016-01-13 [expires: 2022-01-11]

> ~/.gitconfig
[user]
...
signingkey = DB######

但也失败了

> git commit -S  -m "test commit short"
gpg: skipped "DB######": secret key not available
gpg: signing failed: secret key not available
error: gpg failed to sign the data
fatal: failed to write commit object

所以,我想知道这里有什么问题,Git 是否只能使用主 key 进行签名但不理解子 key 的使用(或者如果我在某个地方搞砸了自己)?

最佳答案

Git 默认使用gpg,在大多数系统上是GnuPG 1,不支持椭圆曲线加密。由于您的主键是椭圆曲线键,因此 GnuPG 1 根本无法使用该键。当尝试将 key 与 GnuPG (gpg --default-key key-id --sign) 一起使用时,您将能够观察到同样的情况。

将 Git 配置为使用 gpg2,这需要至少是 GnuPG 2.1(你有,因为你可以使用椭圆曲线键):

git config --global gpg.program gpg2

关于git - 使用 OpenPGP 子项签署提交失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34766123/

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