BerSequence.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
  2. #pragma warning disable
  3. using System;
  4. namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1
  5. {
  6. public class BerSequence
  7. : DerSequence
  8. {
  9. public static new readonly BerSequence Empty = new BerSequence();
  10. public static new BerSequence FromVector(Asn1EncodableVector elementVector)
  11. {
  12. return elementVector.Count < 1 ? Empty : new BerSequence(elementVector);
  13. }
  14. /**
  15. * create an empty sequence
  16. */
  17. public BerSequence()
  18. : base()
  19. {
  20. }
  21. /**
  22. * create a sequence containing one object
  23. */
  24. public BerSequence(Asn1Encodable element)
  25. : base(element)
  26. {
  27. }
  28. /**
  29. * create a sequence containing two objects
  30. */
  31. public BerSequence(Asn1Encodable element1, Asn1Encodable element2)
  32. : base(element1, element2)
  33. {
  34. }
  35. public BerSequence(params Asn1Encodable[] elements)
  36. : base(elements)
  37. {
  38. }
  39. /**
  40. * create a sequence containing a vector of objects.
  41. */
  42. public BerSequence(Asn1EncodableVector elementVector)
  43. : base(elementVector)
  44. {
  45. }
  46. internal BerSequence(Asn1Encodable[] elements, bool clone)
  47. : base(elements, clone)
  48. {
  49. }
  50. internal override IAsn1Encoding GetEncoding(int encoding)
  51. {
  52. if (Asn1OutputStream.EncodingBer != encoding)
  53. return base.GetEncoding(encoding);
  54. return new ConstructedILEncoding(Asn1Tags.Universal, Asn1Tags.Sequence,
  55. Asn1OutputStream.GetContentsEncodings(encoding, elements));
  56. }
  57. internal override IAsn1Encoding GetEncodingImplicit(int encoding, int tagClass, int tagNo)
  58. {
  59. if (Asn1OutputStream.EncodingBer != encoding)
  60. return base.GetEncodingImplicit(encoding, tagClass, tagNo);
  61. return new ConstructedILEncoding(tagClass, tagNo,
  62. Asn1OutputStream.GetContentsEncodings(encoding, elements));
  63. }
  64. internal override DerBitString ToAsn1BitString()
  65. {
  66. return new BerBitString(GetConstructedBitStrings());
  67. }
  68. internal override DerExternal ToAsn1External()
  69. {
  70. // TODO There is currently no BerExternal class (or ToDLObject/ToDerObject)
  71. //return ((Asn1Sequence)ToDLObject()).ToAsn1External();
  72. return new DLSequence(elements).ToAsn1External();
  73. }
  74. internal override Asn1OctetString ToAsn1OctetString()
  75. {
  76. return new BerOctetString(GetConstructedOctetStrings());
  77. }
  78. internal override Asn1Set ToAsn1Set()
  79. {
  80. return new BerSet(false, elements);
  81. }
  82. }
  83. }
  84. #pragma warning restore
  85. #endif