Skip to main content

File encryption for DIDWW API 3

Project description

DIDWW Encrypt Python 3 SDK

github_actions codecov

This is Python 3 module and utility to encrypt file for DIDWW API 3.

File encrypted with mode sandbox could be uploaded to POST https://sandbox-api.didww.com/v3/encrypted_files.

File encrypted with mode production could be uploaded to POST https://api.didww.com/v3/encrypted_files.

see DIDWW Documentation for details.

Requirements

Python >=3.6

Dependencies

PyCryptodomex

Install

pip install didww_encrypt

Usage

Inside python

from didww_encrypt import Encrypt, MODE_PRODUCTION


with open("doc.pdf", mode="rb") as f:
    data = f.read()

enc = Encrypt.new(MODE_PRODUCTION)
enc_data = enc.encrypt(data)
enc_filename = "doc.pdf.enc"
with open(enc_filename, mode="wb") as f:
    f.write(enc_data)

print(f"encrypted file saved: {enc_filename}")
print(f"fingerprint: {enc.fingerprint}")

Shell

usage: didww_encrypt [-h] [-i [INPUT]] [-o [OUTPUT]] [-f] (-m [{sandbox,production}] | -u [URI])

Encrypt file for DIDWW API 3

optional arguments:
  -h, --help            show this help message and exit
  -i [INPUT], --input [INPUT]
                        use input pipe when not passed
  -o [OUTPUT], --output [OUTPUT]
                        use output pipe when not passed
  -f, --fingerprint     return fingerprint for public keys
  -m [{sandbox,production}], --mode [{sandbox,production}]
                        which DIDWW server use for public keys fetching
  -u [URI], --uri [URI]
                        custom URI for public keys fetching

You can pass input and output files as params

$ didww_encrypt -i ./doc.pdf -o ./doc.pdf.enc -m sandbox

Or using pipe

$ cat ./doc.pdf | didww_encrypt -m production > ./doc.pdf.enc

Also script could be run via python -m

$ python -m didww_encrypt -i ./doc.pdf -o ./doc.pdf.enc -m production
$ cat ./doc.pdf | python -m didww_encrypt -m sandbox > ./doc.pdf.enc

To print fingerprint use -f option instead of -i

$ didww_encrypt -f -mode sandbox
c74684d7863639169c21c4d04747f8d6fa05cfe3:::7c56fd5d2e1f2ada18765d936e74712037aea7eb

Or you can save it to a file

$ didww_encrypt -f -mode sandbox -o fingerprint.txt

Keep in mind that shell script returns fingerprint with newline which should be omitted when send it to /v3/encrypted_files.

Additional information

both shell script and module function Encrypt.new respects http_proxy env variable when fetching public keys.

http_proxy="http://myproxy.example.com:1234" didww_encrypt -m sandbox

Development

Install dependencies

pip install -r requirements.txt
pip install -r tests/requirements.txt

Run tests

python -m unittest -v

Run tests with coverage

coverage run -m unittest -v

Lint with flake8

flake8 . --count --show-source --statistics

Fix code format with Black

black .

Project details


Download files

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

Source Distribution

didww_encrypt-1.0.0.tar.gz (6.2 kB view hashes)

Uploaded Source

Built Distribution

didww_encrypt-1.0.0-py3-none-any.whl (6.9 kB view hashes)

Uploaded Python 3

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