Metadata-Version: 2.1
Name: cmspw
Version: 1.1.1
Summary: generates passwords for CMS
Home-page: https://pypi.org/cmspw
Author: Ryan Delaney
Author-email: ryan@truss.works
Requires-Python: >=3.7,<4.0
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Project-URL: Repository, https://github.com/trussworks/cmspw
Description-Content-Type: text/x-rst


CMS password generator
======================


.. image:: https://img.shields.io/badge/license-Apache%202.0-informational
   :target: https://www.apache.org/licenses/LICENSE-2.0.txt
   :alt: LICENSE


.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
   :target: https://github.com/psf/black
   :alt: STYLE


.. image:: https://img.shields.io/circleci/build/gh/trussworks/cmspw
   :target: https://circleci.com/gh/trussworks/cmspw/tree/master
   :alt: CIRCLECI


EUA
---

EUA rules implemented in this script are:


* Must start with a letter
* At least one number (0-9)
* At least one Lowercase alphabetic character (a-z)
* At least one Upper Case alphabetic character (A-Z)
* MUST BE EXACTLY 8 characters long
* May not include "punctuation characters" (undocumented)

Rules NOT implemented:


* Cannot include your EUA UserID and any part of your name
* Cannot include any word/word portion prohibited by the defined CMS dictionary
* Password can’t contain 50% characters from previous password
* Be different from the previous 24 passwords

CloudVPN
--------

CloudVPN rules implemented in this script are:


* Cannot contain keyboard walks of 3 or more consecutive keyboard keys in a row
  (e.g. asd, zaq, 123, was, pol, ser, gyu, bhj, 9o0, p;[, etc.)
* Password length greater than 15 characters.
* Contain 3 out of 4 the following:

  * 1 digits (0-9).
  * 1 symbols (!, @, #, $, %, \*, etc.).
  * 1 uppercase English letters (A-Z).
  * 1 lowercase English letters (a-z).

Rules NOT implemented:


* Password must differ from previous password by 24 password(s).
* Password must be at least 1day(s) since last password change.

Installation
------------

You need python3:

.. code-block:: console

   brew install python3
   python3 -m pip install cmspw

Usage
-----

Cryptographically random alphanumeric strings are generated, printing the first
that complies with the EUA/CloudVPN ruleset to the standard output.

.. code-block:: console

   $ python3 -m cmspw --help
   usage: cmspw [-h] --ruleset RULESET [--length NUM]

   generates passwords for CMS

   optional arguments:
     -h, --help            show this help message and exit
     --ruleset RULESET, -r RULESET
                           rule set to validate against. can be one of ['eua', 'vpn'].
     --length NUM, -l NUM  password length. if ruleset is 'eua', this is ignored.
   $ python3 -m cmspw --ruleset eua
   qJbcNJ2Y
   $ python3 -m cmspw --ruleset vpn --length 24
   4H+-X^#XV(8'&wB5ZNn'H%>q

Development
-----------

You need poetry:

.. code-block:: console

   brew install poetry

Inside the project directory you can enter a virtual environment like so:

.. code-block:: console

   poetry install && poetry shell

