Namespace: WvdS.System.Security.Cryptography.X509Certificates
Drop-In Replacement razširitve za X509Chain s post-kvantno validacijo podpisov. Razširja standardno validacijo verige s preverjanjem PQ-podpisov v vseh treh kriptografskih načinih.
| Metoda | Opis |
|---|---|
Build(certificate, mode) | Zgradi in validira verigo certifikatov s CryptoMode |
Build(certificate, customTrustStore, mode) | Validacija verige s prilagojenim Trust Store |
Build(certificate, trustStore, mode) | Validacija verige s PqTrustStore |
BuildWithRevocationCheck(…) | Gradnja verige s CRL/OCSP preverjanjem |
BuildWithOfflineCrl(…) | Gradnja verige z offline CRL-podatki |
IsFullyPqProtected() | Preveri ali je celotna veriga PQ-zaščitena |
GetChainCryptoModes() | Vrne CryptoModes vseh členov verige |
GetValidationReport() | Ustvari podrobno poročilo o validaciji |
using var chain = new X509Chain(); var cert = new X509Certificate2("certificate.pfx"); // Z eksplicitnim CryptoMode bool isValid = chain.Build(cert, CryptoMode.Hybrid); // S privzetim načinom iz CryptoConfig bool isValid2 = chain.Build(cert, null);
| Način | Klasični podpis | PQ-podpis |
|---|---|---|
| Classic | Preverjen | Ignoriran |
| Hybrid | Preverjen | Preverjen (če je prisoten) |
| PostQuantum | Preverjen (struktura) | Obvezen |
// Z 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, // ali Offline CryptoMode.Hybrid);
Za air-gapped okolja ali ko prenos CRL ni mozzen:
// Nalaganje CRL-jev 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("Celotna veriga je PQ-zaščitena"); } else { // Kateri certifikati niso PQ-zaščiteni? var modes = chain.GetChainCryptoModes(); for (int i = 0; i < modes.Length; i++) { if (modes[i] == CryptoMode.Classic) { Console.WriteLine($"Element {i} nima PQ-zaščite"); } } }
Ustvari podrobno poročilo o validaciji verige:
using var chain = new X509Chain(); chain.Build(cert, CryptoMode.Hybrid); var report = chain.GetValidationReport(); Console.WriteLine(report.ToString()); // Posamezne lastnosti: Console.WriteLine($"Veljavno: {report.IsValid}"); Console.WriteLine($"Dolžina verige: {report.ChainLength}"); Console.WriteLine($"Popolnoma PQ-zaščiteno: {report.IsFullyPqProtected}"); // Podrobnosti na element: foreach (var element in report.Elements) { Console.WriteLine($" {element.Subject}"); Console.WriteLine($" Način: {element.CryptoMode}"); Console.WriteLine($" Ima PQ-ključe: {element.HasPqKeys}"); }
| Lastnost | Tip | Opis |
|---|---|---|
IsValid | bool | Veriga je veljavna |
ChainLength | int | Število členov verige |
IsFullyPqProtected | bool | Vsi certifikati PQ-zaščiteni |
OverallStatus | X509ChainStatusFlags[] | Skupni status |
Elements | ChainElementInfo[] | Podrobnosti na člen |
| Lastnost | Tip | Opis |
|---|---|---|
Subject | string | Subject certifikata |
Issuer | string | Izdajatelj |
Thumbprint | string | SHA-1 prstni odtis |
NotBefore | DateTime | Veljavno od |
NotAfter | DateTime | Veljavno do |
CryptoMode | CryptoMode | Prepoznan način |
HasPqKeys | bool | PQ-ključi v shrambi |
StatusFlags | X509ChainStatusFlags[] | Statusne zastavice |
StatusMessages | string[] | Statusna sporočila |
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional