Metadata-Version: 1.1
Name: pylibscrypt
Version: 1.7.1
Summary: Scrypt for Python
Home-page: https://github.com/jvarho/pylibscrypt
Author: Jan Varho
Author-email: jan@varho.org
License: ISC License
Description: Scrypt for Python
        =================
        
        |Build Status| |Coverage Status| |PyPI version|
        
        There are a lot of different scrypt modules for Python, but none of them
        have everything that I'd like, so here's One
        More\ `1 <https://xkcd.com/927/>`__.
        
        Features
        --------
        
        -  Uses hashlib.scrypt on Python 3.6 and OpenSSL 1.1.
        -  Uses system libscrypt\ `2 <https://github.com/technion/libscrypt>`__
           as the next choice.
        -  If neither is available, tries the scrypt Python
           module\ `3 <https://bitbucket.org/mhallin/py-scrypt/src>`__ or
           libsodium\ `4 <https://github.com/jedisct1/libsodium>`__.
        -  Offers a pure Python scrypt implementation for when there is no C
           scrypt.
        -  Not unusably slow, even in pure Python... at least with
           pypy\ `5 <http://pypy.org/>`__.
        
        With PyPy as the interpreter the Python implementation is around one
        fifth the speed of C scrypt. With CPython it is between about 50x and
        250x slower.
        
        Requirements
        ------------
        
        -  Python 2.7.8+ or 3.4+. Equivalent versions of PyPy should also work.
        -  If you want speed, you should use one of:
        -  libscrypt 1.8+ (older may work)
        -  py-scrypt 0.6+ (pip install scrypt)
        -  libsodium 1.0+
        -  Python 3.6+ with OpenSSL 1.1+
        
        Usage
        -----
        
        You can install the most recent release from PyPi using:
        
        ::
        
            pip install pylibscrypt
        
        You most likely want to create MCF hashes and store them somewhere, then
        check user-entered passwords against those hashes. For that you only
        need to use two functions from the API:
        
        ::
        
            from pylibscrypt import scrypt_mcf, scrypt_mcf_check
            # Generate an MCF hash with random salt
            mcf = scrypt_mcf(b'Hello World')
            # Test it
            print(scrypt_mcf_check(mcf, b'Hello World'))   # prints True
            print(scrypt_mcf_check(mcf, b'HelloPyWorld'))  # prints False
        
        For full API, you can try help(pylibscrypt) from python after importing.
        
        It is highly recommended that you use a random salt, i.e. don't pass
        one.
        
        Versioning
        ----------
        
        The package has a version number that can be read from python like so:
        
        ::
        
            print(pylibscrypt.__version__)
        
        The version number is of the form X.Y.Z, following Semantic
        Versioning\ `6 <http://semver.org/spec/v2.0.0.html>`__. Releases are
        tagged vX.Y.Z and release branches bX.Y.x when they differ from master.
        
        Development
        -----------
        
        Development happens on
        GitHub\ `7 <https://github.com/jvarho/pylibscrypt>`__. If you find a
        bug, please open an issue there.
        
        Running pylibscrypt.tests will test all implementations with some quick
        tests. Running any implementation directly (e.g.
        pylibscrypt.pylibsodium) will also compare to scrypt test vectors from
        the paper but this is slow for the pure Python version (pypyscrypt)
        unless running with pypy.
        
        You can test more comprehensively using the docker test environment.
        Either build and run using ``make docker-run`` or pull the
        jvarho/pylibscrypt image and run using
        ``docker run -v ${PWD}:/app jvarho/pylibscrypt``.
        
        Pull requests should be automatically tested and will not be merged if
        broken.
        
        .. |Build Status| image:: https://travis-ci.org/jvarho/pylibscrypt.svg
           :target: https://travis-ci.org/jvarho/pylibscrypt
        .. |Coverage Status| image:: https://coveralls.io/repos/github/jvarho/pylibscrypt/badge.svg?branch=master
           :target: https://coveralls.io/github/jvarho/pylibscrypt?branch=master
        .. |PyPI version| image:: https://img.shields.io/pypi/v/pylibscrypt.svg
           :target: https://pypi.python.org/pypi/pylibscrypt
        
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: ISC License (ISCL)
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Security :: Cryptography
Classifier: Topic :: Software Development :: Libraries
