Je vyžadována podpora jazyka JavaScript
Některé stránky na tomto webu vyžadují podporu jazyka JavaScript. Váš webový prohlížeč jazyk JavaScript nepodporuje nebo jazyk JavaScript není povolen.
Chcete-li zjistit, zda webový prohlížeč podporuje jazyk JavaScript nebo jazyk JavaScript chcete povolit, přečtěte si nápovědu k vašemu webovému prohlížeči.
CertificateUtil.cs
Download fileToto je zdrojový kód souboru CertificateUtil.cs
Helper class to load and validate X509 Certificates from Windows certificate store.
using System; using System.Collections.Generic; using System.Security.Cryptography.X509Certificates; namespace IMP.Cryptography { internal static class CertificateUtil { #region action methods public static X509Certificate2 GetValidCertificate(StoreName storeName, StoreLocation storeLocation, X509FindType findType, object findValue) { if (findType == X509FindType.FindByThumbprint) { findValue = TrimCertThumbprint((string)findValue); } //Get certificate store var store = new X509Store(storeName, storeLocation); X509Certificate2Collection certificates = null; try { store.Open(OpenFlags.ReadOnly); //Select a certificate from the certificate store certificates = store.Certificates.Find(findType, findValue, true); if (certificates.Count == 1) { if (certificates[0].Verify()) { return new X509Certificate2(certificates[0]); } throw new InvalidOperationException(string.Format("Requested certificate was found, but X.509 chain validation failed.\r\nFind parameters: StoreName = '{0}', StoreLocation = '{1}', FindType = '{2}', FindValue = '{3}'", storeName, storeLocation, findType, findValue)); } else if (certificates.Count == 0) { //Try get invalid certificates foreach (X509Certificate2 certificate in certificates) { certificate.Reset(); } certificates = store.Certificates.Find(findType, findValue, false); if (certificates.Count == 0) { throw new InvalidOperationException(string.Format("Cannot find requested certificate.\r\nFind parameters: StoreName = '{0}', StoreLocation = '{1}', FindType = '{2}', FindValue = '{3}'", storeName, storeLocation, findType, findValue)); } else { throw new InvalidOperationException(string.Format("Cannot find valid requested certificate ({4} invalid certificates was found).\r\nFind parameters: StoreName = '{0}', StoreLocation = '{1}', FindType = '{2}', FindValue = '{3}'", storeName, storeLocation, findType, findValue, certificates.Count)); } } else { throw new InvalidOperationException(string.Format("More than one certificates was found ({4}).\r\nFind parameters: StoreName = '{0}', StoreLocation = '{1}', FindType = '{2}', FindValue = '{3}'", storeName, storeLocation, findType, findValue, certificates.Count)); } } finally { if (certificates != null) { foreach (X509Certificate2 certificate in certificates) { certificate.Reset(); } } store.Close(); } } public static X509Certificate2Collection SelectStoreCertificate(StoreName storeName, StoreLocation storeLocation, string message, string title, X509SelectionFlag X509SelectionFlag = X509SelectionFlag.SingleSelection) { //Get certificate store var store = new X509Store(storeName, storeLocation); store.Open(OpenFlags.ReadOnly); var certCollection = store.Certificates.Find(X509FindType.FindByTimeValid, DateTime.Now, false); var selection = X509Certificate2UI.SelectFromCollection(certCollection, title, message, X509SelectionFlag); store.Close(); if (selection.Count > 0) { return selection; } return null; } public static string TrimCertThumbprint(string certThumbprint) { string thumbprint = certThumbprint.Replace(" ", "").ToUpperInvariant(); if (thumbprint[0] == 8206) { thumbprint = thumbprint.Substring(1); } return thumbprint; } #endregion } }