AsnDecoder.ReadNamedBitListValue Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Überlädt
| ReadNamedBitListValue(ReadOnlySpan<Byte>, AsnEncodingRules, Type, Int32, Nullable<Asn1Tag>) |
Liest eine NamedBitList aus |
| ReadNamedBitListValue<TFlagsEnum>(ReadOnlySpan<Byte>, AsnEncodingRules, Int32, Nullable<Asn1Tag>) |
Liest eine NamedBitList aus |
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.
Das Tag, das vor dem Lesen überprüft werden soll, oder null für das Standardtag (Universell 3).
Gibt zurück
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.
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.