SaQura .NET · v1.0.13 · NuGet

SaQura Cryptography Library

Einführung

SaQura bietet AES-256-GCM, RSA-4096, Passwort-Hashing und Post-Quanten-Verschlüsselung. Die Verarbeitung läuft lokal in Ihrer Anwendung; es werden keine Daten an Dritte übertragen. Namespace: SaQura.

Bezug: NuGet · SaQura. Byte-kompatibel mit den Kotlin-, Swift-, Python- und JS/TS-SDKs (siehe Tabs oben).

Voraussetzungen

  • Framework: .NET 8.0+
  • Plattformen: Windows x64, Linux x64/ARM64, macOS (Intel/ARM), Android, iOS (.NET MAUI)
  • Speicher: PQC-Schlüsselerzeugung ist rechenintensiv — auf Mobilgeräten Gen6 bevorzugen.

Installation

dotnet add package SaQura

Ohne Lizenz läuft SaQura im Free-Modus (Wasserzeichen, 100-Byte-Limit für PQC). Eine Lizenz schaltet alle Funktionen frei.

Lizenz-Aktivierung

Option A: Lizenzschlüssel (Online)

using SaQura;

var result = await ApiLicense.ActivateLicenseAsync("PRO-XXXX-XXXX-XXXX-XXXX");

if (result.Success)
{
    Console.WriteLine($"License active: {ApiLicense.CurrentTier}");
}

Option B: Standard-Lizenzdatei

using SaQura;

var result = await ApiLicense.ActivateLicenseFileAsync("license.lic");
if (result.Success)
{
    Console.WriteLine("License activated!");
}

Option C: Distribution-Lizenz (App/Play Store)

// MauiProgram.cs — activate license at startup (background)
Task.Run(async () =>
{
    if (ApiLicense.IsLicensed) return;
    using var stream = await FileSystem.OpenAppPackageFileAsync("license.lic");
    using var reader = new StreamReader(stream);
    var json = await reader.ReadToEndAsync();
    var result = await ApiLicense.ActivateLicenseFromJsonAsync(json);
});

App-Bindung (optional, kostenlos): Auf Wunsch binden wir Ihre Distributions-Lizenz an Ihre App – an den Package-Namen bzw. Bundle Identifier (Android, iOS, macOS, Windows) und, auf Android, Windows und macOS-Desktop, zusätzlich an Ihr Signatur-Zertifikat. Eine extrahierte Lizenzdatei lässt sich dann in keiner fremden App aktivieren. Die App-Identität wird vom Betriebssystem geprüft und in der SDK durchgesetzt; die Bindung setzt eine aktuelle SDK-Version voraus, die wir Ihnen bei der Ausstellung nennen. Unter Linux gibt es keine vom Betriebssystem bestätigte App-Identität – dort liefern wir eine ungebundene Lizenz. Kontaktieren Sie uns für eine gebundene Lizenz.

Lizenzstatus prüfen

if (ApiLicense.IsLicensed)
{
    Console.WriteLine($"Tier: {ApiLicense.CurrentTier}");
    Console.WriteLine($"Days remaining: {ApiLicense.GetDaysRemaining()}");
    Console.WriteLine($"AES: {ApiLicense.IsAESAvailable}, Quantum: {ApiLicense.IsQuantumAvailable}");
}

API-Referenz

Quantum-Generationen

Selbstbeschreibende Generationen-Header (krypto-agil, abwärtskompatibel). Gen2–7 folgen dem BSI-empfohlenen Profil; Gen8 ergänzt X25519 + ML-KEM (NIST FIPS 203).

GenerationBeschreibungEinsatz
Gen4FrodoKEM-1344 + AES-GCMAllzweck (empfohlen)
Gen6Mobil-optimiertMobile / On-Device
Gen7Hybrid RSA+QuantumKritische Infrastruktur (Pro+)
Gen8X25519 + ML-KEM (FIPS 203)Quantensicher (Pro+)

Post-Quanten-Signaturen

Signaturen nach NIST FIPS 204 (ML-DSA) und FIPS 205 (SLH-DSA). Signieren ab Pro; Verifikation in allen Tarifen.

Wichtige Klassen

ApiLicense, AES, RSAKey, Quantum, QuantumSignature, PasswordHasher, StreamingExtensions.

Code-Beispiele

AES-Verschlüsselung

using SaQura;

var key = AES.GenerateAESKey();
var encrypted = await AES.EncryptAsync("Secret message", key);
var decrypted = await AES.DecryptAsync(encrypted, key);

Passwortbasierte Verschlüsselung

using SaQura;

var salt = AES.GenerateSalt();                       // store with the data
var key  = AES.DeriveKeyFromPassword("user_password_123", salt);
var encrypted = await AES.EncryptAsync("Sensitive data", key);

var key2 = AES.DeriveKeyFromPassword("user_password_123", salt);
var decrypted = await AES.DecryptAsync(encrypted, key2);

RSA + Digitale Signaturen

using SaQura;
using System.Text;

var (privateKey, publicKey) = await RSAKey.NewKeyPairAsync();

var data = Encoding.UTF8.GetBytes("Document to sign");
var signature = await RSAKey.SignAsync(data, privateKey);
var isValid = await RSAKey.VerifyAsync(data, signature, publicKey);

Quantensichere Verschlüsselung (Pro+)

using SaQura;

var generation = Quantum.GetRecommendedGeneration(
    isMobile: false, requiresHighestSecurity: false);

var (publicKey, privateKey) = Quantum.GenerateKeyPair(
    QuantumStrength.Standard, generation);

Password Hashing

using SaQura;

var hash = await PasswordHasher.HashPasswordAsync("MySecurePassword123!");
var ok = await PasswordHasher.VerifyPasswordAsync("MySecurePassword123!", hash);

Large-File-Streaming

Verschlüsselt Dateien beliebiger Größe bei konstantem Speicher — kein ~2-GB-Limit. Eigenes SQS1-Format, additiv (ab 1.0.10).

  • Zwei Suiten (auto): AES-256-GCM und ChaCha20-Poly1305.
  • Manipulationssicher je Segment.
  • PQC-Envelope (Pro+): per-File-Schlüssel, mit SaQura-PQC-Schlüssel gewrappt → DSGVO-Krypto-Shredding.
  • Tiering: Streaming ab Standard; PQC-Envelope ab Pro.
using SaQura;

await StreamingExtensions.EncryptFileAsync(
    "input.mp4", "input.mp4.enc", key,
    suite: StreamCipherSuite.AesGcm);

await StreamingExtensions.DecryptFileAsync(
    "input.mp4.enc", "output.mp4", key);

Das SQS1-Format ist byte-identisch über alle SaQura-SDKs. Beispiele: saqura-samples.

Best Practices

Schlüsselverwaltung

  • Schlüssel nie hartkodieren.
  • Schlüssel regelmäßig rotieren.
  • Plattform-Secure-Storage nutzen (Keychain, KeyStore, DPAPI).
  • Private Schlüssel und Lizenzdateien als Geheimnis behandeln.

Fehlerbehandlung

try
{
    var encrypted = await AES.EncryptAsync(plainText, key);
}
catch (LicenseException ex)   // feature not in current tier
{
    Console.WriteLine($"License error: {ex.Message} (Feature: {ex.Feature})");
}
catch (CryptographicException ex)
{
    Console.WriteLine($"Crypto error: {ex.Message}");
}

Troubleshooting

„License validation failed“

Lizenzdatei beschädigt/verändert — frische .lic laden bzw. über unser Kontaktformular melden.

Lizenzfehler / Feature nicht verfügbar

Feature im Tarif nicht freigeschaltet (AES ab Standard, PQC ab Pro). Vor dem Aufruf restriktiver APIs currentTier prüfen.

Fragen? Über unser Kontaktformular — bitte Version, Plattform und kurze Beschreibung. Niemals Schlüssel in Support-Tickets mitsenden.