X500DistinguishedName Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Representa o nome diferenciado de um certificado X509. Essa classe não pode ser herdada.
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
- Herança
Exemplos
O exemplo de código a seguir mostra como usar a X500DistinguishedName classe .
#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
Comentários
Essa classe é como uma extensão para a SubjectName propriedade ou IssuerName , que é o nome da pessoa ou entidade para a qual o certificado está sendo emitido. O X.500 é um padrão internacional para serviços de diretório distribuído. O nome diferenciado usa o seguinte formato:
[X500:/C=CountryCode/O=Organization/OU=OrganizationUnit/CN=CommonName]
Os seguintes limites de comprimento de campo se aplicam:
Campo | Limite de comprimento |
---|---|
CountryCode | 2 caracteres |
Organização | Até 64 caracteres |
OrganizationUnit | Até 32 caracteres |
Commonname | Até 64 caracteres |
As seguintes diretrizes se aplicam:
Os valores de campo podem ser maiúsculos ou minúsculos.
Delimitadores são marcas de barra (/) e devem aparecer antes do primeiro valor e entre os valores subsequentes.
Delimitadores podem ser seguidos por um espaço.
Veja a seguir um exemplo de um nome formatado corretamente: [X500:/ C=US/ O=Microsoft/ OU=WGA/ CN=TedSt]
Construtores
X500DistinguishedName(AsnEncodedData) |
Inicializa uma nova instância da classe X500DistinguishedName usando o objeto AsnEncodedData especificado. |
X500DistinguishedName(Byte[]) |
Inicializa uma nova instância da classe X500DistinguishedName usando informações da matriz de bytes especificada. |
X500DistinguishedName(ReadOnlySpan<Byte>) |
Inicializa uma nova instância da classe X500DistinguishedName usando informações dos dados fornecidos. |
X500DistinguishedName(String) |
Inicializa uma nova instância da classe X500DistinguishedName usando informações da cadeia de caracteres especificada. |
X500DistinguishedName(String, X500DistinguishedNameFlags) |
Inicializa uma nova instância da classe X500DistinguishedName usando a cadeia de caracteres e o sinalizador X500DistinguishedNameFlags especificados. |
X500DistinguishedName(X500DistinguishedName) |
Inicializa uma nova instância da classe X500DistinguishedName usando o objeto X500DistinguishedName especificado. |
Propriedades
Name |
Obtém o nome diferenciado delimitado por vírgula de um certificado X500. |
Oid |
Obtém ou define o valor Oid para um objeto AsnEncodedData. (Herdado de AsnEncodedData) |
RawData |
Obtém ou define os dados codificados em ASN.1 (Abstract Syntax Notation One) representados em uma matriz de bytes. (Herdado de AsnEncodedData) |
Métodos
CopyFrom(AsnEncodedData) |
Copia informações de um objeto AsnEncodedData. (Herdado de AsnEncodedData) |
Decode(X500DistinguishedNameFlags) |
Decodifica um nome diferenciado usando as características especificadas pelo parâmetro |
EnumerateRelativeDistinguishedNames(Boolean) |
Itera sobre os valores RelativeDistinguishedName dentro desse valor de nome diferenciado. |
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
Format(Boolean) |
Retorna uma versão formatada de um nome diferenciado do X500 de impressão ou de saída para uma janela de texto ou para um console. |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
Aplica-se a
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de