Re: хранилище сертификатов
От: tyger Россия  
Дата: 18.05.07 03:05
Оценка:
Здравствуйте, Kurdac, Вы писали:

K>Кто-нибудь подскажите, как можно перебрать все сертификаты в хранилище «MY».

K>Я знаю как это можно сделать, используя CryptoAPI, но не знаю как это можно сделать на .net.

Попробуй так:

X509Store store = new X509Store("MY", StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
X509Certificate2Collection collection = (X509Certificate2Collection)store.Certificates;

X509Certificate2Collection fcollection = (X509Certificate2Collection)collection.Find(X509FindType.FindByTimeValid, DateTime.Now, false);
X509Certificate2Collection scollection = X509Certificate2UI.SelectFromCollection(fcollection, "Test Certificate Select", "Select a certificate from the following list to get information on that certificate", X509SelectionFlag.MultiSelection);
   Console.WriteLine("Number of certificates: {0}{1}", scollection.Count, Environment.NewLine);
   foreach (X509Certificate2 x509 in scollection)
   {
      byte[] rawdata = x509.RawData;
      Console.WriteLine("Content Type: {0}{1}", x509.SubjectName, Environment.NewLine);
      Console.WriteLine("Content Type: {0}{1}", X509Certificate2.GetCertContentType(rawdata), Environment.NewLine);
      Console.WriteLine("Friendly Name: {0}{1}", x509.FriendlyName, Environment.NewLine);
      Console.WriteLine("Certificate Verified?: {0}{1}", x509.Verify(), Environment.NewLine);
      Console.WriteLine("Simple Name: {0}{1}", x509.GetNameInfo(X509NameType.SimpleName, true), Environment.NewLine);
      Console.WriteLine("Signature Algorithm: {0}{1}", x509.SignatureAlgorithm.FriendlyName, Environment.NewLine);
      Console.WriteLine("Private Key: {0}{1}", x509.PrivateKey.ToXmlString(false), Environment.NewLine);
      Console.WriteLine("Public Key: {0}{1}", x509.PublicKey.Key.ToXmlString(false), Environment.NewLine);
      Console.WriteLine("Certificate Archived?: {0}{1}", x509.Archived, Environment.NewLine);
      Console.WriteLine("Length of Raw Data: {0}{1}", x509.RawData.Length, Environment.NewLine);
      //X509Certificate2UI.DisplayCertificate(x509);
      x509.Reset();
   }
store.Close();
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.