Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ PopTag()

void System.Formats.Asn1.AsnWriter.PopTag ( Asn1Tag tag,
UniversalTagNumber tagType,
bool sortContents = false )
inlineprivate

Definition at line 374 of file AsnWriter.cs.

375 {
376 if (_nestingStack == null || _nestingStack.Count == 0)
377 {
379 }
380 var (asn1Tag2, num2, universalTagNumber2) = (StackFrame)(ref _nestingStack.Peek());
381 if (asn1Tag2 != tag || universalTagNumber2 != tagType)
382 {
384 }
385 _nestingStack.Pop();
386 if (sortContents)
387 {
389 }
390 if (RuleSet == AsnEncodingRules.CER && tagType != UniversalTagNumber.OctetString)
391 {
393 return;
394 }
395 int num3 = _offset - 1 - num2;
396 int num4 = num2 + 1;
397 if (tagType == UniversalTagNumber.OctetString)
398 {
399 if (RuleSet == AsnEncodingRules.CER && num3 > 1000)
400 {
401 int result;
402 int num5 = Math.DivRem(num3, 1000, out result);
403 int num6 = 4 * num5 + 2 + GetEncodedLengthSubsequentByteCount(result);
406 Span<byte> span = _buffer.AsSpan(num4 + num6, num3);
408 int num7 = num4 + num3 + num6 + 2;
409 _offset = num2 - tag.CalculateEncodedSize();
411 return;
412 }
413 int num8 = tag.CalculateEncodedSize();
414 tag.AsPrimitive().Encode(_buffer.AsSpan(num2 - num8, num8));
415 }
418 {
419 _buffer[num2] = (byte)num3;
420 return;
421 }
424 int offset = _offset;
425 _offset = num2;
428 }
void CopyTo(KeyValuePair< TKey, TValue >[] array, int index)
void EnsureWriteCapacity(int pendingCount)
Definition AsnWriter.cs:246
void WriteConstructedCerOctetString(Asn1Tag tag, ReadOnlySpan< byte > payload)
Definition AsnWriter.cs:923
Stack< StackFrame > _nestingStack
Definition AsnWriter.cs:140
static void SortContents(byte[] buffer, int start, int end)
Definition AsnWriter.cs:430
static int GetEncodedLengthSubsequentByteCount(int length)
Definition AsnWriter.cs:303
void WriteLength(int length)
Definition AsnWriter.cs:272
static string AsnWriter_PopWrongTag
Definition SR.cs:44
Definition SR.cs:7

References System.Formats.Asn1.AsnWriter._buffer, System.Formats.Asn1.AsnWriter._nestingStack, System.Formats.Asn1.AsnWriter._offset, System.SR.AsnWriter_PopWrongTag, System.Formats.Asn1.Asn1Tag.AsPrimitive(), System.Buffer.BlockCopy(), System.Formats.Asn1.Asn1Tag.CalculateEncodedSize(), System.Collections.Generic.Dictionary< TKey, TValue >.CopyTo(), System.Collections.Generic.Dictionary< TKey, TValue >.Count, System.Math.DivRem(), System.Formats.Asn1.Asn1Tag.Encode(), System.Formats.Asn1.AsnWriter.EnsureWriteCapacity(), System.Formats.Asn1.AsnWriter.GetEncodedLengthSubsequentByteCount(), System.offset, System.Formats.Asn1.AsnWriter.RuleSet, System.Formats.Asn1.AsnWriter.SortContents(), System.Formats.Asn1.AsnWriter.WriteConstructedCerOctetString(), System.Formats.Asn1.AsnWriter.WriteEndOfContents(), and System.Formats.Asn1.AsnWriter.WriteLength().

Referenced by System.Formats.Asn1.AsnWriter.PopOctetString(), System.Formats.Asn1.AsnWriter.PopSequenceCore(), and System.Formats.Asn1.AsnWriter.PopSetOfCore().