X509Chain.ChainElements Eigenschap

Definitie

Hiermee haalt u een verzameling X509ChainElement objecten op.

public:
 property System::Security::Cryptography::X509Certificates::X509ChainElementCollection ^ ChainElements { System::Security::Cryptography::X509Certificates::X509ChainElementCollection ^ get(); };
public System.Security.Cryptography.X509Certificates.X509ChainElementCollection ChainElements { get; }
member this.ChainElements : System.Security.Cryptography.X509Certificates.X509ChainElementCollection
Public ReadOnly Property ChainElements As X509ChainElementCollection

Waarde van eigenschap

Een X509ChainElementCollection object.

Voorbeelden

In het volgende codevoorbeeld ziet u de volgorde van ketenelementen:

using var chain = new X509Chain();
chain.Build(certificate);

// chain.ChainElements[0] is the leaf (end-entity) certificate
// chain.ChainElements[^1] is the root (trust anchor) certificate

Console.WriteLine("Certificate chain from leaf to root:");
for (int i = 0; i < chain.ChainElements.Count; i++)
{
    var cert = chain.ChainElements[i].Certificate;
    var role = i == 0 ? "Leaf" : 
               i == chain.ChainElements.Count - 1 ? "Root" : "Intermediate";
    Console.WriteLine($"[{i}] {role}: {cert.Subject}");
}

In het volgende codevoorbeeld wordt het persoonlijke certificaatarchief van de huidige gebruiker geopend, kunt u een certificaat selecteren en vervolgens certificaat- en certificaatketengegevens naar de console schrijven. De uitvoer is afhankelijk van het certificaat dat u selecteert.

    //Output chain element information.
    Console.WriteLine ("Chain Element Information");
    Console.WriteLine ("Number of chain elements: {0}", ch.ChainElements.Count);
    Console.WriteLine ("Chain elements synchronized? {0} {1}", ch.ChainElements.IsSynchronized, Environment.NewLine);

    foreach (X509ChainElement element in ch.ChainElements)
    {
        Console.WriteLine ("Element issuer name: {0}", element.Certificate.Issuer);
        Console.WriteLine ("Element certificate valid until: {0}", element.Certificate.NotAfter);
        Console.WriteLine ("Element certificate is valid: {0}", element.Certificate.Verify ());
        Console.WriteLine ("Element error status length: {0}", element.ChainElementStatus.Length);
        Console.WriteLine ("Element information: {0}", element.Information);
        Console.WriteLine ("Number of element extensions: {0}{1}", element.Certificate.Extensions.Count, Environment.NewLine);

        if (ch.ChainStatus.Length > 1)
        {
            for (int index = 0; index < element.ChainElementStatus.Length; index++)
            {
                Console.WriteLine (element.ChainElementStatus[index].Status);
                Console.WriteLine (element.ChainElementStatus[index].StatusInformation);
            }
        }
    }
    store.Close();
'Output chain element information.
Console.WriteLine("Chain Element Information")
Console.WriteLine("Number of chain elements: {0}", ch.ChainElements.Count)
Console.WriteLine("Chain elements synchronized? {0} {1}", ch.ChainElements.IsSynchronized, Environment.NewLine)

Dim element As X509ChainElement
For Each element In ch.ChainElements
    Console.WriteLine("Element issuer name: {0}", element.Certificate.Issuer)
    Console.WriteLine("Element certificate valid until: {0}", element.Certificate.NotAfter)
    Console.WriteLine("Element certificate is valid: {0}", element.Certificate.Verify())
    Console.WriteLine("Element error status length: {0}", element.ChainElementStatus.Length)
    Console.WriteLine("Element information: {0}", element.Information)
    Console.WriteLine("Number of element extensions: {0}{1}", element.Certificate.Extensions.Count, Environment.NewLine)

    If ch.ChainStatus.Length > 1 Then
        Dim index As Integer
        For index = 0 To element.ChainElementStatus.Length
            Console.WriteLine(element.ChainElementStatus(index).Status)
            Console.WriteLine(element.ChainElementStatus(index).StatusInformation)
        Next index
    End If
Next element
store.Close()

Opmerkingen

Elk X509ChainElement object is een weergave van een element in de keten dat is gebouwd tijdens een aanroep naar de Build methode.

Een ketenelement bestaat uit een X509Certificate2 object, een X509ChainStatus structuur en een extra informatietekenreeks.

De ChainElements verzameling wordt geordend vanaf het eindentiteitscertificaat (leaf) op index 0, via tussenliggende certificaten, naar het vertrouwensanker (basiscertificaat) bij de uiteindelijke index. Deze volgorde is consistent voor alle platforms.

Van toepassing op