Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hvym_stellar-0.12.tar.gz (7.3 kB view details)

Uploaded Source

Built Distribution

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

hvym_stellar-0.12-py2.py3-none-any.whl (7.9 kB view details)

Uploaded Python 2Python 3

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

Hashes for hvym_stellar-0.12.tar.gz
Algorithm Hash digest
SHA256 3d9d95d486a40ad380754376dc8cbcd56cc3cdd566336a42a85bc42555c951f9
MD5 3692db2c1ef21953be9e059117ad883b
BLAKE2b-256 d8967dd9909a077bcae42c813014f441d83828e052f0a13bda62ff7e08b631a3

See more details on using hashes here.

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

Hashes for hvym_stellar-0.12-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 4db063e1ab2fcaca15c6d31930be002abf0641a1e5770113f6a91a34a812498d
MD5 ead42fde08a2a2b13979d9ef844af882
BLAKE2b-256 baba002483cdb4694cd28e5c80ec1899670c74cd03c4e9b4ac6b3444cf2c0d92

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