{ "info": { "author": "Ross MacArthur", "author_email": "ross@macarthur.io", "bugtrack_url": null, "classifiers": [ "Environment :: Console", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython" ], "description": "PassTheSalt\n=============\n\n.. image:: https://img.shields.io/pypi/v/passthesalt.svg?style=flat-square\n :target: https://pypi.org/project/passthesalt/\n :alt: PyPI Version\n\n.. image:: https://img.shields.io/travis/rossmacarthur/passthesalt/master.svg?style=flat-square\n :target: https://travis-ci.org/rossmacarthur/passthesalt\n :alt: Build Status\n\n.. image:: https://img.shields.io/codecov/c/github/rossmacarthur/passthesalt/master.svg?style=flat-square\n :target: https://codecov.io/gh/rossmacarthur/passthesalt\n :alt: Code Coverage\n\nA command line application for deterministic password generation and password\nstorage.\n\nGetting started\n---------------\n\nInstall it using\n\n::\n\n pip install passthesalt\n\nand start storing secrets with\n\n::\n\n pts add\n\nHow does it work?\n-----------------\n\nSecrets are generated on the fly using the same secure algorithm each time which\nuses a *master password* and a *description* of the password. Only the\ndescription of the secret is stored. This means the secrets are not stored\nanywhere.\n\nThe generation algorithm is PBKDF2 using 2048 iterations of HMAC-SHA-256,\napplied to (*full name* + *master password*) as the key and the *description* as\nthe salt.\n\nSince sometimes you cannot choose your passwords the application also has\nprovision to securely encrypt secrets with the master password.\n\nUsage\n-----\n\nThe command line interface has the following commands\n\n::\n\n add Add a secret.\n diff Compare two stores.\n edit Edit a secret.\n encrypt Encrypt a secret.\n get Retrieve a secret.\n ls List the secrets.\n mv Relabel a secret.\n pull Retrieve a remote store.\n push Update the remote store.\n rm Remove a secret.\n\nAll commands and options are documented in the cli. You can use the ``--help``\noption with any command.\n\nMigrating from version 2.3.0\n----------------------------\n\nThe storage format changed between version 2.x.x and 3.x.x. To migrate to the\nlatest version of PassTheSalt you should first dump your 2.x.x store\n\n::\n\n pts dump -o passthesalt-v2-dump.json\n\nThen upgrade your PassTheSalt\n\n::\n\n pip install --upgrade passthesalt\n\nFinally, migrate the secrets\n\n::\n\n pts migrate -i passthesalt-v2-dump.json\n\nBe sure to first verify that your passwords still work! If so then delete the\n``passthesalt-v2-dump.json`` file.\n\nLicense\n-------\n\nThis project is licensed under the MIT License. See the `LICENSE`_ file.\n\n.. _LICENSE: LICENSE\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "https://github.com/rossmacarthur/passthesalt/archive/3.2.1.tar.gz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/rossmacarthur/passthesalt", "keywords": "password manager pbkdf2", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "passthesalt", "package_url": "https://pypi.org/project/passthesalt/", "platform": "", "project_url": "https://pypi.org/project/passthesalt/", "project_urls": { "Download": "https://github.com/rossmacarthur/passthesalt/archive/3.2.1.tar.gz", "Homepage": "https://github.com/rossmacarthur/passthesalt", "Issue Tracker": "https://github.com/rossmacarthur/passthesalt/issues" }, "release_url": "https://pypi.org/project/passthesalt/3.2.1/", "requires_dist": [ "click (<8.0,>=7.0)", "cryptography (<3.0.0,>=2.0.0)", "pyperclip (<2.0.0,>=1.0.0)", "requests (<3.0.0,>=2.0.0)", "serde[ext,toml] (<0.7.0,>=0.6.1)", "tabulate (<0.9.0,>=0.8.0)", "flake8 (>=3.7.0) ; extra == 'dev.lint'", "flake8-docstrings ; extra == 'dev.lint'", "flake8-isort ; extra == 'dev.lint'", "flake8-quotes ; extra == 'dev.lint'", "pep8-naming ; extra == 'dev.lint'", "pytest (>=3.6.0) ; extra == 'dev.test'", "pytest-cov ; extra == 'dev.test'" ], "requires_python": ">=3.6", "summary": "Deterministic password generation and password storage.", "version": "3.2.1" }, "last_serial": 5097044, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "918062305b4ef72db018d4a30ae3df6d", "sha256": "dd217d282d857abf45f96c79da173828f54b365d12bca987e29255a71c8f6f54" }, "downloads": -1, "filename": "passthesalt-1.0.0.tar.gz", "has_sig": false, "md5_digest": "918062305b4ef72db018d4a30ae3df6d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 5990, "upload_time": "2017-08-26T20:59:21", "url": "https://files.pythonhosted.org/packages/db/cc/6d2bc79b448d045f7c6ad6a3072e43a668a795a6906593b2a0380f7184e5/passthesalt-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "0a045add963721a4e05eb7a0fc9ade92", "sha256": "3c74f613bd868075cd406db5e02c8c149c23fae5bd5460291f2f891074f61c0e" }, "downloads": -1, "filename": "passthesalt-1.0.1.tar.gz", "has_sig": false, "md5_digest": "0a045add963721a4e05eb7a0fc9ade92", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 6018, "upload_time": "2017-09-04T13:43:10", "url": "https://files.pythonhosted.org/packages/d0/79/f02f19cfff412ce6343a7f14c8431258209dc10bf10d107481370e98bfa7/passthesalt-1.0.1.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "f93b3affb5f2a068293f4d89ff0ab6b5", "sha256": "dc339f9c16d8f48143db80eca3f263469755f0dc2d9f579e9307dcd82ea5df5f" }, "downloads": -1, "filename": "passthesalt-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f93b3affb5f2a068293f4d89ff0ab6b5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 7490, "upload_time": "2017-09-25T09:51:31", "url": "https://files.pythonhosted.org/packages/91/13/cd21a15efca50dfc1d70ed06837bf5077fa970e29246dc4e1d2750d3c313/passthesalt-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5aafe91e4c45cfea5454c7cb85800f49", "sha256": "5b467a45ea5142194f0a6111fd7ce6f39470e06317d4395af4aa1d1edf2b0747" }, "downloads": -1, "filename": "passthesalt-1.1.0.tar.gz", "has_sig": false, "md5_digest": "5aafe91e4c45cfea5454c7cb85800f49", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 6241, "upload_time": "2017-09-25T09:51:33", "url": "https://files.pythonhosted.org/packages/e3/61/4eb9da7d3697e9364d45e5c1534ed4a7dc5f94be4500d2cfc95da8ba4f21/passthesalt-1.1.0.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "2e973de6e528773ddc71d3ee9fe1f7a5", "sha256": "d9f52bb3b6eb39126a720ac3b94cfdfa45b6d66c1c241e347cbb758b7419d042" }, "downloads": -1, "filename": "passthesalt-2.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2e973de6e528773ddc71d3ee9fe1f7a5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 7817, "upload_time": "2017-12-24T18:14:09", "url": "https://files.pythonhosted.org/packages/61/20/deb2ed2dd6d4e5bee68f493bc1dd346b1057aa0c00ba3e242c10fb6cb650/passthesalt-2.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "60e29c3bf52ffac29d9afda635766566", "sha256": "e845932b46eac8e58cea17aea605869def7cb9f0ccdfc91d49d7ce673e5b25e6" }, "downloads": -1, "filename": "passthesalt-2.0.0.tar.gz", "has_sig": false, "md5_digest": "60e29c3bf52ffac29d9afda635766566", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 6588, "upload_time": "2017-12-24T18:14:12", "url": "https://files.pythonhosted.org/packages/00/6d/561d38f22f231c3b0f499f4cd66c4c72a214a67f9a7ae3cfd97a76c78ebd/passthesalt-2.0.0.tar.gz" } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "26db0a51a991ddb0403ea58432f9299d", "sha256": "d7cd489ba16ebd6c89d29e70c4b7d70b7699e19852235dd75ca3df6227e95023" }, "downloads": -1, "filename": "passthesalt-2.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "26db0a51a991ddb0403ea58432f9299d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 9152, "upload_time": "2018-03-22T11:08:38", "url": "https://files.pythonhosted.org/packages/40/85/e69c51ff9aec516aa97d5bfb6c4d9eb2183e71b735486a4f5278754d4b65/passthesalt-2.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "28dd8be668303b0f8815acffef4e5da3", "sha256": "ae1081f16d072b7072d833a4cb90b00e3af0c8bb062a6b2701c86ca814e807a8" }, "downloads": -1, "filename": "passthesalt-2.1.0.tar.gz", "has_sig": false, "md5_digest": "28dd8be668303b0f8815acffef4e5da3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 7881, "upload_time": "2018-03-22T11:08:40", "url": "https://files.pythonhosted.org/packages/0d/61/0721444352fe91a9a8275a5f1f7a6fd239619a0a2cc0bd94c98b582f25f6/passthesalt-2.1.0.tar.gz" } ], "2.2.0": [ { "comment_text": "", "digests": { "md5": "0a40f812c9659241d77b1099a93251ad", "sha256": "650d1f808317882c08094e0e77c91e60540d187137ec2c847be2141f9c0cb906" }, "downloads": -1, "filename": "passthesalt-2.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0a40f812c9659241d77b1099a93251ad", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 10264, "upload_time": "2018-03-27T08:58:51", "url": "https://files.pythonhosted.org/packages/c7/d4/446a444d95a3d46f1d8f676b45a4c96d50e90094c9eac9e560fed848d30a/passthesalt-2.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6a1f2917eecfcf36db393a172be9f4e6", "sha256": "f99b9145f4c37f982830ad03d822f2250299c1874e90682baf8e8162a2afe5dd" }, "downloads": -1, "filename": "passthesalt-2.2.0.tar.gz", "has_sig": false, "md5_digest": "6a1f2917eecfcf36db393a172be9f4e6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 8658, "upload_time": "2018-03-27T08:58:52", "url": "https://files.pythonhosted.org/packages/67/2c/1e48aa9d797c10251ee0bc93b7f324c4ff9eadfe0b0a78571df09f2b947d/passthesalt-2.2.0.tar.gz" } ], "2.2.1": [ { "comment_text": "", "digests": { "md5": "c7f8782e8a469d2dfb33676c14a1b310", "sha256": "41967ec64082fbcbe8076d5df3d74bdd7f5a92a03f67218a528559334b6bfac7" }, "downloads": -1, "filename": "passthesalt-2.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c7f8782e8a469d2dfb33676c14a1b310", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 8611, "upload_time": "2018-04-14T20:14:39", "url": "https://files.pythonhosted.org/packages/07/81/75f0c44f43a405623119d26db5b25d65820ecad73cb36902dbc4fb3185dd/passthesalt-2.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4b4e1c8407795579eee0e2516efd74b3", "sha256": "b023ff6fb7912c51f20238cce1b3b874847fad268058b3d4a362fb1fa9536adc" }, "downloads": -1, "filename": "passthesalt-2.2.1.tar.gz", "has_sig": false, "md5_digest": "4b4e1c8407795579eee0e2516efd74b3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 8718, "upload_time": "2018-04-14T20:14:41", "url": "https://files.pythonhosted.org/packages/58/da/da18eeafdee9aa0acdbe6cb71d2be326e698fb5a91a2d5a6ee1a695a0d41/passthesalt-2.2.1.tar.gz" } ], "2.3.0": [ { "comment_text": "", "digests": { "md5": "bca475dbabba625afbbd4f9bbf6365db", "sha256": "29cb21d6c961515b92ddcce3e9ffd15ce461d6005a3e064dcc8d15fc4a48dbaa" }, "downloads": -1, "filename": "passthesalt-2.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "bca475dbabba625afbbd4f9bbf6365db", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7", "size": 8813, "upload_time": "2018-09-26T12:43:44", "url": "https://files.pythonhosted.org/packages/b0/2e/b2852934ffa6f97c4d33065f46a34892617f0239efd00987473e6fba976d/passthesalt-2.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "952c1801864a3db3d6baf62dbb6687fb", "sha256": "ed17681bf3e2aea37ad78367dc63703916b211ee6cebc467ddeff3ec569066ac" }, "downloads": -1, "filename": "passthesalt-2.3.0.tar.gz", "has_sig": false, "md5_digest": "952c1801864a3db3d6baf62dbb6687fb", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 8873, "upload_time": "2018-09-26T12:43:45", "url": "https://files.pythonhosted.org/packages/fa/51/3c7ec4e9047fb72ae2ee5369f0e29c4e9bb03d16d51b1380b355beac2576/passthesalt-2.3.0.tar.gz" } ], "3.0.0": [ { "comment_text": "", "digests": { "md5": "ce52b0c06182fa28eb9d2696cbf8f6e6", "sha256": "09de2bf9b51ac5627aa696619f55de5f5e0018fe7b5f2ee6dcd49ec8126b69de" }, "downloads": -1, "filename": "passthesalt-3.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ce52b0c06182fa28eb9d2696cbf8f6e6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 17904, "upload_time": "2019-01-30T11:23:41", "url": "https://files.pythonhosted.org/packages/1b/d4/49cd4f1846317d1dfd4bd8e54cb4bb2b27d67db334143221b7860d7fac9f/passthesalt-3.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f8cc6ca42ac358fd45fb911aebcd8f72", "sha256": "10741fd76c1546b8b14b052033eec82236e297a5aeda2d586ce0cb9dea079a23" }, "downloads": -1, "filename": "passthesalt-3.0.0.tar.gz", "has_sig": false, "md5_digest": "f8cc6ca42ac358fd45fb911aebcd8f72", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 22992, "upload_time": "2019-01-30T11:23:43", "url": "https://files.pythonhosted.org/packages/eb/e0/3ce00d3af4ec8055b60a48fe000977515eb4eeff4137bb342c7f396ba3e3/passthesalt-3.0.0.tar.gz" } ], "3.1.0": [ { "comment_text": "", "digests": { "md5": "4a91657fab7263c7578b6a82bbdce9ab", "sha256": "d60efc842ab0d6a392181513cbe1fb851e4eddd725c517b04b516014692f5c59" }, "downloads": -1, "filename": "passthesalt-3.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "4a91657fab7263c7578b6a82bbdce9ab", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 18468, "upload_time": "2019-03-20T12:47:34", "url": "https://files.pythonhosted.org/packages/f7/f2/50e5cdbefe3a74d4b7cb5a1566451493ec8b6a93a799088226e41351d7ce/passthesalt-3.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "107b68817bf6d1911f912a35dda01b63", "sha256": "f2acbc81d48a80c3b7ab39a96b4cdb754f89e9888efe315dde2fcabad70bdfbe" }, "downloads": -1, "filename": "passthesalt-3.1.0.tar.gz", "has_sig": false, "md5_digest": "107b68817bf6d1911f912a35dda01b63", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 23929, "upload_time": "2019-03-20T12:47:36", "url": "https://files.pythonhosted.org/packages/ee/8c/125aaef567f18cdcab80c60b8730cc3c87ac4b24716daf8864e219120b7d/passthesalt-3.1.0.tar.gz" } ], "3.2.0": [ { "comment_text": "", "digests": { "md5": "dd2e06f533472300411d7eb7c072fa80", "sha256": "eb118df90b9c2d907b3ed2fe8f107a17ca7f18e7f0b9e3857647e07c8e506758" }, "downloads": -1, "filename": "passthesalt-3.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "dd2e06f533472300411d7eb7c072fa80", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 18373, "upload_time": "2019-04-04T11:38:56", "url": "https://files.pythonhosted.org/packages/c6/db/bc73a2e86eab42f918b6cc12ad261df619343e9898dc39b3a78987ae0dcc/passthesalt-3.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c2a88c44755753c1134f43a8e3c33496", "sha256": "4e56b23388536cc80223760aa2ae78e9c79159d70230a9f89219febf7b267c85" }, "downloads": -1, "filename": "passthesalt-3.2.0.tar.gz", "has_sig": false, "md5_digest": "c2a88c44755753c1134f43a8e3c33496", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 23842, "upload_time": "2019-04-04T11:38:58", "url": "https://files.pythonhosted.org/packages/d7/c6/7226209ed9da52d364fd060804e0885cc086f4c22e45ac8febc623b98eaa/passthesalt-3.2.0.tar.gz" } ], "3.2.1": [ { "comment_text": "", "digests": { "md5": "aaa353707dcfaaf4f5d8fdca3de6dfe9", "sha256": "6e0a9fc3ef736f3cabda2eabe9d0e6cf359005e7e6c5991863b2094da6bf001c" }, "downloads": -1, "filename": "passthesalt-3.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "aaa353707dcfaaf4f5d8fdca3de6dfe9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 18363, "upload_time": "2019-04-04T12:43:49", "url": "https://files.pythonhosted.org/packages/57/93/14cee48c250968f9f6ecaf6fa2ece62750d51bad49c060d2c2303cd2f1d1/passthesalt-3.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e496e11c7a1a24537a9c68f95a04a6f1", "sha256": "7a248a80a150d037a35487db26bacfe5120ddb72416ac6d60efce8bb9acb22cb" }, "downloads": -1, "filename": "passthesalt-3.2.1.tar.gz", "has_sig": false, "md5_digest": "e496e11c7a1a24537a9c68f95a04a6f1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 16737, "upload_time": "2019-04-04T12:43:50", "url": "https://files.pythonhosted.org/packages/d0/3c/bc5000147d5820cbac64237ac3e30a4d0310707bcc74ca78fa3587425bbb/passthesalt-3.2.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "aaa353707dcfaaf4f5d8fdca3de6dfe9", "sha256": "6e0a9fc3ef736f3cabda2eabe9d0e6cf359005e7e6c5991863b2094da6bf001c" }, "downloads": -1, "filename": "passthesalt-3.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "aaa353707dcfaaf4f5d8fdca3de6dfe9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 18363, "upload_time": "2019-04-04T12:43:49", "url": "https://files.pythonhosted.org/packages/57/93/14cee48c250968f9f6ecaf6fa2ece62750d51bad49c060d2c2303cd2f1d1/passthesalt-3.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e496e11c7a1a24537a9c68f95a04a6f1", "sha256": "7a248a80a150d037a35487db26bacfe5120ddb72416ac6d60efce8bb9acb22cb" }, "downloads": -1, "filename": "passthesalt-3.2.1.tar.gz", "has_sig": false, "md5_digest": "e496e11c7a1a24537a9c68f95a04a6f1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 16737, "upload_time": "2019-04-04T12:43:50", "url": "https://files.pythonhosted.org/packages/d0/3c/bc5000147d5820cbac64237ac3e30a4d0310707bcc74ca78fa3587425bbb/passthesalt-3.2.1.tar.gz" } ] }