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.8.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.8-cp39-abi3-win_amd64.whl (308.2 kB view details)

Uploaded CPython 3.9+Windows x86-64

lylacore-0.1.8-cp39-abi3-macosx_11_0_arm64.whl (334.6 kB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

lylacore-0.1.8-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.8.tar.gz.

File metadata

  • Download URL: lylacore-0.1.8.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.8.tar.gz
Algorithm Hash digest
SHA256 f2e126aafe35472b5d9f8b888cadd81705e818e1c44eb3b2ae51d27210a2474f
MD5 a1d76220beb211e07f66b5fd9d9efbdd
BLAKE2b-256 c639f9e5815d00e9043291f4522b2bf2feea81f5b370891982cf0c86e52e0972

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: lylacore-0.1.8-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.8-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 0a3c7f253a41a9a6b5ccd181fbc6cc9b1fb33a4de4e177e9577214a0ea905fcd
MD5 1ef7d96be137e1d6c70375676603c9f6
BLAKE2b-256 4a05dfb06b92763f866690b643b42e775b1b57f859b799817a1def2734059cc8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for lylacore-0.1.8-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 87748cad974a928b063fc75003729216a6119d16f2f6b1f9bd3b3ea983332d35
MD5 649297738125f74467e1053e9d10fbc0
BLAKE2b-256 9b8a2ead96418d0a48b16134d9fdc2800550ca858290fbf66e3daa8bba2dd9ed

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for lylacore-0.1.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 02365ba32837a422c35230a29ea51c4b277cbd191add754684194ccf3033acc4
MD5 16908dfb30cfc94d3bfd2dc1a08da21b
BLAKE2b-256 3c5a915f447b889a2febd6874a6dce204403582ded9c6a2dbfab53303d85076d

See more details on using hashes here.

Provenance

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