BerSequence.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
  2. #pragma warning disable
  3. namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1
  4. {
  5. public class BerSequence
  6. : DerSequence
  7. {
  8. public static new readonly BerSequence Empty = new BerSequence();
  9. public static new BerSequence FromVector(
  10. Asn1EncodableVector v)
  11. {
  12. return v.Count < 1 ? Empty : new BerSequence(v);
  13. }
  14. /**
  15. * create an empty sequence
  16. */
  17. public BerSequence()
  18. {
  19. }
  20. /**
  21. * create a sequence containing one object
  22. */
  23. public BerSequence(
  24. Asn1Encodable obj)
  25. : base(obj)
  26. {
  27. }
  28. public BerSequence(
  29. params Asn1Encodable[] v)
  30. : base(v)
  31. {
  32. }
  33. /**
  34. * create a sequence containing a vector of objects.
  35. */
  36. public BerSequence(
  37. Asn1EncodableVector v)
  38. : base(v)
  39. {
  40. }
  41. /*
  42. */
  43. internal override void Encode(
  44. DerOutputStream derOut)
  45. {
  46. if (derOut is Asn1OutputStream || derOut is BerOutputStream)
  47. {
  48. derOut.WriteByte(Asn1Tags.Sequence | Asn1Tags.Constructed);
  49. derOut.WriteByte(0x80);
  50. foreach (Asn1Encodable o in this)
  51. {
  52. derOut.WriteObject(o);
  53. }
  54. derOut.WriteByte(0x00);
  55. derOut.WriteByte(0x00);
  56. }
  57. else
  58. {
  59. base.Encode(derOut);
  60. }
  61. }
  62. }
  63. }
  64. #pragma warning restore
  65. #endif