начало положено
// https://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509certificate2collection.find(v=vs.110).aspx
X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
X509Certificate2Collection collection = (X509Certificate2Collection)store.Certificates;
X509Certificate2Collection fcollection = (X509Certificate2Collection)collection.Find(X509FindType.FindByTimeValid, DateTime.Now, false);
как его проверить на валидность?
проверяю так, но глючит
валидные сертификаты показывает с текстом несоответствия
foreach (X509Certificate2 cert in fcollection)
{
X509Chain X509Chain = new X509Chain();
X509Chain.Build(cert);
// информация о цепочке.
X509Chain.ChainPolicy.RevocationFlag = X509RevocationFlag.ExcludeRoot;
X509Chain.ChainPolicy.RevocationMode = X509RevocationMode.Online;
X509Chain.ChainPolicy.VerificationFlags = X509VerificationFlags.NoFlag;
if (X509Chain.ChainStatus.Length > 0)
{ // тут в статусе может быть прописана только всякая фигня, поэтому считаем его невалидным
certFound = false;
}
// debug certFound = false; // debug
if (certFound) {
return cert;
}