====== 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.RSA''((Microsoft Docs: https://learn.microsoft.com/dotnet/api/system.security.cryptography.rsa)) | SignatureExtensions |
| ''System.Security.Cryptography.ECDsa''((Microsoft Docs: https://learn.microsoft.com/dotnet/api/system.security.cryptography.ecdsa)) | SignatureExtensions |
| ''System.Security.Cryptography.Pkcs.SignedCms''((Microsoft Docs: https://learn.microsoft.com/dotnet/api/system.security.cryptography.pkcs.signedcms)) | 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 |
----
===== Format hibridnega podpisa =====
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 =====
* [[.:x509certificates:start|Imenski prostor X509Certificates]]
* [[.:keyexchange|Imenski prostor KeyExchange]]
* [[.:start|Pregled API]]
{{tag>namespace signaturen ml-dsa}}
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//