Metadata-Version: 2.1
Name: pyscryptfirebase
Version: 0.0.2
Summary: Python wrapper for the Firebase scrypt password hashing utility
Home-page: https://github.com/mcsimps2/py-scrypt-firebase/
Author: Matt Simpson
Author-email: mcsimps2@gmail.com
License: 2-clause BSD
Description: # pyscryptfirebase
        A Python wrapper of Firebase's custom scrypt implementation.  A combined fork of scrypt and Firebase scrypt.
        
        Firebase scrypt for password hashing: https://github.com/firebase/scrypt
        
        Python library for scrypt: https://bitbucket.org/mhallin/py-scrypt/src/default/
        
        Instructions
        ============
        Note that if you have the Python module `scrypt` installed, you will need to remove it to use this library.
        This library is a fork of `scrypt` and uses a modified C extension by the same name as `scrypt`.  Using both
        libraries at the same time will cause a naming collision on the C module `_scrypt`.
        
        Install dependencies according to your Python version and OS:
        ```
        # Debian/Ubuntu
        $ sudo apt-get install build-essential libssl-dev python-dev
        
        # Fedora, RHEL
        $ sudo yum install gcc openssl-devel python-devel
        
        # Alpine Linux (Docker Containers)
        $ apk add gcc openssl-dev python-dev
        
        # (If you're on Python3, install the Python3 versions of the above packages)
        
        # Mac
        # Without setting the flags below, install will fail to find the necessary files
        $ brew install openssl
        $ export CFLAGS="-I$(brew --prefix openssl)/include $CFLAGS"
        $ export LDFLAGS="-L$(brew --prefix openssl)/lib $LDFLAGS"
        ```
        
        Then install `pyscriptfirebase`:
        ```
        $ pip install pyscriptfirebase
        ```
        
        
        Example
        ========
        This module is intended to give the same output as the scrypt password hashing function that Firebase
        uses.
        
        Firebase Scrypt Utility example:
        ```
        # Params from the project's password hash parameters
        base64_signer_key="jxspr8Ki0RYycVU8zykbdLGjFQ3McFUH0uiiTvC8pVMXAn210wjLNmdZJzxUECKbm0QsEmYUSDzZvpjeJ9WmXA=="
        base64_salt_separator="Bw=="
        rounds=8
        memcost=14
        
        # Params from the exported account
        base64_salt="42xEC+ixf3L2lw=="
        
        # The users raw text password
        password="user1password"
        
        # Generate the hash
        # Expected output:
        # lSrfV15cpx95/sZS2W9c9Kp6i/LVgQNDNC/qzrCnh1SAyZvqmZqAjTdn3aoItz+VHjoZilo78198JAdRuid5lQ==
        echo `./scrypt "$base64_signer_key" "$base64_salt" "$base64_salt_separator" "$rounds" "$memcost" -P <<< "$password"`
        ```
        
        `pyscryptfirebase` example:
        ```
        import base64
        
        import pyscryptfirebase
        
        
        base64_signer_key = base64.b64decode("jxspr8Ki0RYycVU8zykbdLGjFQ3McFUH0uiiTvC8pVMXAn210wjLNmdZJzxUECKbm0QsEmYUSDzZvpjeJ9WmXA==")
        base64_salt_separator = base64.b64decode("Bw==")
        rounds = 8
        memcost = 14
        
        base64_salt = base64.b64decode("42xEC+ixf3L2lw==")
        password = "user1password"
        
        # Expected output:
        # lSrfV15cpx95/sZS2W9c9Kp6i/LVgQNDNC/qzrCnh1SAyZvqmZqAjTdn3aoItz+VHjoZilo78198JAdRuid5lQ==
        output = pyscryptfirebase.encrypt(
            base64_signer_key,
            base64_salt,
            base64_salt_separator,
            rounds,
            memcost,
            password
        )
        encoded_output = base64.b64encode(result)
        print(encoded_output)
        ```
        
        
Platform: UNKNOWN
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Topic :: Security :: Cryptography
Classifier: Topic :: Software Development :: Libraries
Classifier: Operating System :: OS Independent
Description-Content-Type: text/markdown
