<PackageReference Include="BouncyCastle.Cryptography" Version="2.6.2" />

Asn1Object

public abstract class Asn1Object : Asn1Encodable
using System.IO; namespace Org.BouncyCastle.Asn1 { public abstract class Asn1Object : Asn1Encodable { public override void EncodeTo(Stream output) { using (Asn1OutputStream asn1OutputStream = Asn1OutputStream.Create(output, "BER", true)) GetEncoding(asn1OutputStream.Encoding).Encode(asn1OutputStream); } public override void EncodeTo(Stream output, string encoding) { using (Asn1OutputStream asn1OutputStream = Asn1OutputStream.Create(output, encoding, true)) GetEncoding(asn1OutputStream.Encoding).Encode(asn1OutputStream); } internal override byte[] GetEncoded(string encoding, int preAlloc, int postAlloc) { int encodingType = Asn1OutputStream.GetEncodingType(encoding); IAsn1Encoding encoding2 = GetEncoding(encodingType); int length = encoding2.GetLength(); byte[] array = new byte[preAlloc + length + postAlloc]; using (Asn1OutputStream asn1Out = Asn1OutputStream.Create(array, preAlloc, length, encoding, false)) { encoding2.Encode(asn1Out); return array; } } public bool Equals(Asn1Object other) { if (this != other) return Asn1Equals(other); return true; } public static Asn1Object FromByteArray(byte[] data) { return FromMemoryStream(new MemoryStream(data, false)); } internal static Asn1Object FromMemoryStream(MemoryStream memoryStream) { using (Asn1InputStream asn1InputStream = new Asn1InputStream(memoryStream)) { Asn1Object result = asn1InputStream.ReadObject(); if (asn1InputStream.Position != asn1InputStream.Length) throw new IOException("extra data found after object"); return result; } } public static Asn1Object FromStream(Stream inStr) { int limit = Asn1InputStream.FindLimit(inStr); using (Asn1InputStream asn1InputStream = new Asn1InputStream(inStr, limit, true)) return asn1InputStream.ReadObject(); } public sealed override Asn1Object ToAsn1Object() { return this; } internal abstract IAsn1Encoding GetEncoding(int encoding); internal abstract IAsn1Encoding GetEncodingImplicit(int encoding, int tagClass, int tagNo); internal abstract DerEncoding GetEncodingDer(); internal abstract DerEncoding GetEncodingDerImplicit(int tagClass, int tagNo); protected abstract bool Asn1Equals(Asn1Object asn1Object); protected abstract int Asn1GetHashCode(); internal bool CallAsn1Equals(Asn1Object obj) { return Asn1Equals(obj); } internal int CallAsn1GetHashCode() { return Asn1GetHashCode(); } } }