{ "info": { "author": "Todd Knarr", "author_email": "tknarr@silverglass.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: X11 Applications", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "Operating System :: Unix", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Topic :: Security" ], "description": "PyAuth\n======\n\n.. image:: https://img.shields.io/pypi/v/PyAuth.png\n :target: https://pypi.python.org/pypi/PyAuth/\n :alt: Latest Version\n\n.. image:: https://img.shields.io/pypi/pyversions/PyAuth.png\n :target: https://pypi.python.org/pypi/PyAuth/\n :alt: Latest Version\n\n.. image:: https://img.shields.io/github/release/tknarr/PyAuth.png\n :target: https://github.com/tknarr/PyAuth/releases/latest\n :alt: Latest Version\n\nCopyright 2016 Todd T Knarr \n\nThis program is free software: you can redistribute it and/or modify it under\nthe terms of the GNU General Public License as published by the Free Software\nFoundation, either version 3 of the License, or (at your option) any later\nversion. The Fernet AES256 implementation (fernet256.py) is dual licensed\nunder the terms of the Apache License version 2.0 and the BSD License as\nnoted in the source file.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT\nANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\nFOR A PARTICULAR PURPOSE. See the GNU General Public License (included in\nLICENSE.html) for more details.\n\nYou should have received a copy of the GNU General Public License along with\nthis program. If not, see `http://www.gnu.org/licenses/ `_\n\nSummary\n-------\n\nPyAuth is a two-factor authentication program compatible with Google Authenticator\nand other software and hardware using the standard TOTP algorithm outlined in\n`RFC 6238 `_ (support for the HOTP algorithm\noutlined in `RFC 4226 `_ is planned).\n\nSecrets are encrypted using AES256, there is no option for storing unencrypted\nsecrets. If you were using an older beta version, you will be prompted for a\npassword and the stored secrets will be migrated to the current encryption without\nrequiring any more user intervention.\n\nPyPI page: `https://pypi.python.org/pypi/PyAuth `_\n\n\nPrerequisites\n-------------\n\n* `wxPython `_ 3.0 or higher, which requires matching\n `wxWidgets `_\n* `pyotp 2.0.1 `_ or higher\n* `cryptography 1.3 `_ or higher\n* `qrcode 5.3 `_ or higher\n* `Pillow 3.4 `_ or higher\n* `zbarlight 1.2 `_ or higher\n\nDevelopers\n----------\n\nSee the\n`Branches page of the project Wiki on GitHub `_\nfor details on which branches are used for what and which ones you should pull from. The\nproject follows the Git Flow branching scheme.\n\nStatus\n------\n\nEverything in the v0.0.x series is a development version. v0.0.1 includes the\nminimal functionality to be usable. The commit messages up to this point aren't\ntoo useful.\n\nBasic functionality (listed in TODO.md) will get added as versions v0.1.x\nthrough v0.4.x. v0.5.0 is expected to have all functionality checked and\nworking with the possible exception of the help system. Once I've made sure\nany loose ends are taken care of, the version will jump to v0.9.x for\ntesting. v1.0.0 is planned to be a stable release ready for normal use. The\nenhancements listed in TODO.md will occur after v1.0.0 is released.\n\nKnown areas of concern\n----------------------\n\nCurrently the TOTP implementation is coded to use a 30-second time period\ncompatible with Google Authenticator. Future work will include allowing for\ndifferent time periods.\n\nUsage\n-----\n\nCommand line:\n\n``PyAuth [-n] [-s] [-m] [--icons=(white|grey|dark|transparent)] [--logfile FILENAME] [--no-logfile] [--loglevel (debug|info|warning|error|critical)]``\n\n* ``-s`` enables use of the notification (systray) icon if possible.\n\n* ``-m`` acts as ``-s`` plus hides the main window on startup (minimized to systray).\n\n* ``-n`` forces the program to display in a normal window without using the\n notification icon. This overrides ``-s`` and ``-m`` and any remembered settings\n for the notification icon.\n\n* ``--icons`` selects a set of icons with the named background (default white).\n\n* ``--logfile`` allows you to set a log file for errors and messages logged by\n the program. Errors always appear on the console regardless. You may use variable\n and user expansions in the filename.\n\n* ``--no-logfile`` suppresses the log file completely.\n\n* ``--loglevel`` sets the level of log messages to output to the log file.\n\n* ``--version`` requests that the program print out it's version number.\n\n* ``--help`` requests help on the command-line syntax.\n\nThe GUI interface should be fairly straightforward at this point. Each entry\nis displayed in a pane in a scrolling list showing the service provider and\naccount, the current OTP (Google Authenticator) code and a timer bar counting\ndown the time to the next code.\n\nClicking on an entry selects it. If codes are being masked, selecting an entry\nalso unmasks it's code while it's selected. Clicking on a selected entry\ndeselects it. Double-clicking on an entry selects it and copies the current\ncode for it to the clipboard. The toolbar contains a tool for copying the\ncode of the currently-selected entry to the clipboard, and tools to move the\ncurrently-selected entry up and down in the list so you can order entries the\nway you want them. Right-clicking on an item brings up a context menu to let\nyou copy the provisioning URI for the entry to the clipboard or display the\nQR code representation of the provisioning URI for scanning into another\nauthenticator app.\n\nWhen you run PyAuth with an empty database of authentication entries, it'll\ndisplay a single dummy entry with a fake code that won't change. The first new\nreal entry you create will replace it. If you select and edit it, you'll be\ngiven the new-entry dialog instead and your new entry will replace the dummy\none.\n\nIn the View menu are options for showing/hiding the toolbar, putting an icon\nin the system notification area (systray), showing the timer bars and masking\ncodes for unselected entries. If the notification icon is visible, the\nminimize button on the window frame is removed as you can simply close the\nwindow and leave the notification icon. Clicking the notification icon toggles\nthe main window off and on. Right-clicking the notification icon brings up a\nmenu with the option to completely exit the program.\n\nWhen using the notification icon, the program will not appear in the taskbar\nlist of active applications. When starting minimized and using the\nnotification icon, the program's window will initially be hidden and can be\nshown by clicking the notification icon. When starting minimized without using\nthe notification icon, the program will start with it's window shown and\nminimized.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/tknarr/PyAuth", "keywords": "authentication totp hotp 2fa", "license": "GPLv3+", "maintainer": "", "maintainer_email": "", "name": "PyAuth", "package_url": "https://pypi.org/project/PyAuth/", "platform": "", "project_url": "https://pypi.org/project/PyAuth/", "project_urls": { "Homepage": "https://github.com/tknarr/PyAuth" }, "release_url": "https://pypi.org/project/PyAuth/1.3.0/", "requires_dist": [ "wxPython (~=3.0)", "pyotp (~=2.2)", "cryptography (~=2.3)", "qrcode (~=6.0)", "Pillow (~=5.3)", "zbarlight (~=2.1)" ], "requires_python": "", "summary": "Google Authenticator (TOTP) desktop client", "version": "1.3.0" }, "last_serial": 4429976, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "e80da5142c592552f895487250b911ad", "sha256": "c88d7742da482a665b7936fdcd2e47ec692227684f0ffbf1a9a42d91b4221435" }, "downloads": -1, "filename": "PyAuth-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e80da5142c592552f895487250b911ad", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 298045, "upload_time": "2016-07-10T20:44:33", "url": "https://files.pythonhosted.org/packages/ee/00/eb1f4ce8d8dd2cf4225ca5cfcee4ca6a31f5bac9b446822641900c35154a/PyAuth-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "95f999526f83512a9396c7dc34d57179", "sha256": "9861c50ceafd73cef74d4828320392873bad672b150d269c2e6eedc9ce3c436e" }, "downloads": -1, "filename": "PyAuth-1.0.0.tar.gz", "has_sig": false, "md5_digest": "95f999526f83512a9396c7dc34d57179", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 239330, "upload_time": "2016-07-10T20:44:38", "url": "https://files.pythonhosted.org/packages/f0/c6/aefb73b1ff0ff07d47369c86d9dfee3365bdfbc5ef08e714ca823ab9358f/PyAuth-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "5acf0c04260cd1222368264423bc7af1", "sha256": "6079a204ea3a4aba3cc1d675bec00feecb8b7f04739b579ae49519c3dbaa3926" }, "downloads": -1, "filename": "PyAuth-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5acf0c04260cd1222368264423bc7af1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 300425, "upload_time": "2016-07-17T22:13:01", "url": "https://files.pythonhosted.org/packages/d6/62/5223a5d54e3d5837508587e14b64349b9a5e79ca26ef5073c7b4590f1556/PyAuth-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4c89b2ad5452cc30cce468aa7afe34a4", "sha256": "3e6b2d58529da195cafabd51bd969346b72e8962533b3889656d00df9fb95edd" }, "downloads": -1, "filename": "PyAuth-1.1.0.tar.gz", "has_sig": false, "md5_digest": "4c89b2ad5452cc30cce468aa7afe34a4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 241501, "upload_time": "2016-07-17T22:13:04", "url": "https://files.pythonhosted.org/packages/1b/c4/d118d7e7e0b180b55f22cc283124247d1f8cfcb2c9fd3cc874b09f827938/PyAuth-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "db29dd4a1b475c8b5ec7256a99d33cc0", "sha256": "ff6f89c72c7641eca2251bf3acb157d077e878f092dfa12196840863c41df5d5" }, "downloads": -1, "filename": "PyAuth-1.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "db29dd4a1b475c8b5ec7256a99d33cc0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 300642, "upload_time": "2016-07-18T00:18:59", "url": "https://files.pythonhosted.org/packages/96/e6/cce359c8636c21a3e060e39c71dc73dc7ccfd5849438d4e84c969c96dd5a/PyAuth-1.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e2b7d8c8d3bdf0b7006464da5eafb1f8", "sha256": "044898407493d7b2a00497779834ea3cfe6ecf8d4fce4e208ed93c1dc4581af5" }, "downloads": -1, "filename": "PyAuth-1.1.1.tar.gz", "has_sig": false, "md5_digest": "e2b7d8c8d3bdf0b7006464da5eafb1f8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 241551, "upload_time": "2016-07-18T00:19:02", "url": "https://files.pythonhosted.org/packages/14/10/e2bc3248725b06e170879ec282502e8588357a6f3ca10c2e6fc15e821b04/PyAuth-1.1.1.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "440f2e7817ab5fc8f8a1750197044856", "sha256": "e67ebb99166a1b5c25ad820e9a61a440d6c3e990eedb3e04178123b2c834ddb6" }, "downloads": -1, "filename": "PyAuth-1.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "440f2e7817ab5fc8f8a1750197044856", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 300843, "upload_time": "2016-10-20T01:57:12", "url": "https://files.pythonhosted.org/packages/32/a7/ae5e1e81c9bb12663251e799be2fa1367b82fc0a0d0356656959fe476443/PyAuth-1.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e1db27015ba291d3113e73c9c0c78d79", "sha256": "ffe02550accd0560c5f1fd0d03bea2ab9251383a8e2d9bbb44e5a7b92d67dfe0" }, "downloads": -1, "filename": "PyAuth-1.2.0.tar.gz", "has_sig": false, "md5_digest": "e1db27015ba291d3113e73c9c0c78d79", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 240889, "upload_time": "2016-10-20T01:57:15", "url": "https://files.pythonhosted.org/packages/06/4d/0a8a046acee64afd17f9c7b09055c5cd559aef7e9f79eaa538e3eb10ce02/PyAuth-1.2.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "e22c68bebdefcf96687491206e2a937d", "sha256": "944efe5695d1f4e9fd0a14c73baef94f0e37521933d4e7cab02d33954e75a6f3" }, "downloads": -1, "filename": "PyAuth-1.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e22c68bebdefcf96687491206e2a937d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 301893, "upload_time": "2016-10-22T03:15:43", "url": "https://files.pythonhosted.org/packages/0d/84/c56847074864c0ff4e20c260b2256de36b351afa48ba44dc489884e0f29a/PyAuth-1.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c3fc952df8dce34c6972241fd77d9f55", "sha256": "d6b45a4f73aeb87d7167bf10a7b0c93c62d6134c06d7109dc2ed50d9f50cd7a8" }, "downloads": -1, "filename": "PyAuth-1.2.1.tar.gz", "has_sig": false, "md5_digest": "c3fc952df8dce34c6972241fd77d9f55", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 241602, "upload_time": "2016-10-22T03:15:46", "url": "https://files.pythonhosted.org/packages/aa/e3/4e2ef331d59e56249936a416477ed7c05cf606b7061494105f227b7eeb9c/PyAuth-1.2.1.tar.gz" } ], "1.2.3": [ { "comment_text": "", "digests": { "md5": "4b81117240957f1c965ea31c24180f7f", "sha256": "28f90940e3fc9ffcfe4f7bbf7ed7a3b3b45bfecf71a83b03c97ee262a1ca2924" }, "downloads": -1, "filename": "PyAuth-1.2.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4b81117240957f1c965ea31c24180f7f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 304129, "upload_time": "2018-10-24T21:44:00", "url": "https://files.pythonhosted.org/packages/c0/22/6401e8f29f7b0caadf68189d6810e7844a7561cb267fb370545f33cf9143/PyAuth-1.2.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "25959c78b048cdaafedfc7a9b690ea61", "sha256": "255ccb05955770cbad729c59d4bc7b236bdc0a67ac32028e82d5a58f8857e0fd" }, "downloads": -1, "filename": "PyAuth-1.2.3.tar.gz", "has_sig": false, "md5_digest": "25959c78b048cdaafedfc7a9b690ea61", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 236734, "upload_time": "2018-10-24T21:44:02", "url": "https://files.pythonhosted.org/packages/a9/af/9093051fa6189e51a15783e5dd1f9bc7fbd3abed150cf41cb3669f49c68f/PyAuth-1.2.3.tar.gz" } ], "1.2.4": [ { "comment_text": "", "digests": { "md5": "0edbc91ac08ad0bc2dba45c425b90c44", "sha256": "b70ba42ab414217b73f8362006e97ce3b19b773ac848639da70fd3ac18dbc197" }, "downloads": -1, "filename": "PyAuth-1.2.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0edbc91ac08ad0bc2dba45c425b90c44", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 304187, "upload_time": "2018-10-25T06:16:36", "url": "https://files.pythonhosted.org/packages/6e/0b/f37b22a4ed25c92049a16fc31d234edd026a6635dd9c9c11a5b8a77ab4eb/PyAuth-1.2.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "89bf2b51d4ef766ab34b8df1434c873f", "sha256": "273e32a2ac4f43d378ff841fbd49afc07411c404bda7dde306c2feb8bc8ef017" }, "downloads": -1, "filename": "PyAuth-1.2.4.tar.gz", "has_sig": false, "md5_digest": "89bf2b51d4ef766ab34b8df1434c873f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 236824, "upload_time": "2018-10-25T06:16:38", "url": "https://files.pythonhosted.org/packages/8d/59/eda4fa00bea32cb17716454f43bd06663be9cd044166dfcf8cd3f383505e/PyAuth-1.2.4.tar.gz" } ], "1.2.5": [ { "comment_text": "", "digests": { "md5": "e435def50a32c8586941d4774d7de673", "sha256": "eeb118c0f034aed9040e63e97cc578dccc719a89ac86e1108cde36059db5fe1c" }, "downloads": -1, "filename": "PyAuth-1.2.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e435def50a32c8586941d4774d7de673", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 304173, "upload_time": "2018-10-25T06:23:31", "url": "https://files.pythonhosted.org/packages/dc/0c/3a8541ac5d7ad304ac57dc65d4001c780c5d86548356e8b30d970fa1f142/PyAuth-1.2.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4e7a24fcdbe143b5536486af7d6ffea4", "sha256": "33b15145ae9a317c26fbf99566c0ca1a81d81b82b8aec925385e7ad1709b6512" }, "downloads": -1, "filename": "PyAuth-1.2.5.tar.gz", "has_sig": false, "md5_digest": "4e7a24fcdbe143b5536486af7d6ffea4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 236804, "upload_time": "2018-10-25T06:23:32", "url": "https://files.pythonhosted.org/packages/9f/58/023aaa93d106c3f19328df018b17ae5911dd805aff7e94e6207e7594550b/PyAuth-1.2.5.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "fa3c6b12e292e2abf02229da4e1d79dc", "sha256": "717f11e31c8996d551cda8c86f42fded54e6de4446a0316e1c0dcf688dceea9d" }, "downloads": -1, "filename": "PyAuth-1.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fa3c6b12e292e2abf02229da4e1d79dc", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 302744, "upload_time": "2018-10-30T04:10:02", "url": "https://files.pythonhosted.org/packages/17/ca/dffe87cb49dc5057ee1aedb9a6d6e98fc43b6beb0dd2fac8ba45e75cc88e/PyAuth-1.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b2456d089b6448de15e609d8326fd175", "sha256": "f35b5db43e05b3a57d697d4954ac3a17b402893786a8bec7561e8fc62b39dbf9" }, "downloads": -1, "filename": "PyAuth-1.3.0.tar.gz", "has_sig": false, "md5_digest": "b2456d089b6448de15e609d8326fd175", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 235304, "upload_time": "2018-10-30T04:10:04", "url": "https://files.pythonhosted.org/packages/a7/17/a4df29d13f337c78e7700ae7dcdc97fae5b2805e50e5aa7f8eb29f3c659b/PyAuth-1.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "fa3c6b12e292e2abf02229da4e1d79dc", "sha256": "717f11e31c8996d551cda8c86f42fded54e6de4446a0316e1c0dcf688dceea9d" }, "downloads": -1, "filename": "PyAuth-1.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fa3c6b12e292e2abf02229da4e1d79dc", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 302744, "upload_time": "2018-10-30T04:10:02", "url": "https://files.pythonhosted.org/packages/17/ca/dffe87cb49dc5057ee1aedb9a6d6e98fc43b6beb0dd2fac8ba45e75cc88e/PyAuth-1.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b2456d089b6448de15e609d8326fd175", "sha256": "f35b5db43e05b3a57d697d4954ac3a17b402893786a8bec7561e8fc62b39dbf9" }, "downloads": -1, "filename": "PyAuth-1.3.0.tar.gz", "has_sig": false, "md5_digest": "b2456d089b6448de15e609d8326fd175", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 235304, "upload_time": "2018-10-30T04:10:04", "url": "https://files.pythonhosted.org/packages/a7/17/a4df29d13f337c78e7700ae7dcdc97fae5b2805e50e5aa7f8eb29f3c659b/PyAuth-1.3.0.tar.gz" } ] }