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.11.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.11-py2.py3-none-any.whl (7.9 kB view details)

Uploaded Python 2Python 3

File details

Details for the file hvym_stellar-0.11.tar.gz.

File metadata

  • Download URL: hvym_stellar-0.11.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.11.tar.gz
Algorithm Hash digest
SHA256 2cc91d65cc56896f37ac532abe1ac178e2c2355880bf806ef6cab59ed0ef21ba
MD5 db5df35419cbaf2e4cb8a701ca1ebe25
BLAKE2b-256 a499f38e3117bfb2d230cd35feebd41753d922455efe29c411601513472326d4

See more details on using hashes here.

File details

Details for the file hvym_stellar-0.11-py2.py3-none-any.whl.

File metadata

  • Download URL: hvym_stellar-0.11-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.11-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 15d53d498b3962a641a654bc57aa87388872af2943d77c431532784e4014ae67
MD5 15a98a0116e7c1eff9163fbe596f9060
BLAKE2b-256 e79cc162d6d4ee8d247457d5a71bca19afa6d1e7a2b4cf1c4d39b32552ec53f5

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