X500DistinguishedNameFlags 枚举
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
指定 X.500 可分辨名称的特性。
此枚举支持其成员值的按位组合。
public enum class X500DistinguishedNameFlags
[System.Flags]
public enum X500DistinguishedNameFlags
[<System.Flags>]
type X500DistinguishedNameFlags =
Public Enum X500DistinguishedNameFlags
- 继承
- 属性
字段
DoNotUsePlusSign | 32 | 可分辨名称不使用加号。 |
DoNotUseQuotes | 64 | 可分辨名称不使用引号。 |
ForceUTF8Encoding | 16384 | 强制可分辨名称将特定 X.500 密钥编码为 UTF-8 字符串而不是可打印的 Unicode 字符串。 有关受影响的 X.500 密钥的详细信息和列表,请参阅 X500NameFlags enumeration(X500NameFlags 枚举)。 |
None | 0 | 可分辨名称没有特殊特性。 |
Reversed | 1 | 反转可分辨名称。 |
UseCommas | 128 | 可分辨名称使用逗号。 |
UseNewLines | 256 | 可分辨名称使用新行字符。 |
UseSemicolons | 16 | 可分辨名称使用分号。 |
UseT61Encoding | 8192 | 可分辨名称使用 T61 编码。 |
UseUTF8Encoding | 4096 | 可分辨名称使用 UTF8 编码而不是 Unicode 字符编码。 |
示例
下面的代码示例演示如何使用 X500DistinguishedNameFlags
枚举。
#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
注解
此枚举与类一起使用 X500DistinguishedName ,以指示可分辨名称中包含的特殊字符。
此枚举中存在多个值相互排斥;仅使用这些值之一来定义 X.500 可分辨名称的特殊特征。 例如,仅指定其中一个UseCommas``UseNewLines
值和UseSemicolons
值。 还可以指定或UseT61Encoding``UseUTF8Encoding
指定 。