AsnDecoder.ReadNamedBitListValue 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
ReadNamedBitListValue(ReadOnlySpan<Byte>, AsnEncodingRules, Type, Int32, Nullable<Asn1Tag>) |
在指定的編碼規則下,從 |
ReadNamedBitListValue<TFlagsEnum>(ReadOnlySpan<Byte>, AsnEncodingRules, Int32, Nullable<Asn1Tag>) |
在指定的編碼規則下,從 |
ReadNamedBitListValue(ReadOnlySpan<Byte>, AsnEncodingRules, Type, Int32, Nullable<Asn1Tag>)
在指定的編碼規則下,從 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
代表目的型別的 Type 物件。
- bytesConsumed
- Int32
當此方法傳回時,編碼值的位元組總數。 這個參數會被視為未初始化。
傳回
轉換成 flagsEnumType
的 NamedBitList 值。
例外狀況
未定義ruleSet
。
下一個值沒有正確的標記。
-或-
長度編碼在目前的編碼規則下無效。
-或-
內容在目前的編碼規則下無效。
-或-
編碼的值太大,無法放入 flagsEnumType
值中。
flagsEnumType
不是列舉類型。
-或-
flagsEnumType
未使用 宣告 FlagsAttribute
-或-
expectedTag
。TagClass是 Universal,但 expectedTag
TagValue 對方法而言不正確。
flagsEnumType
是 null
適用於
ReadNamedBitListValue<TFlagsEnum>(ReadOnlySpan<Byte>, AsnEncodingRules, Int32, Nullable<Asn1Tag>)
在指定的編碼規則下,從 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
當此方法傳回時,編碼值的位元組總數。 這個參數會被視為未初始化。
傳回
轉換成 TFlagsEnum
的 NamedBitList 值。
例外狀況
未定義ruleSet
。
下一個值沒有正確的標記。
-或-
長度編碼在目前的編碼規則下無效。
-或-
內容在目前的編碼規則下無效。
-或-
編碼的值太大,無法放入 TFlagsEnum
值中。
TFlagsEnum
不是列舉類型。
-或-
TFlagsEnum
未使用 宣告 FlagsAttribute
-或-
expectedTag
。TagClass是 Universal,但 expectedTag
TagValue 對方法而言不正確。
備註
這個方法執行的位對齊方式是將值之第一個字節中的最有效位解譯為 中 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 中的 KeyUsage NamedBitList (4.2.1.3) ,但範例列舉會使用不同於 X509KeyUsageFlags的值。