語言

X509Extension 類別

定義

代表 X509 的延伸。

public ref class X509Extension : System::Security::Cryptography::AsnEncodedData
public class X509Extension : System.Security.Cryptography.AsnEncodedData
type X509Extension = class
    inherit AsnEncodedData
Public Class X509Extension
Inherits AsnEncodedData
繼承
X509Extension
衍生

範例

以下程式碼範例示範如何使用該 X509Extension 類別。

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

備註

X509 擴充功能是動態且可擴充的屬性,可以加入並變更於 X509 憑證中。 此 X509Extension 類別可用於建立與憑證相關聯但不屬於由認證機構(CA)核發的憑證中的擴充。

在最基本的形式中,X509 擴充包含物件識別碼(OID)、描述該擴充是否被視為關鍵的布林值,以及 ASN 編碼的資料。 自訂副檔名可以在檔案中註冊 CryptoConfig 。

.NET 框架包含了數個常見 X509 擴充功能的實作:

建構函式

名稱 Description
X509Extension()

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

X509Extension(AsnEncodedData, Boolean)

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

X509Extension(Oid, Byte[], Boolean)

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

X509Extension(Oid, ReadOnlySpan<Byte>, Boolean)

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

X509Extension(String, Byte[], Boolean)

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

X509Extension(String, ReadOnlySpan<Byte>, Boolean)

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

屬性

名稱 Description
Critical

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

Oid

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

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

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

(繼承來源 AsnEncodedData)

方法

名稱 Description
CopyFrom(AsnEncodedData)

複製指定 AsnEncodedData 物件的擴充屬性。

Equals(Object)

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

(繼承來源 Object)
Format(Boolean)

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

(繼承來源 AsnEncodedData)
GetHashCode()

做為預設哈希函式。

(繼承來源 Object)
GetType()

取得目前實例的 Type。

(繼承來源 Object)
MemberwiseClone()

建立目前 Object的淺層複本。

(繼承來源 Object)
ToString()

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

(繼承來源 Object)

適用於