Inhaltsverzeichnis

X509ChainExtensions

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.

Metode

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

Build s CryptoMode

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

Ponašanje validacije prema načinu

Način Klasični potpis PQ potpis
Classic Provjeren Ignoriran
Hybrid Provjeren Provjeren (ako postoji)
PostQuantum Provjeren (struktura) Obavezan

Build s Custom Trust Store

// 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);

BuildWithRevocationCheck

using var chain = new X509Chain();
bool isValid = chain.BuildWithRevocationCheck(
    certificate,
    customTrustStore,
    X509RevocationMode.Online,  // ili Offline
    CryptoMode.Hybrid);

BuildWithOfflineCrl

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

IsFullyPqProtected

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

GetValidationReport

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

ChainValidationReport

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

ChainElementInfo

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

Vidi također


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