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.3.tar.gz (58.8 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.3-cp39-abi3-win_amd64.whl (308.2 kB view details)

Uploaded CPython 3.9+Windows x86-64

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

Uploaded CPython 3.9+macOS 11.0+ ARM64

lylacore-0.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (385.5 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

File details

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

File metadata

  • Download URL: lylacore-0.1.3.tar.gz
  • Upload date:
  • Size: 58.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for lylacore-0.1.3.tar.gz
Algorithm Hash digest
SHA256 3910d1eaaf20297355442ec53c3326283c6062ad457e004013cbcb77cb2bc65c
MD5 9b42ebf1e9bf51f2174da2a6d2538dc5
BLAKE2b-256 d71d2bee8cb4debd3e2d25874838f8c12782cb04ef3e566903bb822f82275ba5

See more details on using hashes here.

Provenance

The following attestation bundles were made for lylacore-0.1.3.tar.gz:

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.3-cp39-abi3-win_amd64.whl.

File metadata

  • Download URL: lylacore-0.1.3-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 308.2 kB
  • Tags: CPython 3.9+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for lylacore-0.1.3-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 5ce3b6753e61428b0e46abf9f72d4e01ba0f6e8479fe1c0428aac864ae441479
MD5 0c60cdd69728142e1ed58d0715603011
BLAKE2b-256 fe960cf1e8f96d6a2b6705db56ac1235d54fc9a7739f386657433dd106dbda5a

See more details on using hashes here.

Provenance

The following attestation bundles were made for lylacore-0.1.3-cp39-abi3-win_amd64.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.3-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lylacore-0.1.3-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3d6620b8e1fd870555da623bfceb80082af8ff3bf1c6af6ffdf3c84860dbf08f
MD5 91c8c71964a0638be686ea106143a651
BLAKE2b-256 32b420e4bf629df86d4391986b5daca115c8fbcc331e9576f1f40b1776f9435a

See more details on using hashes here.

Provenance

The following attestation bundles were made for lylacore-0.1.3-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.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lylacore-0.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 561e3ee00c67a8e8e5311946595ae886f6c5722cb830966de2b15d4965e266b7
MD5 0c7a390889520b7ff001ab758d648dd2
BLAKE2b-256 5fff5e4b8f4fc05fd0ff1c779882d78c78d3e5a15baa1c5ffb01226f2ae7686c

See more details on using hashes here.

Provenance

The following attestation bundles were made for lylacore-0.1.3-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