AsnDecoder.ReadNamedBitListValue Метод

Определение

Перегрузки

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

Считывает значение NamedBitList из source с указанным тегом в соответствии с заданными правилами кодирования, преобразуя его в перечислимое [FlagsAttribute], указанное в flagsEnumType.

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

Считывает значение NamedBitList из source с указанным тегом в соответствии с заданными правилами кодирования, преобразуя его в перечислимое [FlagsAttribute], указанное в TFlagsEnum.

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

Исходный код:
AsnDecoder.NamedBitList.cs
Исходный код:
AsnDecoder.NamedBitList.cs
Исходный код:
AsnDecoder.NamedBitList.cs

Считывает значение NamedBitList из source с указанным тегом в соответствии с заданными правилами кодирования, преобразуя его в перечислимое [FlagsAttribute], указанное в flagsEnumType.

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

Объект Type представляющий тип назначения.

bytesConsumed
Int32

При возврате из этого метода — общее количество байтов для закодированного значения. Этот параметр обрабатывается как неинициализированный.

expectedTag
Nullable<Asn1Tag>

Тег, который необходимо проверить перед чтением, или null для тега по умолчанию (Universal 3).

Возвращаемое значение

Значение NamedBitList, преобразованное в flagsEnumType.

Исключения

ruleSet не определен.

Следующее значение не имеет правильного тега.

-или-

Кодировка длины недопустима в соответствии с текущими правилами кодирования.

-или-

Содержимое недопустимо в соответствии с текущими правилами кодирования.

-или-

Закодированное значение слишком велико, чтобы поместиться в flagsEnumType значение.

flagsEnumType не является типом перечисления.

-или-

flagsEnumType не был объявлен с FlagsAttribute

-или-

expectedTag.TagClass имеет значение Universal, но expectedTag.TagValue не является правильным для метода .

flagsEnumType имеет значение null.

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

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

Исходный код:
AsnDecoder.NamedBitList.cs
Исходный код:
AsnDecoder.NamedBitList.cs
Исходный код:
AsnDecoder.NamedBitList.cs

Считывает значение NamedBitList из source с указанным тегом в соответствии с заданными правилами кодирования, преобразуя его в перечислимое [FlagsAttribute], указанное в TFlagsEnum.

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 для тега по умолчанию (Universal 3).

Возвращаемое значение

TFlagsEnum

Значение NamedBitList, преобразованное в TFlagsEnum.

Исключения

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),
}

Хотя в приведенном здесь примере используется KeyUsage NamedBitList из RFC 3280 (4.2.1.3), в перечислении примера используются значения, отличные от X509KeyUsageFlags.

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