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.3.tar.gz (19.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sdc_cryptography-1.2.3-py3-none-any.whl (13.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: sdc_cryptography-1.2.3.tar.gz
  • Upload date:
  • Size: 19.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for sdc_cryptography-1.2.3.tar.gz
Algorithm Hash digest
SHA256 50565f7cfedaf838eaca72482b8a8425d467b95d5f72f109b2a292cda6eea7b3
MD5 d764c3ee47304674a01fa8b20205774a
BLAKE2b-256 444263979bb5d0e36becabca42e4a7e86af77c3051b9f77a1f129c1d89bbd95f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sdc_cryptography-1.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 79697dd612e8725a653951a1023a1ca061da132846998ab203853dd48a62c4fb
MD5 e03a41648940e6866fdb174bacda00c5
BLAKE2b-256 65ccec1d03c72cfb5132bd2175aafdf299357d2c3dfffc4ca7375ab1cb417d26

See more details on using hashes here.

Supported by

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