хранилище сертификатов
От: Kurdac Казахстан  
Дата: 17.05.07 17:40
Оценка:
Привет всем.
Кто-нибудь подскажите, как можно перебрать все сертификаты в хранилище «MY».
Я знаю как это можно сделать, используя CryptoAPI, но не знаю как это можно сделать на .net.

Пишу на Borland Developer studio 2006.
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();
Re[2]: хранилище сертификатов
От: Аноним  
Дата: 20.05.07 07:08
Оценка:
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();

Спасибо за помощь.
А Вы не знаете, я могу это написать на Borland Developer Studio 2006, там как бы есть C#, или это не то, нужно использовать Microsoft?
Re[3]: хранилище сертификатов
От: tyger Россия  
Дата: 21.05.07 02:44
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Спасибо за помощь.

Оценка в этом случае еще никому не помешала

А>А Вы не знаете, я могу это написать на Borland Developer Studio 2006, там как бы есть C#, или это не то, нужно использовать Microsoft?


Если Borland Developer Studio 2006 это средство для разработки для .NET и там поддерживается .NET Framework 2 и его FCL (проще говоря таже система типов) то почему нет? Очень даже можно и на Borland Developer Studio 2006.
Re[4]: хранилище сертификатов
От: Добрый Берт  
Дата: 21.05.07 13:54
Оценка:
А>>А Вы не знаете, я могу это написать на Borland Developer Studio 2006, там как бы есть C#, или это не то, нужно использовать Microsoft?

T>Если Borland Developer Studio 2006 это средство для разработки для .NET и там поддерживается .NET Framework 2 и его FCL (проще говоря таже система типов) то почему нет? Очень даже можно и на Borland Developer Studio 2006.


.NET 2.0 там не поддерживается на сколько помню. Только 1.1
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.