Add migrated to .NET 8.0 variant of Hcs.Client
This commit is contained in:
84
Hcs.ClientNet/GostCryptography/Asn1/Ber/Asn1EncodeBuffer.cs
Normal file
84
Hcs.ClientNet/GostCryptography/Asn1/Ber/Asn1EncodeBuffer.cs
Normal file
@ -0,0 +1,84 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
|
||||
namespace GostCryptography.Asn1.Ber
|
||||
{
|
||||
public abstract class Asn1EncodeBuffer : Asn1MessageBuffer
|
||||
{
|
||||
public const int DefaultSizeIncrement = 0x400;
|
||||
|
||||
protected byte[] Data;
|
||||
protected int ByteIndex;
|
||||
protected int SizeIncrement;
|
||||
|
||||
protected Asn1EncodeBuffer()
|
||||
{
|
||||
InitBuffer(DefaultSizeIncrement);
|
||||
}
|
||||
|
||||
protected Asn1EncodeBuffer(int sizeIncrement)
|
||||
{
|
||||
if (sizeIncrement == 0)
|
||||
{
|
||||
sizeIncrement = DefaultSizeIncrement;
|
||||
}
|
||||
|
||||
InitBuffer(sizeIncrement);
|
||||
}
|
||||
|
||||
public abstract byte[] MsgCopy { get; }
|
||||
|
||||
public abstract int MsgLength { get; }
|
||||
|
||||
public virtual void BinDump(string varName)
|
||||
{
|
||||
var outs = new StreamWriter(Console.OpenStandardOutput(), Console.Out.Encoding)
|
||||
{
|
||||
AutoFlush = true
|
||||
};
|
||||
|
||||
BinDump(outs, varName);
|
||||
}
|
||||
|
||||
public abstract void BinDump(StreamWriter outs, string varName);
|
||||
|
||||
protected internal virtual void CheckSize(int bytesRequired)
|
||||
{
|
||||
if ((ByteIndex + bytesRequired) > Data.Length)
|
||||
{
|
||||
var num = ((bytesRequired - 1) / SizeIncrement) + 1;
|
||||
var num2 = num * SizeIncrement;
|
||||
var destinationArray = new byte[Data.Length + num2];
|
||||
|
||||
Array.Copy(Data, 0, destinationArray, 0, ByteIndex + 1);
|
||||
|
||||
Data = destinationArray;
|
||||
}
|
||||
}
|
||||
|
||||
public abstract void Copy(byte value);
|
||||
|
||||
public abstract void Copy(byte[] value);
|
||||
|
||||
public virtual void HexDump()
|
||||
{
|
||||
HexDump(GetInputStream());
|
||||
}
|
||||
|
||||
public virtual void HexDump(StreamWriter outs)
|
||||
{
|
||||
HexDump(GetInputStream(), outs);
|
||||
}
|
||||
|
||||
protected virtual void InitBuffer(int sizeIncrement)
|
||||
{
|
||||
SizeIncrement = sizeIncrement;
|
||||
Data = new byte[SizeIncrement];
|
||||
ByteIndex = 0;
|
||||
}
|
||||
|
||||
public abstract void Reset();
|
||||
|
||||
public abstract void Write(Stream outs);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user