Skip to main content

Python modules and distribution encryption tool

Project description

Private

Encryption tool for python files and packages.

Features

  • Encrypting python scripts and packages so they can be used as drop-in replacements.
  • Loading key from environment variable
  • Validating decrypted module against SHA256 signature
  • Works both with python 2 and python 3

Usage

Encryption:

$ private [--key <key>] [--output <directory>] [--predicate <expression>] file.py [<path>...]

Execution:

$ private --output out example-0.0-py2-none-any.whl
$ pip install out/example-0.0-py2-none-any.whl
$ export PRIVATE_KEY=$(cat out/key.txt)
# Use installed package as usual

The key must be hexadecimal string of length 32. The file type is recognized by extension, Currently only .py and .whl files are supported.

Code removal

The is an option to "tag" the source code with decorators. Then, It is possible to pass expression to the private script that specifies which tags to remove completely from the source.

For example:

# example.py
import private

@private.tag("a", "b")
def foo():
    return "foo"

@private.tag("b", "c")
def bar():
    return "bar"

@private.tag("z")
def baz():
    return "baz"

Then, code parts to remove can be specified with regular python expression. To remove only the "bar" function, the predicate is simply: "c". To remove "foo" and "baz" the predicate is "a or z", or "not c".

The private script is called like this:

$ private --predicate "b and not a or z" example.py

will create encrypted file that contains only the function "foo".

Testing

The package doesn't have it's own test suit. It is tested in python 2 with the compiledb package as a wheel, and in python 3 with the full test suit of the construct package, on the original repository.

Limitations

Private is not fully tested and is a hobby project in alpha stage, Use it at your own risk.

Future plans

  • Refactor the code to be more extensible
  • Add support for parallel execution
  • sdist distribution support
  • encrypt with faster crypto libraries
  • Full coverage and functionality testing
  • Adding documentation

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

private-0.2.0-py2.py3-none-any.whl (6.6 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file private-0.2.0-py2.py3-none-any.whl.

File metadata

  • Download URL: private-0.2.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 6.6 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/44.1.1 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/2.7.18rc1

File hashes

Hashes for private-0.2.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 704f2d4428e3d9db4202c48c26c85dfe6343d1a8c0ff038872624414d0f6a978
MD5 2fc3c5572147feb7745825a0977ffdd3
BLAKE2b-256 ff0a4cc60ab268a9b5a272145a72ac9441b60e82b5c3005ce1e22d89a7d706f1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page