Platform-Agnostic Security Tokens for Python
pip install python-paseto
python -m paseto
libsodium
is required, this will check if it is installed on your system. On Ubuntu 20.04 you can get it with sudo apt install libsodium23
.
Implements PASETO Version2 and Version4 protocols supporting v2.public
, v2.local
, v4.public
and v4.local
messages.
Every protocol version provides access to encrypt() / decrypt() and sign() / verify() functions.
Low level API is focuses on solid, high quality, production ready primitives as specified directly in the PASETO protocol. See paseto-spec for protocol details.
from paseto.protocol.version2 import encrypt, decrypt
message = b"foo" # your data
key = b"0" * 32 # encryption key
token = encrypt(message, key)
plain_text = decrypt(token, key)
assert plain_text == message
print(f"token={token}")
print(f"plain_text={plain_text}")
print(f"message={message}")
from paseto.protocol.version2 import encrypt, decrypt
message = b"foo" # your data
key = b"0" * 32 # encryption key
optional_footer = b"sample_footer" # authenticated but not encrypted metadata
token = encrypt(message, key, optional_footer)
plain_text = decrypt(token, key, optional_footer)
assert plain_text == message
print(f"token={token}")
print(f"plain_text={plain_text}")
print(f"message={message}")
from paseto.protocol.version4 import create_symmetric_key, decrypt, encrypt
message = b"this is a secret message" # your data
key = create_symmetric_key() # encryption key
token = encrypt(message, key)
plain_text = decrypt(token, key)
assert plain_text == message
print(f"token={token}")
print(f"plain_text={plain_text}")
print(f"message={message}")
from paseto.protocol.version4 import create_asymmetric_key, sign, verify
message = b"this is a public message" # your data
public_key, secret_key = create_asymmetric_key() # signing / verifying keys
token = sign(message, secret_key)
verified_message = verify(token, public_key)
assert verified_message == message
print(f"token={token}")
print(f"verified_message={verified_message}")
print(f"message={message}")
In the future a high level API will provide developer friendly access to low level API and support easy integration into other projects.
Typical dev workflow operations are automated in Makefile, including testing, linting, code quality checks, benchmarks and dev environment setup.
This library is under active development and maintenance. For any feedback, questions, comments or if you would like to request a feature, please raise an issue!