X509EnhancedKeyUsageExtension 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
定义对象标识符(OID)的集合,该集合指示使用密钥的应用程序。 此类不能被继承。
public ref class X509EnhancedKeyUsageExtension sealed : System::Security::Cryptography::X509Certificates::X509Extension
public sealed class X509EnhancedKeyUsageExtension : System.Security.Cryptography.X509Certificates.X509Extension
type X509EnhancedKeyUsageExtension = class
inherit X509Extension
Public NotInheritable Class X509EnhancedKeyUsageExtension
Inherits X509Extension
- 继承
示例
下面的代码示例演示如何打开用户的个人证书存储并显示有关存储中每个证书的信息。 此示例使用 X509EnhancedKeyUsageExtension 类来显示信息。
using System;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
public class CertSelect
{
public static void Main()
{
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 == "Key Usage")
{
X509KeyUsageExtension ext = (X509KeyUsageExtension)extension;
Console.WriteLine(ext.KeyUsages);
}
if (extension.Oid.FriendlyName == "Basic Constraints")
{
X509BasicConstraintsExtension ext = (X509BasicConstraintsExtension)extension;
Console.WriteLine(ext.CertificateAuthority);
Console.WriteLine(ext.HasPathLengthConstraint);
Console.WriteLine(ext.PathLengthConstraint);
}
if (extension.Oid.FriendlyName == "Subject Key Identifier")
{
X509SubjectKeyIdentifierExtension ext = (X509SubjectKeyIdentifierExtension)extension;
Console.WriteLine(ext.SubjectKeyIdentifier);
}
if (extension.Oid.FriendlyName == "Enhanced Key Usage")
{
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.");
}
}
}
Imports System.Security.Cryptography
Imports System.Security.Cryptography.X509Certificates
Module CertSelect
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)
For i As Integer = 0 To collection.Count - 1
Dim extension As X509Extension
For Each extension In collection(i).Extensions
Console.WriteLine(extension.Oid.FriendlyName + "(" + extension.Oid.Value + ")")
If extension.Oid.FriendlyName = "Key Usage" Then
Dim ext As X509KeyUsageExtension = CType(extension, X509KeyUsageExtension)
Console.WriteLine(ext.KeyUsages)
End If
If extension.Oid.FriendlyName = "Basic Constraints" Then
Dim ext As X509BasicConstraintsExtension = CType(extension, X509BasicConstraintsExtension)
Console.WriteLine(ext.CertificateAuthority)
Console.WriteLine(ext.HasPathLengthConstraint)
Console.WriteLine(ext.PathLengthConstraint)
End If
If extension.Oid.FriendlyName = "Subject Key Identifier" Then
Dim ext As X509SubjectKeyIdentifierExtension = CType(extension, X509SubjectKeyIdentifierExtension)
Console.WriteLine(ext.SubjectKeyIdentifier)
End If
If extension.Oid.FriendlyName = "Enhanced Key Usage" Then
Dim ext As X509EnhancedKeyUsageExtension = CType(extension, X509EnhancedKeyUsageExtension)
Dim oids As OidCollection = ext.EnhancedKeyUsages
Dim oid As Oid
For Each oid In oids
Console.WriteLine(oid.FriendlyName + "(" + oid.Value + ")")
Next oid
End If
Next extension
Next i
store.Close()
Catch
Console.WriteLine("Information could not be written out for this certificate.")
End Try
End Sub
End Module
注解
增强型密钥使用 (EKU) 扩展是指示使用密钥的应用程序的对象标识符 (OID) 的集合。
构造函数
| 名称 | 说明 |
|---|---|
| X509EnhancedKeyUsageExtension() |
初始化 X509EnhancedKeyUsageExtension 类的新实例。 |
| X509EnhancedKeyUsageExtension(AsnEncodedData, Boolean) |
使用对象X509EnhancedKeyUsageExtension和一个值初始化类的新实例AsnEncodedData,该值标识扩展是否至关重要。 |
| X509EnhancedKeyUsageExtension(OidCollection, Boolean) |
使用X509EnhancedKeyUsageExtension标识扩展是否至关重要的值初始化类的新实例OidCollection。 |
属性
| 名称 | 说明 |
|---|---|
| Critical |
获取一个布尔值,该值指示扩展是否至关重要。 (继承自 X509Extension) |
| EnhancedKeyUsages |
获取指示使用密钥的应用程序的对象标识符(OID)的集合。 |
| Oid |
获取或设置 Oid 对象的 AsnEncodedData 值。 (继承自 AsnEncodedData) |
| RawData |
获取或设置字节数组中表示的抽象语法表示法一(ASN.1)编码的数据。 (继承自 AsnEncodedData) |
方法
| 名称 | 说明 |
|---|---|
| CopyFrom(AsnEncodedData) |
使用X509EnhancedKeyUsageExtension对象初始化类的新实例AsnEncodedData。 |
| Equals(Object) |
确定指定的对象是否等于当前对象。 (继承自 Object) |
| Format(Boolean) |
以字符串形式返回抽象语法表示法一(ASN.1)编码数据的格式化版本。 (继承自 AsnEncodedData) |
| GetHashCode() |
用作默认哈希函数。 (继承自 Object) |
| GetType() |
获取当前实例的 Type。 (继承自 Object) |
| MemberwiseClone() |
创建当前 Object的浅表副本。 (继承自 Object) |
| ToString() |
返回一个表示当前对象的字符串。 (继承自 Object) |