Imenski prostor Signatures
Imenski prostor: WvdS.System.Security.Cryptography.Signatures
Vsebuje razširitvene metode za digitalne podpise s podporo PQ.
Razredi
| 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 |
Razširjeni tipi
| .NET-tip | Razred razširitve |
System.Security.Cryptography.RSA1) | SignatureExtensions |
System.Security.Cryptography.ECDsa2) | SignatureExtensions |
System.Security.Cryptography.Pkcs.SignedCms3) | SignedDataExtensions |
Načini podpisovanja
| 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 |
Primer
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);
Metode SignatureExtensions
Razširitve RSA
| 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 |
Razširitve ECDsa
| Metoda | Parametri | Vrnitev |
SignData(data, hash, mode) | byte[], HashAlgorithmName, CryptoMode? | byte[] |
VerifyData(data, sig, hash, mode) | byte[], byte[], HashAlgorithmName, CryptoMode? | bool |
Samostojni ML-DSA
| Metoda | Parametri | Vrnitev |
GenerateMlDsaKeyPair() | - | (byte[] PublicKey, byte[] PrivateKey) |
SignMlDsa(data, privateKey) | byte[], byte[] | byte[] |
VerifyMlDsa(data, sig, publicKey) | byte[], byte[], byte[] | bool |
Glejte tudi
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional