AsnReader.ReadNamedBitListValue Метод

Определение

Перегрузки

ReadNamedBitListValue(Type, Nullable<Asn1Tag>)

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

ReadNamedBitListValue<TFlagsEnum>(Nullable<Asn1Tag>)

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

ReadNamedBitListValue(Type, Nullable<Asn1Tag>)

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

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

public Enum ReadNamedBitListValue (Type flagsEnumType, System.Formats.Asn1.Asn1Tag? expectedTag = default);
member this.ReadNamedBitListValue : Type * Nullable<System.Formats.Asn1.Asn1Tag> -> Enum
Public Function ReadNamedBitListValue (flagsEnumType As Type, Optional expectedTag As Nullable(Of Asn1Tag) = Nothing) As Enum

Параметры

flagsEnumType
Type

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

expectedTag
Nullable<Asn1Tag>

Тег, для проверка перед чтением.

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

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

Исключения

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

-или-

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

-или-

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

-или-

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

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

-или-

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

-или-

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

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

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

ReadNamedBitListValue<TFlagsEnum>(Nullable<Asn1Tag>)

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

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

public TFlagsEnum ReadNamedBitListValue<TFlagsEnum> (System.Formats.Asn1.Asn1Tag? expectedTag = default) where TFlagsEnum : Enum;
member this.ReadNamedBitListValue : Nullable<System.Formats.Asn1.Asn1Tag> -> 'FlagsEnum (requires 'FlagsEnum :> Enum)
Public Function ReadNamedBitListValue(Of TFlagsEnum As Enum) (Optional expectedTag As Nullable(Of Asn1Tag) = Nothing) As TFlagsEnum

Параметры типа

TFlagsEnum

Тип перечисления назначения.

Параметры

expectedTag
Nullable<Asn1Tag>

Тег, для проверка перед чтением.

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

TFlagsEnum

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

Исключения

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

-или-

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

-или-

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

-или-

Закодированное значение слишком велико, чтобы поместиться в 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.

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