Skip to main content

A shared library for SDC services that use JWT with JWE

Project description

sdc-cryptography

Build Status Codacy Badge codecov A common source code library for SDC services that use JWE. Apps wishing to use this should add the sdc_cryptography dependency to their requirements.txt and install with pip.

Basic Use (with pipenv, recommended)

Install requirements

pip install pipenv
make build

Run the unit tests

pipenv run make test

Create a package for deployment

pipenv run make sdist

Basic Use (with activated virtual environment)

Install requirements

These commands will generate a requirements file that pip can use. It doesn't have to be created this way but this is the easiest way.

pip install pipenv
pipenv lock -r --dev > requirements.txt
pip install -r requirements.txt

Run the unit tests

make test

Create a package for deployment

make sdist

Usage

Need to generate a keys.yml file first. Note, this requires a file system to store the file. Then it needs to be loaded, and a key store generated.

generate_keys.py <key_folder_location>

After this has been configured, encrypting and decrypting can be done as in the example below.

secrets_from_file = yaml.safe_load("keys.yml")

validate_required_secrets(secrets_from_file, EXPECTED_SECRETS, KEY_PURPOSE_SUBMISSION)

key_store = KeyStore(secrets_from_file)

# Encrypt JSON (Purpose has a single encryption key in the key store)
from sdc.crypto.encrypter import encrypt
encrypted_json = encrypt(json, key_store, key_purpose)

# Encrypt JSON with encryption service (Purpose has multiple encryption keys in the key store each tagged with a service)
from sdc.crypto.encrypter import encrypt
encrypted_json = encrypt(json, key_store, key_purpose, encryption_for_service="some-service")

# Decrypt UTF8 jwe token
from sdc.crypto.decrypter import decrypt
data_bytes = data.decode('UTF8')
decrypted_json = decrypt(data_bytes, key_store, key_purpose)

PyPi

This repo is available from PyPi at sdc-cryptography

The package is published automatically to PyPi when a tag is created in Github. The configuration for this is in the .travis.yml file.

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

sdc_cryptography-1.2.1.tar.gz (19.7 kB view details)

Uploaded Source

Built Distribution

sdc_cryptography-1.2.1-py3-none-any.whl (13.6 kB view details)

Uploaded Python 3

File details

Details for the file sdc_cryptography-1.2.1.tar.gz.

File metadata

  • Download URL: sdc_cryptography-1.2.1.tar.gz
  • Upload date:
  • Size: 19.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.19

File hashes

Hashes for sdc_cryptography-1.2.1.tar.gz
Algorithm Hash digest
SHA256 cea2de62e65940efb72bfd3ed677b1e685678521a52eb4c06769ffce506f5847
MD5 e78dfaba37efeff0450a9afd4d3d39fa
BLAKE2b-256 35f6bac2b2f3c6bf17117b5d17afdbe3ff860f0337f7ac028e48cd0a0bce2a6f

See more details on using hashes here.

File details

Details for the file sdc_cryptography-1.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for sdc_cryptography-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2b87da178c0d9c6a8add4e2afbe81139bbb056598af0cda61b52f421fb29451f
MD5 a1cd5a458c6f7248c6d3d7953969c16e
BLAKE2b-256 5ea2737b383015436c7b41cc684a28985104b396d7f704ce000d042cf14a777c

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