====== 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//