AsnEncodedData Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет данные в кодировке ASN.1 (Abstract Syntax Notation One).
public ref class AsnEncodedData
public class AsnEncodedData
type AsnEncodedData = class
Public Class AsnEncodedData
- Наследование
-
AsnEncodedData
- Производный
Примеры
Приведенный ниже пример кода показывает, как использовать класс AsnEncodedData.
using System;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
class AsnEncodedDataSample
{
static void Main()
{
//The following example demonstrates the usage the AsnEncodedData classes.
// Asn encoded data is read from the extensions of an X509 certificate.
try
{
// Open the certificate store.
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);
// Select one or more certificates to display extensions information.
X509Certificate2Collection scollection = X509Certificate2UI.SelectFromCollection(fcollection, "Certificate Select", "Select certificates from the following list to get extension information on that certificate", X509SelectionFlag.MultiSelection);
// Create a new AsnEncodedDataCollection object.
AsnEncodedDataCollection asncoll = new AsnEncodedDataCollection();
for (int i = 0; i < scollection.Count; i++)
{
// Display certificate information.
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Certificate name: {0}", scollection[i].GetName());
Console.ResetColor();
// Display extensions information.
foreach (X509Extension extension in scollection[i].Extensions)
{
// Create an AsnEncodedData object using the extensions information.
AsnEncodedData asndata = new AsnEncodedData(extension.Oid, extension.RawData);
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("Extension type: {0}", extension.Oid.FriendlyName);
Console.WriteLine("Oid value: {0}",asndata.Oid.Value);
Console.WriteLine("Raw data length: {0} {1}", asndata.RawData.Length, Environment.NewLine);
Console.ResetColor();
Console.WriteLine(asndata.Format(true));
Console.WriteLine(Environment.NewLine);
// Add the AsnEncodedData object to the AsnEncodedDataCollection object.
asncoll.Add(asndata);
}
Console.WriteLine(Environment.NewLine);
}
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Number of AsnEncodedData items in the collection: {0} {1}", asncoll.Count, Environment.NewLine);
Console.ResetColor();
store.Close();
//Create an enumerator for moving through the collection.
AsnEncodedDataEnumerator asne = asncoll.GetEnumerator();
//You must execute a MoveNext() to get to the first item in the collection.
asne.MoveNext();
// Write out AsnEncodedData in the collection.
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine("First AsnEncodedData in the collection: {0}", asne.Current.Format(true));
Console.ResetColor();
asne.MoveNext();
Console.ForegroundColor = ConsoleColor.DarkBlue;
Console.WriteLine("Second AsnEncodedData in the collection: {0}", asne.Current.Format(true));
Console.ResetColor();
//Return index in the collection to the beginning.
asne.Reset();
}
catch (CryptographicException)
{
Console.WriteLine("Information could not be written out for this certificate.");
}
}
}
Imports System.Security.Cryptography
Imports System.Security.Cryptography.X509Certificates
Class AsnEncodedDataSample
Shared msg As String
Shared Sub Main()
'The following example demonstrates the usage the AsnEncodedData classes.
' Asn encoded data is read from the extensions of an X509 certificate.
Try
' Open the certificate store.
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)
' Select one or more certificates to display extensions information.
Dim scollection As X509Certificate2Collection = X509Certificate2UI.SelectFromCollection(fcollection, "Certificate Select", "Select certificates from the following list to get extension information on that certificate", X509SelectionFlag.MultiSelection)
' Create a new AsnEncodedDataCollection object.
Dim asncoll As New AsnEncodedDataCollection()
Dim i As Integer
For i = 0 To scollection.Count - 1
' Display certificate information.
msg = "Certificate name: "& scollection(i).GetName()
MsgBox(msg)
' Display extensions information.
Dim extension As X509Extension
For Each extension In scollection(i).Extensions
' Create an AsnEncodedData object using the extensions information.
Dim asndata As New AsnEncodedData(extension.Oid, extension.RawData)
msg = "Extension type: " & extension.Oid.FriendlyName & Environment.NewLine & "Oid value: " & asndata.Oid.Value _
& Environment.NewLine & "Raw data length: " & asndata.RawData.Length & Environment.NewLine _
& asndata.Format(True) & Environment.NewLine
MsgBox(msg)
' Add the AsnEncodedData object to the AsnEncodedDataCollection object.
asncoll.Add(asndata)
Next extension
Next i
msg = "Number of AsnEncodedData items in the collection: " & asncoll.Count
MsgBox(msg)
store.Close()
'Create an enumerator for moving through the collection.
Dim asne As AsnEncodedDataEnumerator = asncoll.GetEnumerator()
'You must execute a MoveNext() to get to the first item in the collection.
asne.MoveNext()
' Write out AsnEncodedData in the collection.
msg = "First AsnEncodedData in the collection: " & asne.Current.Format(True)
MsgBox(msg)
asne.MoveNext()
msg = "Second AsnEncodedData in the collection: " & asne.Current.Format(True)
MsgBox(msg)
'Return index in the collection to the beginning.
asne.Reset()
Catch
MsgBox("Information could not be written out for this certificate.")
End Try
End Sub
End Class
Комментарии
Абстрактная синтаксическая нотация 1 (ASN.1), определенная в рекомендации CCITT X.208, — это способ указания абстрактных объектов, которые будут передаваться последовательно. Набор правил ASN.1 для представления таких объектов, как строки единиц и нулей, называется различающимися правилами кодирования (DER) и определен в разделе 8.7 рекомендации CCITT X.509. Эти методы кодирования в настоящее время используются пространством имен шифрования в .NET Framework.
Обратите внимание, что если при доступе к экземпляру этого класса обнаружен неизвестный тип данных, данные возвращаются в виде шестнадцатеричной строки.
Конструкторы
AsnEncodedData() |
Инициализирует новый экземпляр класса AsnEncodedData. |
AsnEncodedData(AsnEncodedData) |
Инициализирует новый экземпляр класса AsnEncodedData, используя экземпляр класса AsnEncodedData. |
AsnEncodedData(Byte[]) |
Инициализирует новый экземпляр класса AsnEncodedData, используя массив байтов. |
AsnEncodedData(Oid, Byte[]) |
Инициализирует новый экземпляр класса AsnEncodedData, используя объект Oid и массив байтов. |
AsnEncodedData(Oid, ReadOnlySpan<Byte>) |
Инициализирует новый экземпляр класса AsnEncodedData на основе идентификатора объекта (OID) и существующих закодированных данных. |
AsnEncodedData(ReadOnlySpan<Byte>) |
Инициализирует новый экземпляр класса AsnEncodedData на основе существующих закодированных данных. |
AsnEncodedData(String, Byte[]) |
Инициализирует новый экземпляр класса AsnEncodedData, используя массив байтов. |
AsnEncodedData(String, ReadOnlySpan<Byte>) |
Инициализирует новый экземпляр класса AsnEncodedData на основе идентификатора объекта (OID) и существующих закодированных данных. |
Свойства
Oid |
Получает или задает значение Oid для объекта AsnEncodedData. |
RawData |
Получает или задает данные в кодировке ASN.1, представленные в массиве байтов. |
Методы
CopyFrom(AsnEncodedData) |
Копирует информацию из объекта AsnEncodedData. |
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
Format(Boolean) |
Возвращает форматированную версию данных в кодировке ASN.1 в виде строки. |
GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |