Share via


AsnDecoder.ReadNamedBitListValue Método

Definición

Sobrecargas

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

Lee un valor NamedBitList de source con una etiqueta especificada en las reglas de codificación especificadas y lo convierte en la enumeración [FlagsAttribute] especificada por flagsEnumType.

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

Lee un valor NamedBitList de source con una etiqueta especificada en las reglas de codificación especificadas y lo convierte en la enumeración [FlagsAttribute] especificada por TFlagsEnum.

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

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

Lee un valor NamedBitList de source con una etiqueta especificada en las reglas de codificación especificadas y lo convierte en la enumeración [FlagsAttribute] especificada por 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

Parámetros

source
ReadOnlySpan<Byte>

El búfer que contiene los datos codificados.

ruleSet
AsnEncodingRules

Restricciones de codificación que se van a usar al interpretar los datos.

flagsEnumType
Type

Objeto de tipo que representa el tipo de destino.

bytesConsumed
Int32

Cuando este método vuelve, el número total de bytes para el valor codificado. Este parámetro se trata como sin inicializar.

expectedTag
Nullable<Asn1Tag>

La etiqueta que se va a comprobar antes de leer, o null para la etiqueta predeterminada (Universal 3).

Devoluciones

El valor de NamedBitList convertido en flagsEnumType.

Excepciones

ruleSet no está definido.

El siguiente valor no tiene la etiqueta correcta.

O bien

La codificación de longitud no es válida en las reglas de codificación actuales.

O bien

El contenido no es válido en las reglas de codificación actuales.

O bien

El valor codificado es demasiado grande para caber en un flagsEnumType valor.

flagsEnumType no es un tipo de enumeración.

O bien

flagsEnumType no se declaró con FlagsAttribute

O bien

expectedTag.TagClass es Universal, pero expectedTag.TagValue no es correcto para el método .

flagsEnumType es null.

Se aplica a

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

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

Lee un valor NamedBitList de source con una etiqueta especificada en las reglas de codificación especificadas y lo convierte en la enumeración [FlagsAttribute] especificada por 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

Parámetros de tipo

TFlagsEnum

Tipo de enumeración de destino.

Parámetros

source
ReadOnlySpan<Byte>

El búfer que contiene los datos codificados.

ruleSet
AsnEncodingRules

Restricciones de codificación que se van a usar al interpretar los datos.

bytesConsumed
Int32

Cuando este método vuelve, el número total de bytes para el valor codificado. Este parámetro se trata como sin inicializar.

expectedTag
Nullable<Asn1Tag>

La etiqueta que se va a comprobar antes de leer, o null para la etiqueta predeterminada (Universal 3).

Devoluciones

TFlagsEnum

El valor de NamedBitList convertido en TFlagsEnum.

Excepciones

ruleSet no está definido.

El siguiente valor no tiene la etiqueta correcta.

O bien

La codificación de longitud no es válida en las reglas de codificación actuales.

O bien

El contenido no es válido en las reglas de codificación actuales.

O bien

El valor codificado es demasiado grande para caber en un TFlagsEnum valor.

TFlagsEnum no es un tipo de enumeración.

O bien

TFlagsEnum no se declaró con FlagsAttribute

O bien

expectedTag.TagClass es Universal, pero expectedTag.TagValue no es correcto para el método .

Comentarios

La alineación de bits realizada por este método es interpretar el bit más significativo del primer byte del valor como el bit menos significativo en TFlagsEnum, con bits que aumentan en valor hasta el bit menos significativo del primer byte, procediendo con el bit más significativo del segundo byte, etc. En este esquema, la siguiente declaración de tipo ASN.1 y la enumeración de C# se pueden usar conjuntamente:

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

Aunque en el ejemplo siguiente se usa KeyUsage NamedBitList de RFC 3280 (4.2.1.3), la enumeración de ejemplo usa valores que son diferentes de X509KeyUsageFlags.

Se aplica a