Windows apps
Collapse the table of content
Expand the table of content
Information
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

X509Certificate2Collection Class

Represents a collection of X509Certificate2 objects. This class cannot be inherited.

Namespace: System.Security.Cryptography.X509Certificates
Assembly: System (in system.dll)

public class X509Certificate2Collection : X509CertificateCollection
public class X509Certificate2Collection extends X509CertificateCollection
public class X509Certificate2Collection extends X509CertificateCollection
Not applicable.

When an X509Certificate2 store is opened, the result is represented by an X509Certificate2Collection object. If you are familiar with the unmanaged Cryptographic API constructs, you can think of an X509Certificate2Collection as a memory store of X509Certificate2 objects.

The following code example opens the current user's personal certificate store, selects only valid certificates, allows the user to select a certificate, and then writes certificate and certificate chain information to the console. The output depends on the certificate the user selects.

using System;
using System.Security.Cryptography;
using System.Security.Permissions;
using System.IO;
using System.Security.Cryptography.X509Certificates;

class CertSelect
{
	static void Main()
	{
		try
		{
			X509Store store = new X509Store("MY",StoreLocation.CurrentUser);
			store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
			X509Certificate2Collection collection = (X509Certificate2Collection)store.Certificates;
			X509Certificate2Collection fcollection = (X509Certificate2Collection)collection.Find(X509FindType.FindByTimeValid,DateTime.Now,false);
			X509Certificate2Collection scollection = X509Certificate2UI.SelectFromCollection(fcollection, "Test Certificate Select","Select a certificate from the following list to get information on that certificate",X509SelectionFlag.MultiSelection);
			Console.WriteLine("Number of certificates: {0}{1}",scollection.Count,Environment.NewLine);
				foreach (X509Certificate2 x509 in scollection)
				{
					byte[] rawdata = x509.RawData;
					Console.WriteLine("Content Type: {0}{1}",X509Certificate2.GetCertContentType(rawdata),Environment.NewLine);
					Console.WriteLine("Friendly Name: {0}{1}",x509.FriendlyName,Environment.NewLine);
					Console.WriteLine("Certificate Verified?: {0}{1}",x509.Verify(),Environment.NewLine);
					Console.WriteLine("Simple Name: {0}{1}",x509.GetNameInfo(X509NameType.SimpleName,true),Environment.NewLine);
					Console.WriteLine("Signature Algorithm: {0}{1}",x509.SignatureAlgorithm.FriendlyName,Environment.NewLine);
					Console.WriteLine("Private Key: {0}{1}",x509.PrivateKey.ToXmlString(false),Environment.NewLine);
					Console.WriteLine("Public Key: {0}{1}",x509.PublicKey.Key.ToXmlString(false),Environment.NewLine);
					Console.WriteLine("Certificate Archived?: {0}{1}",x509.Archived,Environment.NewLine);
					Console.WriteLine("Length of Raw Data: {0}{1}",x509.RawData.Length,Environment.NewLine);
					X509Certificate2UI.DisplayCertificate(x509);
					x509.Reset();
				}
			store.Close();
			}
		catch (CryptographicException)
			{
				   Console.WriteLine("Information could not be written out for this certificate.");
			}
		
	}
}

import System.*;
import System.Security.Cryptography.*;
import System.Security.Permissions.*;
import System.IO.*;
import System.Security.Cryptography.X509Certificates.*;

public class CertSelect
{
	/** @attribute SecurityPermission(SecurityAction.LinkDemand,
		Unrestricted = true) */
    public static void main(String[] args)
    {
        try {
            X509Store store = new X509Store("MY", StoreLocation.CurrentUser);
            store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);

            X509Certificate2Collection collection =
                (X509Certificate2Collection)store.get_Certificates();
            X509Certificate2Collection fCollection =
                (X509Certificate2Collection)collection.Find(
                X509FindType.FindByTimeValid, DateTime.get_Now(), false);
            X509Certificate2Collection sCollection = X509Certificate2UI.SelectFromCollection(fCollection, "Test Certificate Select","Select a certificate from the following list to get information on that certificate",X509SelectionFlag.MultiSelection);

            Console.WriteLine("Number of certificates: {0}{1}",
                (Int32)sCollection.get_Count(), Environment.get_NewLine());
            for (int iCtr = 0; iCtr < sCollection.get_Count(); iCtr++) {
                X509Certificate2 x509 =
                    (X509Certificate2)(sCollection.get_Item(iCtr));
                ubyte rawData[] = x509.get_RawData();

                Console.WriteLine("Content Type: {0}{1}",
                    X509Certificate2.GetCertContentType(rawData),
                    Environment.get_NewLine());
                Console.WriteLine("Friendly Name: {0}{1}",
                    x509.get_FriendlyName(), Environment.get_NewLine());
                Console.WriteLine("Certificate Verified?: {0}{1}",
                    (System.Boolean)x509.Verify(), Environment.get_NewLine());
                Console.WriteLine("Simple Name: {0}{1}",
                    x509.GetNameInfo(X509NameType.SimpleName, true),
                    Environment.get_NewLine());
                Console.WriteLine("Signature Algorithm: {0}{1}",
                    x509.get_SignatureAlgorithm().get_FriendlyName(),
                    Environment.get_NewLine());
                Console.WriteLine("Private Key: {0}{1}",
                    x509.get_PrivateKey().ToXmlString(false),
                    Environment.get_NewLine());
                Console.WriteLine("Public Key: {0}{1}",
                    x509.get_PublicKey().get_Key().ToXmlString(false),
                    Environment.get_NewLine());
                Console.WriteLine("Certificate Archived?: {0}{1}",
                    (System.Boolean)x509.get_Archived(),
                    Environment.get_NewLine());
                Console.WriteLine("Length of Raw Data: {0}{1}",
                    (Int32)x509.get_RawData().length,
                    Environment.get_NewLine());
                X509Certificate2UI.DisplayCertificate(x509);
                x509.Reset();
            }
            store.Close();
        }
        catch (CryptographicException exp) {
            Console.WriteLine("Information could not be written out for this "
                + "certificate.");
        }
    } //main
} //CertSelect

System.Object
   System.Collections.CollectionBase
     System.Security.Cryptography.X509Certificates.X509CertificateCollection
      System.Security.Cryptography.X509Certificates.X509Certificate2Collection

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Windows 98, Windows Server 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

.NET Framework

Supported in: 3.0, 2.0

Community Additions

Show:
© 2017 Microsoft