Imenski prostor: WvdS.System.Security.Cryptography.Signatures
Vsebuje razširitvene metode za digitalne podpise s podporo PQ.
| Razred | Opis |
|---|---|
| SignatureExtensions | Razširitve za podpise RSA, ECDsa in X509Certificate2 |
| SignedDataExtensions | Razširitve za CMS/PKCS#7 SignedCms |
| HybridSignatureInfo | Vsebnik za podatke hibridnih podpisov |
| PqSignedCmsHelper | Visokonivojski API za operacije CMS, zmožne PQ |
| .NET-tip | Razred razširitve |
|---|---|
System.Security.Cryptography.RSA1) | SignatureExtensions |
System.Security.Cryptography.ECDsa2) | SignatureExtensions |
System.Security.Cryptography.Pkcs.SignedCms3) | SignedDataExtensions |
| Način | Klasično | ML-DSA | Uporaba |
| Classic | Da | - | Standardno obnašanje .NET |
| Hybrid | Da | Da | Največja varnost |
| PostQuantum | - | Da | Čisto post-kvantno |
V hibridnem načinu sta ustvarjena dva podpisa:
+------------------------------------------+ | Hibridni podpis | +------------------------------------------+ | [4 bajti] Dolžina klasičnega podpisa | | [n bajtov] Klasični podpis (RSA/ECDSA) | | [m bajtov] PQ-podpis (ML-DSA) | +------------------------------------------+
| Komponenta | Tipična velikost |
|---|---|
| Podpis RSA-2048 | 256 bajtov |
| Podpis ECDSA P-256 | ~70 bajtov |
| Podpis ML-DSA-65 | 3.293 bajtov |
| Hibrid RSA | ~3.553 bajtov |
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("Podatki za podpis"); // Ustvari hibridni podpis byte[] signature = rsa.SignData( data, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1); // Preveri bool valid = rsa.VerifyData( data, signature, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
| Metoda | Parametri | Vrnitev |
|---|---|---|
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 |
| Metoda | Parametri | Vrnitev |
|---|---|---|
SignData(data, hash, mode) | byte[], HashAlgorithmName, CryptoMode? | byte[] |
VerifyData(data, sig, hash, mode) | byte[], byte[], HashAlgorithmName, CryptoMode? | bool |
| Metoda | Parametri | Vrnitev |
|---|---|---|
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