Signatures Namespace

Namespace: WvdS.System.Security.Cryptography.Signatures

Enthält Extension Methods für digitale Signaturen mit PQ-Unterstützung.


Klassen

Klasse Beschreibung
SignatureExtensions Extensions für RSA, ECDsa und X509Certificate2 Signaturen
SignedDataExtensions Extensions für CMS/PKCS#7 SignedCms
HybridSignatureInfo Container für hybride Signaturdaten
PqSignedCmsHelper High-Level API für PQ-fähige CMS-Operationen

Erweiterte Typen

.NET-Typ Extension-Klasse
System.Security.Cryptography.RSA1) SignatureExtensions
System.Security.Cryptography.ECDsa2) SignatureExtensions
System.Security.Cryptography.Pkcs.SignedCms3) SignedDataExtensions

Signaturmodi

Modus Klassisch ML-DSA Verwendung
Classic - Standard .NET Verhalten
Hybrid Maximale Sicherheit
PostQuantum - Rein post-quantum

Hybrides Signaturformat

Im Hybrid-Modus werden zwei Signaturen erzeugt:

┌─────────────────────────────────────────┐
│ Hybrid-Signatur                         │
├─────────────────────────────────────────┤
│ [4 Bytes] Länge klassische Signatur     │
│ [n Bytes] Klassische Signatur (RSA/ECDSA)│
│ [m Bytes] PQ-Signatur (ML-DSA)          │
└─────────────────────────────────────────┘
Komponente Typische Größe
RSA-2048 Signatur 256 Bytes
ECDSA P-256 Signatur ~70 Bytes
ML-DSA-65 Signatur 3.293 Bytes
Hybrid RSA ~3.553 Bytes

Beispiel

using WvdS.System.Security.Cryptography;
using WvdS.System.Security.Cryptography.Signatures;
 
CryptoConfig.DefaultMode = CryptoMode.Hybrid;
 
using var rsa = RSA.Create(2048);
byte[] data = Encoding.UTF8.GetBytes("Zu signierende Daten");
 
// Hybride Signatur erstellen
byte[] signature = rsa.SignData(
    data,
    HashAlgorithmName.SHA256,
    RSASignaturePadding.Pkcs1);
 
// Verifizieren
bool valid = rsa.VerifyData(
    data,
    signature,
    HashAlgorithmName.SHA256,
    RSASignaturePadding.Pkcs1);

SignatureExtensions Methoden

RSA Extensions

Methode Parameter Rückgabe
SignData(data, hash, padding, mode) byte[], HashAlgorithmName, RSASignaturePadding, CryptoMode? byte[]
SignData(stream, hash, padding, mode) Stream, HashAlgorithmName, RSASignaturePadding, CryptoMode? byte[]
VerifyData(data, sig, hash, padding, mode) byte[], byte[], HashAlgorithmName, RSASignaturePadding, CryptoMode? bool

ECDsa Extensions

Methode Parameter Rückgabe
SignData(data, hash, mode) byte[], HashAlgorithmName, CryptoMode? byte[]
VerifyData(data, sig, hash, mode) byte[], byte[], HashAlgorithmName, CryptoMode? bool

Standalone ML-DSA

Methode Parameter Rückgabe
GenerateMlDsaKeyPair() - (byte[] PublicKey, byte[] PrivateKey)
SignMlDsa(data, privateKey) byte[], byte[] byte[]
VerifyMlDsa(data, sig, publicKey) byte[], byte[], byte[] bool

Siehe auch


Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional

Zuletzt geändert: den 29.01.2026 um 15:12