.. -*- restructuredtext -*-

===============
Release History
===============

**1.4** (NOT YET RELEASED)

    This release contains a large number of changes, both large and small.
    It adds a number of PBKDF2-based schemes, better support
    for LDAP-format hashes, improved documentation,
    and faster load times. In detail...

    Hashes

        * added LDAP ``{CRYPT}`` support for all hashes
          known to be supported by OS crypt()
        * added 3 custom PBKDF2 schemes for general use,
          as well as 3 LDAP-compatible versions.
        * added support for Dwayne Litzenberger's PBKDF2 scheme.
        * added support for Grub2's PBKDF2 hash scheme.
        * added support for Atlassian's PBKDF2 password hash
        * added support for all hashes used by the Roundup Issue Tracker
        * bsdi_crypt, sha1_crypt now check for OS crypt() support
        * ``salt_size`` keyword added to encrypt() method of all
          the hashes which support variable-length salts.
        * security fix: disabled unix_fallback's "wildcard password" support
          unless explicitly enabled by user.

    CryptContext

        * host_context now dynamically detects which formats
          OS crypt() supports, instead of guessing based on sys.platform.
        * added predefined context for Roundup Issue Tracker database.
        * added CryptContext.verify_and_update() convience method,
          to make it easier to perform both operations at once.
        * bugfix: fixed NameError in category+min_verify_time border case

    Documentation

        * greatly expanded documentation on how to use CryptContexts.
        * roughly documented framework for writing & testing
          custom password handlers.
        * various minor improvements.

    Utilities

        * added generate_password() convenience method
        * refactored framework for building hash handlers,
          using new mixin-based system.
        * deprecated old handler framework - will remove in 1.5
        * deprecated list_to_bytes & bytes_to_list - not used, will remove in 1.5

    Internals

        * apps & hosts now use new LazyCryptContext wrapper class -
          should speed up initial import, and reduce memory
          by not loading uneeded hashes.

        * password hash api - as part of cleaning up optional attributes
          specification, renamed a number of them to reduce ambiguity:

            - renamed *{xxx}_salt_chars* attributes -> *xxx_salt_size*
            - renamed *salt_charset* -> *salt_chars*
            - old attributes still present, but deprecated - will remove in 1.5

        * password hash api - tightened specifications for salt & rounds parameters,
          added support for hashes w/ no max salt size.

        * improved password hash api conformance tests

        * PyPy compatibility

**1.3.1** (2011-03-28)

    * bugfix: replaced "sys.maxsize" reference that was failing under py25
    * bugfix: fixed default_rounds>max_rounds border case that could
      cause ValueError during CryptContext.encrypt()
    * minor documentation changes
    * added instructions for building html documentation from source

**1.3** (2011-03-25)

    * first public release
    * documentation completed
    * 99% unittest coverage
    * some refactoring and lots of bugfixes
    * added support for a number of addtional password schemes:
      bigcrypt, crypt16, sun md5 crypt, nthash, lmhash, oracle10 & 11,
      phpass, sha1, generic hex digests, ldap digests.

**1.2** (2011-01-06)

    * many bugfixes
    * global registry added
    * transitional release for applications using BPS library.
    * first truly functional release since splitting from BPS library (see below).

.. note::

    For all previous versions, PassLib did not exist independantly,
    but as a subpackage of *BPS*, a private & unreleased toolkit library.

**1.0** (2009-12-11)

    * CryptContext & CryptHandler framework
    * added support for: des-crypt, bcrypt (via pybcrypt), postgres, mysql
    * added unit tests

**0.5** (2008-05-10)

    * initial production version
    * consolidated from code scattered across multiple applications
    * MD5-Crypt, SHA256-Crypt, SHA512-Crypt support
