Digitalni potpisi

Kompaktni primjeri za potpise. → Detalji: Scenariji potpisa


RSA hibridni potpis

using var rsa = RSA.Create(4096);
byte[] data = Encoding.UTF8.GetBytes("Podaci za potpisivanje");
 
// Hibridni potpis (RSA + ML-DSA)
byte[] signature = rsa.SignData(data,
    HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1,
    CryptoMode.Hybrid);
 
// Verifikacija
bool valid = rsa.VerifyData(data, signature,
    HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1,
    CryptoMode.Hybrid);

ECDSA hibridni potpis

using var ecdsa = ECDsa.Create(ECCurve.NamedCurves.nistP384);
byte[] data = Encoding.UTF8.GetBytes("Podaci za potpisivanje");
 
byte[] signature = ecdsa.SignData(data,
    HashAlgorithmName.SHA384, CryptoMode.Hybrid);
 
bool valid = ecdsa.VerifyData(data, signature,
    HashAlgorithmName.SHA384, CryptoMode.Hybrid);

CMS/PKCS#7 potpis

var cert = new X509Certificate2("signing.pfx", "lozinka");
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();

Detalji: Potpisivanje dokumenta


Verifikacija potpisa

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();
}

Detalji: Verifikacija potpisa


Tipovi potpisa

Tip Upotreba API
RSA Hybrid Legacy-kompatibilnost RsaExtensions
ECDSA Hybrid Moderno, kompaktno ECDsaExtensions
ML-DSA Pure PQ-only MlDsaSigner
CMS/PKCS#7 Dokumenti SignedCmsExtensions

« ← Kratka referenca | → Scenariji potpisa (Detalji) »


Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional

Zuletzt geändert: 30.01.2026. u 08:48