init commit
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using Org.BouncyCastle.Utilities;
|
||||
using Org.BouncyCastle.Utilities.Encoders;
|
||||
|
||||
namespace Org.BouncyCastle.Asn1;
|
||||
|
||||
public abstract class Asn1OctetString : Asn1Object, Asn1OctetStringParser, IAsn1Convertible
|
||||
{
|
||||
internal byte[] str;
|
||||
|
||||
public Asn1OctetStringParser Parser => this;
|
||||
|
||||
public static Asn1OctetString GetInstance(Asn1TaggedObject obj, bool isExplicit)
|
||||
{
|
||||
Asn1Object asn1Object = obj.GetObject();
|
||||
if (isExplicit || asn1Object is Asn1OctetString)
|
||||
{
|
||||
return GetInstance(asn1Object);
|
||||
}
|
||||
return BerOctetString.FromSequence(Asn1Sequence.GetInstance(asn1Object));
|
||||
}
|
||||
|
||||
public static Asn1OctetString GetInstance(object obj)
|
||||
{
|
||||
if (obj == null || obj is Asn1OctetString)
|
||||
{
|
||||
return (Asn1OctetString)obj;
|
||||
}
|
||||
if (obj is Asn1TaggedObject)
|
||||
{
|
||||
return GetInstance(((Asn1TaggedObject)obj).GetObject());
|
||||
}
|
||||
throw new ArgumentException("illegal object in GetInstance: " + Platform.GetTypeName(obj));
|
||||
}
|
||||
|
||||
internal Asn1OctetString(byte[] str)
|
||||
{
|
||||
if (str == null)
|
||||
{
|
||||
throw new ArgumentNullException("str");
|
||||
}
|
||||
this.str = str;
|
||||
}
|
||||
|
||||
internal Asn1OctetString(Asn1Encodable obj)
|
||||
{
|
||||
try
|
||||
{
|
||||
str = obj.GetEncoded("DER");
|
||||
}
|
||||
catch (IOException ex)
|
||||
{
|
||||
throw new ArgumentException("Error processing object : " + ex.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
public Stream GetOctetStream()
|
||||
{
|
||||
return new MemoryStream(str, writable: false);
|
||||
}
|
||||
|
||||
public virtual byte[] GetOctets()
|
||||
{
|
||||
return str;
|
||||
}
|
||||
|
||||
protected override int Asn1GetHashCode()
|
||||
{
|
||||
return Arrays.GetHashCode(GetOctets());
|
||||
}
|
||||
|
||||
protected override bool Asn1Equals(Asn1Object asn1Object)
|
||||
{
|
||||
if (!(asn1Object is DerOctetString derOctetString))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return Arrays.AreEqual(GetOctets(), derOctetString.GetOctets());
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return "#" + Hex.ToHexString(str);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user