Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
AsnReader.cs
Go to the documentation of this file.
3
4namespace System.Formats.Asn1;
5
6public class AsnReader
7{
9
10 private readonly AsnReaderOptions _options;
11
12 public AsnEncodingRules RuleSet { get; }
13
14 public bool HasData => !_data.IsEmpty;
15
17 {
19 _data = data;
20 RuleSet = ruleSet;
22 }
23
24 public void ThrowIfNotEmpty()
25 {
26 if (HasData)
27 {
29 }
30 }
31
33 {
34 int bytesConsumed;
35 return Asn1Tag.Decode(_data.Span, out bytesConsumed);
36 }
37
39 {
40 AsnDecoder.ReadEncodedValue(_data.Span, RuleSet, out var _, out var _, out var bytesConsumed);
41 return _data.Slice(0, bytesConsumed);
42 }
43
45 {
46 AsnDecoder.ReadEncodedValue(_data.Span, RuleSet, out var contentOffset, out var contentLength, out var _);
47 return _data.Slice(contentOffset, contentLength);
48 }
49
51 {
53 _data = _data.Slice(result.Length);
54 return result;
55 }
56
58 {
60 }
61
62 public bool TryReadPrimitiveBitString(out int unusedBitCount, out ReadOnlyMemory<byte> value, Asn1Tag? expectedTag = null)
63 {
64 ReadOnlySpan<byte> value2;
65 int bytesConsumed;
66 bool flag = AsnDecoder.TryReadPrimitiveBitString(_data.Span, RuleSet, out unusedBitCount, out value2, out bytesConsumed, expectedTag);
67 if (flag)
68 {
69 value = AsnDecoder.Slice(_data, value2);
70 _data = _data.Slice(bytesConsumed);
71 }
72 else
73 {
74 value = default(ReadOnlyMemory<byte>);
75 }
76 return flag;
77 }
78
79 public bool TryReadBitString(Span<byte> destination, out int unusedBitCount, out int bytesWritten, Asn1Tag? expectedTag = null)
80 {
81 int bytesConsumed;
82 bool flag = AsnDecoder.TryReadBitString(_data.Span, destination, RuleSet, out unusedBitCount, out bytesConsumed, out bytesWritten, expectedTag);
83 if (flag)
84 {
85 _data = _data.Slice(bytesConsumed);
86 }
87 return flag;
88 }
89
90 public byte[] ReadBitString(out int unusedBitCount, Asn1Tag? expectedTag = null)
91 {
92 int bytesConsumed;
93 byte[] result = AsnDecoder.ReadBitString(_data.Span, RuleSet, out unusedBitCount, out bytesConsumed, expectedTag);
94 _data = _data.Slice(bytesConsumed);
95 return result;
96 }
97
98 public bool ReadBoolean(Asn1Tag? expectedTag = null)
99 {
100 int bytesConsumed;
101 bool result = AsnDecoder.ReadBoolean(_data.Span, RuleSet, out bytesConsumed, expectedTag);
102 _data = _data.Slice(bytesConsumed);
103 return result;
104 }
105
107 {
108 int bytesConsumed;
109 ReadOnlySpan<byte> smaller = AsnDecoder.ReadEnumeratedBytes(_data.Span, RuleSet, out bytesConsumed, expectedTag);
110 ReadOnlyMemory<byte> result = AsnDecoder.Slice(_data, smaller);
111 _data = _data.Slice(bytesConsumed);
112 return result;
113 }
114
115 public TEnum ReadEnumeratedValue<TEnum>(Asn1Tag? expectedTag = null) where TEnum : Enum
116 {
117 int bytesConsumed;
118 TEnum result = AsnDecoder.ReadEnumeratedValue<TEnum>(_data.Span, RuleSet, out bytesConsumed, expectedTag);
119 _data = _data.Slice(bytesConsumed);
120 return result;
121 }
122
123 public Enum ReadEnumeratedValue(Type enumType, Asn1Tag? expectedTag = null)
124 {
125 int bytesConsumed;
126 Enum result = AsnDecoder.ReadEnumeratedValue(_data.Span, RuleSet, enumType, out bytesConsumed, expectedTag);
127 _data = _data.Slice(bytesConsumed);
128 return result;
129 }
130
131 public DateTimeOffset ReadGeneralizedTime(Asn1Tag? expectedTag = null)
132 {
133 int bytesConsumed;
134 DateTimeOffset result = AsnDecoder.ReadGeneralizedTime(_data.Span, RuleSet, out bytesConsumed, expectedTag);
135 _data = _data.Slice(bytesConsumed);
136 return result;
137 }
138
140 {
141 int bytesConsumed;
142 ReadOnlySpan<byte> smaller = AsnDecoder.ReadIntegerBytes(_data.Span, RuleSet, out bytesConsumed, expectedTag);
143 ReadOnlyMemory<byte> result = AsnDecoder.Slice(_data, smaller);
144 _data = _data.Slice(bytesConsumed);
145 return result;
146 }
147
148 public BigInteger ReadInteger(Asn1Tag? expectedTag = null)
149 {
150 int bytesConsumed;
151 BigInteger result = AsnDecoder.ReadInteger(_data.Span, RuleSet, out bytesConsumed, expectedTag);
152 _data = _data.Slice(bytesConsumed);
153 return result;
154 }
155
156 public bool TryReadInt32(out int value, Asn1Tag? expectedTag = null)
157 {
158 int bytesConsumed;
159 bool result = AsnDecoder.TryReadInt32(_data.Span, RuleSet, out value, out bytesConsumed, expectedTag);
160 _data = _data.Slice(bytesConsumed);
161 return result;
162 }
163
164 [CLSCompliant(false)]
165 public bool TryReadUInt32(out uint value, Asn1Tag? expectedTag = null)
166 {
167 int bytesConsumed;
168 bool result = AsnDecoder.TryReadUInt32(_data.Span, RuleSet, out value, out bytesConsumed, expectedTag);
169 _data = _data.Slice(bytesConsumed);
170 return result;
171 }
172
173 public bool TryReadInt64(out long value, Asn1Tag? expectedTag = null)
174 {
175 int bytesConsumed;
176 bool result = AsnDecoder.TryReadInt64(_data.Span, RuleSet, out value, out bytesConsumed, expectedTag);
177 _data = _data.Slice(bytesConsumed);
178 return result;
179 }
180
181 [CLSCompliant(false)]
182 public bool TryReadUInt64(out ulong value, Asn1Tag? expectedTag = null)
183 {
184 int bytesConsumed;
185 bool result = AsnDecoder.TryReadUInt64(_data.Span, RuleSet, out value, out bytesConsumed, expectedTag);
186 _data = _data.Slice(bytesConsumed);
187 return result;
188 }
189
190 public TFlagsEnum ReadNamedBitListValue<TFlagsEnum>(Asn1Tag? expectedTag = null) where TFlagsEnum : Enum
191 {
192 int bytesConsumed;
193 TFlagsEnum result = AsnDecoder.ReadNamedBitListValue<TFlagsEnum>(_data.Span, RuleSet, out bytesConsumed, expectedTag);
194 _data = _data.Slice(bytesConsumed);
195 return result;
196 }
197
198 public Enum ReadNamedBitListValue(Type flagsEnumType, Asn1Tag? expectedTag = null)
199 {
200 int bytesConsumed;
201 Enum result = AsnDecoder.ReadNamedBitListValue(_data.Span, RuleSet, flagsEnumType, out bytesConsumed, expectedTag);
202 _data = _data.Slice(bytesConsumed);
203 return result;
204 }
205
206 public BitArray ReadNamedBitList(Asn1Tag? expectedTag = null)
207 {
208 int bytesConsumed;
209 BitArray result = AsnDecoder.ReadNamedBitList(_data.Span, RuleSet, out bytesConsumed, expectedTag);
210 _data = _data.Slice(bytesConsumed);
211 return result;
212 }
213
214 public void ReadNull(Asn1Tag? expectedTag = null)
215 {
216 AsnDecoder.ReadNull(_data.Span, RuleSet, out var bytesConsumed, expectedTag);
217 _data = _data.Slice(bytesConsumed);
218 }
219
220 public bool TryReadOctetString(Span<byte> destination, out int bytesWritten, Asn1Tag? expectedTag = null)
221 {
222 int bytesConsumed;
223 bool flag = AsnDecoder.TryReadOctetString(_data.Span, destination, RuleSet, out bytesConsumed, out bytesWritten, expectedTag);
224 if (flag)
225 {
226 _data = _data.Slice(bytesConsumed);
227 }
228 return flag;
229 }
230
231 public byte[] ReadOctetString(Asn1Tag? expectedTag = null)
232 {
233 int bytesConsumed;
234 byte[] result = AsnDecoder.ReadOctetString(_data.Span, RuleSet, out bytesConsumed, expectedTag);
235 _data = _data.Slice(bytesConsumed);
236 return result;
237 }
238
239 public bool TryReadPrimitiveOctetString(out ReadOnlyMemory<byte> contents, Asn1Tag? expectedTag = null)
240 {
242 int bytesConsumed;
243 bool flag = AsnDecoder.TryReadPrimitiveOctetString(_data.Span, RuleSet, out value, out bytesConsumed, expectedTag);
244 if (flag)
245 {
246 contents = AsnDecoder.Slice(_data, value);
247 _data = _data.Slice(bytesConsumed);
248 }
249 else
250 {
251 contents = default(ReadOnlyMemory<byte>);
252 }
253 return flag;
254 }
255
256 public string ReadObjectIdentifier(Asn1Tag? expectedTag = null)
257 {
258 int bytesConsumed;
259 string result = AsnDecoder.ReadObjectIdentifier(_data.Span, RuleSet, out bytesConsumed, expectedTag);
260 _data = _data.Slice(bytesConsumed);
261 return result;
262 }
263
264 public AsnReader ReadSequence(Asn1Tag? expectedTag = null)
265 {
266 AsnDecoder.ReadSequence(_data.Span, RuleSet, out var contentOffset, out var contentLength, out var bytesConsumed, expectedTag);
267 AsnReader result = CloneAtSlice(contentOffset, contentLength);
268 _data = _data.Slice(bytesConsumed);
269 return result;
270 }
271
272 public AsnReader ReadSetOf(Asn1Tag? expectedTag = null)
273 {
275 }
276
277 public AsnReader ReadSetOf(bool skipSortOrderValidation, Asn1Tag? expectedTag = null)
278 {
279 AsnDecoder.ReadSetOf(_data.Span, RuleSet, out var contentOffset, out var contentLength, out var bytesConsumed, skipSortOrderValidation, expectedTag);
280 AsnReader result = CloneAtSlice(contentOffset, contentLength);
281 _data = _data.Slice(bytesConsumed);
282 return result;
283 }
284
286 {
288 int bytesConsumed;
289 bool flag = AsnDecoder.TryReadPrimitiveCharacterStringBytes(_data.Span, RuleSet, expectedTag, out value, out bytesConsumed);
290 if (flag)
291 {
292 contents = AsnDecoder.Slice(_data, value);
293 _data = _data.Slice(bytesConsumed);
294 }
295 else
296 {
297 contents = default(ReadOnlyMemory<byte>);
298 }
299 return flag;
300 }
301
302 public bool TryReadCharacterStringBytes(Span<byte> destination, Asn1Tag expectedTag, out int bytesWritten)
303 {
304 int bytesConsumed;
305 bool flag = AsnDecoder.TryReadCharacterStringBytes(_data.Span, destination, RuleSet, expectedTag, out bytesConsumed, out bytesWritten);
306 if (flag)
307 {
308 _data = _data.Slice(bytesConsumed);
309 }
310 return flag;
311 }
312
313 public bool TryReadCharacterString(Span<char> destination, UniversalTagNumber encodingType, out int charsWritten, Asn1Tag? expectedTag = null)
314 {
315 int bytesConsumed;
316 bool result = AsnDecoder.TryReadCharacterString(_data.Span, destination, RuleSet, encodingType, out bytesConsumed, out charsWritten, expectedTag);
317 _data = _data.Slice(bytesConsumed);
318 return result;
319 }
320
321 public string ReadCharacterString(UniversalTagNumber encodingType, Asn1Tag? expectedTag = null)
322 {
323 int bytesConsumed;
324 string result = AsnDecoder.ReadCharacterString(_data.Span, RuleSet, encodingType, out bytesConsumed, expectedTag);
325 _data = _data.Slice(bytesConsumed);
326 return result;
327 }
328
329 public DateTimeOffset ReadUtcTime(Asn1Tag? expectedTag = null)
330 {
331 int bytesConsumed;
332 DateTimeOffset result = AsnDecoder.ReadUtcTime(_data.Span, RuleSet, out bytesConsumed, _options.UtcTimeTwoDigitYearMax, expectedTag);
333 _data = _data.Slice(bytesConsumed);
334 return result;
335 }
336
337 public DateTimeOffset ReadUtcTime(int twoDigitYearMax, Asn1Tag? expectedTag = null)
338 {
339 int bytesConsumed;
340 DateTimeOffset result = AsnDecoder.ReadUtcTime(_data.Span, RuleSet, out bytesConsumed, twoDigitYearMax, expectedTag);
341 _data = _data.Slice(bytesConsumed);
342 return result;
343 }
344}
static DateTimeOffset ReadGeneralizedTime(ReadOnlySpan< byte > source, AsnEncodingRules ruleSet, out int bytesConsumed, Asn1Tag? expectedTag=null)
static bool TryReadUInt32(ReadOnlySpan< byte > source, AsnEncodingRules ruleSet, out uint value, out int bytesConsumed, Asn1Tag? expectedTag=null)
static bool ReadBoolean(ReadOnlySpan< byte > source, AsnEncodingRules ruleSet, out int bytesConsumed, Asn1Tag? expectedTag=null)
static bool TryReadCharacterStringBytes(ReadOnlySpan< byte > source, Span< byte > destination, AsnEncodingRules ruleSet, Asn1Tag expectedTag, out int bytesConsumed, out int bytesWritten)
static ReadOnlySpan< byte > ReadIntegerBytes(ReadOnlySpan< byte > source, AsnEncodingRules ruleSet, out int bytesConsumed, Asn1Tag? expectedTag=null)
static bool TryReadCharacterString(ReadOnlySpan< byte > source, Span< char > destination, AsnEncodingRules ruleSet, UniversalTagNumber encodingType, out int bytesConsumed, out int charsWritten, Asn1Tag? expectedTag=null)
static BigInteger ReadInteger(ReadOnlySpan< byte > source, AsnEncodingRules ruleSet, out int bytesConsumed, Asn1Tag? expectedTag=null)
static Enum ReadEnumeratedValue(ReadOnlySpan< byte > source, AsnEncodingRules ruleSet, Type enumType, out int bytesConsumed, Asn1Tag? expectedTag=null)
static Enum ReadNamedBitListValue(ReadOnlySpan< byte > source, AsnEncodingRules ruleSet, Type flagsEnumType, 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 DateTimeOffset ReadUtcTime(ReadOnlySpan< byte > source, AsnEncodingRules ruleSet, out int bytesConsumed, int twoDigitYearMax=2049, Asn1Tag? expectedTag=null)
static ReadOnlySpan< byte > Slice(ReadOnlySpan< byte > source, int offset, int length)
static ReadOnlySpan< byte > ReadEnumeratedBytes(ReadOnlySpan< byte > source, AsnEncodingRules ruleSet, out int bytesConsumed, Asn1Tag? expectedTag=null)
static void ReadNull(ReadOnlySpan< byte > source, AsnEncodingRules ruleSet, out int bytesConsumed, Asn1Tag? expectedTag=null)
static string ReadCharacterString(ReadOnlySpan< byte > source, AsnEncodingRules ruleSet, UniversalTagNumber encodingType, out int bytesConsumed, Asn1Tag? expectedTag=null)
static BitArray ReadNamedBitList(ReadOnlySpan< byte > source, AsnEncodingRules ruleSet, out int bytesConsumed, Asn1Tag? expectedTag=null)
static bool TryReadPrimitiveCharacterStringBytes(ReadOnlySpan< byte > source, AsnEncodingRules ruleSet, Asn1Tag expectedTag, out ReadOnlySpan< byte > value, out int bytesConsumed)
static void CheckEncodingRules(AsnEncodingRules ruleSet)
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 bool TryReadUInt64(ReadOnlySpan< byte > source, AsnEncodingRules ruleSet, out ulong value, out int bytesConsumed, Asn1Tag? expectedTag=null)
static bool TryReadInt64(ReadOnlySpan< byte > source, AsnEncodingRules ruleSet, out long value, 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 TryReadOctetString(ReadOnlySpan< byte > source, Span< byte > destination, AsnEncodingRules ruleSet, out int bytesConsumed, out int bytesWritten, Asn1Tag? expectedTag=null)
static bool TryReadPrimitiveBitString(ReadOnlySpan< byte > source, AsnEncodingRules ruleSet, out int unusedBitCount, out ReadOnlySpan< byte > value, out int bytesConsumed, Asn1Tag? expectedTag=null)
static bool TryReadBitString(ReadOnlySpan< byte > source, Span< byte > destination, AsnEncodingRules ruleSet, out int unusedBitCount, out int bytesConsumed, out int bytesWritten, Asn1Tag? expectedTag=null)
AsnReader ReadSetOf(bool skipSortOrderValidation, Asn1Tag? expectedTag=null)
Definition AsnReader.cs:277
TFlagsEnum ReadNamedBitListValue< TFlagsEnum >(Asn1Tag? expectedTag=null)
Definition AsnReader.cs:190
ReadOnlyMemory< byte > _data
Definition AsnReader.cs:8
AsnReader ReadSetOf(Asn1Tag? expectedTag=null)
Definition AsnReader.cs:272
DateTimeOffset ReadGeneralizedTime(Asn1Tag? expectedTag=null)
Definition AsnReader.cs:131
ReadOnlyMemory< byte > PeekEncodedValue()
Definition AsnReader.cs:38
string ReadObjectIdentifier(Asn1Tag? expectedTag=null)
Definition AsnReader.cs:256
BigInteger ReadInteger(Asn1Tag? expectedTag=null)
Definition AsnReader.cs:148
bool TryReadPrimitiveCharacterStringBytes(Asn1Tag expectedTag, out ReadOnlyMemory< byte > contents)
Definition AsnReader.cs:285
bool TryReadBitString(Span< byte > destination, out int unusedBitCount, out int bytesWritten, Asn1Tag? expectedTag=null)
Definition AsnReader.cs:79
bool TryReadUInt32(out uint value, Asn1Tag? expectedTag=null)
Definition AsnReader.cs:165
ReadOnlyMemory< byte > ReadEnumeratedBytes(Asn1Tag? expectedTag=null)
Definition AsnReader.cs:106
AsnReader ReadSequence(Asn1Tag? expectedTag=null)
Definition AsnReader.cs:264
bool TryReadCharacterString(Span< char > destination, UniversalTagNumber encodingType, out int charsWritten, Asn1Tag? expectedTag=null)
Definition AsnReader.cs:313
Enum ReadNamedBitListValue(Type flagsEnumType, Asn1Tag? expectedTag=null)
Definition AsnReader.cs:198
bool TryReadCharacterStringBytes(Span< byte > destination, Asn1Tag expectedTag, out int bytesWritten)
Definition AsnReader.cs:302
BitArray ReadNamedBitList(Asn1Tag? expectedTag=null)
Definition AsnReader.cs:206
ReadOnlyMemory< byte > ReadEncodedValue()
Definition AsnReader.cs:50
TEnum ReadEnumeratedValue< TEnum >(Asn1Tag? expectedTag=null)
Definition AsnReader.cs:115
bool TryReadPrimitiveOctetString(out ReadOnlyMemory< byte > contents, Asn1Tag? expectedTag=null)
Definition AsnReader.cs:239
bool TryReadPrimitiveBitString(out int unusedBitCount, out ReadOnlyMemory< byte > value, Asn1Tag? expectedTag=null)
Definition AsnReader.cs:62
AsnReader(ReadOnlyMemory< byte > data, AsnEncodingRules ruleSet, AsnReaderOptions options=default(AsnReaderOptions))
Definition AsnReader.cs:16
byte[] ReadOctetString(Asn1Tag? expectedTag=null)
Definition AsnReader.cs:231
byte[] ReadBitString(out int unusedBitCount, Asn1Tag? expectedTag=null)
Definition AsnReader.cs:90
ReadOnlyMemory< byte > ReadIntegerBytes(Asn1Tag? expectedTag=null)
Definition AsnReader.cs:139
bool TryReadInt32(out int value, Asn1Tag? expectedTag=null)
Definition AsnReader.cs:156
readonly AsnReaderOptions _options
Definition AsnReader.cs:10
DateTimeOffset ReadUtcTime(Asn1Tag? expectedTag=null)
Definition AsnReader.cs:329
bool TryReadUInt64(out ulong value, Asn1Tag? expectedTag=null)
Definition AsnReader.cs:182
AsnReader CloneAtSlice(int start, int length)
Definition AsnReader.cs:57
bool TryReadOctetString(Span< byte > destination, out int bytesWritten, Asn1Tag? expectedTag=null)
Definition AsnReader.cs:220
Enum ReadEnumeratedValue(Type enumType, Asn1Tag? expectedTag=null)
Definition AsnReader.cs:123
void ReadNull(Asn1Tag? expectedTag=null)
Definition AsnReader.cs:214
bool ReadBoolean(Asn1Tag? expectedTag=null)
Definition AsnReader.cs:98
string ReadCharacterString(UniversalTagNumber encodingType, Asn1Tag? expectedTag=null)
Definition AsnReader.cs:321
AsnEncodingRules RuleSet
Definition AsnReader.cs:12
ReadOnlyMemory< byte > PeekContentBytes()
Definition AsnReader.cs:44
DateTimeOffset ReadUtcTime(int twoDigitYearMax, Asn1Tag? expectedTag=null)
Definition AsnReader.cs:337
bool TryReadInt64(out long value, Asn1Tag? expectedTag=null)
Definition AsnReader.cs:173
static string ContentException_TooMuchData
Definition SR.cs:74
Definition SR.cs:7
static Asn1Tag Decode(ReadOnlySpan< byte > source, out int bytesConsumed)
Definition Asn1Tag.cs:141
unsafe ReadOnlySpan< T > Span
ReadOnlyMemory< T > Slice(int start)