AsnDecoder.ReadNamedBitListValue Methode

Definition

Überlädt

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

Liest eine NamedBitList aus source mit einem angegebenen Tag gemäß den angegebenen Codierungsregeln und konvertiert diesen in die durch flagsEnumType angegebene [FlagsAttribute]-Enumeration.

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

Liest eine NamedBitList aus source mit einem angegebenen Tag gemäß den angegebenen Codierungsregeln und konvertiert diesen in die durch TFlagsEnum angegebene [FlagsAttribute]-Enumeration.

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

Liest eine NamedBitList aus source mit einem angegebenen Tag gemäß den angegebenen Codierungsregeln und konvertiert diesen in die durch flagsEnumType angegebene [FlagsAttribute]-Enumeration.

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

Parameter

source
ReadOnlySpan<Byte>

Der Puffer mit codierten Daten.

ruleSet
AsnEncodingRules

Die Codierungseinschränkungen, die beim Interpretieren der Daten verwendet werden sollen.

flagsEnumType
Type

Typobjekt, das den Zieltyp darstellt.

bytesConsumed
Int32

Die Rückgabe dieser Methode ist die Gesamtzahl der Bytes für den codierten Wert. Dieser Parameter wird nicht initialisiert behandelt.

expectedTag
Nullable<Asn1Tag>

Das Tag, das vor dem Lesen überprüft werden soll, oder null für das Standardtag (Universell 3).

Gibt zurück

Enum

Der in einen flagsEnumType konvertierte NamedBitList-Wert.

Ausnahmen

ruleSet ist nicht definiert.

Der nächste Wert verfügt nicht über das richtige Tag.

Oder

Die Längencodierung ist unter den aktuellen Codierungsregeln ungültig.

Oder

Der Inhalt ist unter den aktuellen Codierungsregeln nicht gültig.

Oder

Der codierte Wert ist zu groß, um in einen flagsEnumType Wert einzupassen.

flagsEnumType ist kein Enumerationstyp.

Oder

flagsEnumType wurde nicht deklariert mit FlagsAttribute

- oder -

expectedTag.TagClass ist Universal, aber expectedTag.TagValue ist für die Methode nicht korrekt.

flagsEnumType ist gleich null.

Gilt für:

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

Liest eine NamedBitList aus source mit einem angegebenen Tag gemäß den angegebenen Codierungsregeln und konvertiert diesen in die durch TFlagsEnum angegebene [FlagsAttribute]-Enumeration.

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

Typparameter

TFlagsEnum

Enumerationstyp des Ziels.

Parameter

source
ReadOnlySpan<Byte>

Der Puffer, der codierte Daten enthält.

ruleSet
AsnEncodingRules

Die Codierungseinschränkungen, die beim Interpretieren der Daten verwendet werden sollen.

bytesConsumed
Int32

Die Rückgabe dieser Methode ist die Gesamtzahl der Bytes für den codierten Wert. Dieser Parameter wird nicht initialisiert behandelt.

expectedTag
Nullable<Asn1Tag>

Das Tag, das vor dem Lesen überprüft werden soll, oder null für das Standardtag (Universell 3).

Gibt zurück

TFlagsEnum

Der in ein TFlagsEnum-Element konvertierte NamedBitList-Wert.

Ausnahmen

ruleSet ist nicht definiert.

Der nächste Wert verfügt nicht über das richtige Tag.

Oder

Die Längencodierung ist unter den aktuellen Codierungsregeln ungültig.

Oder

Der Inhalt ist unter den aktuellen Codierungsregeln nicht gültig.

Oder

Der codierte Wert ist zu groß, um in einen TFlagsEnum Wert einzupassen.

TFlagsEnum ist kein Enumerationstyp.

Oder

TFlagsEnum wurde nicht deklariert mit FlagsAttribute

- oder -

expectedTag.TagClass ist Universal, aber expectedTag.TagValue ist für die Methode nicht richtig.

Hinweise

Die von dieser Methode durchgeführte Bitausrichtung besteht darin, das wichtigste Bit im ersten Byte des Werts als am wenigsten signifikanten Bit in TFlagsEnum, wobei Bits bis zum geringsten signifikanten Bit des ersten Bytes interpretiert werden, das mit dem wichtigsten Bit des zweiten Bytes fortgeht usw. Unter diesem Schema kann die folgende ASN.1-Typdeklaration und C#-Enumeration zusammen verwendet werden:

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

Während im folgenden Beispiel die KeyUsage NamedBitList aus RFC 3280 (4.2.1.3) verwendet wird, verwendet die Beispielume Werte, die sich von X509KeyUsageFlagsdem unterscheiden.

Gilt für: