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 можно использовать для создания расширений, связанных с сертификатом, но не являются частью сертификата, выданного центром сертификации (ЦС).

В самой базовой форме расширение X509 имеет идентификатор объекта (OID), логическое значение, описывающее, считается ли расширение критически важным или нет, и данные в кодировке ASN. Пользовательские расширения можно зарегистрировать в CryptoConfig файле.

Платформа.NET включает в себя реализации нескольких распространенных расширений X509:

Конструкторы

Имя Описание
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.

Свойства

Имя Описание
Critical

Возвращает логическое значение, указывающее, является ли расширение критически важным.

Oid

Возвращает или задает Oid значение объекта AsnEncodedData .

(Унаследовано от AsnEncodedData)
RawData

Возвращает или задает абстрактные нотации синтаксиса One (ASN.1)- закодированные данные, представленные в массиве байтов.

(Унаследовано от AsnEncodedData)

Методы

Имя Описание
CopyFrom(AsnEncodedData)

Копирует свойства расширения указанного AsnEncodedData объекта.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
Format(Boolean)

Возвращает форматированную версию нотации абстрактного синтаксиса (ASN.1) в виде строки.

(Унаследовано от AsnEncodedData)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к