init commit

This commit is contained in:
2025-10-09 09:57:24 +09:00
commit 4d551bd74f
6636 changed files with 1218703 additions and 0 deletions

View File

@@ -0,0 +1,140 @@
using System;
using System.IO;
using Org.BouncyCastle.Utilities.IO;
namespace Org.BouncyCastle.Asn1;
public class DerOutputStream : FilterStream
{
public DerOutputStream(Stream os)
: base(os)
{
}
private void WriteLength(int length)
{
if (length > 127)
{
int num = 1;
uint num2 = (uint)length;
while ((num2 >>= 8) != 0)
{
num++;
}
WriteByte((byte)(num | 0x80));
for (int num3 = (num - 1) * 8; num3 >= 0; num3 -= 8)
{
WriteByte((byte)(length >> num3));
}
}
else
{
WriteByte((byte)length);
}
}
internal void WriteEncoded(int tag, byte[] bytes)
{
WriteByte((byte)tag);
WriteLength(bytes.Length);
Write(bytes, 0, bytes.Length);
}
internal void WriteEncoded(int tag, byte first, byte[] bytes)
{
WriteByte((byte)tag);
WriteLength(bytes.Length + 1);
WriteByte(first);
Write(bytes, 0, bytes.Length);
}
internal void WriteEncoded(int tag, byte[] bytes, int offset, int length)
{
WriteByte((byte)tag);
WriteLength(length);
Write(bytes, offset, length);
}
internal void WriteTag(int flags, int tagNo)
{
if (tagNo < 31)
{
WriteByte((byte)(flags | tagNo));
return;
}
WriteByte((byte)(flags | 0x1F));
if (tagNo < 128)
{
WriteByte((byte)tagNo);
return;
}
byte[] array = new byte[5];
int num = array.Length;
array[--num] = (byte)(tagNo & 0x7F);
do
{
tagNo >>= 7;
array[--num] = (byte)((tagNo & 0x7F) | 0x80);
}
while (tagNo > 127);
Write(array, num, array.Length - num);
}
internal void WriteEncoded(int flags, int tagNo, byte[] bytes)
{
WriteTag(flags, tagNo);
WriteLength(bytes.Length);
Write(bytes, 0, bytes.Length);
}
protected void WriteNull()
{
WriteByte(5);
WriteByte(0);
}
[Obsolete("Use version taking an Asn1Encodable arg instead")]
public virtual void WriteObject(object obj)
{
if (obj == null)
{
WriteNull();
return;
}
if (obj is Asn1Object)
{
((Asn1Object)obj).Encode(this);
return;
}
if (obj is Asn1Encodable)
{
((Asn1Encodable)obj).ToAsn1Object().Encode(this);
return;
}
throw new IOException("object not Asn1Object");
}
public virtual void WriteObject(Asn1Encodable obj)
{
if (obj == null)
{
WriteNull();
}
else
{
obj.ToAsn1Object().Encode(this);
}
}
public virtual void WriteObject(Asn1Object obj)
{
if (obj == null)
{
WriteNull();
}
else
{
obj.Encode(this);
}
}
}