Esempio n. 1
0
        public static X509Certificate GetCertificateFromStore(StoreName storeName, StoreLocation storeLocation, CertificateInfo certificateInfo)
        {
            X509Store store = new X509Store(storeName, storeLocation);

            store.Open(OpenFlags.ReadOnly);

            X509Certificate2Collection collection = store.Certificates;

            foreach (KeyValuePair <X509FindType, string> search in
                     certificateInfo.Searches.Where(s => !string.IsNullOrWhiteSpace(s.Value)))
            {
                collection = collection.Find(search.Key, search.Value, true);
            }

            X509Certificate[] certificates = collection.OfType <X509Certificate>().ToArray();

            if (certificates.Length > 1)
            {
                throw new MultipleCertificatesException(certificateInfo, certificates);
            }

            if (certificates.Length == 0)
            {
                throw new CertificateNotFoundException(certificateInfo);
            }

            X509Certificate certificate = certificates.First();

            return(certificate);
        }
Esempio n. 2
0
 public MultipleCertificatesException(CertificateInfo certificateInfo, X509Certificate[] certificates)
     : base(string.Format("Multiple certificates were found with the supplied CertificateInfo parameters:\r\n{0}\r\nCertificates:\r\n{1}", GetCertificateInfo(certificateInfo), GetCertificateSubjects(certificates)))
 {
     Certificates    = certificates;
     CertificateInfo = certificateInfo;
 }