語言

X509KeyUsageExtension 類別

定義

定義 X.509 憑證中金鑰的使用方式。 此類別無法獲得繼承。

public ref class X509KeyUsageExtension sealed : System::Security::Cryptography::X509Certificates::X509Extension
public sealed class X509KeyUsageExtension : System.Security.Cryptography.X509Certificates.X509Extension
type X509KeyUsageExtension = class
    inherit X509Extension
Public NotInheritable Class X509KeyUsageExtension
Inherits X509Extension
繼承
X509KeyUsageExtension

範例

以下程式碼範例示範如何開啟使用者的個人憑證儲存庫,並顯示儲存中每個憑證的資訊。 此範例使用 類別 X509KeyUsageExtension 來顯示資訊。

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

備註

該 X509KeyUsageExtension 類別利用列舉中的 X509KeyUsageFlags 旗標來定義或決定金鑰的使用方式。

建構函式

名稱 Description
X509KeyUsageExtension()

初始化 X509KeyUsageExtension 類別的新執行個體。

X509KeyUsageExtension(AsnEncodedData, Boolean)

使用X509KeyUsageExtension物件及識別該擴充是否關鍵的值初始化類別的新實例AsnEncodedData。

X509KeyUsageExtension(X509KeyUsageFlags, Boolean)

使用指定的X509KeyUsageExtension值及識別該擴充是否關鍵的值初始化該類別的新實例X509KeyUsageFlags。

屬性

名稱 Description
Critical

會得到一個布林值,表示該擴展是否關鍵。

(繼承來源 X509Extension)
KeyUsages

取得與憑證相關的金鑰使用標誌。

Oid

取得或設定 Oid 物件 AsnEncodedData 的值。

(繼承來源 AsnEncodedData)
RawData
已淘汰.

取得或設定以位元組陣列表示的抽象語法符號 1(ASN.1)編碼資料。

(繼承來源 AsnEncodedData)

方法

名稱 Description
CopyFrom(AsnEncodedData)

使用X509KeyUsageExtension物件初始化該類別的新實例AsnEncodedData。

Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
Format(Boolean)

以字串形式回傳 Abstract Syntax Notation One (ASN.1) 編碼資料的格式化版本。

(繼承來源 AsnEncodedData)
GetHashCode()

做為預設哈希函式。

(繼承來源 Object)
GetType()

取得目前實例的 Type。

(繼承來源 Object)
MemberwiseClone()

建立目前 Object的淺層複本。

(繼承來源 Object)
ToString()

傳回表示目前 物件的字串。

(繼承來源 Object)

適用於