All products

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.

Your devicedata stays here
SaQura Libraryencrypts/decrypts locally
Your devicedata stays with you
// .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.

AlgorithmStandardAvailable in
X25519 + ML-KEM (Gen8, hybrid)RFC 7748 + FIPS 203all 6 SDKs
ML-KEM-512 / 768 / 1024FIPS 203all 6 SDKs
ML-DSA-44 / 65 / 87FIPS 204all 6 SDKs
SLH-DSA-SHA2-128f / 192f / 256fFIPS 205all 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 + FrodoKEMall 6 SDKs
AES-256-GCMFIPS 197 · SP 800-38D.NET, Kotlin, Swift, Python (JS and C: inside the generations and SQS1)
ChaCha20-Poly1305RFC 8439Streaming (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-SHA512SP 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

Next steps