X500DistinguishedName Класс

Определение

Представляет различающееся имя сертификата X.509. Этот класс не наследуется.

public ref class X500DistinguishedName sealed : System::Security::Cryptography::AsnEncodedData
public sealed class X500DistinguishedName : System.Security.Cryptography.AsnEncodedData
type X500DistinguishedName = class
    inherit AsnEncodedData
Public NotInheritable Class X500DistinguishedName
Inherits AsnEncodedData
Наследование
X500DistinguishedName

Примеры

Приведенный ниже пример кода показывает, как использовать класс X500DistinguishedName.

#using <System.dll>
#using <system.security.dll>

using namespace System;
using namespace System::Security::Cryptography;
using namespace System::Security::Permissions;
using namespace System::IO;
using namespace System::Security::Cryptography::X509Certificates;
int main()
{
   try
   {
      X509Store ^ store = gcnew X509Store( "MY",StoreLocation::CurrentUser );
      store->Open( static_cast<OpenFlags>(OpenFlags::ReadOnly | OpenFlags::OpenExistingOnly) );
      X509Certificate2Collection ^ collection = dynamic_cast<X509Certificate2Collection^>(store->Certificates);
      X509Certificate2Collection ^ fcollection = dynamic_cast<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 );
      System::Collections::IEnumerator^ myEnum = scollection->GetEnumerator();
      while ( myEnum->MoveNext() )
      {
         X509Certificate2 ^ x509 = safe_cast<X509Certificate2 ^>(myEnum->Current);
         X500DistinguishedName ^ dname = gcnew X500DistinguishedName( x509->SubjectName );
         Console::WriteLine( "X500DistinguishedName: {0}{1}", dname->Name, Environment::NewLine );
         x509->Reset();
      }
      store->Close();
   }
   catch ( CryptographicException^ ) 
   {
      Console::WriteLine( "Information could not be written out for this certificate." );
   }

}
using System;
using System.Security.Cryptography;
using System.Security.Permissions;
using System.IO;
using System.Security.Cryptography.X509Certificates;

class X500Sample
{
    static void Main()
    {
        try
        {
            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)
            {
                X500DistinguishedName dname = new X500DistinguishedName(x509.SubjectName);
                Console.WriteLine("X500DistinguishedName: {0}{1}", dname.Name, Environment.NewLine);
                x509.Reset();
            }
            store.Close();
        }
        catch (CryptographicException)
        {
            Console.WriteLine("Information could not be written out for this certificate.");
        }
    }
}
Imports System.Security.Cryptography
Imports System.Security.Permissions
Imports System.IO
Imports System.Security.Cryptography.X509Certificates



Class X500Sample
   Shared msg As String
   Shared Sub Main()
    
      Try
         Dim store As New X509Store("MY", StoreLocation.CurrentUser)
         store.Open((OpenFlags.ReadOnly Or OpenFlags.OpenExistingOnly))
         Dim collection As X509Certificate2Collection = CType(store.Certificates, X509Certificate2Collection)
         Dim fcollection As X509Certificate2Collection = CType(collection.Find(X509FindType.FindByTimeValid, DateTime.Now, False), X509Certificate2Collection)
         Dim scollection As X509Certificate2Collection = X509Certificate2UI.SelectFromCollection(fcollection, "Test Certificate Select", "Select a certificate from the following list to get information on that certificate", X509SelectionFlag.MultiSelection)
     msg = "Number of certificates: " & scollection.Count & Environment.NewLine
     MsgBox(msg)
         Dim x509 As X509Certificate2
         For Each x509 In  scollection
            Dim dname As New X500DistinguishedName(x509.SubjectName)
        msg = "X500DistinguishedName: " & dname.Name & Environment.NewLine
     MsgBox(msg)
            x509.Reset()
         Next x509
         store.Close()
     Catch e As Exception
            msg = "Error: Information could not be written out for this certificate."
            MsgBox(msg)
      End Try
   End Sub
End Class

Комментарии

Этот класс похож на расширение или SubjectName IssuerName свойство, которое является именем пользователя или сущности, которому выдан сертификат. X.500 — это международный стандарт для распределенных служб каталогов. Различающееся имя использует следующий формат:

[X500:/C=CountryCode/O=Organization/OU=OrganizationUnit/CN=CommonName]

Применяются следующие ограничения длины полей:

Поле Ограничение длины
CountryCode 2 символа
Организация До 64 символов
OrganizationUnit До 32 символов
CommonName До 64 символов

Применяются следующие правила.

  • Значения полей могут быть прописной или нижней буквами.

  • Разделители — это знаки косой черты (/) и должны отображаться перед первым значением и между последующими значениями.

  • За разделителями может следовать пробел.

Ниже приведен пример правильно отформатированного имени: [X500:/ C=US/ O=Microsoft/ OU=WGA/ CN=TedSt]

Конструкторы

X500DistinguishedName(AsnEncodedData)

Инициализирует новый экземпляр класса X500DistinguishedName, используя указанный объект AsnEncodedData.

X500DistinguishedName(Byte[])

Инициализирует новый экземпляр класса X500DistinguishedName с использованием информации из указанного массива байтов.

X500DistinguishedName(ReadOnlySpan<Byte>)

Инициализирует новый экземпляр класса X500DistinguishedName с использованием информации из предоставленных данных.

X500DistinguishedName(String)

Инициализирует новый экземпляр класса X500DistinguishedName с использованием информации из указанного строки.

X500DistinguishedName(String, X500DistinguishedNameFlags)

Инициализирует новый экземпляр класса X500DistinguishedName с использованием указанной строки и флага X500DistinguishedNameFlags.

X500DistinguishedName(X500DistinguishedName)

Инициализирует новый экземпляр класса X500DistinguishedName, используя указанный объект X500DistinguishedName.

Свойства

Name

Получает различающееся имя с разделителями-запятыми из сертификата X500.

Oid

Получает или задает значение Oid для объекта AsnEncodedData.

(Унаследовано от AsnEncodedData)
RawData

Получает или задает данные в кодировке ASN.1, представленные в массиве байтов.

(Унаследовано от AsnEncodedData)

Методы

CopyFrom(AsnEncodedData)

Копирует информацию из объекта AsnEncodedData.

(Унаследовано от AsnEncodedData)
Decode(X500DistinguishedNameFlags)

Декодирует различающееся имя с помощью характеристик, заданных параметром flag.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
Format(Boolean)

Возвращает форматированную версию различающегося имени сертификата X500 для печати или вывода в текстовое окно или на консоль.

GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к