Files
SuperVPN/output/Libraries/BouncyCastle.Crypto/Org/BouncyCastle/Asn1/DerSequence.cs
2025-10-09 09:57:24 +09:00

76 lines
1.4 KiB
C#

using System;
using System.Collections;
using System.IO;
using Org.BouncyCastle.Utilities;
namespace Org.BouncyCastle.Asn1;
public class DerSequence : Asn1Sequence
{
public static readonly DerSequence Empty = new DerSequence();
public static DerSequence FromVector(Asn1EncodableVector v)
{
if (v.Count >= 1)
{
return new DerSequence(v);
}
return Empty;
}
public DerSequence()
: base(0)
{
}
public DerSequence(Asn1Encodable obj)
: base(1)
{
AddObject(obj);
}
public DerSequence(params Asn1Encodable[] v)
: base(v.Length)
{
foreach (Asn1Encodable obj in v)
{
AddObject(obj);
}
}
public DerSequence(Asn1EncodableVector v)
: base(v.Count)
{
foreach (Asn1Encodable item in v)
{
AddObject(item);
}
}
internal override void Encode(DerOutputStream derOut)
{
MemoryStream memoryStream = new MemoryStream();
DerOutputStream derOutputStream = new DerOutputStream(memoryStream);
IEnumerator enumerator = GetEnumerator();
try
{
while (enumerator.MoveNext())
{
Asn1Encodable obj = (Asn1Encodable)enumerator.Current;
derOutputStream.WriteObject(obj);
}
}
finally
{
IDisposable disposable = enumerator as IDisposable;
if (disposable != null)
{
disposable.Dispose();
}
}
Platform.Dispose(derOutputStream);
byte[] bytes = memoryStream.ToArray();
derOut.WriteEncoded(48, bytes);
}
}