Skip to main content

=?utf-8?q?SaQura_=E2=80=94_post-quantum-ready_cryptography_for_Python=2E_Wire-compatible_with_SaQura_for_=2ENET=2C_Swift_and_Kotlin=2E?=

Project description

SaQura for Python

Post-quantum-ready cryptography for Python. Wire-compatible with SaQura for .NET, Swift and Kotlin — data encrypted or signed on one platform decrypts and verifies on every other.

SaQura is async-first (await saqura.aes.encrypt(...)) with a synchronous facade (saqura.sync), mirroring the Swift (async) and Kotlin (suspend) SDKs.

Features

Module What it does
AES AES-256-GCM (auto-detects legacy CBC+HMAC on decrypt)
RSA RSA-4096 — OAEP-SHA256 encryption, PSS-SHA256 signatures
Hybrid RSA+AES envelope for large payloads (new + legacy HYBR)
Quantum Post-quantum KEMs (FrodoKEM / Classic-McEliece / ML-KEM, Generations 2–8) and ML-DSA (FIPS 204) / SLH-DSA (FIPS 205) signatures, via liboqs
Licensing Offline .lic verification (public-key-only)
Password PBKDF2-HMAC-SHA512, 210 000 iterations

Install

pip install saqura            # AES / RSA / Hybrid / Licensing / Password
pip install "saqura[quantum]" # + post-quantum (pulls liboqs-python)

Requires Python 3.10+. Wheels are shipped compiled (no .py source).

Windows + post-quantum: liboqs-python's default MSVC build miscompiles the FIPS-205 SLH-DSA path. After installing the quantum extra, run the bundled helper once — powershell -ExecutionPolicy Bypass -File tools\setup_liboqs_windows.ps1 — to install a correct (clang-cl) liboqs. macOS and Linux are unaffected.

Usage

import asyncio, saqura

async def main():
    # symmetric
    blob = await saqura.aes.encrypt("hello", "my-key")
    assert await saqura.aes.decrypt(blob, "my-key") == "hello"

    # asymmetric — new_key_pair() returns (private_pem, public_pem)
    priv, pub = await saqura.rsa.new_key_pair()
    sig = await saqura.rsa.sign("invoice #42", priv)
    assert await saqura.rsa.verify("invoice #42", sig, pub)

asyncio.run(main())

Synchronous facade — same names, no await:

import saqura
blob = saqura.sync.aes.encrypt("hello", "my-key")
text = saqura.sync.aes.decrypt(blob, "my-key")

Interoperability

All SaQura libraries share the same wire formats (AES-GCM nonce‖ct‖tag, RSA-OAEP/PSS-SHA256, hybrid envelope, FrodoKEM / Classic-McEliece / ML-KEM blobs, ML-DSA / SLH-DSA signatures, PBKDF2-SHA512, .lic license files). Cross-language round-trips are verified against a shared test corpus, so a .lic issued for .NET validates in Python and an AES blob from Swift decrypts in Python.


© 2025–2026 KyotoTech LLC. Proprietary.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

saqura-1.0.9-cp314-cp314-macosx_26_0_arm64.whl (368.0 kB view details)

Uploaded CPython 3.14macOS 26.0+ ARM64

saqura-1.0.9-cp313-cp313-win_amd64.whl (308.8 kB view details)

Uploaded CPython 3.13Windows x86-64

saqura-1.0.9-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (577.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

saqura-1.0.9-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (524.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

saqura-1.0.9-cp313-cp313-macosx_26_0_arm64.whl (359.3 kB view details)

Uploaded CPython 3.13macOS 26.0+ ARM64

saqura-1.0.9-cp312-cp312-win_amd64.whl (308.7 kB view details)

Uploaded CPython 3.12Windows x86-64

saqura-1.0.9-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (573.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

saqura-1.0.9-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (518.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

saqura-1.0.9-cp312-cp312-macosx_26_0_arm64.whl (350.2 kB view details)

Uploaded CPython 3.12macOS 26.0+ ARM64

saqura-1.0.9-cp311-cp311-win_amd64.whl (318.0 kB view details)

Uploaded CPython 3.11Windows x86-64

saqura-1.0.9-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (504.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

saqura-1.0.9-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (475.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

saqura-1.0.9-cp311-cp311-macosx_26_0_arm64.whl (345.4 kB view details)

Uploaded CPython 3.11macOS 26.0+ ARM64

saqura-1.0.9-cp310-cp310-win_amd64.whl (303.1 kB view details)

Uploaded CPython 3.10Windows x86-64

saqura-1.0.9-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (490.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

saqura-1.0.9-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (463.3 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

saqura-1.0.9-cp310-cp310-macosx_26_0_arm64.whl (344.5 kB view details)

Uploaded CPython 3.10macOS 26.0+ ARM64

File details

Details for the file saqura-1.0.9-cp314-cp314-macosx_26_0_arm64.whl.

File metadata

File hashes

Hashes for saqura-1.0.9-cp314-cp314-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 5daac774758483c1494871d5ea6fd49dc2dfee555b4429717f4aeebe572db59d
MD5 065ac5261a9cefd1d5c88e91a1791fad
BLAKE2b-256 636213cfc999b37ce0329e3a841c21a8a47cd2dc4c85a4bbe8995743d7b3e9ea

See more details on using hashes here.

File details

Details for the file saqura-1.0.9-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: saqura-1.0.9-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 308.8 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for saqura-1.0.9-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 4909602db8c233e8b79bcd722e905393f6037f6786496b448283eac9d236e5f9
MD5 6c7ec1bb4c2b0d033f4d26a76d799c11
BLAKE2b-256 fdae3261b52c6c8f825d87c7460cf02eade5130e9a2f06b4d56d288303bc5731

See more details on using hashes here.

File details

Details for the file saqura-1.0.9-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for saqura-1.0.9-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 07da4b6eca02da6e1a5d01f18bb609873ad103fff0005a512a887fa9e32c116b
MD5 13104a877dd522bf18e4625e75df3309
BLAKE2b-256 abc83f76594e8bf4cc37e334207c3c36c106910e1f6e90d45ec18b915bc554e4

See more details on using hashes here.

File details

Details for the file saqura-1.0.9-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for saqura-1.0.9-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ddbaf14a6e031c71caa4d5155d7685baa0fe31bf60043cc044f440f2aab95501
MD5 83696b43fbc6857c19448f179d3abbc4
BLAKE2b-256 bcb9b67b5a4372a94eadcf5ab61b5fd2b7b426001abf3c9a835be5e2f502ba96

See more details on using hashes here.

File details

Details for the file saqura-1.0.9-cp313-cp313-macosx_26_0_arm64.whl.

File metadata

File hashes

Hashes for saqura-1.0.9-cp313-cp313-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 c5493474800bacc429819960338e444db0e8affaedd9a2b393ecf9c0bfb313d3
MD5 ec7b29f2a81eeee8c0fac3994b3a5052
BLAKE2b-256 5ed7732e565fb0bf4884e4992b0d857630f2e8df6749ba86319e846dfe26b14e

See more details on using hashes here.

File details

Details for the file saqura-1.0.9-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: saqura-1.0.9-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 308.7 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for saqura-1.0.9-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 823e179cbfeac78de2ac62b3f046569e62134dcbde1d44aad6f6bc6769ee8778
MD5 7e61ea60bb63839f7eef05de2887d242
BLAKE2b-256 550d9d827dff6d6fbe1b115812dd43490f5ab97c1dea252b4a89469a509df899

See more details on using hashes here.

File details

Details for the file saqura-1.0.9-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for saqura-1.0.9-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 24a767c7c3a2bc816be095c018139335c4e0a56f8437a34e51afa41cf3bb9b55
MD5 7c3fa4b6ef67fc8e29a4adc155dc6d4c
BLAKE2b-256 cf48dfe36e553355f003597fef770db38a1eb25e0a58243167ad662d3cf63036

See more details on using hashes here.

File details

Details for the file saqura-1.0.9-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for saqura-1.0.9-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1b6dcaef8856e0e55c5d827833836bf4253fb9e79b1a848fab3975aa4dae6c56
MD5 556aa0e2f4b8951ef3f2ba8232ad8de0
BLAKE2b-256 9794a37875660c578203ecc580b6091a63ed52ed995a35e6714c8c3efae25ae5

See more details on using hashes here.

File details

Details for the file saqura-1.0.9-cp312-cp312-macosx_26_0_arm64.whl.

File metadata

File hashes

Hashes for saqura-1.0.9-cp312-cp312-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 18efc4cd7c90a92473a5102225afecca6fc91c76de62a203bb9923e028ca1cb7
MD5 8a93a456162780b697742f86d1159295
BLAKE2b-256 4d559eda7d6a99e4338196d3a433d46b3f8105ace1046ce3ca2fac55a1a09239

See more details on using hashes here.

File details

Details for the file saqura-1.0.9-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: saqura-1.0.9-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 318.0 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for saqura-1.0.9-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 cff8313482006bae0352000459dda2050d0172a66c1a43a1167053402c35cd35
MD5 8e158e1cc46e0fa98cef91dc43c3c71b
BLAKE2b-256 8e3f8d094531246b62391287c6b79ea1550fdbbd39e9e181164ca479953941ce

See more details on using hashes here.

File details

Details for the file saqura-1.0.9-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for saqura-1.0.9-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 728d3c13e73639c7a571c21628f11e02940df8bd2d5ce374720e179a64345102
MD5 fbe3a47f13c057d07be61c7b21baf772
BLAKE2b-256 bc4da4c291070c63308b2fbe2ecadb6affc452f1d789ce63008b165e25848f0d

See more details on using hashes here.

File details

Details for the file saqura-1.0.9-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for saqura-1.0.9-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 bd0e3187e466f6163b24bcffc16c1344a34a8bbc606a038eb561ba50e5126faa
MD5 e38bc5a59fa770841fd45ce1df77b955
BLAKE2b-256 05c148ff0822012b23c1e00fd2c05138f7263683efb7f0e9b9f8eec8ef354031

See more details on using hashes here.

File details

Details for the file saqura-1.0.9-cp311-cp311-macosx_26_0_arm64.whl.

File metadata

File hashes

Hashes for saqura-1.0.9-cp311-cp311-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 0bb22d28db5157dca5cc15295a86493b38bfc5ca9f42f0d90128046e6bef49be
MD5 9514cfc6e6ba83aa6cf22e6464a201e8
BLAKE2b-256 a19797181465578627a349f9cc5bc28eba32807a4976b24cdf6bbb468f64ee11

See more details on using hashes here.

File details

Details for the file saqura-1.0.9-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: saqura-1.0.9-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 303.1 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for saqura-1.0.9-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 63e3e6f24b929c20689518d09dcc2264ace0be6bcc244299537be03a40edf1dd
MD5 1a2a5a1de0d6c70e85b9c84efc5caa99
BLAKE2b-256 95380e151809134d05e2fa5da88660988c8be040bd9682882742da19e42c2265

See more details on using hashes here.

File details

Details for the file saqura-1.0.9-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for saqura-1.0.9-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 53d9bca1e8aacd0e9984ce0667113e9583dc0c0bbc5a674878bfdf2d167e11be
MD5 55b6c4290d31582b639130600911868e
BLAKE2b-256 182c45c291d1a39aef5a676b3983d0593860adc29e1916ee846e63cdcc0930c0

See more details on using hashes here.

File details

Details for the file saqura-1.0.9-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for saqura-1.0.9-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 87a4d344da7f560263711ea19e3f845825fc8a32ae23146ec201c22c5d85acc6
MD5 61fe0ebb9e120104ae9df2dfc61e872c
BLAKE2b-256 a858a4d423ad8488c88b8390c884dc190937fe193ca4a0442c24109864676a0a

See more details on using hashes here.

File details

Details for the file saqura-1.0.9-cp310-cp310-macosx_26_0_arm64.whl.

File metadata

File hashes

Hashes for saqura-1.0.9-cp310-cp310-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 c5404c4ce61d7ad042c57bbff31561037b95b9d5740ea981c51c0a686454bdc9
MD5 6f685e7d417f093f04ffd00d40e4bd6b
BLAKE2b-256 19c1844df56a7bf090d171085073cf9f4b8caeabe110948cf64dcda28cac3639

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