Проверка на наличие присутствия сертификата в системе
Как проверить существует ли сертификат с заданным именем во всех каталогах хранилища Windows, я написал вот такой код, но он не работает:
public static string AntiBadSertificates()
{
var x509store = new X509Store(StoreName.CertificateAuthority, StoreLocation.CurrentUser);
x509store.Open(OpenFlags.OpenExistingOnly);
foreach (X509Certificate certificate in x509store.Certificates)
{
return certificate.ToString();
}
return string.Empty;
}
public static void Main()
{
if (Guard.AntiBadSertificates().Contains("Charles") || Guard.AntiBadSertificates().Contains("fiddler"))
{
Environment.Exit(0);
}
}
Сертификат присутствует в системе,но метод его не видит.
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
Ну потому что вы возвращаете первый найденный сертификат в первой итерации цикла, и на этом история заканчивается.
Попробуйте так
public static IEnumerable<string> GetCertificates()
{
var x509store = new X509Store(StoreName.CertificateAuthority, StoreLocation.CurrentUser);
x509store.Open(OpenFlags.OpenExistingOnly);
foreach (X509Certificate certificate in x509store.Certificates)
{
yield return certificate.ToString();
}
}
static void Main(string[] args)
{
if (Guard.GetCertificates().Any(x => x.Contains("Charles") || x.Contains("fiddler")))
{
Environment.Exit(0);
}
}