Metadata-Version: 2.1
Name: didww_encrypt
Version: 1.0.0
Summary: File encryption for DIDWW API 3
Home-page: https://github.com/didww/didww_encrypt_python
Author: Denis Talakevich
Author-email: senid231@gmail.com
License: MIT
Project-URL: Bug Tracker, https://github.com/didww/didww_encrypt_python/issues
Description: # DIDWW Encrypt Python 3 SDK
        
        [![github_actions](https://github.com/didww/didww_encrypt_python/actions/workflows/tests.yml/badge.svg)](https://github.com/didww/didww_encrypt_python/actions)
        [![codecov](https://codecov.io/gh/didww/didww_encrypt_python/branch/main/graph/badge.svg)](https://codecov.io/gh/didww/didww_encrypt_python)
        
        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](https://doc.didww.com) for details.
        
        ## Requirements
        
        Python `>=3.6`
        
        ## Dependencies
        
        [PyCryptodomex](https://pypi.org/project/pycryptodomex/)
        
        ## Install
        
        ```shell
        pip install didww_encrypt
        ```
        
        ## Usage
        
        ### Inside python
        ```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
        ```shell
        $ didww_encrypt -i ./doc.pdf -o ./doc.pdf.enc -m sandbox
        ```
        
        Or using pipe
        ```shell
        $ cat ./doc.pdf | didww_encrypt -m production > ./doc.pdf.enc
        ```
        
        Also script could be run via `python -m`
        ```shell
        $ 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`
        ```shell
        $ didww_encrypt -f -mode sandbox
        c74684d7863639169c21c4d04747f8d6fa05cfe3:::7c56fd5d2e1f2ada18765d936e74712037aea7eb
        ```
        
        Or you can save it to a file
        ```shell
        $ 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.
        
        ```shell
        http_proxy="http://myproxy.example.com:1234" didww_encrypt -m sandbox
        ```
        
        ## Development
        
        ### Install dependencies
        
        ```shell
        pip install -r requirements.txt
        pip install -r tests/requirements.txt
        ```
        
        ### Run tests
        ```shell
        python -m unittest -v
        ```
        
        ### Run tests with coverage
        ```shell
        coverage run -m unittest -v
        ```
        
        ### Lint with flake8
        ```shell
        flake8 . --count --show-source --statistics
        ```
        
        ### Fix code format with Black
        ```shell
        black .
        ```
        
Keywords: DIDWW,encryption
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown
