{ "info": { "author": "Richard Davis", "author_email": "crashvb@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# docker-sign-verify\n\n## Overview\n\nA utility that can be used to create and verify embedded signatures in docker images, and verify the integrity of image metadata and layers.\n\nThe goal of this utility is to operate directly on:\n\n* Docker Registies (v2)\n* Docker Repositories (devicemapper, overlay2, aufs)\n* Docker archives (from docker-save)\n\n## Features\n\n* Verifies and signs files in place; no need to replicate images using docker-cli.\n* Extensible signing technologies; built-in support for GnuPG and PKI.\n* Integrates with the docker credentials store.\n\n## Compatibility\n\n* Tested with python 3.7\n* Not tested in python 2.X\n\n## Installation\n### From [pypi.org](https://pypi.org/project/docker_sign_verify/)\n\n```\n$ pip install docker_sign_verify\n```\n\n### From source code\n\n```bash\n$ git clone https://github.com/crashvb/docker-sign-verify\n$ cd docker-sign-verify\n$ virtualenv env\n$ source env/bin/activate\n$ python -m pip install --editable .[dev]\n```\n\n## Usage\n### Signing and verifying an image\n\nUsing master key with id `7DDD762AFCDF1E55` and sukey with id `9DD1BB948581B0AD`:\n\n```bash\n$ gpg --keyid-format LONG --list-keys 7DDD762AFCDF1E55\npub rsa4096/7DDD762AFCDF1E55 2017-11-30 [SC] [expires: 2027-11-28]\nuid [ultimate] Richard Davis \nsub rsa4096/9DD1BB948581B0AD 2017-11-30 [S] [expires: 2027-11-28]\n```\n\nResolve the tag `crashvb/base:ubuntu` in a remote registry `registry:5000`, verify all layers, and sign the digest of the\ncanonicalized configuration. Then, upload a new manifest containing the embedded signatures, and assign it the tag\n`crashvb/base:ubuntu_signed`.\n\n\n```bash\n$ docker-sign --debug registry --keyid=\"7DDD762AFCDF1E55\" registry:5000/crashvb/base:ubuntu registry:5000/crashvb/base:ubuntu_signed\nKeypass []:\nINFO:root:Signing: registry:5000/crashvb/base:ubuntu ...\nINFO:root:Verifying Integrity: registry:5000/crashvb/base:ubuntu ...\nDEBUG:root: config digest: sha256:8ff76ab7ecbe0...424bf93cacad083c0\nDEBUG:root: manifest layers:\n sha256:3b37166ec6145...4e6a6e7580cdeff8e\n sha256:504facff238fd...ddc52d31448a044bd\n sha256:ebbcacd28e101...73bf796e12b1bb449\n sha256:c7fb3351ecad2...042086fe72c902b8a\n sha256:2e3debadcbf7e...eca27cb4d809d56c2\n sha256:a5396a146776f...4e30f97ed2e9891a4\n sha256:6389d93ef5c7f...243609c6f41637e84\n sha256:e05442215521c...fbdadc15c5c80294f\n sha256:f4ed07aa21a9b...f1fd5a4095bf575c9\n sha256:e41e7b47a71d3...4611b5ed003208f81\n sha256:ae19c1f4b6b19...b28fef2632aca9064\nDEBUG:root: image layers:\n sha256:8823818c47486...45be9ba0eb149a643\n sha256:19d043c86cbcb...da1e8fc6ce1e43d7f\n sha256:883eafdbe580e...50cad1875e13e3915\n sha256:4775b2f378bb7...91719367c739ef25a\n sha256:75b79e19929ce...1ee48b949261770cf\n sha256:440c82316bee2...ed8d2c3f168299db8\n sha256:0538f6ef1ac4c...4cb5a61b9bd530929\n sha256:090cbbe4fbc62...25f7322fb5cd1d619\n sha256:5b42cc22f7bd7...4492f3790f05fccbc\n sha256:ffd252d089fe6...b41e7336a18e12c8a\n sha256:22681af0cc030...ca77af16b6bfeb204\nINFO:root:Integrity check passed.\nDEBUG:root: Signature:\n-----BEGIN PGP SIGNATURE-----\n\niQIcBAABCgAGBQJcW2I9AAoJEJ3Ru5SFgbCtfW0QAJO4WCS/0hPwby3RpIYxSZ74\ndcr7lRccsH7afdEuFXp5SlxXBL8gXyfEAcmUcuwzhapGdBPntWXqf10R3tq9Bx0j\n36AOwZGt+vSCGdvOz6MEyCgS/JBXXGAUt3L0ciB4dCh/Un2ANSqQ1g+vT2zhHoL5\nHggzDTaddawU8sSGhIj/fR62+ari5xWIXs2Vn3+wTjrdiQ6G3W2cb64LWTCYo2sH\nqenDO4Z3AkdzRMT10Z4IqkU2XjHQiqIJhdcdJMnF+JZU8pbzmKDyXLE5JOt8Dx39\nR2G4AUNXA9vQClYBShAUSTSB2nMRd2fX2GWd/jKgn0mvLa3a+V27VmYW/jQGRWHW\nqlJsh0WUBeVQjLGpf+zqknhAXnNmm5ZIvCYqPVJ3PAR6BGi7luzk9s2wBgzlDbED\nJCaFka6U1b/YAAc+PTs6Am4N0bGS1p9r7GWb+i7PFWTwH/H5D1MDXDgDNyjE52Qh\nDyXgcaJBnQbu2T6BbzYY2WSyvjPWVOkwQGb2lpBKrO7Y1w7T7VMlTVloI+hPWfSs\n5VxmfyFNJFHq5Iqo1N76W1/mSDPxv6qF3NOxvK+rMsoqqGJ7/BR8RB4jueeXTgLf\nYr0rnXDsuKbNmh88x/GPg+xbf3m2nVv9kB0F5vhb9J756rlwb1A8+RDVDRs5ICLF\nm7KvRvDb7+zZvnur5lTu\n=voGn\n-----END PGP SIGNATURE-----\nDEBUG:root: config digest (signed): sha256:d9e31c5898fe25bb7b3ac86f8570b8961d5d878aace796920a9da3f8cd8251cb\nINFO:root:Created new image: registry:5000/crashvb/base:ubuntu_signed\n```\n\nResolve the tag `crashvb/base:ubuntu_signed` in a remote registry `registry:5000`, verify all layers and embedded\nsignatures.\n\n```bash\n$ docker-verify --debug registry registry:5000/crashvb/base:ubuntu_signed\nINFO:root:Verifying Integrity: registry:5000/crashvb/base:ubuntu_signed ...\nDEBUG:root: config digest: sha256:d9e31c5898fe2...20a9da3f8cd8251cb\nDEBUG:root: manifest layers:\n sha256:3b37166ec6145...4e6a6e7580cdeff8e\n sha256:504facff238fd...ddc52d31448a044bd\n sha256:ebbcacd28e101...73bf796e12b1bb449\n sha256:c7fb3351ecad2...042086fe72c902b8a\n sha256:2e3debadcbf7e...eca27cb4d809d56c2\n sha256:a5396a146776f...4e30f97ed2e9891a4\n sha256:6389d93ef5c7f...243609c6f41637e84\n sha256:e05442215521c...fbdadc15c5c80294f\n sha256:f4ed07aa21a9b...f1fd5a4095bf575c9\n sha256:e41e7b47a71d3...4611b5ed003208f81\n sha256:ae19c1f4b6b19...b28fef2632aca9064\nDEBUG:root: image layers:\n sha256:8823818c47486...45be9ba0eb149a643\n sha256:19d043c86cbcb...da1e8fc6ce1e43d7f\n sha256:883eafdbe580e...50cad1875e13e3915\n sha256:4775b2f378bb7...91719367c739ef25a\n sha256:75b79e19929ce...1ee48b949261770cf\n sha256:440c82316bee2...ed8d2c3f168299db8\n sha256:0538f6ef1ac4c...4cb5a61b9bd530929\n sha256:090cbbe4fbc62...25f7322fb5cd1d619\n sha256:5b42cc22f7bd7...4492f3790f05fccbc\n sha256:ffd252d089fe6...b41e7336a18e12c8a\n sha256:22681af0cc030...ca77af16b6bfeb204\nINFO:root:Integrity check passed.\nINFO:root:Verifying Signature(s): registry:5000/crashvb/base:ubuntu_signed ...\nDEBUG:root: config digest (signed): sha256:d9e31c5898fe2...20a9da3f8cd8251cb\nDEBUG:root: config digest (unsigned): sha256:8ff76ab7ecbe0...424bf93cacad083c0\nDEBUG:root: signtures:\nDEBUG:root: Signature made 2019-02-06 22:39:57 using key ID 9DD1BB948581B0AD\nDEBUG:root: Richard Davis \nINFO:root:Signature check passed.\n```\n\nReplicate both images to a local repository\n\n```bash\n$ docker pull registry:5000/crashvb/base:ubuntu\nubuntu: Pulling from crashvb/base\n3b37166ec614: Download complete\n504facff238f: Download complete\nebbcacd28e10: Download complete\nc7fb3351ecad: Download complete\n2e3debadcbf7: Download complete\na5396a146776: Download complete\n6389d93ef5c7: Download complete\ne05442215521: Download complete\nf4ed07aa21a9: Download complete\ne41e7b47a71d: Download complete\nae19c1f4b6b1: Download complete\nDigest: sha256:8acac09a29bb9364dca10cce18e7d2fd4f83cb495a8519af585b56bcfeba03ca\nStatus: Downloaded newer image for registry:5000/crashvb/base:ubuntu\n```\n\n```bash\n$ docker pull registry:5000/crashvb/base:ubuntu_signed\nubuntu_signed: Pulling from crashvb/base\n3b37166ec614: Already exists\n504facff238f: Already exists\nebbcacd28e10: Already exists\nc7fb3351ecad: Already exists\n2e3debadcbf7: Already exists\na5396a146776: Already exists\n6389d93ef5c7: Already exists\ne05442215521: Already exists\nf4ed07aa21a9: Already exists\ne41e7b47a71d: Already exists\nae19c1f4b6b1: Already exists\nDigest: sha256:36e6e7cae412993ba19c0cf9a4583d1988e7668b5ce8e959f1915aabd0bb3bb2\nStatus: Downloaded newer image for registry:5000/crashvb/base:ubuntu_signed\n```\n\n```bash\n$ docker images --format=\"{{.ID}}\" registry:5000/crashvb/base:ubuntu\n8ff76ab7ecbe\n```\n\n```bash\n$ docker images --format=\"{{.ID}}\" registry:5000/crashvb/base:ubuntu_signed\nd9e31c5898fe\n```\n\n### Environment Variables\n\n| Variable | Default Value | Description |\n| ---------| ------------- | ----------- |\n| DSV_GPG_DATASTORE | ~/.gnupg | The GnuPG home directory. |\n| DSV_PKI_DATASTORE | ~/.dsv.pem | The PKI key store and trust store (concatinated PEM entities). |\n| DSV_DOCKERHUB_AUTH | auth.docker.io | The dockerhub authentication endpoint. |\n| DSV_DEFAULT_REGISTRY | index.docker.io | The dockerhub registry API endpoint. |\n| DSV_CREDENTIALS_STORE | ~/.docker/config.json | The docker credentials store. |\n| DSV_KEYID | _None_ | Identifier of the signing key. For GnuPG this is the keyid. For PKI this is the path to PEM encoded private key. |\n| DSV_KEYPASS | \"\" | The corresponding key passphrase. |\n| DSV_KEYTYPE | GPG | The signature type. Either GPG or PKI.\n\n\n## Development\n\n[Source Control](https://github.com/crashvb/docker-sign-verify)\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://pypi.org/project/docker-sign-verify/", "keywords": "docker docker-sign docker-verify integrity sign signatures verify", "license": "Apache License 2.0", "maintainer": "", "maintainer_email": "", "name": "docker-sign-verify", "package_url": "https://pypi.org/project/docker-sign-verify/", "platform": "", "project_url": "https://pypi.org/project/docker-sign-verify/", "project_urls": { "Homepage": "https://pypi.org/project/docker-sign-verify/" }, "release_url": "https://pypi.org/project/docker-sign-verify/0.5.4/", "requires_dist": [ "canonicaljson", "click", "gnupg", "pycryptodome", "requests", "www-authenticate", "black ; extra == 'dev'", "pylint ; extra == 'dev'", "twine ; extra == 'dev'", "pytest ; extra == 'dev'", "wheel ; extra == 'dev'" ], "requires_python": "", "summary": "A utility that can be used to sign and verify docker images.", "version": "0.5.4" }, "last_serial": 5915844, "releases": { "0.3.1.dev0": [ { "comment_text": "", "digests": { "md5": "c38148dea50d34b97e01a1e70fb36b61", "sha256": "fbb87a6c4f70cea43a50e898efa96f04d7a394f01d896e49703dea9c050a238f" }, "downloads": -1, "filename": "docker_sign_verify-0.3.1.dev0-py3-none-any.whl", "has_sig": true, "md5_digest": "c38148dea50d34b97e01a1e70fb36b61", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 38390, "upload_time": "2019-02-07T01:36:10", "url": "https://files.pythonhosted.org/packages/0c/17/f52aef387ddecc7a01ee9c8a25053371b2a4f90e021cd4d3f442d530d024/docker_sign_verify-0.3.1.dev0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7f4f733950beca46e3b4fdac5d83a622", "sha256": "d3c37230e6f005edb2f3ba71329cbdc5e6f289bf9c3003e8151cd5245c50cc83" }, "downloads": -1, "filename": "docker_sign_verify-0.3.1.dev0.tar.gz", "has_sig": true, "md5_digest": "7f4f733950beca46e3b4fdac5d83a622", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31470, "upload_time": "2019-02-07T01:36:12", "url": "https://files.pythonhosted.org/packages/8c/48/9ce74ea4ed962fe5bfa73bd1d95e5d1199c28c52fbc4767a5b1b775a20f4/docker_sign_verify-0.3.1.dev0.tar.gz" } ], "0.3.2.dev0": [ { "comment_text": "", "digests": { "md5": "ebbc5e97bdf6b0c9ca6c4f8d4540d3ae", "sha256": "9912c755710ac2552c72c909a94ea239c941d5f797cf6f150d30908df9920cec" }, "downloads": -1, "filename": "docker_sign_verify-0.3.2.dev0-py3-none-any.whl", "has_sig": true, "md5_digest": "ebbc5e97bdf6b0c9ca6c4f8d4540d3ae", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 39377, "upload_time": "2019-03-19T01:27:19", "url": "https://files.pythonhosted.org/packages/6a/b3/a1f58a28870d8e70f1ebd9b2f711096a8e359f87181d7d63f398a69f1132/docker_sign_verify-0.3.2.dev0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "60eb3becd1f991dfd0f1696aec202686", "sha256": "84480c305026a3860cb72aa080b4ec2e6763008ffa1e2eebeccbc1d8a6af7d2f" }, "downloads": -1, "filename": "docker_sign_verify-0.3.2.dev0.tar.gz", "has_sig": true, "md5_digest": "60eb3becd1f991dfd0f1696aec202686", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32330, "upload_time": "2019-03-19T01:27:20", "url": "https://files.pythonhosted.org/packages/cd/ee/f205f4bfc8eeb392efa57fc33158916c3e632dd01005906e1ee89d35bb7d/docker_sign_verify-0.3.2.dev0.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "215f9218e515374141792ed88581bfe3", "sha256": "a8abd2df5b9d5e207551a28ccc5acff0a07df34dcca696a5a0ec2833fe2400c4" }, "downloads": -1, "filename": "docker_sign_verify-0.3.3-py3-none-any.whl", "has_sig": true, "md5_digest": "215f9218e515374141792ed88581bfe3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 39315, "upload_time": "2019-03-20T16:11:07", "url": "https://files.pythonhosted.org/packages/a0/61/fe1e39b925a29e70e6b8b63607a4d102d23a9a06caf3b52856daeebfcbdf/docker_sign_verify-0.3.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bb56f47c579df709e5f7a0910a40ca4b", "sha256": "3a223a298bff329462021e75bc25cac2e4ace084006f823d971ec6e29eacd803" }, "downloads": -1, "filename": "docker_sign_verify-0.3.3.tar.gz", "has_sig": true, "md5_digest": "bb56f47c579df709e5f7a0910a40ca4b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32319, "upload_time": "2019-03-20T16:11:09", "url": "https://files.pythonhosted.org/packages/2c/6e/12ac8a4add1308b97e2207d8f8e34d3785522ade7133d053cec76637b0cf/docker_sign_verify-0.3.3.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "218df314cdf6e4df8bcd66f337450963", "sha256": "f66e09481a819a5c80594bbc0c2b6dd13d6d20da4e902dd2f636eb567d035036" }, "downloads": -1, "filename": "docker_sign_verify-0.4.0-py3-none-any.whl", "has_sig": true, "md5_digest": "218df314cdf6e4df8bcd66f337450963", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 45146, "upload_time": "2019-03-28T02:35:36", "url": "https://files.pythonhosted.org/packages/e8/94/975c99c31e16cbb8cc01b3157f41accfb92926236ccc390bda126e98f6e4/docker_sign_verify-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e486175b0befccf14c24f98482ce365d", "sha256": "f6e1c24098af65983fd02f457c6c8de72ecbc35c5e5d4ba98d4c1ca9a5716809" }, "downloads": -1, "filename": "docker_sign_verify-0.4.0.tar.gz", "has_sig": true, "md5_digest": "e486175b0befccf14c24f98482ce365d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36207, "upload_time": "2019-03-28T02:35:38", "url": "https://files.pythonhosted.org/packages/0d/ee/cbf862811c2137bd485351b59a234c05af1fca36d58d1c54be382122273e/docker_sign_verify-0.4.0.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "cf38f8ca857778e2d4615a696dcddaed", "sha256": "db8ebe6873ccdd0b1e7de359f4daf23591460211eb7d41f45823ef9a9ffdc0d0" }, "downloads": -1, "filename": "docker_sign_verify-0.4.2-py3-none-any.whl", "has_sig": true, "md5_digest": "cf38f8ca857778e2d4615a696dcddaed", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 45656, "upload_time": "2019-03-28T20:27:20", "url": "https://files.pythonhosted.org/packages/88/29/caa2cd19368f65364c672930d5342a15dbca6d09844cdba4e30ca236c827/docker_sign_verify-0.4.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a33b5009c575f8c92ec67d8744049b10", "sha256": "320fb4abd90c456470915ebf17c719be2e418b6a53a62f8f4894810e07a70302" }, "downloads": -1, "filename": "docker_sign_verify-0.4.2.tar.gz", "has_sig": true, "md5_digest": "a33b5009c575f8c92ec67d8744049b10", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36714, "upload_time": "2019-03-28T20:27:22", "url": "https://files.pythonhosted.org/packages/91/9f/67986a57c322953fe1199ce193033a4329a32f79b0f1cd8875f276ba5ee7/docker_sign_verify-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "00f2110e1a3859fcc10601e36a40b209", "sha256": "cb71046eea3c7ec305a17e4e7354e4bc7e59b308739aac470b6979d3c030e0df" }, "downloads": -1, "filename": "docker_sign_verify-0.4.3-py3-none-any.whl", "has_sig": true, "md5_digest": "00f2110e1a3859fcc10601e36a40b209", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 45711, "upload_time": "2019-05-16T01:19:10", "url": "https://files.pythonhosted.org/packages/48/94/5f8861c9a22c304bb2e5ea6615cb49362ab397aa2e0b9e567287c78930ef/docker_sign_verify-0.4.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "79d7359d6de0a7b4e9434c454f98232b", "sha256": "0d41d8dfd9cfe276e5dce8b7e2c6fb7bad077a0d1c78b6a58091a2ee9db69623" }, "downloads": -1, "filename": "docker_sign_verify-0.4.3.tar.gz", "has_sig": true, "md5_digest": "79d7359d6de0a7b4e9434c454f98232b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36802, "upload_time": "2019-05-16T01:19:12", "url": "https://files.pythonhosted.org/packages/cc/c8/b33fb8c56387debb03fe9901ab2866a0dfce42b9f80e71f55c4db656ca65/docker_sign_verify-0.4.3.tar.gz" } ], "0.4.4": [ { "comment_text": "", "digests": { "md5": "d2184be3ede0b051ff1bae92b3c57c22", "sha256": "aedfb94d2dc89abac19814597d3c54f14d432a34eac686d20b5ee3b57b125a1f" }, "downloads": -1, "filename": "docker_sign_verify-0.4.4-py3-none-any.whl", "has_sig": true, "md5_digest": "d2184be3ede0b051ff1bae92b3c57c22", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 45944, "upload_time": "2019-05-16T19:13:25", "url": "https://files.pythonhosted.org/packages/2b/37/811456d68d1e9dd9861005fd71a6b564ca0337a8dbea74dd1340af74d834/docker_sign_verify-0.4.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "256e73970ac4c5b673c941af2420d08b", "sha256": "e9a8b3fc27c4c1da7960eceb73b0b6a396c4b9221a29cbcde77d232a8f3052c3" }, "downloads": -1, "filename": "docker_sign_verify-0.4.4.tar.gz", "has_sig": true, "md5_digest": "256e73970ac4c5b673c941af2420d08b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36984, "upload_time": "2019-05-16T19:13:28", "url": "https://files.pythonhosted.org/packages/0c/a0/61a76fc89a17cf6e6d9994022ad3950b9232134540ab40fe611cd7de8bb8/docker_sign_verify-0.4.4.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "9f506ddcb0987b1386102ee1a6e39353", "sha256": "32c784bf6390a004f1447b93c78ad7688b1ca8908fc4820864df1ed618a06074" }, "downloads": -1, "filename": "docker_sign_verify-0.5.0-py3-none-any.whl", "has_sig": true, "md5_digest": "9f506ddcb0987b1386102ee1a6e39353", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 46806, "upload_time": "2019-07-22T19:32:53", "url": "https://files.pythonhosted.org/packages/8a/d4/a1fb23d9af4104b01f6b09d1fdfaf09e4a48d82af0c8a70b5ea5acf161f2/docker_sign_verify-0.5.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b3a3f74ffbcf1b352206016a9f93825c", "sha256": "59f622ddc7e167736549c17b77c1f2d85e0ba3f7dd429db7a0afcacef33fde78" }, "downloads": -1, "filename": "docker_sign_verify-0.5.0.tar.gz", "has_sig": true, "md5_digest": "b3a3f74ffbcf1b352206016a9f93825c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37454, "upload_time": "2019-07-22T19:32:55", "url": "https://files.pythonhosted.org/packages/97/04/ba665ed61dad644df0622bddcab2d71128de5ea43960d48a17c760c93e6c/docker_sign_verify-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "5ee2fe7c81c3df8e22b684c9763c9598", "sha256": "430b26231e809c61c2a9c552e28ebaa44ba6cada0ee941e4333953f5ab41bfa1" }, "downloads": -1, "filename": "docker_sign_verify-0.5.1-py3-none-any.whl", "has_sig": true, "md5_digest": "5ee2fe7c81c3df8e22b684c9763c9598", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 46835, "upload_time": "2019-07-23T20:25:58", "url": "https://files.pythonhosted.org/packages/0a/79/9e53b7a5e7ad8c0adb9a0fcbd5213d655ba3c6a8aff58f9cc6851f7d2ad2/docker_sign_verify-0.5.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "22cb9192f8f9edbc49fc8ee5c43378a7", "sha256": "aeac963da02f697b33f2da8122ca6636d0ebeb3d139f4f54fc2b4b612f1738c6" }, "downloads": -1, "filename": "docker_sign_verify-0.5.1.tar.gz", "has_sig": true, "md5_digest": "22cb9192f8f9edbc49fc8ee5c43378a7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37478, "upload_time": "2019-07-23T20:26:00", "url": "https://files.pythonhosted.org/packages/e6/38/91562e35caded4099ee676e0a9461cde6e249b1deb62f6d10e937bbf434c/docker_sign_verify-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "0c59775b885bec14474a7e1f74cf5555", "sha256": "db45d693b9c48256d9bc0cd23e63073064acd0605bfb3135ff0776fbf324a77c" }, "downloads": -1, "filename": "docker_sign_verify-0.5.2-py3-none-any.whl", "has_sig": true, "md5_digest": "0c59775b885bec14474a7e1f74cf5555", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 49148, "upload_time": "2019-08-02T02:14:48", "url": "https://files.pythonhosted.org/packages/3f/17/7ab41f80bf9a456612d5a96c6661c0581dc786ad6b716df6080c1c39d109/docker_sign_verify-0.5.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "be3bfe54c2a6f24640f6637a602dc97a", "sha256": "ae65e4e29e9f55aebe38ab48d49e8343b64af6ab02037bc2109f6a0833e2e9d7" }, "downloads": -1, "filename": "docker_sign_verify-0.5.2.tar.gz", "has_sig": true, "md5_digest": "be3bfe54c2a6f24640f6637a602dc97a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38592, "upload_time": "2019-08-02T02:14:50", "url": "https://files.pythonhosted.org/packages/e9/6b/6c42f3b2931d798648c560bd5b84e0798f461bbd373b385fbb9ae1ac78e1/docker_sign_verify-0.5.2.tar.gz" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "b2c4d16c3fdb20c34a44526362f113a6", "sha256": "f3cfde1addc4bf58ef5915922fec6c6cc87e8140b34d54c7a29aaaa346b1c074" }, "downloads": -1, "filename": "docker_sign_verify-0.5.3-py3-none-any.whl", "has_sig": true, "md5_digest": "b2c4d16c3fdb20c34a44526362f113a6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 49833, "upload_time": "2019-08-28T23:02:31", "url": "https://files.pythonhosted.org/packages/0b/d3/ce77380994483777f54cf7733c423ba42d77041804118f5654394d5dcb40/docker_sign_verify-0.5.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "807f5ecefec83bfcc2012b3497750b2d", "sha256": "1b7625ac32260f45c56afc0976ae5b36290ea300b714c651909eae104b932758" }, "downloads": -1, "filename": "docker_sign_verify-0.5.3.tar.gz", "has_sig": true, "md5_digest": "807f5ecefec83bfcc2012b3497750b2d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39082, "upload_time": "2019-08-28T23:02:32", "url": "https://files.pythonhosted.org/packages/ab/34/091d0d47f895e1a9349f156361f568ed7a84a31d6d76773848623c89c20f/docker_sign_verify-0.5.3.tar.gz" } ], "0.5.4": [ { "comment_text": "", "digests": { "md5": "f699a170bd43b5e00899adb3d6f4549d", "sha256": "09c256b6a9cc41a43aa7bffeeb707868afffa8c924d957153c91f5ad04a6789e" }, "downloads": -1, "filename": "docker_sign_verify-0.5.4-py3-none-any.whl", "has_sig": true, "md5_digest": "f699a170bd43b5e00899adb3d6f4549d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 49886, "upload_time": "2019-10-02T03:26:05", "url": "https://files.pythonhosted.org/packages/58/e1/456ec63fa45b9bb9ae6a199e095dd2e913c306605ff78815a72c22bfdc3f/docker_sign_verify-0.5.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ce820cdc306f11474ec4eca497787554", "sha256": "eb657ab218596ad00b4dfeb43a47fad1724a0b46e9e4e4d9bd7a6315465eb729" }, "downloads": -1, "filename": "docker_sign_verify-0.5.4.tar.gz", "has_sig": true, "md5_digest": "ce820cdc306f11474ec4eca497787554", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39125, "upload_time": "2019-10-02T03:26:07", "url": "https://files.pythonhosted.org/packages/b8/42/b445ce2bd8e8b2c0315b1cdf4f0f0f8407ed4b00eb063e4ea32d9322e2be/docker_sign_verify-0.5.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f699a170bd43b5e00899adb3d6f4549d", "sha256": "09c256b6a9cc41a43aa7bffeeb707868afffa8c924d957153c91f5ad04a6789e" }, "downloads": -1, "filename": "docker_sign_verify-0.5.4-py3-none-any.whl", "has_sig": true, "md5_digest": "f699a170bd43b5e00899adb3d6f4549d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 49886, "upload_time": "2019-10-02T03:26:05", "url": "https://files.pythonhosted.org/packages/58/e1/456ec63fa45b9bb9ae6a199e095dd2e913c306605ff78815a72c22bfdc3f/docker_sign_verify-0.5.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ce820cdc306f11474ec4eca497787554", "sha256": "eb657ab218596ad00b4dfeb43a47fad1724a0b46e9e4e4d9bd7a6315465eb729" }, "downloads": -1, "filename": "docker_sign_verify-0.5.4.tar.gz", "has_sig": true, "md5_digest": "ce820cdc306f11474ec4eca497787554", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39125, "upload_time": "2019-10-02T03:26:07", "url": "https://files.pythonhosted.org/packages/b8/42/b445ce2bd8e8b2c0315b1cdf4f0f0f8407ed4b00eb063e4ea32d9322e2be/docker_sign_verify-0.5.4.tar.gz" } ] }