AsnDecoder.ReadNamedBitListValue Metoda

Definicja

Przeciążenia

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

Odczytuje element NamedBitList z source określonego tagu zgodnie z określonymi regułami kodowania, konwertuje go na wyliczenie [FlagsAttribute] określone przez flagsEnumType.

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

Odczytuje element NamedBitList z source z określonym tagiem zgodnie z określonymi regułami kodowania, konwertując go na wyliczenie [FlagsAttribute] określone przez TFlagsEnum.

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

Odczytuje element NamedBitList z source określonego tagu zgodnie z określonymi regułami kodowania, konwertuje go na wyliczenie [FlagsAttribute] określone przez 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

Parametry

source
ReadOnlySpan<Byte>

Bufor zawierający zakodowane dane.

ruleSet
AsnEncodingRules

Ograniczenia kodowania używane podczas interpretowania danych.

flagsEnumType
Type

Wpisz obiekt reprezentujący typ docelowy.

bytesConsumed
Int32

Gdy ta metoda zostanie zwrócona, całkowita liczba bajtów dla zakodowanej wartości. Ten parametr jest traktowany jako niezainicjowany.

expectedTag
Nullable<Asn1Tag>

Tag do sprawdzenia przed odczytaniem lub null dla tagu domyślnego (Universal 3).

Zwraca

Enum

Wartość NamedBitList przekonwertowana na flagsEnumTypewartość .

Wyjątki

ruleSet nie jest zdefiniowany.

Następna wartość nie ma poprawnego tagu.

-lub-

Kodowanie długości jest nieprawidłowe w ramach bieżących reguł kodowania.

-lub-

Zawartość nie jest prawidłowa zgodnie z bieżącymi regułami kodowania.

-lub-

Zakodowana wartość jest zbyt duża, aby zmieścić się w flagsEnumType wartości.

flagsEnumType nie jest typem wyliczenia.

-lub-

flagsEnumType nie został zadeklarowany za pomocą polecenia FlagsAttribute

-lub-

expectedTag.TagClass to Universal, ale expectedTag.TagValue metoda nie jest poprawna.

flagsEnumType to null

Dotyczy

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

Odczytuje element NamedBitList z source z określonym tagiem zgodnie z określonymi regułami kodowania, konwertując go na wyliczenie [FlagsAttribute] określone przez 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

Parametry typu

TFlagsEnum

Typ wyliczenia docelowego.

Parametry

source
ReadOnlySpan<Byte>

Bufor zawierający zakodowane dane.

ruleSet
AsnEncodingRules

Ograniczenia kodowania, które mają być używane podczas interpretowania danych.

bytesConsumed
Int32

Gdy ta metoda zwraca, łączna liczba bajtów dla zakodowanej wartości. Ten parametr jest traktowany jako niezainicjowany.

expectedTag
Nullable<Asn1Tag>

Tag do sprawdzenia przed odczytaniem lub null tagu domyślnego (Universal 3).

Zwraca

TFlagsEnum

Wartość NamedBitList przekonwertowana na TFlagsEnumwartość .

Wyjątki

ruleSet nie jest zdefiniowany.

Następna wartość nie ma poprawnego tagu.

-lub-

Kodowanie długości jest nieprawidłowe w ramach bieżących reguł kodowania.

-lub-

Zawartość nie jest prawidłowa zgodnie z bieżącymi regułami kodowania.

-lub-

Zakodowana wartość jest zbyt duża, aby zmieścić się w TFlagsEnum wartości.

TFlagsEnum nie jest typem wyliczenia.

-lub-

TFlagsEnum nie został zadeklarowany za pomocą polecenia FlagsAttribute

-lub-

expectedTag.TagClass to Universal, ale expectedTag.TagValue metoda nie jest poprawna.

Uwagi

Wyrównanie bitów wykonywane przez tę metodę polega na interpretowaniu najbardziej znaczącego bitu w pierwszym bajtzie wartości jako najmniej znaczącego bitu w TFlagsEnumelemecie , przy czym bity wzrastają w wartości do najmniej znaczącego bitu pierwszego bajtu, postępując zgodnie z najbardziej znaczącym bitem drugiego bajtu itd. W ramach tego schematu można używać razem następującej deklaracji typu ASN.1 i wyliczenia języka C#:

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 tym przykładzie użyto metody KeyUsage NamedBitList z RFC 3280 (4.2.1.3), wyliczenie przykładowe używa wartości innych niż X509KeyUsageFlags.

Dotyczy