培训考核三期,新版培训,网页版培训登录器
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

97 lines
2.2 KiB

#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
#pragma warning disable
using System;
using System.Collections;
namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1
{
internal class LazyDerSequence
: DerSequence
{
private byte[] encoded;
internal LazyDerSequence(byte[] encoded)
: base()
{
if (null == encoded)
throw new ArgumentNullException("encoded");
this.encoded = encoded;
}
private void Parse()
{
lock (this)
{
if (null != encoded)
{
Asn1InputStream e = new LazyAsn1InputStream(encoded);
Asn1EncodableVector v = e.ReadVector();
this.elements = v.TakeElements();
this.encoded = null;
}
}
}
public override Asn1Encodable this[int index]
{
get
{
Parse();
return base[index];
}
}
public override IEnumerator GetEnumerator()
{
Parse();
return base.GetEnumerator();
}
public override int Count
{
get
{
Parse();
return base.Count;
}
}
internal override int EncodedLength(bool withID)
{
lock (this)
{
if (encoded == null)
{
return base.EncodedLength(withID);
}
else
{
return Asn1OutputStream.GetLengthOfEncodingDL(withID, encoded.Length);
}
}
}
internal override void Encode(Asn1OutputStream asn1Out, bool withID)
{
lock (this)
{
if (encoded == null)
{
base.Encode(asn1Out, withID);
}
else
{
asn1Out.WriteEncodingDL(withID, Asn1Tags.Constructed | Asn1Tags.Sequence, encoded);
}
}
}
}
}
#pragma warning restore
#endif