如何签署 Git 笔记?

Hen*_*kow 2 git security digital-signature git-notes

Git 注释是向 Git 对象添加元信息的功能。请参阅这篇Stackoverflow 文章了解更多详细信息。与提交类似,我也想签署注释。

我的本地 Git 配置为对所有提交进行签名。虽然签署 Git 提交按预期工作,但 Git 注释仍然未签名。在我的本地 Git 配置中,我有以下内容:

# excerpt from ~/.gitconfig
[commit]
    gpgsign = true
Run Code Online (Sandbox Code Playgroud)

为了签署笔记,我尝试了以下方法。

# excerpt from ~/.gitconfig
[commit]
    gpgsign = true
Run Code Online (Sandbox Code Playgroud)

我怎样才能使 Git 注释也被签名?

Bri*_*ian 5

Git 本身不支持 GPG 签名注释。

但是,您可以手动将注释签名为 GPG明确签名的文档。

您可以创建一个清晰签名的注释:

$ echo "My note" | gpg2 --clearsign --output=- | git notes add -F-
Run Code Online (Sandbox Code Playgroud)

看起来像这样

$ git notes show
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

My note
-----BEGIN PGP SIGNATURE-----

iHUAARYIAB0WIQRV1AjJ09Fu2Xnxkhi7mQ+45Dv2eQUCZTRkw7AKCRC7mQ+45Dv2
eQUfAPwKhEDkoOGWqTvM1gZG6k1fMtTXRN4/ju+qG2X6rlAx54D/TNsHI2kzETqB
Pa6/9YKoJfH/JulcVNAvGuylOOrabww=
=U8vT
-----END PGP SIGNATURE-----
Run Code Online (Sandbox Code Playgroud)

然后您可以使用 gpg 验证签名:

$ git notes show | gpg2 --verify
gpg: Signature made Sat 21 Oct 2023 07:54:40 PM EDT
gpg:                using EDDSA key ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCD
gpg: Good signature from "Foo Bar <foo.bar@example.com>" [ultimate]
Run Code Online (Sandbox Code Playgroud)

要仅提取注释,您可以使用

$ git notes show | gpg2 --verify --output=- 2>/dev/null
My note
Run Code Online (Sandbox Code Playgroud)