123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- #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
|