Overview
How the SaQura Library works
Quantum-safe encryption as a building block for your own software — in .NET, Kotlin, Swift, Python, JavaScript or C/C++. Your data never leaves your device.
Overview
The problem in one paragraph
Almost every piece of software uses encryption — a digital lock for passwords, messages and data. The locks in common use today (RSA, ECC) can be broken by a future quantum computer. Regulators such as Germany's BSI and the EU's NIS2 directive are pushing the move to quantum-safe methods. Attackers already capture data today to decrypt it later — which is why it matters now.
What it is
Encryption right inside your app
The SaQura Library is a ready-made software building block (an “SDK”) that developers add to their own application. Encryption and decryption happen directly on the device — unlike an online service, the data never leaves the machine. Ideal where confidentiality or regulations require it.
// .NET / C#
var (pub, priv) = await Quantum.GenerateKeyPairAsync(QuantumStrength.Standard, QuantumGeneration.Gen8);
var (secret, cipher) = await "Hello".EncryptWithQuantumAsync(pub);
var plain = await cipher.DecryptWithQuantumAsync(priv, secret);Simplified examples — see the docs for exact syntax.
Facts
Algorithms, standards, platforms
The same algorithms and the same data format in all six SDKs — whatever one platform encrypts, every other one decrypts. The table lists what is in the library and where.
| Algorithm | Standard | Available in |
|---|---|---|
| X25519 + ML-KEM (Gen8, hybrid) | RFC 7748 + FIPS 203 | all 6 SDKs |
| ML-KEM-512 / 768 / 1024 | FIPS 203 | all 6 SDKs |
| ML-DSA-44 / 65 / 87 | FIPS 204 | all 6 SDKs |
| SLH-DSA-SHA2-128f / 192f / 256f | FIPS 205 | all 6 SDKs |
| FrodoKEM-640 / 976 / 1344 (Gen4, Gen6) | BSI TR-02102-1 (for 976 and 1344) | all 6 SDKs |
| Classic McEliece 6688128 / 6960119 / 8192128 (Gen2, Gen5) | BSI TR-02102-1 (for 6688128 and 8192128) | all 6 SDKs |
| RSA-4096 + FrodoKEM (Gen7, hybrid) | PKCS #1 v2.2 + FrodoKEM | all 6 SDKs |
| AES-256-GCM | FIPS 197 · SP 800-38D | .NET, Kotlin, Swift, Python (JS and C: inside the generations and SQS1) |
| ChaCha20-Poly1305 | RFC 8439 | Streaming (SQS1) in .NET, Kotlin, Swift, JS, C |
| RSA-4096 (OAEP, PSS) | PKCS #1 v2.2 | .NET, Kotlin, Swift, Python (JS and C: inside Gen7) |
| PBKDF2-HMAC-SHA512 | SP 800-132 | .NET, Kotlin, Swift, Python |
Streaming: large files with constant memory (SQS1)
Files and data streams are encrypted in segments (1 MiB by default) with AES-256-GCM or ChaCha20-Poly1305 — memory use stays constant regardless of file size (tested with 3 GiB). Every segment carries a counter and an end marker, so a truncated stream is detected. The stream key can be wrapped in a post-quantum envelope (Gen8/ML-KEM, Gen5, Gen6). Streaming in .NET, Kotlin, Swift, JS and C; envelope in .NET, Kotlin, Swift and C.
Session protocol: MLS (RFC 9420) with hybrid post-quantum key exchange
For group and one-to-one sessions SaQura uses MLS as specified in RFC 9420 — not PQXDH or Double Ratchet. The standard suite (P-256, AES-128-GCM) interoperates with OpenMLS and is checked against the official RFC 9420 test vectors. In addition there is a SaQura suite that replaces the key exchange with hybrid X25519 + ML-KEM-768; signatures there remain ECDSA P-256, and this suite deliberately does not interoperate with foreign stacks. MLS is available in Swift and Kotlin; SaQura Messenger uses it.
Packages: NuGet · SaQura 1.0.15 · Maven Central · jp.co.kyototech:saqura:1.2.2 · npm · saqura 0.1.0 · SwiftPM · 1.2.0 · PyPI · saqura 1.0.9 · C/C++ · 1.0.1
Who it's for
When this is the right fit
For teams that build encryption into their own software — especially where data must stay local for privacy or compliance reasons.
Getting started
Get going
Add the library via a package manager, test it for free, go to production with a license — installation and per-language examples are in the docs.
What's next