Partage via


AsnDecoder.ReadNamedBitListValue Méthode

Définition

Surcharges

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

Lit une valeur NamedBitList à partir de source avec une balise spécifiée selon les règles d’encodage spécifiées, en la convertissant en l’enum [FlagsAttribute] spécifiée par flagsEnumType.

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

Lit une valeur NamedBitList à partir de source avec une balise spécifiée selon les règles d’encodage spécifiées, en la convertissant en l’enum [FlagsAttribute] spécifiée par TFlagsEnum.

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

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

Lit une valeur NamedBitList à partir de source avec une balise spécifiée selon les règles d’encodage spécifiées, en la convertissant en l’enum [FlagsAttribute] spécifiée par 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

Paramètres

source
ReadOnlySpan<Byte>

Mémoire tampon contenant les données encodées.

ruleSet
AsnEncodingRules

Contraintes d’encodage à utiliser lors de l’interprétation des données.

flagsEnumType
Type

Objet type représentant le type de destination.

bytesConsumed
Int32

Lorsque cette méthode retourne une valeur, nombre total d’octets pour la valeur encodée. Ce paramètre est traité comme étant non initialisé.

expectedTag
Nullable<Asn1Tag>

Balise à vérifier avant la lecture, ou null pour la balise par défaut (Universal 3).

Retours

Valeur NamedBitList convertie en flagsEnumType.

Exceptions

ruleSet n’est pas défini.

La valeur suivante n’a pas la balise correcte.

-ou-

L’encodage de longueur n’est pas valide selon les règles d’encodage actuelles.

-ou-

Le contenu n’est pas valide selon les règles d’encodage actuelles.

-ou-

La valeur encodée est trop grande pour tenir dans une flagsEnumType valeur.

flagsEnumType n’est pas un type d’enum.

-ou-

flagsEnumType n’a pas été déclaré avec FlagsAttribute

-ou-

expectedTag.TagClass est Universal, mais expectedTag.TagValue n’est pas correct pour la méthode .

flagsEnumType est null

S’applique à

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

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

Lit une valeur NamedBitList à partir de source avec une balise spécifiée selon les règles d’encodage spécifiées, en la convertissant en l’enum [FlagsAttribute] spécifiée par 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

Paramètres de type

TFlagsEnum

Type d’énumération de destination.

Paramètres

source
ReadOnlySpan<Byte>

Mémoire tampon contenant les données encodées.

ruleSet
AsnEncodingRules

Contraintes d’encodage à utiliser lors de l’interprétation des données.

bytesConsumed
Int32

Lorsque cette méthode retourne une valeur, nombre total d’octets pour la valeur encodée. Ce paramètre est traité comme étant non initialisé.

expectedTag
Nullable<Asn1Tag>

Balise à vérifier avant la lecture, ou null pour la balise par défaut (Universal 3).

Retours

TFlagsEnum

Valeur NamedBitList convertie en TFlagsEnum.

Exceptions

ruleSet n’est pas défini.

La valeur suivante n’a pas la balise correcte.

-ou-

L’encodage de longueur n’est pas valide selon les règles d’encodage actuelles.

-ou-

Le contenu n’est pas valide selon les règles d’encodage actuelles.

-ou-

La valeur encodée est trop grande pour tenir dans une TFlagsEnum valeur.

TFlagsEnum n’est pas un type d’enum.

-ou-

TFlagsEnum n’a pas été déclaré avec FlagsAttribute

-ou-

expectedTag.TagClass est Universal, mais expectedTag.TagValue n’est pas correct pour la méthode .

Remarques

L’alignement de bits effectué par cette méthode consiste à interpréter le bit le plus significatif dans le premier octet de la valeur comme le bit le moins significatif dans TFlagsEnum, les bits augmentant en valeur jusqu’au bit le moins significatif du premier octet, en procédant avec le bit le plus significatif du deuxième octet, et ainsi de suite. Dans ce schéma, la déclaration de type ASN.1 et l’énumération C# suivantes peuvent être utilisées ensemble :

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

Bien que l’exemple utilise ici keyUsage NamedBitList de RFC 3280 (4.2.1.3), l’exemple d’énumération utilise des valeurs qui sont différentes de X509KeyUsageFlags.

S’applique à