Namespace: WvdS.System.Security.Cryptography.Signatures
Enthält Extension Methods für digitale Signaturen mit PQ-Unterstützung.
| 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 |
| .NET-Typ | Extension-Klasse |
|---|---|
System.Security.Cryptography.RSA1) | SignatureExtensions |
System.Security.Cryptography.ECDsa2) | SignatureExtensions |
System.Security.Cryptography.Pkcs.SignedCms3) | SignedDataExtensions |
| Modus | Klassisch | ML-DSA | Verwendung |
| Classic | ✓ | - | Standard .NET Verhalten |
| Hybrid | ✓ | ✓ | Maximale Sicherheit |
| PostQuantum | - | ✓ | Rein post-quantum |
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 |
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);
| 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 |
| Methode | Parameter | Rückgabe |
|---|---|---|
SignData(data, hash, mode) | byte[], HashAlgorithmName, CryptoMode? | byte[] |
VerifyData(data, sig, hash, mode) | byte[], byte[], HashAlgorithmName, CryptoMode? | bool |
| Methode | Parameter | Rückgabe |
|---|---|---|
GenerateMlDsaKeyPair() | - | (byte[] PublicKey, byte[] PrivateKey) |
SignMlDsa(data, privateKey) | byte[], byte[] | byte[] |
VerifyMlDsa(data, sig, publicKey) | byte[], byte[], byte[] | bool |
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional