다음을 통해 공유


AsnDecoder.ReadNamedBitListValue 메서드

정의

오버로드

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

지정된 인코딩 규칙에 따라 지정된 태그가 있는 source에서 NamedBitList를 읽어 flagsEnumType으로 지정된 [FlagsAttribute] 열거형으로 변환합니다.

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

지정된 인코딩 규칙에 따라 지정된 태그가 있는 source에서 NamedBitList를 읽어 TFlagsEnum으로 지정된 [FlagsAttribute] 열거형으로 변환합니다.

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

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

지정된 인코딩 규칙에 따라 지정된 태그가 있는 source에서 NamedBitList를 읽어 flagsEnumType으로 지정된 [FlagsAttribute] 열거형으로 변환합니다.

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

매개 변수

source
ReadOnlySpan<Byte>

인코딩된 데이터를 포함하는 버퍼입니다.

ruleSet
AsnEncodingRules

데이터를 해석할 때 사용할 인코딩 제약 조건입니다.

flagsEnumType
Type

대상 형식을 나타내는 형식 개체입니다.

bytesConsumed
Int32

이 메서드가 반환될 때 인코딩된 값의 총 바이트 수입니다. 이 매개 변수는 초기화되지 않은 것으로 처리됩니다.

expectedTag
Nullable<Asn1Tag>

읽기 전에 확인할 태그이거나, 기본 태그(유니버설 3)의 경우 null입니다.

반환

flagsEnumType으로 변환된 NamedBitList 값입니다.

예외

ruleSet이 정의되어 있지 않습니다.

다음 값에 올바른 태그가 없습니다.

또는

길이 인코딩은 현재 인코딩 규칙에 따라 유효하지 않습니다.

또는

콘텐츠는 현재 인코딩 규칙에 따라 유효하지 않습니다.

또는

인코딩된 값이 너무 커서 값에 flagsEnumType 맞지 않습니다.

flagsEnumType이 열거형 형식이 아닙니다.

또는

flagsEnumType 로 선언되지 않았습니다. FlagsAttribute

또는

expectedTag을 선택합니다.TagClassUniversal이지만 expectedTagTagValue 메서드에 대해 가 올바르지 않습니다.

flagsEnumTypenull입니다.

적용 대상

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

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

지정된 인코딩 규칙에 따라 지정된 태그가 있는 source에서 NamedBitList를 읽어 TFlagsEnum으로 지정된 [FlagsAttribute] 열거형으로 변환합니다.

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

형식 매개 변수

TFlagsEnum

대상 열거형 형식입니다.

매개 변수

source
ReadOnlySpan<Byte>

인코딩된 데이터를 포함하는 버퍼입니다.

ruleSet
AsnEncodingRules

데이터를 해석할 때 사용할 인코딩 제약 조건입니다.

bytesConsumed
Int32

이 메서드가 반환될 때 인코딩된 값의 총 바이트 수입니다. 이 매개 변수는 초기화되지 않은 것으로 처리됩니다.

expectedTag
Nullable<Asn1Tag>

읽기 전에 확인할 태그이거나, 기본 태그(유니버설 3)의 경우 null입니다.

반환

TFlagsEnum

TFlagsEnum으로 변환된 NamedBitList 값입니다.

예외

ruleSet이 정의되어 있지 않습니다.

다음 값에 올바른 태그가 없습니다.

또는

길이 인코딩은 현재 인코딩 규칙에 따라 유효하지 않습니다.

또는

콘텐츠는 현재 인코딩 규칙에 따라 유효하지 않습니다.

또는

인코딩된 값이 너무 커서 값에 TFlagsEnum 맞지 않습니다.

TFlagsEnum이 열거형 형식이 아닙니다.

또는

TFlagsEnum 로 선언되지 않았습니다. FlagsAttribute

또는

expectedTag을 선택합니다.TagClassUniversal이지만 expectedTagTagValue 메서드에 대해 가 올바르지 않습니다.

설명

이 메서드가 수행하는 비트 맞춤은 값의 첫 번째 바이트에서 가장 중요한 비트를 에서 TFlagsEnum가장 중요한 비트로 해석하는 것이며, 비트는 첫 번째 바이트의 가장 중요한 비트까지 값이 증가하고 두 번째 바이트의 가장 중요한 비트로 진행하는 등입니다. 이 체계에서 다음 ASN.1 형식 선언 및 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),
}

이 예제에서는 RFC 3280(4.2.1.3)의 KeyUsage NamedBitList를 사용하지만 예제 열거형은 와 X509KeyUsageFlags다른 값을 사용합니다.

적용 대상