Inhaltsverzeichnis
Firme digitali
Esempi compatti per le firme. → Dettagli: Scenari firma
Firma ibrida RSA
using var rsa = RSA.Create(4096); byte[] data = Encoding.UTF8.GetBytes("Dati da firmare"); // Firma ibrida (RSA + ML-DSA) byte[] signature = rsa.SignData(data, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1, CryptoMode.Hybrid); // Verificare bool valid = rsa.VerifyData(data, signature, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1, CryptoMode.Hybrid);
Firma ibrida ECDSA
using var ecdsa = ECDsa.Create(ECCurve.NamedCurves.nistP384); byte[] data = Encoding.UTF8.GetBytes("Dati da firmare"); byte[] signature = ecdsa.SignData(data, HashAlgorithmName.SHA384, CryptoMode.Hybrid); bool valid = ecdsa.VerifyData(data, signature, HashAlgorithmName.SHA384, CryptoMode.Hybrid);
Firma CMS/PKCS#7
var cert = new X509Certificate2("signing.pfx", "password"); byte[] content = File.ReadAllBytes("document.pdf"); var contentInfo = new ContentInfo(content); var signedCms = new SignedCms(contentInfo, detached: true); var signer = new CmsSigner(cert); signer.DigestAlgorithm = new Oid("2.16.840.1.101.3.4.2.1"); // SHA-256 signedCms.ComputeSignature(signer, CryptoMode.Hybrid); byte[] signature = signedCms.Encode();
→ Dettagli: Firmare documento
Verificare firma
var signedCms = new SignedCms(); signedCms.Decode(signatureBytes); signedCms.CheckSignature(verifySignatureOnly: true); foreach (var signerInfo in signedCms.SignerInfos) { var cert = signerInfo.Certificate; bool hasPq = cert.HasPqSignature(); }
→ Dettagli: Verificare firma
Tipi di firma
| Tipo | Utilizzo | API |
|---|---|---|
| RSA Hybrid | Compatibilita legacy | RsaExtensions |
| ECDSA Hybrid | Moderno, compatto | ECDsaExtensions |
| ML-DSA Pure | Solo PQ | MlDsaSigner |
| CMS/PKCS#7 | Documenti | SignedCmsExtensions |
« ← Riferimento rapido | → Scenari firma (Dettagli) »
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional
Zuletzt geändert: il 30/01/2026 alle 08:58