Get X509Certificate2 : X509Certificates « Security « C# / C Sharp






Get X509Certificate2

        

//-----------------------------------------------------------------------
// <copyright file="CertificateUtil.cs" company="MICROSOFT">
//     Copyright (c) MICROSOFT Technologies.  All rights reserved.
// </copyright>
// <summary>
// Class for handling security certificates
// </summary>
//-----------------------------------------------------------------------
namespace HCLT.Practice.WindowsAzure.Solution.STSAuthentication
{
    using System;
    using System.Security.Cryptography.X509Certificates;

    /// <summary>
    /// A utility class which helps to retrieve an x509 certificate
    /// </summary>
    public class CertificateUtil
    {
        /// <summary>
        /// Method is used to retrieve certificates
        /// </summary>
        /// <param name="name">certificate name</param>
        /// <param name="location">certificate location</param>
        /// <param name="subjectName">certificate subject name</param>
        /// <returns>valid certificate</returns>
        public static X509Certificate2 GetCertificate(StoreName name, StoreLocation location, string subjectName)
        {
            X509Store store = new X509Store(name, location);
            X509Certificate2Collection certificates = null;
            store.Open(OpenFlags.ReadOnly);

            try
            {
                X509Certificate2 result = null;

                // Every time we call store.Certificates property, a new collection will be returned.
                certificates = store.Certificates;

                for (int i = 0; i < certificates.Count; i++)
                {
                    X509Certificate2 cert = certificates[i];

                    if (cert.SubjectName.Name.ToLower() == subjectName.ToLower())
                    {
                        if (result != null)
                        {
                            throw new ApplicationException(string.Format("There are multiple certificates for subject Name {0}", subjectName));
                        }

                        result = new X509Certificate2(cert);
                    }
                }

                if (result == null)
                {
                    throw new ApplicationException(string.Format("No certificate was found for subject Name {0}", subjectName));
                }

                return result;
            }
            finally
            {
                if (certificates != null)
                {
                    for (int i = 0; i < certificates.Count; i++)
                    {
                        X509Certificate2 cert = certificates[i];
                        cert.Reset();
                    }
                }

                store.Close();
            }
        }
    }
}

   
    
    
    
    
    
    
    
  








Related examples in the same category

1.ClientCertificates
2.Gets a certificate from a given store.