Udostępnij za pośrednictwem


AsnDecoder.ReadNamedBitListValue Metoda

Definicja

Przeciążenia

ReadNamedBitListValue(ReadOnlySpan<Byte>, AsnEncodingRules, Type, 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 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>)

Źródło:
AsnDecoder.NamedBitList.cs
Źródło:
AsnDecoder.NamedBitList.cs
Źródło:
AsnDecoder.NamedBitList.cs

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 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, które mają być używane podczas interpretowania danych.

flagsEnumType
Type

Typ obiektu reprezentującego typ docelowy.

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

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 expectedTagTagValue . nie jest poprawna dla metody .

flagsEnumType to null

Dotyczy

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

Źródło:
AsnDecoder.NamedBitList.cs
Źródło:
AsnDecoder.NamedBitList.cs
Źródło:
AsnDecoder.NamedBitList.cs

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 expectedTagTagValue . nie jest poprawna dla metody .

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 zwiększają wartość 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