Metadata-Version: 2.1
Name: yk-totp
Version: 0.1.6
Summary: A CLI tool to generate TOTP values from a password protected YubiKey by storing the password in the system-protected keyring.
Home-page: https://github.com/cimnine/yk-totp
Author: Christian Mäder
Author-email: yktotp@cimnine.ch
License: BSD 3-Clause License
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Security
Classifier: Topic :: Software Development
Classifier: Topic :: System :: Operating System
Classifier: Topic :: Utilities
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: click (>=7.1.2)
Requires-Dist: keyring (>=21.8.0)
Requires-Dist: yubikey-manager (>=3.1.1)

# yk-totp

![PyPI Version](https://img.shields.io/pypi/v/yk-totp?style=flat-square)
![PyPI License](https://img.shields.io/pypi/l/yk-totp?style=flat-square)
![PyPI Status](https://img.shields.io/pypi/status/yk-totp?style=flat-square)

`yk-totp` is a little CLI util for YubiKeys,
that will generate TOTP codes upon request.

The added benefit compared to [the official `ykman`][ykman] is that it offers
to store the password for unlocking your YubiKey in your system's keyring,
whereas `ykman` stores your password in it's config file.
(While the password is stored as `PBKDF2HMAC`-hash and not in plain-text,
this hash is all that is required to get to your 2FA,
yet this hash is not protected in anyway.)

This allows `yk-totp` to be used in other tools (like in an [Alfred Worflow][alred-wf])
which don't offer facilities to store or enter a password,
or where it's inconvenient to repeatedly enter the password.

## Requirements

This tool requires [Python 3][python] and an operating system that is supported by both,
[the `keyring` Python module][keyring] and by [the `ykman` tool from YubiCo][ykman].

## Installation

For now, the way to install `yk-totp` is via PIP:

```bash
pip3 install -U yk-totp
```

Use the same command to update to a new version.

### Error while installation

If you get errors while installing `yk-totp`, try this:

```bash
# Update the Python modules responsible for installing other modules
pip3 install -U pip wheel setuptools
```

Check [if you have `swig` installed][swig-installation],
which is apparently required to install `pyscard`,
which is a dependency of `ykman`:

```bash
# macOS with Homebrew
brew install swig

# Linux (apt)
sudo apt update && sudo apt install swig

# Linux (yum)
sudo yum install swig

# Windows with Chocolately
choco install swig
```

## Licensing and Copyright

This code is copyrighted.
But it can be used under the terms of the [MIT license](./LICENSE) for your own purposes.
It builds upon the following third party modules:

- [keyring][keyring] for the interaction with the operating system's keyring, which is MIT licensed.
- [yubikey-manager][ykman] for communicating with the YubiKey, which is licensed under a BSD-2-Clause License.
- [click][click] for the CLI interface, which is licensed under a BSD-3-Clause License.

Open source software rocks 🎸!

[ykman]: https://github.com/Yubico/yubikey-manager#readme
[alfred-wf]: https://www.alfredapp.com/help/workflows/
[python]: https://www.python.org
[keyring]: https://github.com/jaraco/keyring#readme
[click]: https://github.com/pallets/click#readme
[swig-installation]: http://www.swig.org/Doc4.0/Preface.html#Preface_installation


