Heavymeta Stellar Utilities for Python , By: Fibo Metavinci
Project description
hvym_stellar
A Python library for secure token generation and verification using Stellar keypairs. This package provides a robust way to create and verify tokens with support for expiration, access control, and secret sharing.
Features
- Secure Token Generation: Create cryptographically secure tokens using Stellar keypairs
- Token Expiration: Set token expiration times to enhance security
- Access Control: Define fine-grained access control through caveats
- Secret Sharing: Securely share secrets between parties
- Backward Compatibility: Support for legacy token verification
- Timestamp Validation: Built-in support for token expiration and max age validation
Installation
pip install hvym_stellar
Dependencies
- PyNaCl (Python binding to libsodium)
- pymacaroons (Macaroon token support)
- stellar-sdk (Stellar keypair and address handling)
- base58 (For encoding/decoding)
- cryptography (For encryption/decryption)
Basic Usage
1. Creating a Token
from hvym_stellar import StellarSharedKeyTokenBuilder, TokenType
from stellar_sdk import Keypair
# Generate or load Stellar keypairs
sender_kp = Keypair.random()
receiver_kp = Keypair.random()
# Create a new token
token = StellarSharedKeyTokenBuilder(
sender_kp,
receiver_kp.public_key,
token_type=TokenType.ACCESS,
expires_in=3600, # 1 hour expiration
caveats={"user_id": "123", "role": "admin"}
)
# Serialize the token for transmission
serialized_token = token.serialize()
2. Verifying a Token
from hvym_stellar import StellarSharedKeyTokenVerifier, TokenType
# Verify the token
verifier = StellarSharedKeyTokenVerifier(
receiver_kp,
serialized_token,
TokenType.ACCESS,
expected_caveats={"user_id": "123"},
max_age_seconds=3600 # Optional: enforce maximum token age
)
if verifier.valid():
print("Token is valid!")
# Access token claims
print("Token expires at:", verifier.get_expiration_time())
print("Is expired:", verifier.is_expired())
3. Sharing Secrets
# Sender: Create token with a secret
secret_data = "sensitive-information-here"
token_with_secret = StellarSharedKeyTokenBuilder(
sender_kp,
receiver_kp.public_key,
token_type=TokenType.SECRET,
secret=secret_data,
expires_in=300 # 5 minutes
)
serialized_secret_token = token_with_secret.serialize()
# Receiver: Extract the secret
verifier = StellarSharedKeyTokenVerifier(
receiver_kp,
serialized_secret_token,
TokenType.SECRET
)
if verifier.valid():
try:
secret = verifier.secret()
print("Retrieved secret:", secret)
except ValueError as e:
print("Failed to retrieve secret:", str(e))
Token Types
Access Tokens
- Used for API authentication and authorization
- Can include custom caveats for access control
- Support expiration and max age validation
Secret Tokens
- Used for securely sharing sensitive information
- Automatically encrypted using the receiver's public key
- Can be decrypted only by the intended recipient
Security Considerations
- Always use HTTPS when transmitting tokens
- Set appropriate expiration times for tokens
- Validate all token claims and caveats on the server side
- Rotate encryption keys regularly
- Keep private keys secure and never commit them to version control
License
MIT License - See LICENSE for details.
Contributing
Contributions are welcome! Please submit a pull request or open an issue to discuss your ideas.
Version History
- 0.1.0: Initial release
- 0.9.0: Added timestamp validation and expiration support
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
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 hvym_stellar-0.12.tar.gz.
File metadata
- Download URL: hvym_stellar-0.12.tar.gz
- Upload date:
- Size: 7.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3d9d95d486a40ad380754376dc8cbcd56cc3cdd566336a42a85bc42555c951f9
|
|
| MD5 |
3692db2c1ef21953be9e059117ad883b
|
|
| BLAKE2b-256 |
d8967dd9909a077bcae42c813014f441d83828e052f0a13bda62ff7e08b631a3
|
File details
Details for the file hvym_stellar-0.12-py2.py3-none-any.whl.
File metadata
- Download URL: hvym_stellar-0.12-py2.py3-none-any.whl
- Upload date:
- Size: 7.9 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4db063e1ab2fcaca15c6d31930be002abf0641a1e5770113f6a91a34a812498d
|
|
| MD5 |
ead42fde08a2a2b13979d9ef844af882
|
|
| BLAKE2b-256 |
baba002483cdb4694cd28e5c80ec1899670c74cd03c4e9b4ac6b3444cf2c0d92
|