Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
AsnValueReader.cs
Go to the documentation of this file.
1namespace System.Formats.Asn1;
2
3internal ref struct AsnValueReader
4{
5 private static readonly byte[] s_singleByte = new byte[1];
6
7 private ReadOnlySpan<byte> _span;
8
9 private readonly AsnEncodingRules _ruleSet;
10
11 internal bool HasData => !_span.IsEmpty;
12
14 {
15 _span = span;
16 _ruleSet = ruleSet;
17 }
18
19 internal void ThrowIfNotEmpty()
20 {
21 if (!_span.IsEmpty)
22 {
24 }
25 }
26
27 internal Asn1Tag PeekTag()
28 {
29 int bytesConsumed;
30 return Asn1Tag.Decode(_span, out bytesConsumed);
31 }
32
34 {
35 AsnDecoder.ReadEncodedValue(_span, _ruleSet, out var _, out var _, out var bytesConsumed);
36 return _span.Slice(0, bytesConsumed);
37 }
38
40 {
42 _span = _span.Slice(result.Length);
43 return result;
44 }
45
46 internal bool TryReadInt32(out int value, Asn1Tag? expectedTag = null)
47 {
48 int bytesConsumed;
49 bool result = AsnDecoder.TryReadInt32(_span, _ruleSet, out value, out bytesConsumed, expectedTag);
50 _span = _span.Slice(bytesConsumed);
51 return result;
52 }
53
54 internal ReadOnlySpan<byte> ReadIntegerBytes(Asn1Tag? expectedTag = null)
55 {
56 int bytesConsumed;
57 ReadOnlySpan<byte> result = AsnDecoder.ReadIntegerBytes(_span, _ruleSet, out bytesConsumed, expectedTag);
58 _span = _span.Slice(bytesConsumed);
59 return result;
60 }
61
62 internal bool TryReadPrimitiveBitString(out int unusedBitCount, out ReadOnlySpan<byte> value, Asn1Tag? expectedTag = null)
63 {
64 int bytesConsumed;
65 bool result = AsnDecoder.TryReadPrimitiveBitString(_span, _ruleSet, out unusedBitCount, out value, out bytesConsumed, expectedTag);
66 _span = _span.Slice(bytesConsumed);
67 return result;
68 }
69
70 internal byte[] ReadBitString(out int unusedBitCount, Asn1Tag? expectedTag = null)
71 {
72 int bytesConsumed;
73 byte[] result = AsnDecoder.ReadBitString(_span, _ruleSet, out unusedBitCount, out bytesConsumed, expectedTag);
74 _span = _span.Slice(bytesConsumed);
75 return result;
76 }
77
78 internal bool TryReadPrimitiveOctetString(out ReadOnlySpan<byte> value, Asn1Tag? expectedTag = null)
79 {
80 int bytesConsumed;
81 bool result = AsnDecoder.TryReadPrimitiveOctetString(_span, _ruleSet, out value, out bytesConsumed, expectedTag);
82 _span = _span.Slice(bytesConsumed);
83 return result;
84 }
85
86 internal byte[] ReadOctetString(Asn1Tag? expectedTag = null)
87 {
88 int bytesConsumed;
89 byte[] result = AsnDecoder.ReadOctetString(_span, _ruleSet, out bytesConsumed, expectedTag);
90 _span = _span.Slice(bytesConsumed);
91 return result;
92 }
93
94 internal string ReadObjectIdentifier(Asn1Tag? expectedTag = null)
95 {
96 int bytesConsumed;
97 string result = AsnDecoder.ReadObjectIdentifier(_span, _ruleSet, out bytesConsumed, expectedTag);
98 _span = _span.Slice(bytesConsumed);
99 return result;
100 }
101
103 {
104 AsnDecoder.ReadSequence(_span, _ruleSet, out var contentOffset, out var contentLength, out var bytesConsumed, expectedTag);
105 ReadOnlySpan<byte> span = _span.Slice(contentOffset, contentLength);
106 _span = _span.Slice(bytesConsumed);
107 return new System.Formats.Asn1.AsnValueReader(span, _ruleSet);
108 }
109
111 {
112 AsnDecoder.ReadSetOf(_span, _ruleSet, out var contentOffset, out var contentLength, out var bytesConsumed, skipSortOrderValidation: false, expectedTag);
113 ReadOnlySpan<byte> span = _span.Slice(contentOffset, contentLength);
114 _span = _span.Slice(bytesConsumed);
115 return new System.Formats.Asn1.AsnValueReader(span, _ruleSet);
116 }
117}
static ReadOnlySpan< byte > ReadIntegerBytes(ReadOnlySpan< byte > source, AsnEncodingRules ruleSet, out int bytesConsumed, Asn1Tag? expectedTag=null)
static void ReadSetOf(ReadOnlySpan< byte > source, AsnEncodingRules ruleSet, out int contentOffset, out int contentLength, out int bytesConsumed, bool skipSortOrderValidation=false, Asn1Tag? expectedTag=null)
static byte[] ReadBitString(ReadOnlySpan< byte > source, AsnEncodingRules ruleSet, out int unusedBitCount, out int bytesConsumed, Asn1Tag? expectedTag=null)
static byte[] ReadOctetString(ReadOnlySpan< byte > source, AsnEncodingRules ruleSet, out int bytesConsumed, Asn1Tag? expectedTag=null)
static string ReadObjectIdentifier(ReadOnlySpan< byte > source, AsnEncodingRules ruleSet, out int bytesConsumed, Asn1Tag? expectedTag=null)
static bool TryReadPrimitiveOctetString(ReadOnlySpan< byte > source, AsnEncodingRules ruleSet, out ReadOnlySpan< byte > value, out int bytesConsumed, Asn1Tag? expectedTag=null)
static bool TryReadInt32(ReadOnlySpan< byte > source, AsnEncodingRules ruleSet, out int value, out int bytesConsumed, Asn1Tag? expectedTag=null)
static void ReadSequence(ReadOnlySpan< byte > source, AsnEncodingRules ruleSet, out int contentOffset, out int contentLength, out int bytesConsumed, Asn1Tag? expectedTag=null)
static Asn1Tag ReadEncodedValue(ReadOnlySpan< byte > source, AsnEncodingRules ruleSet, out int contentOffset, out int contentLength, out int bytesConsumed)
Definition AsnDecoder.cs:57
static bool TryReadPrimitiveBitString(ReadOnlySpan< byte > source, AsnEncodingRules ruleSet, out int unusedBitCount, out ReadOnlySpan< byte > value, out int bytesConsumed, Asn1Tag? expectedTag=null)
static Asn1Tag Decode(ReadOnlySpan< byte > source, out int bytesConsumed)
Definition Asn1Tag.cs:141
System.Formats.Asn1.AsnValueReader ReadSetOf(Asn1Tag? expectedTag=null)
ReadOnlySpan< byte > ReadIntegerBytes(Asn1Tag? expectedTag=null)
System.Formats.Asn1.AsnValueReader ReadSequence(Asn1Tag? expectedTag=null)
readonly AsnEncodingRules _ruleSet
static readonly byte[] s_singleByte
string ReadObjectIdentifier(Asn1Tag? expectedTag=null)
bool TryReadInt32(out int value, Asn1Tag? expectedTag=null)
ReadOnlySpan< byte > ReadEncodedValue()
ReadOnlySpan< byte > PeekEncodedValue()
bool TryReadPrimitiveOctetString(out ReadOnlySpan< byte > value, Asn1Tag? expectedTag=null)
AsnValueReader(ReadOnlySpan< byte > span, AsnEncodingRules ruleSet)
byte[] ReadOctetString(Asn1Tag? expectedTag=null)
byte[] ReadBitString(out int unusedBitCount, Asn1Tag? expectedTag=null)
bool TryReadPrimitiveBitString(out int unusedBitCount, out ReadOnlySpan< byte > value, Asn1Tag? expectedTag=null)
ReadOnlySpan< T > Slice(int start)