Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
CertificateAsn.cs
Go to the documentation of this file.
3
5
6internal struct CertificateAsn
7{
9
11
13
14 internal void Encode(AsnWriter writer)
15 {
17 }
18
19 internal void Encode(AsnWriter writer, Asn1Tag tag)
20 {
21 writer.PushSequence(tag);
24 writer.WriteBitString(SignatureValue.Span);
25 writer.PopSequence(tag);
26 }
27
29 {
30 return Decode(Asn1Tag.Sequence, encoded, ruleSet);
31 }
32
33 internal static CertificateAsn Decode(Asn1Tag expectedTag, ReadOnlyMemory<byte> encoded, AsnEncodingRules ruleSet)
34 {
35 try
36 {
38 DecodeCore(ref reader, expectedTag, encoded, out var decoded);
39 reader.ThrowIfNotEmpty();
40 return decoded;
41 }
42 catch (AsnContentException inner)
43 {
45 }
46 }
47
48 private static void DecodeCore(ref System.Formats.Asn1.AsnValueReader reader, Asn1Tag expectedTag, ReadOnlyMemory<byte> rebind, out CertificateAsn decoded)
49 {
50 decoded = default(CertificateAsn);
51 System.Formats.Asn1.AsnValueReader reader2 = reader.ReadSequence(expectedTag);
52 ReadOnlySpan<byte> span = rebind.Span;
53 TbsCertificateAsn.Decode(ref reader2, rebind, out decoded.TbsCertificate);
54 System.Security.Cryptography.Asn1.AlgorithmIdentifierAsn.Decode(ref reader2, rebind, out decoded.SignatureAlgorithm);
55 if (reader2.TryReadPrimitiveBitString(out var unusedBitCount, out var value))
56 {
57 decoded.SignatureValue = (span.Overlaps(value, out var elementOffset) ? rebind.Slice(elementOffset, value.Length) : ((ReadOnlyMemory<byte>)value.ToArray()));
58 }
59 else
60 {
61 decoded.SignatureValue = reader2.ReadBitString(out unusedBitCount);
62 }
63 reader2.ThrowIfNotEmpty();
64 }
65}
static string Cryptography_Der_Invalid_Encoding
Definition SR.cs:50
Definition SR.cs:7
static readonly Asn1Tag Sequence
Definition Asn1Tag.cs:29
byte[] ReadBitString(out int unusedBitCount, Asn1Tag? expectedTag=null)
bool TryReadPrimitiveBitString(out int unusedBitCount, out ReadOnlySpan< byte > value, Asn1Tag? expectedTag=null)
AsnValueReader ReadSequence(Asn1Tag? expectedTag=null)
unsafe ReadOnlySpan< T > Span
ReadOnlyMemory< T > Slice(int start)
static void Decode(ref AsnValueReader reader, ReadOnlyMemory< byte > rebind, out AlgorithmIdentifierAsn decoded)
System.Security.Cryptography.Asn1.AlgorithmIdentifierAsn SignatureAlgorithm
static CertificateAsn Decode(ReadOnlyMemory< byte > encoded, AsnEncodingRules ruleSet)
static CertificateAsn Decode(Asn1Tag expectedTag, ReadOnlyMemory< byte > encoded, AsnEncodingRules ruleSet)
static void DecodeCore(ref System.Formats.Asn1.AsnValueReader reader, Asn1Tag expectedTag, ReadOnlyMemory< byte > rebind, out CertificateAsn decoded)
static void Decode(ref System.Formats.Asn1.AsnValueReader reader, ReadOnlyMemory< byte > rebind, out TbsCertificateAsn decoded)