Partilhar via


ValueAsnReader.ReadNamedBitListValue Método

Definição

Sobrecargas

Nome Description
ReadNamedBitListValue(Type, Nullable<Asn1Tag>)

Lê o próximo valor como um NamedBitList com uma marca especificada, convertendo-o na enumeração [FlagsAttribute] especificada por flagsEnumType.

ReadNamedBitListValue<TFlagsEnum>(Nullable<Asn1Tag>)

Lê o próximo valor como um NamedBitList com uma marca especificada, convertendo-o na enumeração [FlagsAttribute] especificada por TFlagsEnum.

ReadNamedBitListValue(Type, Nullable<Asn1Tag>)

Origem:
AsnDecoder.NamedBitList.cs

Lê o próximo valor como um NamedBitList com uma marca especificada, convertendo-o na enumeração [FlagsAttribute] especificada por 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

Parâmetros

flagsEnumType
Type

Tipo de objeto que representa o tipo de destino.

expectedTag
Nullable<Asn1Tag>

A marca a ser verificada antes da leitura.

Retornos

O valor NamedBitList convertido em um flagsEnumType.

Exceções

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 nas regras de codificação atuais.

- ou -

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

flagsEnumType não é um tipo de enumeração.

 -or-

 <code data-dev-comment-type="paramref">flagsEnumType</code> was not declared with <xref data-throw-if-not-resolved="true" uid="System.FlagsAttribute"></xref>

 -or-

 <code data-dev-comment-type="paramref">expectedTag</code>.<xref data-throw-if-not-resolved="true" uid="System.Formats.Asn1.Asn1Tag.TagClass"></xref> is
 <xref data-throw-if-not-resolved="true" uid="System.Formats.Asn1.TagClass.Universal"></xref>, but
 <code data-dev-comment-type="paramref">expectedTag</code>.<xref data-throw-if-not-resolved="true" uid="System.Formats.Asn1.Asn1Tag.TagValue"></xref> is not correct for
 the method.

flagsEnumType é null

Confira também

Aplica-se a

ReadNamedBitListValue<TFlagsEnum>(Nullable<Asn1Tag>)

Origem:
AsnDecoder.NamedBitList.cs

Lê o próximo valor como um NamedBitList com uma marca especificada, convertendo-o na enumeração [FlagsAttribute] especificada por 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

Parâmetros de tipo

TFlagsEnum

O tipo de enumeração de destino.

Parâmetros

expectedTag
Nullable<Asn1Tag>

A marca a ser verificada antes da leitura.

Retornos

TFlagsEnum

O valor NamedBitList convertido em um TFlagsEnum.

Exceções

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 nas regras de codificação atuais.

- ou -

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

TFlagsEnum não é um tipo de enumeração.

 -or-

 <code data-dev-comment-type="typeparamref">TFlagsEnum</code> was not declared with <xref data-throw-if-not-resolved="true" uid="System.FlagsAttribute"></xref>

 -or-

 <code data-dev-comment-type="paramref">expectedTag</code>.<xref data-throw-if-not-resolved="true" uid="System.Formats.Asn1.Asn1Tag.TagClass"></xref> is
 <xref data-throw-if-not-resolved="true" uid="System.Formats.Asn1.TagClass.Universal"></xref>, but
 <code data-dev-comment-type="paramref">expectedTag</code>.<xref data-throw-if-not-resolved="true" uid="System.Formats.Asn1.Asn1Tag.TagValue"></xref> is not correct for
 the method.

Comentários

O alinhamento de bit 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 enumeração C# podem ser usadas em conjunto:

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 System.Security.Cryptography.X509Certificates.X509KeyUsageFlags.

Aplica-se a