AsnDecoder.ReadNamedBitListValue Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
ReadNamedBitListValue(ReadOnlySpan<Byte>, AsnEncodingRules, Type, Int32, Nullable<Asn1Tag>) |
Считывает значение NamedBitList из |
ReadNamedBitListValue<TFlagsEnum>(ReadOnlySpan<Byte>, AsnEncodingRules, Int32, Nullable<Asn1Tag>) |
Считывает значение NamedBitList из |
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
При возврате из этого метода — общее количество байтов для закодированного значения. Этот параметр обрабатывается как неинициализированный.
Тег, который необходимо проверить перед чтением, или 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
При возврате из этого метода — общее количество байтов для закодированного значения. Этот параметр обрабатывается как неинициализированный.
Тег, который необходимо проверить перед чтением, или null
для тега по умолчанию (Universal 3).
Возвращаемое значение
Значение 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.