Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
using X509NameType Enumeration you can extract all the fields from a x509 certificate. this enum is new for .net 2.0
here is the code:
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.");
more info at: https://msdn2.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509nametype(VS.80).aspx