Namespace: WvdS.System.Security.Cryptography.X509Certificates
Drop-In Replacement proširenja za X509Chain s Post-Quantum validacijom potpisa. Proširuje standardnu validaciju lanca s PQ provjerom potpisa u sva tri kripto načina.
| Metoda | Opis |
|---|---|
Build(certificate, mode) | Gradi i validira lanac certifikata s CryptoMode |
Build(certificate, customTrustStore, mode) | Validacija lanca s prilagođenim Trust Store |
Build(certificate, trustStore, mode) | Validacija lanca s PqTrustStore |
BuildWithRevocationCheck(…) | Gradnja lanca s CRL/OCSP provjerom |
BuildWithOfflineCrl(…) | Gradnja lanca s offline CRL podacima |
IsFullyPqProtected() | Provjerava je li cijeli lanac PQ-zaštićen |
GetChainCryptoModes() | Vraća CryptoModes svih članaka lanca |
GetValidationReport() | Stvara detaljno izvješće o validaciji |
using var chain = new X509Chain(); var cert = new X509Certificate2("certificate.pfx"); // S eksplicitnim CryptoMode bool isValid = chain.Build(cert, CryptoMode.Hybrid); // S Default-Mode iz CryptoConfig bool isValid2 = chain.Build(cert, null);
| Način | Klasični potpis | PQ potpis |
|---|---|---|
| Classic | Provjeren | Ignoriran |
| Hybrid | Provjeren | Provjeren (ako postoji) |
| PostQuantum | Provjeren (struktura) | Obavezan |
// S X509Certificate2Collection var trustAnchors = new X509Certificate2Collection(); trustAnchors.Add(rootCa); using var chain = new X509Chain(); bool isValid = chain.Build(cert, trustAnchors, CryptoMode.Hybrid); // S PqTrustStore var trustStore = PqTrustStore.LoadFromPem("truststore.pem"); bool isValid2 = chain.Build(cert, trustStore, CryptoMode.Hybrid);
using var chain = new X509Chain(); bool isValid = chain.BuildWithRevocationCheck( certificate, customTrustStore, X509RevocationMode.Online, // ili Offline CryptoMode.Hybrid);
Za Air-Gapped okruženja ili kada preuzimanje CRL-a nije moguće:
// Učitavanje CRL-ova var crlData = new List<byte[]> { File.ReadAllBytes("root-ca.crl"), File.ReadAllBytes("intermediate-ca.crl") }; using var chain = new X509Chain(); bool isValid = chain.BuildWithOfflineCrl( certificate, customTrustStore, crlData, CryptoMode.Hybrid);
using var chain = new X509Chain(); chain.Build(cert, CryptoMode.Hybrid); if (chain.IsFullyPqProtected()) { Console.WriteLine("Cijeli lanac je PQ-zaštićen"); } else { // Koji certifikati nisu PQ-zaštićeni? var modes = chain.GetChainCryptoModes(); for (int i = 0; i < modes.Length; i++) { if (modes[i] == CryptoMode.Classic) { Console.WriteLine($"Element {i} nema PQ zaštitu"); } } }
Stvara detaljno izvješće o validaciji lanca:
using var chain = new X509Chain(); chain.Build(cert, CryptoMode.Hybrid); var report = chain.GetValidationReport(); Console.WriteLine(report.ToString()); // Pojedinačna svojstva: Console.WriteLine($"Valjan: {report.IsValid}"); Console.WriteLine($"Duljina lanca: {report.ChainLength}"); Console.WriteLine($"Potpuno PQ-zaštićen: {report.IsFullyPqProtected}"); // Detalji po elementu: foreach (var element in report.Elements) { Console.WriteLine($" {element.Subject}"); Console.WriteLine($" Način: {element.CryptoMode}"); Console.WriteLine($" Ima PQ ključeve: {element.HasPqKeys}"); }
| Svojstvo | Tip | Opis |
|---|---|---|
IsValid | bool | Lanac je valjan |
ChainLength | int | Broj članaka lanca |
IsFullyPqProtected | bool | Svi certifikati su PQ-zaštićeni |
OverallStatus | X509ChainStatusFlags[] | Ukupni status |
Elements | ChainElementInfo[] | Detalji po članku |
| Svojstvo | Tip | Opis |
|---|---|---|
Subject | string | Subject certifikata |
Issuer | string | Izdavatelj |
Thumbprint | string | SHA-1 otisak |
NotBefore | DateTime | Valjan od |
NotAfter | DateTime | Valjan do |
CryptoMode | CryptoMode | Prepoznati način |
HasPqKeys | bool | PQ ključevi u Store |
StatusFlags | X509ChainStatusFlags[] | Status zastavice |
StatusMessages | string[] | Status poruke |
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional