Skip to main content

Python bindings for Lylacore (soul-crypto + coach-engine)

Project description

Lylacore Python Bindings

Authors: Joysusy & Violet Klaudia 💖

Python bindings for Lylacore - cryptographic primitives and communication style coaching for AI agent identity systems.

Features

  • soul-crypto: AES-256-GCM encryption with Argon2id/PBKDF2/Scrypt key derivation
  • coach-engine: Communication style analysis and adaptation (coming soon)

Installation

pip install lylacore

Quick Start

import asyncio
import lylacore

async def main():
    # Generate a salt for key derivation
    salt = lylacore.Salt.generate()

    # Derive an encryption key from a passphrase
    key = await lylacore.derive_key("my-secure-passphrase", salt)

    # Encrypt some data
    plaintext = b"Secret message"
    nonce, ciphertext, auth_tag = lylacore.encrypt(plaintext, key)

    # Decrypt the data
    decrypted = lylacore.decrypt(ciphertext, key, nonce, auth_tag)
    assert decrypted == plaintext

    print("Encryption/decryption successful!")

asyncio.run(main())

API Reference

Classes

Salt

A 32-byte cryptographic salt for key derivation.

  • Salt.generate() - Generate a new random salt
  • Salt(data: bytes) - Create from existing bytes
  • salt.as_bytes() - Get raw bytes

Nonce

A 12-byte nonce for AES-GCM encryption.

  • Nonce.generate() - Generate a new random nonce
  • Nonce(data: bytes) - Create from existing bytes
  • nonce.as_bytes() - Get raw bytes

Key

A 32-byte encryption key.

  • key.as_bytes() - Get raw bytes (handle with care!)

AuthTag

A 16-byte authentication tag for AES-GCM.

  • AuthTag(data: bytes) - Create from existing bytes
  • auth_tag.as_bytes() - Get raw bytes

DeriveKeyOptions

Configuration for key derivation.

  • DeriveKeyOptions(algorithm="argon2id") - Options: "argon2id", "pbkdf2", "scrypt"

Functions

async derive_key(passphrase: str, salt: Salt, options: DeriveKeyOptions = None) -> Key

Derive an encryption key from a passphrase using a memory-hard KDF.

Parameters:

  • passphrase - User's passphrase (UTF-8 string)
  • salt - 32-byte salt (use Salt.generate() for new keys)
  • options - Optional KDF configuration (defaults to argon2id)

Returns: A 32-byte encryption key

encrypt(plaintext: bytes, key: Key) -> tuple[Nonce, bytes, AuthTag]

Encrypt data using AES-256-GCM.

Parameters:

  • plaintext - Data to encrypt
  • key - Encryption key from derive_key()

Returns: Tuple of (nonce, ciphertext, auth_tag)

decrypt(ciphertext: bytes, key: Key, nonce: Nonce, auth_tag: AuthTag) -> bytes

Decrypt data using AES-256-GCM.

Parameters:

  • ciphertext - Encrypted data
  • key - Same key used for encryption
  • nonce - Nonce from encrypt()
  • auth_tag - Authentication tag from encrypt()

Returns: Original plaintext

Security Notes

  • Never reuse a nonce with the same key
  • Store salt, nonce, and auth_tag alongside ciphertext (they're safe to store publicly)
  • Never log or display keys - use key.as_bytes() only when necessary
  • Argon2id is recommended for new applications (best resistance against attacks)

Requirements

  • Python 3.9+
  • Works on Windows, macOS, and Linux

License

MIT License - see LICENSE file for details

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

lylacore-0.1.0.tar.gz (85.3 kB view details)

Uploaded Source

Built Distributions

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

lylacore-0.1.0-cp39-abi3-win_amd64.whl (286.8 kB view details)

Uploaded CPython 3.9+Windows x86-64

lylacore-0.1.0-cp39-abi3-macosx_11_0_arm64.whl (334.5 kB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

lylacore-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (385.4 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

File details

Details for the file lylacore-0.1.0.tar.gz.

File metadata

  • Download URL: lylacore-0.1.0.tar.gz
  • Upload date:
  • Size: 85.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.12.6

File hashes

Hashes for lylacore-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e553e132da2367743364331f4a153fba6ba146fdea2651f763fcbde4c52fa321
MD5 26cb433f23d46d4f65c0659d93bcb19f
BLAKE2b-256 4205ef996903f71cf98a27b57e771bbdf365e1c01af4d2dd32e0631076a475b2

See more details on using hashes here.

File details

Details for the file lylacore-0.1.0-cp39-abi3-win_amd64.whl.

File metadata

  • Download URL: lylacore-0.1.0-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 286.8 kB
  • Tags: CPython 3.9+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.12.6

File hashes

Hashes for lylacore-0.1.0-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 d7fd1e6f0e411bceb2f80fada8acc8fc46a652471330475f63d08da70edcacda
MD5 aa954cc14fa5c25d5dfcc9ee9c9c4ef8
BLAKE2b-256 22b753b358c438baecd40a53a1bb91e3666d94dcaec3c2bcea961b3f490885e1

See more details on using hashes here.

File details

Details for the file lylacore-0.1.0-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lylacore-0.1.0-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 10dbc74debce4c921c1ae3c8085ab82054608b8da856263f33edbea16d2bafcf
MD5 c9dc4136cd7392c7a61460864cd977a3
BLAKE2b-256 fd544befef80e838d1b74c5b388bb13032d60d95d0462641d39d8367c93f0c39

See more details on using hashes here.

Provenance

The following attestation bundles were made for lylacore-0.1.0-cp39-abi3-macosx_11_0_arm64.whl:

Publisher: release-python.yml on joySUSY/lylacore

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lylacore-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lylacore-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 89175fb3da4fe7a02adce383b958e3ff9197db430015d51a86ae85fe7b0ddb72
MD5 b46063d8dbaa0c73e062017da9909c71
BLAKE2b-256 89329fc1a0d17c80f05f8df53d33ce93950b0c8117eb740e1c2aead86c31a0ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for lylacore-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release-python.yml on joySUSY/lylacore

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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