A Python package to facilitate JSON Web Encryption (JWE) with enhanced security, leveraging AWS Key Management Service (KMS) and Secrets Manager for secure input and output handling.
Project description
jwe-encryptify
jwe-encryptify
is a Python package designed for secure encryption and decryption using
JSON Web Encryption (JWE), enhanced by AWS Key Management Service (KMS) and AWS Secrets Manager
integration. This package offers a straightforward solution for handling sensitive data, allowing
encrypted data exchange while securely managing encryption keys through AWS.
Table of Contents
Features
- Robust Data Encryption: Uses JSON Web Encryption (JWE) to ensure data security and integrity.
- AWS KMS Integration: Leverages AWS KMS for secure key encryption and decryption.
- AWS Secrets Manager: Efficiently manages public and private key pairs for encryption processes.
- User-Friendly API: Simplified methods for secure JSON payload encryption and decryption.
Installation
You can install the package via pip
from PyPI:
pip install jwe-encryptify
Usage
- AWS Configuration: Ensure that your AWS credentials and region are set up. The package requires AWS permissions to access KMS and Secrets Manager.
- Environment Variable: Set
AWS_DEFAULT_REGION
as an environment variable or configure it in your AWS settings.
Encrypting Data using JWE
Use the encrypt
method to secure JSON data with a public key stored in AWS Secrets Manager.
from jwe_crypto import encrypt
# Data to encrypt
data_to_encrypt = {"user": "John Doe", "account_id": "123456"}
# Encrypt the data
jwe_encrypted_token = encrypt(
kms_id="your-kms-key-id", # AWS KMS key ID for encryption
secret_name="your-secret-name", # AWS Secrets Manager secret name
secret_key="public-key", # Key name in the secret (public key)
api_response=data_to_encrypt # JSON data to encrypt
)
print("Encrypted JWE Token:", jwe_encrypted_token)
Encrypting Data using KMS
Use the encrypt
method to secure JSON data using an AWS KMS key.
from kms_crypto import encrypt
# Data to encrypt
data_to_encrypt = {"user": "John Doe", "account_id": "123456"}
# Encrypt the data using KMS
kms_encrypted_value = encrypt(
kms_id="your-kms-key-id", # AWS KMS key ID used for encryption
plaintext=str(data_to_encrypt) # Convert the JSON data to a string
)
print("Encrypted KMS Value:", kms_encrypted_value)
Decrypting Data using JWE
Use the decrypt
method to decrypt an encrypted JWE token using a private key from AWS Secrets
Manager.
from jwe_crypto import decrypt
# JWE token to decrypt
jwe_token = "your-encrypted-jwe-token"
# Decrypt the data
decrypted_data = decrypt(
kms_id="your-kms-key-id", # AWS KMS key ID
secret_name="your-secret-name", # AWS Secrets Manager secret name
secret_key="private-key", # Key name in the secret (private key)
jwe_payload=jwe_token # Encrypted JWE payload
)
print("Decrypted Data:", decrypted_data)
Decrypting Data using KMS
Use the decrypt
method to decrypt an encrypted value using an AWS KMS key and encryption context.
from kms_crypto import decrypt
# Encrypted value to decrypt
encrypted_value = "your-encrypted-kms-value"
# Decrypt the data using KMS
decrypted_data = decrypt(
kms_id="your-kms-key-id", # AWS KMS key ID used for decryption
lambda_function_name="your-lambda-function-name", # Encryption context
encrypted_value=encrypted_value # Encrypted value to decrypt
)
print("Decrypted Data:", decrypted_data)
AWS Permissions
Ensure the following permissions are assigned to your AWS IAM role or user:
- KMS Permissions:
kms:Encrypt
kms:Decrypt
- Secrets Manager Permissions:
secretsmanager:GetSecretValue
Dependencies
The package requires the following dependencies:
jwcrypto
: For JWE encoding and decoding.boto3
: AWS SDK for Python.botocore
: Core library used by boto3. Install all dependencies automatically via pip install jwe-encryptify.
License
This project is licensed under the MIT License.
Contributing
Contributions are welcome! Submit issues or pull requests to enhance the package. For major changes, please open a discussion first.
Authors
M Santhosh Kumar Initial work santhoshse7en@gmail.com
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file jwe_encryptify-0.0.3.tar.gz
.
File metadata
- Download URL: jwe_encryptify-0.0.3.tar.gz
- Upload date:
- Size: 5.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.13.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5e65c028c59c08f9838499c4b152ee8aaaad648ce52999ad31f8c32cf2070439 |
|
MD5 | 3508a99c4992e929cfb9e1fc69775824 |
|
BLAKE2b-256 | 941b5a5e9f43b94e19edd0860bd118a490b9c58d6a3a7067a0a605699372697b |
File details
Details for the file jwe_encryptify-0.0.3-py3-none-any.whl
.
File metadata
- Download URL: jwe_encryptify-0.0.3-py3-none-any.whl
- Upload date:
- Size: 5.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.13.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 109350a856d83ba7058407b7f41f0bac088000a0872d062461420e84af454809 |
|
MD5 | 259aadf7302fdfbc44296e5ab40976ab |
|
BLAKE2b-256 | ecab09944ee3321bd3b4baaede664891668c983752ddd80e66c1ffe230b6508d |