====== WvdS.System.Security.Cryptography.Signatures Namespace ======
Contains extension methods for digital signatures with PQ support.
----
===== Classes =====
^ Class ^ Description ^
| [[.:signatureextensions|SignatureExtensions]] | Extensions for RSA, ECDsa, and X509Certificate2 signatures |
| [[.:signeddataextensions|SignedDataExtensions]] | Extensions for CMS/PKCS#7 SignedCms |
| [[.:hybridsignatureinfo|HybridSignatureInfo]] | Container for hybrid signature data |
----
===== Static Classes =====
^ Class ^ Description ^
| [[.:pqsignedcmshelper|PqSignedCmsHelper]] | High-level API for PQ-capable CMS operations |
----
===== Extended Types =====
^ .NET Type ^ Extension Class ^
| ''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 |
----
===== Hybrid Signature Format =====
In Hybrid mode, two signatures are created:
+------------------------------------------+
| Hybrid Signature |
+------------------------------------------+
| [4 Bytes] Length of classic signature |
| [n Bytes] Classic signature (RSA/ECDSA) |
| [m Bytes] PQ signature (ML-DSA) |
+------------------------------------------+
----
===== Example =====
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("Data to sign");
// Create hybrid signature
byte[] signature = rsa.SignData(
data,
HashAlgorithmName.SHA256,
RSASignaturePadding.Pkcs1);
// Verify
bool valid = rsa.VerifyData(
data,
signature,
HashAlgorithmName.SHA256,
RSASignaturePadding.Pkcs1);
----
===== See Also =====
* [[..:x509certificates:start|X509Certificates Namespace]]
* [[..:keyexchange:start|KeyExchange Namespace]]
* [[en:int:pqcrypt:api:start|API Overview]]
{{tag>namespace signatures}}
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//