23.10.2007 12:08:32Как узнать свойство (параметр) сертификата Ответов: 2
Артём
Всем доброго времени суток!
Помогите, пожалуйста, советом. Есть некий сертификат, свойства которого я смог загрузить в класс X509Certificate2.
Вопрос в следующем: как посмотреть значение полей расширения (улучшенный ключ, использование ключа и т.п.), так называемые OID_OTHER.
Заранее всем спасибо!

 
Ответы:
23.10.2007 14:17:30Kirill Sobolev
Они находятся в свойстве Extensions, которое является коллекцией объектов X509Extension.
23.10.2007 15:20:12Артём
Огромное спасибо!!!
Для тех кому может это потребоваться...
try
{
X509Store store = new X509Store("MY", StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);

X509Certificate2Collection collection = (X509Certificate2Collection)store.Certificates;
for (int i = 0; i < collection.Count; i++)
{
foreach (X509Extension extension in collection[i].Extensions)
{
Console.WriteLine(extension.Oid.FriendlyName + "(" + extension.Oid.Value + ")");

if (extension.Oid.FriendlyName == "Использование ключа")
{
X509KeyUsageExtension ext = (X509KeyUsageExtension)extension;
Console.WriteLine(ext.KeyUsages);
}

if (extension.Oid.FriendlyName == "Основные ограничения")
{
X509BasicConstraintsExtension ext = (X509BasicConstraintsExtension)extension;
Console.WriteLine(ext.CertificateAuthority);
Console.WriteLine(ext.HasPathLengthConstraint);
Console.WriteLine(ext.PathLengthConstraint);
}

if (extension.Oid.FriendlyName == "Идентификатор ключа субъекта")
{
X509SubjectKeyIdentifierExtension ext = (X509SubjectKeyIdentifierExtension)extension;
Console.WriteLine(ext.SubjectKeyIdentifier);
}

if (extension.Oid.FriendlyName == "Улучшенный ключ")
{
X509EnhancedKeyUsageExtension ext = (X509EnhancedKeyUsageExtension)extension;
OidCollection oids = ext.EnhancedKeyUsages;
foreach (Oid oid in oids)
{

Console.WriteLine(oid.FriendlyName + "(" + oid.Value + ")");
}
}
}
}
store.Close();
}
catch (CryptographicException)
{
Console.WriteLine("Information could not be written out for this certificate.");
}