DerSequence.cs 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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 DerSequence
  7. : Asn1Sequence
  8. {
  9. public static readonly DerSequence Empty = new DerSequence();
  10. public static DerSequence FromVector(Asn1EncodableVector elementVector)
  11. {
  12. return elementVector.Count < 1 ? Empty : new DerSequence(elementVector);
  13. }
  14. /**
  15. * create an empty sequence
  16. */
  17. public DerSequence()
  18. : base()
  19. {
  20. }
  21. /**
  22. * create a sequence containing one object
  23. */
  24. public DerSequence(Asn1Encodable element)
  25. : base(element)
  26. {
  27. }
  28. /**
  29. * create a sequence containing two objects
  30. */
  31. public DerSequence(Asn1Encodable element1, Asn1Encodable element2)
  32. : base(element1, element2)
  33. {
  34. }
  35. public DerSequence(params Asn1Encodable[] elements)
  36. : base(elements)
  37. {
  38. }
  39. /**
  40. * create a sequence containing a vector of objects.
  41. */
  42. public DerSequence(Asn1EncodableVector elementVector)
  43. : base(elementVector)
  44. {
  45. }
  46. internal DerSequence(Asn1Encodable[] elements, bool clone)
  47. : base(elements, clone)
  48. {
  49. }
  50. internal override IAsn1Encoding GetEncoding(int encoding)
  51. {
  52. return new ConstructedDLEncoding(Asn1Tags.Universal, Asn1Tags.Sequence,
  53. Asn1OutputStream.GetContentsEncodings(Asn1OutputStream.EncodingDer, elements));
  54. }
  55. internal override IAsn1Encoding GetEncodingImplicit(int encoding, int tagClass, int tagNo)
  56. {
  57. return new ConstructedDLEncoding(tagClass, tagNo,
  58. Asn1OutputStream.GetContentsEncodings(Asn1OutputStream.EncodingDer, elements));
  59. }
  60. internal override DerBitString ToAsn1BitString()
  61. {
  62. return new DerBitString(BerBitString.FlattenBitStrings(GetConstructedBitStrings()), false);
  63. }
  64. internal override DerExternal ToAsn1External()
  65. {
  66. return new DerExternal(this);
  67. }
  68. internal override Asn1OctetString ToAsn1OctetString()
  69. {
  70. return new DerOctetString(BerOctetString.FlattenOctetStrings(GetConstructedOctetStrings()));
  71. }
  72. internal override Asn1Set ToAsn1Set()
  73. {
  74. // NOTE: DLSet is intentional, we don't want sorting
  75. return new DLSet(false, elements);
  76. }
  77. }
  78. }
  79. #pragma warning restore
  80. #endif