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

Asn1OctetString

using Org.BouncyCastle.Utilities; using Org.BouncyCastle.Utilities.Encoders; using System; using System.IO; namespace Org.BouncyCastle.Asn1 { public abstract class Asn1OctetString : Asn1Object, Asn1OctetStringParser, IAsn1Convertible { internal class Meta : Asn1UniversalType { internal static readonly Asn1UniversalType Instance = new Meta(); private Meta() : base(typeof(Asn1OctetString), 4) { } internal override Asn1Object FromImplicitPrimitive(DerOctetString octetString) { return octetString; } internal override Asn1Object FromImplicitConstructed(Asn1Sequence sequence) { return sequence.ToAsn1OctetString(); } } internal static readonly byte[] EmptyOctets = new byte[0]; internal readonly byte[] contents; public Asn1OctetStringParser Parser => this; public static Asn1OctetString GetInstance(object obj) { if (obj == null) return null; Asn1OctetString asn1OctetString = obj as Asn1OctetString; if (asn1OctetString != null) return asn1OctetString; IAsn1Convertible asn1Convertible = obj as IAsn1Convertible; if (asn1Convertible != null) { Asn1OctetString asn1OctetString2 = asn1Convertible.ToAsn1Object() as Asn1OctetString; if (asn1OctetString2 != null) return asn1OctetString2; } else { byte[] array = obj as byte[]; if (array != null) try { return (Asn1OctetString)Meta.Instance.FromByteArray(array); } catch (IOException ex) { throw new ArgumentException("failed to construct OCTET STRING from byte[]: " + ex.Message); } } throw new ArgumentException("illegal object in GetInstance: " + Platform.GetTypeName(obj), "obj"); } public static Asn1OctetString GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { return (Asn1OctetString)Meta.Instance.GetContextInstance(taggedObject, declaredExplicit); } internal Asn1OctetString(byte[] contents) { if (contents == null) throw new ArgumentNullException("contents"); this.contents = contents; } public Stream GetOctetStream() { return new MemoryStream(contents, false); } public virtual byte[] GetOctets() { return contents; } public virtual int GetOctetsLength() { return GetOctets().Length; } protected override int Asn1GetHashCode() { return Arrays.GetHashCode(GetOctets()); } protected override bool Asn1Equals(Asn1Object asn1Object) { Asn1OctetString asn1OctetString = asn1Object as Asn1OctetString; if (asn1OctetString != null) return Arrays.AreEqual(GetOctets(), asn1OctetString.GetOctets()); return false; } public override string ToString() { return "#" + Hex.ToHexString(contents); } internal static Asn1OctetString CreatePrimitive(byte[] contents) { return new DerOctetString(contents); } } }