Passme: Password management with command line
==============================================

**Passme** is a password management tool with command line or `web browzer <javascript.rst>`_. It helps you generate strong passwords for many sites. It generates password every time from a site-specific seed (**sitekey**) stored in the configuration file (`sitekey file <sitekey.rst>`_) and a **master password** that you memorize and type every time.

* Sitekey + Master password = Password

The master password is not site specific, and therefore you have to remember only one master password. **Do not forget your master password or lose your sitekey file**, because once you lose one of them you will lose all the passwords and you can never recover them (otherwise it is not secure). The sitekey file could be managed with your private git repository.

Refer to `security <security.rst>`_ for more information on security.

Install
---------------

See `install <install.rst>`_

Preparation of sitekey file
----------------------------

At first, invoke passme and enter the filename of the **sitekey file**.

.. code-block::

 > passme
 Filename to save site keys:
    
Refer to `Sitekey file <sitekey.rst>`_ for more information.

Create a new sitekey
---------------------

You can create a sitekey for a new site by **passme add** as follows.

.. code-block:: bash

 > passme add
 Site name: google
 Character (an): 
 Password length (14): 
 Comment (no input to finish): 

Refer to `Passme add command <add.rst>`_ for more information.

Generate password
-------------------

After you create the sitekey, password of the site can be generated by

.. code-block:: bash

 > passme site [master]

where

* site: site name
* master: master password

When the master password is not given at the command line argument, it is prompted.
If you enter the master password from the command line, it may be stored in a file which stores your command history such as .bash_history.

Refer to `Generate password <genpass.rst>`_ for more information.

List of site names
--------------------

List of the site names in sitekey file is shown by

.. code-block:: bash

 > passme list

Use functions from Python
--------------------------

import passme and you can use 2 functions, readpass and genpass as follows.

* passme.readpass(site, master)

where site is the site name and master is the master password.

* passme.genpass(seed, hash, char, len)

where seed, hash, char, len is explained in the algorithm section of `security <security.rst>`_.

Test calculation
------------------

Calculation routine is tested by the following command. All the available hash algorithms and character types are compared with expected results. This is to make sure that this program works similar on different environment.

.. code-block:: bash

 > passme test
 Test completed without error.

More information
------------------

* `Edit the sitekey file <edit.rst>`_ with **passme edit** command
* `Changing the password <change.rst>`_
* `Javascript version <javascript.rst>`_ to generate password on mobile devices
* `Configuration <config.rst>`_ at .passme file
* `Multiple accounts <multiaccount.rst>`_ at the same site
* `Seurity <security.rst>`_

Tutorial movie
---------------

https://youtu.be/6DXPhyYhYsE

Author
---------------

`Katsutoshi Seki <https://github.com/sekika>`_ wrote this software and published it with the `MIT license <../LICENSE.txt>`_. The email address of the author is available at `this paper <https://dx.doi.org/10.1016/j.geoderma.2015.02.013>`_. Questions and bug reports can be sent to the issue of the GitHub repository here.
