{ "info": { "author": "Marcel Waldvogel", "author_email": "marcel.waldvogel@uni-konstanz.de", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Information Technology", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Security", "Topic :: Software Development :: Version Control :: Git", "Topic :: Utilities" ], "description": "# `git timestamp` \u2014 Git Timestamper for *Zeitgitter*\n\n## Timestamping: Why?\n\nBeing able to provide evidence that **you had some piece of information at a\ngiven time** and **it has not changed since** are important in many aspects of\npersonal, academic, or corporate life.\n\nIt can help provide evidence\n- that you had some idea already at a given time,\n- that you already had a piece of code, or\n- that you knew about a document at a given time.\n\nTimestamping does not assure *authorship* of the idea, code, or document. It\nonly provides evidence to the *existence* at a given point in time. Depending\non the context, authorship might be implied, at least weakly.\n\n## *Zeitgitter* for Timestamping\n\n*Zeitgitter* consists of two components:\n\n1. A timestamping client, `git timestamp`, which can add a timestamp as a digital signature to\n an existing `git` repository. Existing `git` mechanisms can then be used\n to distribute these timestamps (stored in commits or tags) or keep them\n private.\n2. A timestamping server, `zeitgitterd`, which supports timestamping `git` repositories and\n stores its history of commits timestamped in a `git` repository as well.\n Anybody can operate such a timestamping server, but using an independent\n timestamper provides strongest evidence, as collusion is less likely.\n - Publication of the timestamps history; as well as\n - getting cross-timestamps of other independent timestampers on your\n timestamp history\n both provide mechanisms to assure that timestamping has not been done\n retroactively (\"backstamping\").\n\nThe timestamping client is called `git timestamp` and allows to issue\ntimestamped, signed tags or commits.\n\nTo simplify deployment, we provide a free timestamping server at\n[https://gitta.zeitgitter.net](https://gitta.zeitgitter.net).\nIt is able to provide several\nmillion timestamps per day. However, if you or your organization plan to issue\nmore than a hundred timestamps per day, please consider installing and using\nyour own timestamping server and have it being cross-timestamped with other\nservers.\n\n## Timestamping as a network\n\nThe revolutionary idea behind Zeitgitter is to have timestampers cross-verify\neach other. This results in a network which makes it hard to cheat. In fact,\nthe network requires **only a single trustworthy member** to prevent all\nothers from cheating. Even more so, you do not need to know who the\nnon-cheating member is, as long as you can be sure that there is one or not\nall the bad guys are colluding.\n\nIn fact, the non-cheating member may even change over time. As long as there is\nalways at least one member who does not backdate any timestamps, this role can\nfreely move between members.\n\nThis extreme resilience makes timestamping with Zeitgitter so trustworthy.\n\n![Timestamping network](./doc/TimestampingNetwork.png)\n\n## Client Usage\n\n### Options\n\n```sh\nusage: timestamp.py [-h] [--version] [--tag TAG] [--branch BRANCH]\n [--server SERVER] [--gnupg-home GNUPG_HOME]\n [--enable ENABLE] [--require-enable]\n [COMMIT]\n```\nInterface to Zeitgitter, the network of independent GIT timestampers.\n\npositional arguments:\n* **COMMIT**: Which commit to timestamp. Can be set by `git config\n timestamp.commit-branch`; fallback default: 'HEAD'\n\noptional arguments:\n* **-h**, **--help**: Show this help message and exit. When called as `git\n timestamp` (space, not dash), use `-h`, as `--help` is\n captured by `git` itself.\n* **--version**: Show program's version number and exit\n* **--tag** TAG: Create a new timestamped tag named TAG\n* **--branch** BRANCH: Create a timestamped commit in branch BRANCH, with\n identical contents as the specified commit. Default\n name derived from servername plus `-timestamps`. Can\n be set by `git config timestamp.branch`\n* **--server** SERVER: Zeitgitter server to obtain timestamp from. Can be set\n by `git config timestamp.server`; fallback default:\n `https://gitta.zeitgitter.net`\n* **--gnupg-home** GNUPG_HOME:\n Where to store timestamper public keys. Can be set by\n git config `timestamp.gnupg-home`\n* **--enable** ENABLE: Forcibly enable/disable timestamping operations;\n mainly for use in `git config`. Can be set by `git\n config timestamp.enable`\n* **--require-enable**: Disable operation unless `git config timestamp.enable`\n has explicitely been set to true\n\n`--tag` takes precedence over `--branch`. When in doubt, use `--tag` for\nsingle/rare timestamping, and `--branch` for reqular timestamping.\n\n\n## Inclusion in other packages\n\nTimestamping can be a useful add-on feature for many operations, including\nverifying whether a repository has been tampered with. For example, we use it\nextensively together with [`etckeeper`](https://etckeeper.branchable.com/)\nfor tamper-evidence.\n\nIf you would like to include timestamping as an optional component in your\nsoftware, you have to first decide whether timestamping should be *on* or *off*\nby default for your software:\n* **default-on**: Just call `git timestamp` as normal. Users can disable\n timestamping on a per-repository basis by running\n `git config timestamp.enable false` at any time.\n* **default-off**: Timestamp with the option `--require-enable`. Then, users\n have to first run `git config timestamp.enable true` in the repository.\nIn any case, you should check whether `git timestamp` has been installed before\ncalling it. In a shell, you could do this as follows:\n```sh\nif which git-timestamp > /dev/null; then\n git timestamp OPTIONS\nfi\n```\n\n## General and Client Documentation\n\n- [Timestamping: Why and how?](doc/Timestamping.md)\n- [Client installation](doc/Install.md)\n- [Protocol description](doc/Protocol.md)\n- [List of public *Zeitgitter* servers](doc/ServerList.md)\n- [Discussion of the use of (weak) cryptography](doc/Cryptography.md)\n\n# Attributions\n\nZeitgitter logo is based on [Git Logo](https://git-scm.com/downloads/logos) by\n[Jason Long](https://twitter.com/jasonlong), licensed under the\n[Creative Commons Attribution 3.0\nUnported License](https://creativecommons.org/licenses/by/3.0/).\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://gitlab.com/zeitgitter/git-timestamp", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "git-timestamp", "package_url": "https://pypi.org/project/git-timestamp/", "platform": "", "project_url": "https://pypi.org/project/git-timestamp/", "project_urls": { "Homepage": "https://gitlab.com/zeitgitter/git-timestamp" }, "release_url": "https://pypi.org/project/git-timestamp/1.0.0/", "requires_dist": [ "pygit2", "python-gnupg", "requests", "setuptools" ], "requires_python": ">=2.7", "summary": "Timestamping client for zeitgitter", "version": "1.0.0" }, "last_serial": 5874554, "releases": { "0.9.2": [ { "comment_text": "", "digests": { "md5": "ae12b8b83bf3bbb15a539d98b1ad6d95", "sha256": "21f9999cd0add119e4737e0b9e7c74fe1ac91bc5e3de5de53697769c71d5283d" }, "downloads": -1, "filename": "git_timestamp-0.9.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ae12b8b83bf3bbb15a539d98b1ad6d95", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 20443, "upload_time": "2019-05-10T07:51:45", "url": "https://files.pythonhosted.org/packages/34/63/7277187efa70569fe0a618fc9a01d00fe04879107974543ed1f152b6c52f/git_timestamp-0.9.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "35800c9304bd4447a53beadc4966ae30", "sha256": "6d411d45c2c616fde7da587afd302ff8e171a70831819ea90e97e9b0c1855fda" }, "downloads": -1, "filename": "git-timestamp-0.9.2.tar.gz", "has_sig": false, "md5_digest": "35800c9304bd4447a53beadc4966ae30", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 7764, "upload_time": "2019-05-10T07:51:47", "url": "https://files.pythonhosted.org/packages/81/e9/6a4504eaebf5b3876bf96f251cb256d3aac8e468ec50bf034d121b21f1c2/git-timestamp-0.9.2.tar.gz" } ], "0.9.3": [ { "comment_text": "", "digests": { "md5": "8493732f71785fa3b5ac322dd6c6bb3d", "sha256": "42f2a6e3798f82a74934ec29290f5f3c4ede318f63e2ee932fbad8788bd00833" }, "downloads": -1, "filename": "git_timestamp-0.9.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8493732f71785fa3b5ac322dd6c6bb3d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 25865, "upload_time": "2019-05-12T19:57:01", "url": "https://files.pythonhosted.org/packages/49/df/3e6182c7ee42fa8e3f5d298801421b3ebd35c281388c8d94888d23dd7ea0/git_timestamp-0.9.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "88a56ce290c767174693c732ca2c50c7", "sha256": "62154b42c86e453ef356f949a4ec9e519036c3e2ab9a245b1f5963361932c995" }, "downloads": -1, "filename": "git-timestamp-0.9.3.tar.gz", "has_sig": false, "md5_digest": "88a56ce290c767174693c732ca2c50c7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 8330, "upload_time": "2019-05-12T19:57:03", "url": "https://files.pythonhosted.org/packages/3e/e0/9ef5ce78ac6bb33cdfb6902dee3f9ab257252acbda3302bba827be38aee6/git-timestamp-0.9.3.tar.gz" } ], "0.9.4": [ { "comment_text": "", "digests": { "md5": "b3ead4dd6ebc7474dd91ebc740302187", "sha256": "37a23d0dddbecb21f84024e9d918a6ec0c19436988e7bd5538468b188357d2fa" }, "downloads": -1, "filename": "git_timestamp-0.9.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b3ead4dd6ebc7474dd91ebc740302187", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 25867, "upload_time": "2019-05-12T20:10:56", "url": "https://files.pythonhosted.org/packages/7a/6a/6cee1611339d3bf8960897538ffc4e0d313df3e064a02414c737a8349efd/git_timestamp-0.9.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d1c10298274b657b351d35a6172f20b5", "sha256": "4398f2ac9aaf953f9d4aa66e8cdff7a6badd24e7c2a9ea5569878d20ff288598" }, "downloads": -1, "filename": "git-timestamp-0.9.4.tar.gz", "has_sig": false, "md5_digest": "d1c10298274b657b351d35a6172f20b5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 8323, "upload_time": "2019-05-12T20:10:57", "url": "https://files.pythonhosted.org/packages/62/a0/9ee41621afab2230532d57690af2c43660ac20a0c99b6fe7ebaa68cdc7b3/git-timestamp-0.9.4.tar.gz" } ], "0.9.5": [ { "comment_text": "", "digests": { "md5": "2fd054d0fb41e331d93ca3fb60077ed2", "sha256": "4f19adcf737a2b2e2799785f704b269382909184f1f68c6381df1da46b0b72bd" }, "downloads": -1, "filename": "git_timestamp-0.9.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2fd054d0fb41e331d93ca3fb60077ed2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 26527, "upload_time": "2019-06-16T14:08:29", "url": "https://files.pythonhosted.org/packages/89/24/abe35df3240a201c6af85089cb42d01093ef2bf57055fa2dd332d9d38c1f/git_timestamp-0.9.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e9ccc73f165723552d637632fc8916a2", "sha256": "39e267b584649cf22700cd43589bec1b1f62775be05cad7cc20a181f1771a45c" }, "downloads": -1, "filename": "git-timestamp-0.9.5.tar.gz", "has_sig": false, "md5_digest": "e9ccc73f165723552d637632fc8916a2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 8908, "upload_time": "2019-06-16T14:08:31", "url": "https://files.pythonhosted.org/packages/73/68/8ff3775bb2a2583c15b42bd7c1ef9eec58f827c25231b74baa45136bad0a/git-timestamp-0.9.5.tar.gz" } ], "0.9.6": [ { "comment_text": "", "digests": { "md5": "87ea28c6e841835e34bca176c19fe63b", "sha256": "b88d6a1a2348b723b5c5243f445cc48e8ea5b868cfd5bbea923f032dccba3be7" }, "downloads": -1, "filename": "git_timestamp-0.9.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "87ea28c6e841835e34bca176c19fe63b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 16274, "upload_time": "2019-08-14T12:46:10", "url": "https://files.pythonhosted.org/packages/af/ef/8714075e49371effcd98c8b3552ebee4baf58f75686b2dc519134648093a/git_timestamp-0.9.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c97d0c916f7c7236ccd8a5253a42270f", "sha256": "cbb53cfb81d6b2d3bdb0da36bb985860a536750f8081cd7998f676ffe877d27c" }, "downloads": -1, "filename": "git-timestamp-0.9.6.tar.gz", "has_sig": false, "md5_digest": "c97d0c916f7c7236ccd8a5253a42270f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 10629, "upload_time": "2019-08-14T12:46:11", "url": "https://files.pythonhosted.org/packages/91/42/59aad26ba64dbbdd68d3d5ce72ac9a880f73d7e1596c0cdcbbfac255003f/git-timestamp-0.9.6.tar.gz" } ], "0.9.7": [ { "comment_text": "", "digests": { "md5": "d29a10afd5af57c4c94e2c5ab3e1c2ee", "sha256": "077c80f5bd8477464e32921a70e9853fab7b59fe3f3b403749cba9c257592fd3" }, "downloads": -1, "filename": "git_timestamp-0.9.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d29a10afd5af57c4c94e2c5ab3e1c2ee", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 16773, "upload_time": "2019-09-01T17:39:07", "url": "https://files.pythonhosted.org/packages/9e/45/706173db5f29c2eec131d9e12d0243982cdcaae2c73cbb89a10224b946f7/git_timestamp-0.9.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c099dc9c05b3cef8e4aaa832358b4e02", "sha256": "e86e783066b004c6a21a2323bf8f1e44b52c3cdd26985e6e63b9debcf9839cf8" }, "downloads": -1, "filename": "git-timestamp-0.9.7.tar.gz", "has_sig": false, "md5_digest": "c099dc9c05b3cef8e4aaa832358b4e02", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 11105, "upload_time": "2019-09-01T17:39:09", "url": "https://files.pythonhosted.org/packages/38/98/c77e7a5446f482b2667798ba2c3a9d806544038a2974643b1a92977414cf/git-timestamp-0.9.7.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "d4249d15e4fe4e318593de7492acb247", "sha256": "bfa0d0b05eb027ab042f67fa7d0bde8f15e8225f5d418521ad9eb2c39aa5e410" }, "downloads": -1, "filename": "git_timestamp-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d4249d15e4fe4e318593de7492acb247", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 17740, "upload_time": "2019-09-23T16:02:26", "url": "https://files.pythonhosted.org/packages/57/a3/0966a3dc35fe749926ca204a6b67b32bef5b6f242113433391ced5640ff5/git_timestamp-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "559d1c9b91628408c65feb216839b58e", "sha256": "11b5e3bad3c7c46012c09a19d223a239e96e823ca51ca0f218bf2ab56a86c58b" }, "downloads": -1, "filename": "git-timestamp-1.0.0.tar.gz", "has_sig": false, "md5_digest": "559d1c9b91628408c65feb216839b58e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 12922, "upload_time": "2019-09-23T16:02:28", "url": "https://files.pythonhosted.org/packages/d7/79/cbc338fdcc55b96187fa57a900df5b757c0b2cd383d6e223c67529b36d6e/git-timestamp-1.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d4249d15e4fe4e318593de7492acb247", "sha256": "bfa0d0b05eb027ab042f67fa7d0bde8f15e8225f5d418521ad9eb2c39aa5e410" }, "downloads": -1, "filename": "git_timestamp-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d4249d15e4fe4e318593de7492acb247", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 17740, "upload_time": "2019-09-23T16:02:26", "url": "https://files.pythonhosted.org/packages/57/a3/0966a3dc35fe749926ca204a6b67b32bef5b6f242113433391ced5640ff5/git_timestamp-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "559d1c9b91628408c65feb216839b58e", "sha256": "11b5e3bad3c7c46012c09a19d223a239e96e823ca51ca0f218bf2ab56a86c58b" }, "downloads": -1, "filename": "git-timestamp-1.0.0.tar.gz", "has_sig": false, "md5_digest": "559d1c9b91628408c65feb216839b58e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 12922, "upload_time": "2019-09-23T16:02:28", "url": "https://files.pythonhosted.org/packages/d7/79/cbc338fdcc55b96187fa57a900df5b757c0b2cd383d6e223c67529b36d6e/git-timestamp-1.0.0.tar.gz" } ] }