BerSet.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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 BerSet
  6. : DerSet
  7. {
  8. public static new readonly BerSet Empty = new BerSet();
  9. public static new BerSet FromVector(
  10. Asn1EncodableVector v)
  11. {
  12. return v.Count < 1 ? Empty : new BerSet(v);
  13. }
  14. internal static new BerSet FromVector(
  15. Asn1EncodableVector v,
  16. bool needsSorting)
  17. {
  18. return v.Count < 1 ? Empty : new BerSet(v, needsSorting);
  19. }
  20. /**
  21. * create an empty sequence
  22. */
  23. public BerSet()
  24. {
  25. }
  26. /**
  27. * create a set containing one object
  28. */
  29. public BerSet(Asn1Encodable obj) : base(obj)
  30. {
  31. }
  32. /**
  33. * create a set containing a vector of objects.
  34. */
  35. public BerSet(Asn1EncodableVector v) : base(v, false)
  36. {
  37. }
  38. internal BerSet(Asn1EncodableVector v, bool needsSorting) : base(v, needsSorting)
  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.Set | 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