AsnEncodedDataCollection 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示 AsnEncodedData 对象集合。 此类不能被继承。
public ref class AsnEncodedDataCollection sealed : System::Collections::ICollection
public sealed class AsnEncodedDataCollection : System.Collections.ICollection
type AsnEncodedDataCollection = class
interface ICollection
interface IEnumerable
Public NotInheritable Class AsnEncodedDataCollection
Implements ICollection
- 继承
-
AsnEncodedDataCollection
- 实现
示例
下面的代码示例演示如何使用 AsnEncodedDataCollection 类。
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
注解
此类实现 ICollection 接口。
构造函数
| AsnEncodedDataCollection() |
初始化 AsnEncodedDataCollection 类的新实例。 |
| AsnEncodedDataCollection(AsnEncodedData) |
初始化 AsnEncodedDataCollection 类的新实例,并将 AsnEncodedData 对象添加到集合中。 |
属性
| Count |
获取集合中的 AsnEncodedData 对象数。 |
| IsSynchronized |
获取一个值,该值表示对 AsnEncodedDataCollection 对象的访问是否线程安全。 |
| Item[Int32] |
从 AsnEncodedDataCollection 对象中获取 AsnEncodedData 对象。 |
| SyncRoot |
获取一个对象,该对象可用于同步对 AsnEncodedDataCollection 对象的访问。 |
方法
| Add(AsnEncodedData) |
将 AsnEncodedData 对象添加到 AsnEncodedDataCollection 对象中。 |
| CopyTo(AsnEncodedData[], Int32) |
将 AsnEncodedDataCollection 对象复制到数组。 |
| Equals(Object) |
确定指定对象是否等于当前对象。 (继承自 Object) |
| GetEnumerator() |
返回可用于导航 AsnEncodedDataCollection 对象的 AsnEncodedDataEnumerator 对象。 |
| GetHashCode() |
作为默认哈希函数。 (继承自 Object) |
| GetType() |
获取当前实例的 Type。 (继承自 Object) |
| MemberwiseClone() |
创建当前 Object 的浅表副本。 (继承自 Object) |
| Remove(AsnEncodedData) |
从 AsnEncodedData 对象中移除 AsnEncodedDataCollection 对象。 |
| ToString() |
返回表示当前对象的字符串。 (继承自 Object) |
显式接口实现
| ICollection.CopyTo(Array, Int32) |
将 AsnEncodedDataCollection 对象复制到数组。 |
| ICollection.IsSynchronized |
获取一个值,该值指示是否同步对 ICollection 的访问(线程安全)。 |
| ICollection.SyncRoot |
获取可用于同步对 ICollection 的访问的对象。 |
| IEnumerable.GetEnumerator() |
返回可用于导航 AsnEncodedDataCollection 对象的 AsnEncodedDataEnumerator 对象。 |
扩展方法
| Cast<TResult>(IEnumerable) |
将 IEnumerable 的元素强制转换为指定的类型。 |
| OfType<TResult>(IEnumerable) |
根据指定类型筛选 IEnumerable 的元素。 |
| AsParallel(IEnumerable) |
启用查询的并行化。 |
| AsQueryable(IEnumerable) |
将 IEnumerable 转换为 IQueryable。 |