Skip to main content

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.

Tested liboqs version: this release is tested against native liboqs 0.15.0. liboqs-python uses an already installed liboqs, or builds one on first import. To use the tested version, install liboqs 0.15.0 beforehand, or set PYOQS_VERSION=0.15.0 before the first import oqs (the Windows helper above already installs 0.15.0).

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.

Metadata

Release files for saqura 1.0.10

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for saqura 1.0.10
File
saqura-1.0.10-cp314-cp314-macosx_26_0_arm64.whl CPython 3.14 CPython 3.14 macOS 26.0+ ARM64 Details
saqura-1.0.10-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
saqura-1.0.10-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
saqura-1.0.10-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64, Linux glibc 2.17+ ARM64 Details
saqura-1.0.10-cp313-cp313-macosx_26_0_arm64.whl CPython 3.13 CPython 3.13 macOS 26.0+ ARM64 Details
saqura-1.0.10-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
saqura-1.0.10-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
saqura-1.0.10-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 Details
saqura-1.0.10-cp312-cp312-macosx_26_0_arm64.whl CPython 3.12 CPython 3.12 macOS 26.0+ ARM64 Details
saqura-1.0.10-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
saqura-1.0.10-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
saqura-1.0.10-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 Details
saqura-1.0.10-cp311-cp311-macosx_26_0_arm64.whl CPython 3.11 CPython 3.11 macOS 26.0+ ARM64 Details
saqura-1.0.10-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
saqura-1.0.10-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64, Linux glibc 2.17+ x86-64 Details
saqura-1.0.10-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ ARM64, Linux glibc 2.17+ ARM64 Details
saqura-1.0.10-cp310-cp310-macosx_26_0_arm64.whl CPython 3.10 CPython 3.10 macOS 26.0+ ARM64 Details

Total release size: 7.0 MB

Release files / saqura-1.0.10-cp314-cp314-macosx_26_0_arm64.whl

Download URL saqura-1.0.10-cp314-cp314-macosx_26_0_arm64.whl
Size 342.9 kB
Tags CPython 3.14 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
7a2ee238363758a69d941461c3dcc593f3fda87f368fd148c643dd40a4b5fcfe
BLAKE2b-256 checksum
How to use checksums
c6b63a70f554a190e1f15f19824fb72ff06de59ae0e4fcd614a674afd3f3745a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.7

Release files / saqura-1.0.10-cp313-cp313-win_amd64.whl

Download URL saqura-1.0.10-cp313-cp313-win_amd64.whl
Size 309.2 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
39f4b20604af539cfe293e1fa8268c44584956923c91270d619242b470f9bff6
BLAKE2b-256 checksum
How to use checksums
363112b272430aa56b4c16b84ac8bc5a23f09ccff204c687d19b061a1e00e9b0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.7

Release files / saqura-1.0.10-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL saqura-1.0.10-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 585.9 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
dae7e9ba093656bf5005e2f1b29480a33ce43d353f4b03d1507b7a845bd932c6
BLAKE2b-256 checksum
How to use checksums
db7a21d88140982f128a4cf890fd38421ccd5201fe35b0aa0b8c3a9b54e6b02f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.7

Release files / saqura-1.0.10-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL saqura-1.0.10-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 525.9 kB
Tags CPython 3.13 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
3e2618f1faacbf8b825a15bf89e07272c7a34365db7e68abb5609f9679419b04
BLAKE2b-256 checksum
How to use checksums
6e177a34ab0bb27b2b0f589b95b4d264ecac6fae1979cebdf7b95a426a535d6e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.7

Release files / saqura-1.0.10-cp313-cp313-macosx_26_0_arm64.whl

Download URL saqura-1.0.10-cp313-cp313-macosx_26_0_arm64.whl
Size 335.2 kB
Tags CPython 3.13 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
e810b71e7c7b4367179565d2f2699e1c6a109407fb1d4dd0e5f1573452540d17
BLAKE2b-256 checksum
How to use checksums
df7694a2a056fe1277537a33a7c2277e8fc451436a0480b2e6c513bfffca5de6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.7

Release files / saqura-1.0.10-cp312-cp312-win_amd64.whl

Download URL saqura-1.0.10-cp312-cp312-win_amd64.whl
Size 309.8 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
3af1d58542dfe4f930cc17d73ba1ca37d6c9c2cf30a093957720c52c36d1c3b9
BLAKE2b-256 checksum
How to use checksums
3979000541bbaf705ecb941bb474e0a4dc030e8babbbe8249fd3cdd0f3933683
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.7

Release files / saqura-1.0.10-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL saqura-1.0.10-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 580.3 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
fb9dc23b0b9d61dad5cbf01af5ad4c81146f0e1b69f2a4d003a229d32f5ebd1b
BLAKE2b-256 checksum
How to use checksums
b9c970e034596b7498a04f629029dbb41471ae4b56004613281377dc659b0c4a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.7

Release files / saqura-1.0.10-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL saqura-1.0.10-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 518.7 kB
Tags CPython 3.12 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
b8ff4d481ee28054f555f2f78c1ff44d4256c60132372944dbdb1c964db14e0e
BLAKE2b-256 checksum
How to use checksums
029841874a2b77f5028c6a3d3430916ed19ae0751c81a7579b3085094b99f01c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.7

Release files / saqura-1.0.10-cp312-cp312-macosx_26_0_arm64.whl

Download URL saqura-1.0.10-cp312-cp312-macosx_26_0_arm64.whl
Size 325.5 kB
Tags CPython 3.12 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
8fdd7d48715e2385f7dc98cd4821e8ec64b0e1d2a9fb5ab6b1dc1077d78feb71
BLAKE2b-256 checksum
How to use checksums
b4ee73ab144877c34dcf1904de1ddbd7b7aa8f4077259272565216131e07fcb5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.7

Release files / saqura-1.0.10-cp311-cp311-win_amd64.whl

Download URL saqura-1.0.10-cp311-cp311-win_amd64.whl
Size 316.0 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
2424a4b03f0d95306bb2a3a7ca126de9d71cf4d205363df52e185d8c6a47ffae
BLAKE2b-256 checksum
How to use checksums
cb262b37a557d9f2799c283991cb32f83543fce2b5e9c14772959158037a4743
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.7

Release files / saqura-1.0.10-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL saqura-1.0.10-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 508.8 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
33f46542a0ca79fe378c6f8ef30a0fab9a340dfa7ca027ca9edc0863ae300d7e
BLAKE2b-256 checksum
How to use checksums
43f6f4a9c45e6536a7e3b7ec058ebfb94495028937ed856323d5b7c54053d931
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.7

Release files / saqura-1.0.10-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL saqura-1.0.10-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 475.7 kB
Tags CPython 3.11 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
07d08ed285ce6683e0ea1312456378d32baab8139646abe5a596abc4b7222a39
BLAKE2b-256 checksum
How to use checksums
29a99c26d6c1389a56de3295b6b786c1dcf786229b4d8814c1c51502d104725d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.7

Release files / saqura-1.0.10-cp311-cp311-macosx_26_0_arm64.whl

Download URL saqura-1.0.10-cp311-cp311-macosx_26_0_arm64.whl
Size 316.9 kB
Tags CPython 3.11 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
790e75d9fb8a5648af10383953c1bf67d67c6bb9bf60ed653b7dc032c09b441c
BLAKE2b-256 checksum
How to use checksums
a6371c6d949a292b5325090fd099c9a4b393995150b032edcac381a8547f260a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.7

Release files / saqura-1.0.10-cp310-cp310-win_amd64.whl

Download URL saqura-1.0.10-cp310-cp310-win_amd64.whl
Size 297.5 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
d6c606ef95e2cc117c9aab31dc88caeca82cac804d5226acf028cc1e06d5abb6
BLAKE2b-256 checksum
How to use checksums
4ba83b028aa02099da4b859a784cfd9ef2e75fa9fa88bbdaeb3f4b7471fbeebf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.7

Release files / saqura-1.0.10-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL saqura-1.0.10-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 493.9 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
ae0ff22a42b5c086ddfe847d6be862b679b2400f2fe5ed776eae55948e3863c6
BLAKE2b-256 checksum
How to use checksums
367415a543e87434b7fe1e0b28e3a1f0f3ab2effa70ae6d26dacbad974a18742
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.7

Release files / saqura-1.0.10-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL saqura-1.0.10-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 462.3 kB
Tags CPython 3.10 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
1a7c93902cc86f15f95a565c715a9fcdd07a076632382dc721168c227198ebed
BLAKE2b-256 checksum
How to use checksums
7cec6de66de24c00d3ceb76b19621bc91116b846fbefa37314693864ab16dc14
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.7

Release files / saqura-1.0.10-cp310-cp310-macosx_26_0_arm64.whl

Download URL saqura-1.0.10-cp310-cp310-macosx_26_0_arm64.whl
Size 308.8 kB
Tags CPython 3.10 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
87e188169e998c4a3672e362ae713c046448a27b415d64665ec6df843e35b818
BLAKE2b-256 checksum
How to use checksums
770ebcb510a3f4cf5fc3bff0cbfabe40f2634a1306c9c788ae16cb551fb3c769
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.7

Release history Release notifications | RSS feed

This release

1.0.10 This release

17 release files

1.0.9

17 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page