X509Chain.ChainElements Egenskap
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Hämtar en samling X509ChainElement objekt.
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
Egenskapsvärde
Ett X509ChainElementCollection objekt.
Exempel
Följande kodexempel visar ordningen på kedjeelement:
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}");
}
I följande kodexempel öppnas den aktuella användarens personliga certifikatarkiv, där du kan välja ett certifikat och sedan skriva information om certifikat- och certifikatkedjan till konsolen. Utdata beror på vilket certifikat du väljer.
//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()
Kommentarer
Varje X509ChainElement objekt är en representation av ett element i kedjan som skapades under ett anrop till Build metoden.
Ett kedjeelement består av ett X509Certificate2 objekt, en X509ChainStatus struktur och en extra informationssträng.
Samlingen ChainElements sorteras från slutentitetscertifikatet (lövcertifikatet) vid index 0, via mellanliggande certifikat, till förtroendeankare (rotcertifikat) vid det slutliga indexet. Den här ordningen är konsekvent på alla plattformar.