E2EE for the inverse transparency toolchain
Project description
Py-It-Crypto
This python package implements E2EE encryption functionality for the inverse transparency toolchain [1]. It was developed in the scope of my master thesis at TUM. It is fully compatible with the corresponding Typescript library ts-it-crypto and Golang library go-it-crypto. The module was published to the python package index.
For a detailed description of the implemented protocol, security considerations and software architecture have a look to the thesis.
Installation
To use the go-it-crypto module you can install it with:
pip install py-it-crypto
Usage
The functionality of this library requires a function that resolves the identity of users to a RemoteUser object.
This objects holds the public keys of a user.
This function is mandatory for decryption since it dynamically resolves the identities to the cryptographic keys
of a user.
This function needs to implement the following signature:
RemoteUser fetchUser(string)
Assuming pub_A and priv_A are PEM-encoded public/private keys of a user, the following code
initializes the it-crypto library for the owner of this keypair.
it_crypto = ItCrypto(fetch_sender)
it_crypto.login(owner.id, pub_A, pub_A, priv_A, priv_A)
The logged-in user can sign AccessLogs:
signedLog = it_crypto.sign_access_log(access_log)
The logged-in user can encrypt SignedAccessLogs for other users:
cipher = it_crypto.encrypt(singed_log, [receiver1, receiver2])
The logged-in user can decrypt tokens (this only succeeds if this user was specified as receiver during encryption):
received_signed_log = it_crypto.decrypt(cipher)
received_access_log = received_signed_log.extract()
Development
Running static analysis
Make sure you are in the root directory of this repo. Then simply run
mypy .
Running tests
Make sure you are in the root directory of this repo. Then simply run
pytest .
Build and Upload package
Build
python3 -m build
Upload Package to test.pypi
python3 -m twine upload --repository pypi dist/py_it_crypto-0.0.1*
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file py_it_crypto-1.0.1.tar.gz.
File metadata
- Download URL: py_it_crypto-1.0.1.tar.gz
- Upload date:
- Size: 23.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a6f82972c13309c9a83f966d035951acfd407864121be99308a139b62712bfe8
|
|
| MD5 |
b5601de59a6b60f0f33d8b329bf5594c
|
|
| BLAKE2b-256 |
511cab9426ce956150315bfec6bd988ad892def3b46ff916703f492eb748a417
|
File details
Details for the file py_it_crypto-1.0.1-py3-none-any.whl.
File metadata
- Download URL: py_it_crypto-1.0.1-py3-none-any.whl
- Upload date:
- Size: 12.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0ff1cdb77188a5ad1c288c6ec35fb8bbc0d469570a191a05893147e060dac0c3
|
|
| MD5 |
19e302af3adfd3d4018ceafa8020661e
|
|
| BLAKE2b-256 |
7decd697ca29111ccac0a8e9504785366d05729c7082d25c6b006298d31b176c
|