我目前想知道 git commit 签名到底是如何工作的。
试图找出这一点,但找不到任何确切的技术文档。我知道如何进行 git 提交签名,但我想知道 git 到底做了什么来签署提交。
签署的具体内容是什么?它是给定提交时存储库内的完整数据,即提交消息等数据以及所有文件的数据吗?或者只是带有指向所包含文件等的指针的提交?
尽管没有任何地方记录,但对源代码 https://github.com/git/git/显示它是提交对象的全部内容。然后这些内容被修改为insert签名,因此验证过程必须将签名剥离到单独的缓冲区中,并将原始的签名插入前数据传递给 GPG 签名者。
然后,GPG 签名数据会计算提交的 SHA-1 校验和,以成为提交的哈希 ID。看gpg-interface.c
and commit.c
, 功能sign_buffer
and do_sign_commit
分别。标签签名位于builtin/tag.c
(参见函数do_sign
及其调用者);签名标签的签名是附加的而不是插入的,但除此之外,其工作方式几乎相同。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)