AsnDecoder.ReadNamedBitListValue 方法

定义

重载

ReadNamedBitListValue(ReadOnlySpan<Byte>, AsnEncodingRules, Type, Int32, Nullable<Asn1Tag>)

在指定编码规则下,从带有指定标记的 source 中读取 NamedBitList,并将其转换为由 flagsEnumType 指定的 [FlagsAttribute] 枚举。

ReadNamedBitListValue<TFlagsEnum>(ReadOnlySpan<Byte>, AsnEncodingRules, Int32, Nullable<Asn1Tag>)

在指定编码规则下,从带有指定标记的 source 中读取 NamedBitList,并将其转换为由 TFlagsEnum 指定的 [FlagsAttribute] 枚举。

ReadNamedBitListValue(ReadOnlySpan<Byte>, AsnEncodingRules, Type, Int32, Nullable<Asn1Tag>)

Source:
AsnDecoder.NamedBitList.cs
Source:
AsnDecoder.NamedBitList.cs
Source:
AsnDecoder.NamedBitList.cs

在指定编码规则下,从带有指定标记的 source 中读取 NamedBitList,并将其转换为由 flagsEnumType 指定的 [FlagsAttribute] 枚举。

public static Enum ReadNamedBitListValue (ReadOnlySpan<byte> source, System.Formats.Asn1.AsnEncodingRules ruleSet, Type flagsEnumType, out int bytesConsumed, System.Formats.Asn1.Asn1Tag? expectedTag = default);
static member ReadNamedBitListValue : ReadOnlySpan<byte> * System.Formats.Asn1.AsnEncodingRules * Type * int * Nullable<System.Formats.Asn1.Asn1Tag> -> Enum
Public Shared Function ReadNamedBitListValue (source As ReadOnlySpan(Of Byte), ruleSet As AsnEncodingRules, flagsEnumType As Type, ByRef bytesConsumed As Integer, Optional expectedTag As Nullable(Of Asn1Tag) = Nothing) As Enum

参数

source
ReadOnlySpan<Byte>

包含编码数据的缓冲区。

ruleSet
AsnEncodingRules

解释数据时使用的编码约束。

flagsEnumType
Type

类型 对象,表示目标类型。

bytesConsumed
Int32

此方法返回时,为编码值的字节总数。 该参数未经初始化即被处理。

expectedTag
Nullable<Asn1Tag>

读取前要检查的标记,或使用 null 作为默认标记(通用 3)。

返回

转换为 flagsEnumType 的 NamedBitList 值。

例外

未定义ruleSet

下一个值没有正确的标记。

-或-

长度编码在当前编码规则下无效。

-或-

在当前编码规则下,内容无效。

-或-

编码的值太大,无法容纳值 flagsEnumType

flagsEnumType 不是枚举类型。

-或-

flagsEnumType 未使用 声明 FlagsAttribute

-或-

expectedTagTagClassUniversal,但 expectedTagTagValue 对于 方法,则不正确。

flagsEnumTypenull

适用于

ReadNamedBitListValue<TFlagsEnum>(ReadOnlySpan<Byte>, AsnEncodingRules, Int32, Nullable<Asn1Tag>)

Source:
AsnDecoder.NamedBitList.cs
Source:
AsnDecoder.NamedBitList.cs
Source:
AsnDecoder.NamedBitList.cs

在指定编码规则下,从带有指定标记的 source 中读取 NamedBitList,并将其转换为由 TFlagsEnum 指定的 [FlagsAttribute] 枚举。

public static TFlagsEnum ReadNamedBitListValue<TFlagsEnum> (ReadOnlySpan<byte> source, System.Formats.Asn1.AsnEncodingRules ruleSet, out int bytesConsumed, System.Formats.Asn1.Asn1Tag? expectedTag = default) where TFlagsEnum : Enum;
static member ReadNamedBitListValue : ReadOnlySpan<byte> * System.Formats.Asn1.AsnEncodingRules * int * Nullable<System.Formats.Asn1.Asn1Tag> -> 'FlagsEnum (requires 'FlagsEnum :> Enum)
Public Shared Function ReadNamedBitListValue(Of TFlagsEnum As Enum) (source As ReadOnlySpan(Of Byte), ruleSet As AsnEncodingRules, ByRef bytesConsumed As Integer, Optional expectedTag As Nullable(Of Asn1Tag) = Nothing) As TFlagsEnum

类型参数

TFlagsEnum

目标枚举类型。

参数

source
ReadOnlySpan<Byte>

包含编码数据的缓冲区。

ruleSet
AsnEncodingRules

解释数据时使用的编码约束。

bytesConsumed
Int32

此方法返回时,为编码值的字节总数。 该参数未经初始化即被处理。

expectedTag
Nullable<Asn1Tag>

读取前要检查的标记,或使用 null 作为默认标记(通用 3)。

返回

TFlagsEnum

转换为 TFlagsEnum 的 NamedBitList 值。

例外

未定义ruleSet

下一个值没有正确的标记。

-或-

长度编码在当前编码规则下无效。

-或-

在当前编码规则下,内容无效。

-或-

编码的值太大,无法容纳值 TFlagsEnum

TFlagsEnum 不是枚举类型。

-或-

TFlagsEnum 未使用 声明 FlagsAttribute

-或-

expectedTagTagClassUniversal,但 expectedTagTagValue 对于 方法,则不正确。

注解

此方法执行的位对齐方式是将值第一个字节中的最有效位解释为 中的 TFlagsEnum最小有效位,位的值一直增加,直到第一个字节的最小有效位,继续执行第二个字节的最有效位,依此类而论。 在此方案中,以下 ASN.1 类型声明和 C# 枚举可以一起使用:

KeyUsage ::= BIT STRING {
    digitalSignature        (0),
    nonRepudiation          (1),
    keyEncipherment         (2),
    dataEncipherment        (3),
    keyAgreement            (4),
    keyCertSign             (5),
    cRLSign                 (6),
    encipherOnly            (7),
    decipherOnly            (8) }
[Flags]
enum KeyUsage
{
    None = 0, DigitalSignature = 1 << (0),
    NonRepudiation = 1 << (1),
    KeyEncipherment = 1 << (2),
    DataEncipherment = 1 << (3),
    KeyAgreement = 1 << (4),
    KeyCertSign = 1 << (5),
    CrlSign = 1 << (6),
    EncipherOnly = 1 << (7),
    DecipherOnly = 1 << (8),
}

虽然此处的示例使用 RFC 3280 (4.2.1.3) 中的 KeyUsage NamedBitList,但示例枚举使用与 X509KeyUsageFlags不同的值。

适用于