AsnDecoder.ReadNamedBitListValue 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
重载
ReadNamedBitListValue(ReadOnlySpan<Byte>, AsnEncodingRules, Type, Int32, Nullable<Asn1Tag>) |
在指定编码规则下,从带有指定标记的 |
ReadNamedBitListValue<TFlagsEnum>(ReadOnlySpan<Byte>, AsnEncodingRules, Int32, Nullable<Asn1Tag>) |
在指定编码规则下,从带有指定标记的 |
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
此方法返回时,为编码值的字节总数。 该参数未经初始化即被处理。
返回
转换为 flagsEnumType
的 NamedBitList 值。
例外
未定义ruleSet
。
下一个值没有正确的标记。
-或-
长度编码在当前编码规则下无效。
-或-
在当前编码规则下,内容无效。
-或-
编码的值太大,无法容纳值 flagsEnumType
。
flagsEnumType
不是枚举类型。
-或-
flagsEnumType
未使用 声明 FlagsAttribute
-或-
expectedTag
。TagClass为 Universal,但 expectedTag
TagValue 对于 方法,则不正确。
flagsEnumType
为 null
适用于
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
此方法返回时,为编码值的字节总数。 该参数未经初始化即被处理。
返回
转换为 TFlagsEnum
的 NamedBitList 值。
例外
未定义ruleSet
。
下一个值没有正确的标记。
-或-
长度编码在当前编码规则下无效。
-或-
在当前编码规则下,内容无效。
-或-
编码的值太大,无法容纳值 TFlagsEnum
。
TFlagsEnum
不是枚举类型。
-或-
TFlagsEnum
未使用 声明 FlagsAttribute
-或-
expectedTag
。TagClass为 Universal,但 expectedTag
TagValue 对于 方法,则不正确。
注解
此方法执行的位对齐方式是将值第一个字节中的最有效位解释为 中的 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不同的值。