{ "info": { "author": "philipbergen", "author_email": "philipbergen at gmail com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: MacOS :: MacOS X", "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Topic :: Software Development" ], "description": "=========\nSALVUS\n=========\n\nIn-memory credential store with yubikey authorization.\n\nStores a set of ID and VALUE for each KEY. Usually ID is the username\nand VALUE is the password. Neither field may contain newlines.\n\n-----------------------\nCommand line interface\n-----------------------\n\nUsage::\n\n salvus serve [daemon] [-p PORT] [-e EXPIRY]\n salvus auth [-p PORT]\n salvus get [-a] [-p PORT]\n salvus set [-a] [-p PORT]\n salvus list [-a] [-p PORT]\n salvus kill [-p PORT]\n salvus ping [-p PORT]\n salvus -h\n\n\nOptions:\n\n-h, --help This help\n-p PORT Port to listen to (always on localhost) [default: 59999]\n-e EXPIRY Auth expiry in seconds, if 0 then ``get``, ``set``\n and ``list`` requires -a [default: 3600]\n-a Add auth to each command, so requires yubikey OTP\n\n\n------------------------\nInterpreting the output\n------------------------\n\nAll errors are printed on stderr and the exit code will be non-zero.\n\nIf exit code is zero, the output will either be blank or in the case\nof ``get`` two lines, first the ID and second the secret.\n\nWhen yubikey OTP (one time password) is needed, the prompt is output\non stderr, so it can be separated from the desired output.\n\n--------------\nExamples\n--------------\n\nStarting the server::\n\n salvus server\n\nEnter a recognition phrase used to identify that this is the server\nyou trust.\n\nTouch the yubikey and the server starts on the default port.\n\nSetting a credential::\n\n salvus set github philipbergen\n\nYou will be prompted on stdout to enter the secret, press enter when\nyou are done.\n\nGetting a credential::\n\n salvus get github\n\nFirst line in the output on stdout is the ID (username) and the second\nis the secret (password).\n\nIf you have set up zero expiry (auth on each request), then you need\nto add ``-a`` to each call to ``get``, ``set`` or ``list``. In the\ncase of ``get``, you can separate prompts from results easily, since\nresults are the only thing on stdout::\n\n salvus get github -a > userpass\n\nThat will output ``Please touch the yubikey:`` on stderr, and the file\nuserpass will contain two lines, the first is the username and the\nsecond line is password.\n\nKilling the server::\n\n salvus kill\n\nThis obviously requires yubikey OTP.\n\nPinging the server::\n\n salvus ping\n\nNever needs yubikey OTP. The only relevant output is the exit code,\nzero for server running, non-zero (and a reason on stderr) for connect\nfailed.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/philipbergen/salvus", "keywords": "yubikey auth", "license": "LICENSE.txt", "maintainer": null, "maintainer_email": null, "name": "salvus", "package_url": "https://pypi.org/project/salvus/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/salvus/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/philipbergen/salvus" }, "release_url": "https://pypi.org/project/salvus/0.1.14/", "requires_dist": null, "requires_python": null, "summary": "In-memory credential store with yubikey auth", "version": "0.1.14" }, "last_serial": 1306454, "releases": { "0.1": [], "0.1.1": [ { "comment_text": "", "digests": { "md5": "fbe140ba744900767586305e0abba432", "sha256": "108f51f3efee2718a0c258031bd6340914dac5b98f4f9a50f87d58cb8df9b240" }, "downloads": -1, "filename": "salvus-0.1.1.tar.gz", "has_sig": false, "md5_digest": "fbe140ba744900767586305e0abba432", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1989, "upload_time": "2014-08-01T20:16:18", "url": "https://files.pythonhosted.org/packages/8d/d9/7e81d6ce2709c111ca37bad3a6936b4e732450d56b02b99c6766ec4d3d4c/salvus-0.1.1.tar.gz" } ], "0.1.10": [ { "comment_text": "", "digests": { "md5": "b068119f88993c0dd6a3ee6a8a4bff42", "sha256": "346d4cd47fe681f877f5171bc5a3860769ab8198589341899796aad2fabb7a3f" }, "downloads": -1, "filename": "salvus-0.1.10.tar.gz", "has_sig": false, "md5_digest": "b068119f88993c0dd6a3ee6a8a4bff42", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5892, "upload_time": "2014-08-03T19:36:41", "url": "https://files.pythonhosted.org/packages/cf/7b/a07fcd0831e3759e71dcf2efe8468e4ac7bb571e2cff2bc6966be139df87/salvus-0.1.10.tar.gz" } ], "0.1.11": [ { "comment_text": "", "digests": { "md5": "00250b3f7ff317d1fc0dffb50e4bea9c", "sha256": "d6aa6e96f21367bed026e1d87bd1993b92a53da66a8c52189070dd12fff01aec" }, "downloads": -1, "filename": "salvus-0.1.11.tar.gz", "has_sig": false, "md5_digest": "00250b3f7ff317d1fc0dffb50e4bea9c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6190, "upload_time": "2014-09-19T19:31:21", "url": "https://files.pythonhosted.org/packages/cd/35/66db88ba4e102fd9a064bd3c6d1ec1b95ee8b39de927338e8a0bbda95c32/salvus-0.1.11.tar.gz" } ], "0.1.12": [ { "comment_text": "", "digests": { "md5": "bb709d78a337e56b9689259a08c82d7f", "sha256": "cb3c9b1e317ef7c7d047356c6535f1d265a6500db34feb90c7afa87d563b5ab1" }, "downloads": -1, "filename": "salvus-0.1.12.tar.gz", "has_sig": false, "md5_digest": "bb709d78a337e56b9689259a08c82d7f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6255, "upload_time": "2014-10-23T16:37:04", "url": "https://files.pythonhosted.org/packages/81/20/fe4c1ec69287fb824082a93257eedda19ee41a68a5654c3ec1240e8c364b/salvus-0.1.12.tar.gz" } ], "0.1.13": [ { "comment_text": "", "digests": { "md5": "aac31afff5ba622c7a1b66dff164eac4", "sha256": "0c3ae5a65eb27bd5d0e2e357874f950db26cd45dd73f541f7eadbaae7b864a4f" }, "downloads": -1, "filename": "salvus-0.1.13.tar.gz", "has_sig": false, "md5_digest": "aac31afff5ba622c7a1b66dff164eac4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6286, "upload_time": "2014-10-23T17:07:28", "url": "https://files.pythonhosted.org/packages/41/03/1d57abb23ef86f221a1dec21292c3f5b3b96208acda17dd66c7783c6ef97/salvus-0.1.13.tar.gz" } ], "0.1.14": [ { "comment_text": "", "digests": { "md5": "d6cbb6d5f4cd4d07809543101a9d12b7", "sha256": "55205858b8cab7e5e3b7be24270ffee1522098431545db550f1a124e5f6bec31" }, "downloads": -1, "filename": "salvus-0.1.14.tar.gz", "has_sig": false, "md5_digest": "d6cbb6d5f4cd4d07809543101a9d12b7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6361, "upload_time": "2014-11-14T01:35:21", "url": "https://files.pythonhosted.org/packages/b9/00/105e087e3ad0e6c8d7300428fa23f5e372f00677fc68195dd042fe5199a9/salvus-0.1.14.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "a4e83ec030c03fcbe63ac3145e63117e", "sha256": "a2b18b957b6cd82663b625caa783fccc6360364c26cb775f96665643afbe8690" }, "downloads": -1, "filename": "salvus-0.1.2.tar.gz", "has_sig": false, "md5_digest": "a4e83ec030c03fcbe63ac3145e63117e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2215, "upload_time": "2014-08-01T21:08:53", "url": "https://files.pythonhosted.org/packages/e8/6d/9409f465182765e151185fc6afae41aeeefaa282a53279e28924497947ae/salvus-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "1ae6043a81375ba30afc0aea4db4989c", "sha256": "ba57456d89309ec3fc0ab88173c1a9f8c08c1e74992bfa2add787bd03a8cb520" }, "downloads": -1, "filename": "salvus-0.1.3.tar.gz", "has_sig": false, "md5_digest": "1ae6043a81375ba30afc0aea4db4989c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2623, "upload_time": "2014-08-01T22:40:38", "url": "https://files.pythonhosted.org/packages/a5/fd/ca7caa30b803ba415eaa1c63635aa8f639324067b05706162f0de5edb4e7/salvus-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "311660a81e52c97dcf54e194eca5a775", "sha256": "8e7cda68356d0b5e3b9179d70953292cb5fca40fce1939c64370f314cd0af747" }, "downloads": -1, "filename": "salvus-0.1.4.tar.gz", "has_sig": false, "md5_digest": "311660a81e52c97dcf54e194eca5a775", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4961, "upload_time": "2014-08-01T22:45:46", "url": "https://files.pythonhosted.org/packages/df/e2/8053ff19e65fc2f75971770f9306d26ca4790b66e5cb97be2c552ef75ff1/salvus-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "3154c6dde854fe279185ed4f3614af3a", "sha256": "3aa0f62eda5bd62f861b38ac919b6fc345e9b799492cc31b3b6904f509ffbe08" }, "downloads": -1, "filename": "salvus-0.1.5.tar.gz", "has_sig": false, "md5_digest": "3154c6dde854fe279185ed4f3614af3a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5020, "upload_time": "2014-08-02T00:29:20", "url": "https://files.pythonhosted.org/packages/12/c6/f28d03368b9830e9f996fea987955c86d20f0e5d7c07a88cd392e23c00f5/salvus-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "2fc3effb4d3b54dbf2cec471f536577b", "sha256": "9a2b3d4a78d25df6ccb33a68454a2ca78ad6399b54790977052eaf45f65eef88" }, "downloads": -1, "filename": "salvus-0.1.6.tar.gz", "has_sig": false, "md5_digest": "2fc3effb4d3b54dbf2cec471f536577b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5014, "upload_time": "2014-08-02T00:44:08", "url": "https://files.pythonhosted.org/packages/82/5d/2d98185eab00e92b96a87fe4623810f07c14b75f48d0dcbc83fdc6297203/salvus-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "889f50723d625bfa3cd8dba5788f8483", "sha256": "9829d8c22c7395612ab3de04c5a4c902620b7aa53fcd50cffdfa9de266689ddb" }, "downloads": -1, "filename": "salvus-0.1.7.tar.gz", "has_sig": false, "md5_digest": "889f50723d625bfa3cd8dba5788f8483", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5017, "upload_time": "2014-08-02T01:00:07", "url": "https://files.pythonhosted.org/packages/e3/17/0081859ada71ddee2c45f06ac5b833fe9db767d54a9d5a0564fa9d4c4613/salvus-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "bcc9544634f9ce7df091b2dc861f0594", "sha256": "904f9ae0d0de5900f353ff17cc6efa456cb167b5ff084c3bc066bd956036732d" }, "downloads": -1, "filename": "salvus-0.1.8.tar.gz", "has_sig": false, "md5_digest": "bcc9544634f9ce7df091b2dc861f0594", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5229, "upload_time": "2014-08-02T01:15:18", "url": "https://files.pythonhosted.org/packages/52/a0/d9f215ac36d36265c121895ee39f1ab664ceb315ef0e903af5549354be03/salvus-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "d0f061b5276f8a25663531330f710bbb", "sha256": "58ee52116e490f08c8ce9f0c2b4e366c513b524e349b905a2db2ff2bc13d5003" }, "downloads": -1, "filename": "salvus-0.1.9.tar.gz", "has_sig": false, "md5_digest": "d0f061b5276f8a25663531330f710bbb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5234, "upload_time": "2014-08-02T01:17:44", "url": "https://files.pythonhosted.org/packages/5d/f0/507b531336675d09c49a7c330c8820fe72cec5c4de60956acd1e24788afd/salvus-0.1.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d6cbb6d5f4cd4d07809543101a9d12b7", "sha256": "55205858b8cab7e5e3b7be24270ffee1522098431545db550f1a124e5f6bec31" }, "downloads": -1, "filename": "salvus-0.1.14.tar.gz", "has_sig": false, "md5_digest": "d6cbb6d5f4cd4d07809543101a9d12b7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6361, "upload_time": "2014-11-14T01:35:21", "url": "https://files.pythonhosted.org/packages/b9/00/105e087e3ad0e6c8d7300428fa23f5e372f00677fc68195dd042fe5199a9/salvus-0.1.14.tar.gz" } ] }