Partilhar via


AsnDecoder.ReadNamedBitListValue Método

Definição

Sobrecargas

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

Lê um NamedBitList de source com uma marca especificada de acordo com as regras de codificação determinadas, convertendo-o para a enumeração [FlagsAttribute] especificada por flagsEnumType.

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

Lê um NamedBitList de source com uma marca especificada de acordo com as regras de codificação determinadas, convertendo-o para a enumeração [FlagsAttribute] especificada por TFlagsEnum.

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

Origem:
AsnDecoder.NamedBitList.cs
Origem:
AsnDecoder.NamedBitList.cs
Origem:
AsnDecoder.NamedBitList.cs

Lê um NamedBitList de source com uma marca especificada de acordo com as regras de codificação determinadas, convertendo-o para a enumeração [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>

Buffer que contém dados codificados.

ruleSet
AsnEncodingRules

As restrições de codificação a serem usadas ao interpretar os dados.

flagsEnumType
Type

Objeto type que representa o tipo de destino.

bytesConsumed
Int32

Quando esse método é retornado, o número total de bytes para o valor codificado. Esse parâmetro é tratado como não inicializado.

expectedTag
Nullable<Asn1Tag>

A marca a verificar antes da leitura ou null para a marca padrão (Universal 3).

Retornos

O valor de NamedBitList convertido em flagsEnumType.

Exceções

ruleSet não está definido.

O próximo valor não tem a marca correta.

-ou-

A codificação de comprimento não é válida de acordo com as regras de codificação atuais.

-ou-

O conteúdo não é válido de acordo com as regras de codificação atuais.

-ou-

O valor codificado é muito grande para caber em um flagsEnumType valor.

flagsEnumType não é um tipo enumerado.

-ou-

flagsEnumType não foi declarado com FlagsAttribute

-ou-

expectedTag.TagClass é Universal, mas expectedTag.TagValue não está correto para o método .

flagsEnumType é null

Aplica-se a

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

Origem:
AsnDecoder.NamedBitList.cs
Origem:
AsnDecoder.NamedBitList.cs
Origem:
AsnDecoder.NamedBitList.cs

Lê um NamedBitList de source com uma marca especificada de acordo com as regras de codificação determinadas, convertendo-o para a enumeração [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 enumeração de destino.

Parâmetros

source
ReadOnlySpan<Byte>

Buffer que contém dados codificados.

ruleSet
AsnEncodingRules

As restrições de codificação a serem usadas ao interpretar os dados.

bytesConsumed
Int32

Quando esse método é retornado, o número total de bytes para o valor codificado. Esse parâmetro é tratado como não inicializado.

expectedTag
Nullable<Asn1Tag>

A marca a verificar antes da leitura ou null para a marca padrão (Universal 3).

Retornos

TFlagsEnum

O valor de NamedBitList convertido em TFlagsEnum.

Exceções

ruleSet não está definido.

O próximo valor não tem a marca correta.

-ou-

A codificação de comprimento não é válida de acordo com as regras de codificação atuais.

-ou-

O conteúdo não é válido de acordo com as regras de codificação atuais.

-ou-

O valor codificado é muito grande para caber em um TFlagsEnum valor.

TFlagsEnum não é um tipo enumerado.

-ou-

TFlagsEnum não foi declarado com FlagsAttribute

-ou-

expectedTag.TagClass é Universal, mas expectedTag.TagValue não está correto para o método .

Comentários

O alinhamento de bits executado por esse método é interpretar o bit mais significativo no primeiro byte do valor como o bit menos significativo em TFlagsEnum, com bits aumentando em valor até o bit menos significativo do primeiro byte, continuando com o bit mais significativo do segundo byte e assim por diante. Nesse esquema, a seguinte declaração de tipo ASN.1 e a enumeração C# podem ser usadas juntas:

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

Embora o exemplo aqui use o KeyUsage NamedBitList do RFC 3280 (4.2.1.3), a enumeração de exemplo usa valores diferentes de X509KeyUsageFlags.

Aplica-se a