我们正在使用git / github,我们必须能够在特定时间之前证明特定的提交/标记已完成,我们希望使用Trusted Timestamp来实现这一点,因为它们似乎是最简单的实现这一目标的方式。
另一种选择是DOI,但是repo是私有的(由于在内部项目中的使用而被禁止)并且仅在稍后阶段公开,但时间戳应该是初始提交/标记的时间。< / p>
据我所知,时间戳是根据文件生成的,并创建了一个哈希值,稍后可以验证,并证明它是在某个日期和时间创建的。
但我在如何在git / github中使用它们方面苦苦挣扎?
我是否创建了由git创建的哈希的可信时间戳并将其包含在标记中,即在提交后请求标记的可信时间戳我要标记?
我是否将时间戳作为文件添加到提交中,即在提交之前请求它?但是我用什么来创建受信任的时间戳呢?
答案 0 :(得分:1)
Git不支持任何开箱即用,但快速扫描你的链接(我没有深入研究RFC,也不是ANSI X9.95标准)表明这样做的方法是使提交自己,然后将原始提交数据(可以通过git cat-file -p hash
)提供给生成时间戳的时间戳机构(TSA),并将生成的任何数据放入带注释的标签中,标记该提交。很容易证明您已将TSA的数据存储在带注释的标签中,因为当您打印标签的内容时会显示该数据,然后TSA将显示您向他们提供了提交数据
......但是我在如何在git / github中使用这些方面苦苦挣扎?
您可以在任何地方进行提交,但是您需要一个本地克隆来获取原始提交文本。提交文本本身如下所示:
$ git cat-file -p HEAD | sed 's/@/ /'
tree 191f960868564ef1f0978328589aa191219f1ab8
parent 96f29521a3908eb80b9552f11f2b75ca34475686
author Junio C Hamano <gitster pobox.com> 1525762230 +0900
committer Junio C Hamano <gitster pobox.com> 1525762789 +0900
The fifth batch for 2.18
Signed-off-by: Junio C Hamano <gitster pobox.com>
它确实是你在这里保护的tree
哈希值。由于它是您正在保护的树形哈希,理论上可以将TSA的数据直接插入到提交文本中,但这部分比使用带注释的标记要复杂得多。要使用带注释的标记,只需将完整的提交文本提供给TSA;它们以他们提供的任何形式为您提供哈希,并且您将其转换为适当的文本以存储在带注释的标记中,就像Git使用GPG签名一样。
然后像往常一样在本地运行(在您的存储库中)git tag -a
,将文本化的TSA数据粘贴到您的标记中,现在您有一个存储TSA数据的带注释的标记。要将此数据发送到GitHub,您只需git push
标记:
git push origin refs/tags/<tagname>
任何克隆存储库的人都会获得带注释的标记,git show tagname
(或git cat-file -p refs/tags/tagname
)会提取注释,其中包含您的文本信息TSA数据。与例如:
$ git show v2.17.0 | sed 's/@/ /'
tag v2.17.0
Tagger: Junio C Hamano <gitster@pobox.com>
Date: Mon Apr 2 10:14:24 2018 -0700
Git 2.17
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEE4fA2sf7nIh/HeOzvsLXohpav5ssFAlrCZPAACgkQsLXohpav
5suOTg/+I+qxQFmQyi3Ms1VAzM3wefJ9Ut4qBV5TKCu+wY21c4ZvTk9kvmJN+qYK
MDi6smYlCyj7YD1JqbPEyEoUgb/7TjylA9dBVwrCk8HoyAyLQpwixgkZxLLJEEzE
9EpzAg65fHST//DYMr0pZMee9POKL0KU4ekAJKsrfgRF4rA29OwvkrKvNw9DzAQf
gfIBQktNGzGaKhyjS9AdFR7K7N8vy1hGWPWwAWkxRWRwa2vsENdPuqLMstJqUzmP
3OEqA5OFZ7RDr9WrrNORbCN1iIyAQQ7GzZEMwT1mXhHB+b91F0SO766REnkgfwa1
bMgjpqfzAjoSzeafg5t1jAqm+MvgXQNP4KCWsk6ZtstWj7xfgyuhZ2osTdPUNaeT
tqRdhmrShQ+lMY5uuhJHr7kqUvqt3INpE9KD19nmlPvgPbYP5mDpW8oZfEGTM+iw
vCQqE5AZ5SivhEkkSTDgNdFJemvX2QbtRBiG8RyhWTLpRUGp9q1lgD1KJZlxjrdX
ovqGRNhkRowaGVpfoFeFs5256cxB9FkttE5MEj5FoSB8G4/FdUhkm4qTWXP5fZKt
d89PyWvTXn7x8rKFs/XLMscDnc9kCgnyt0ugYZZxjb4Mqs59A6epE+ylX/j9DDFW
6ZfTteMqLRtDtaEntJFQS9CatSoMpdlXUluKvoWcD9uy57WTayQ=
=JgMH
-----END PGP SIGNATURE-----
commit 468165c1d8a442994a825f3684528361727cd8c0 (tag: v2.17.0, origin/maint)
Author: Junio C Hamano <gitster@pobox.com>
[snip rest]
答案 1 :(得分:0)
我正在使用OriginStamp,它与github很好地集成,如here in general和this site专门针对github。
如果我理解正确,它会根据git生成的哈希给出一个可信时间戳,并将其存入比特币区块链。