DerOctetString.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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 DerOctetString
  7. : Asn1OctetString
  8. {
  9. /// <param name="contents">The octets making up the octet string.</param>
  10. public DerOctetString(byte[] contents)
  11. : base(contents)
  12. {
  13. }
  14. public DerOctetString(IAsn1Convertible obj)
  15. : this(obj.ToAsn1Object())
  16. {
  17. }
  18. public DerOctetString(Asn1Encodable obj)
  19. : base(obj.GetEncoded(Der))
  20. {
  21. }
  22. internal override IAsn1Encoding GetEncoding(int encoding)
  23. {
  24. return new PrimitiveEncoding(Asn1Tags.Universal, Asn1Tags.OctetString, contents);
  25. }
  26. internal override IAsn1Encoding GetEncodingImplicit(int encoding, int tagClass, int tagNo)
  27. {
  28. return new PrimitiveEncoding(tagClass, tagNo, contents);
  29. }
  30. internal static void Encode(Asn1OutputStream asn1Out, byte[] buf, int off, int len)
  31. {
  32. asn1Out.WriteIdentifier(Asn1Tags.Universal, Asn1Tags.OctetString);
  33. asn1Out.WriteDL(len);
  34. asn1Out.Write(buf, off, len);
  35. }
  36. #if NETCOREAPP2_1_OR_GREATER || NETSTANDARD2_1_OR_GREATER || UNITY_2021_2_OR_NEWER
  37. internal static void Encode(Asn1OutputStream asn1Out, ReadOnlySpan<byte> buf)
  38. {
  39. asn1Out.WriteIdentifier(Asn1Tags.Universal, Asn1Tags.OctetString);
  40. asn1Out.WriteDL(buf.Length);
  41. asn1Out.Write(buf);
  42. }
  43. internal static void Encode(Asn1OutputStream asn1Out, ReadOnlySpan<byte> buf1, ReadOnlySpan<byte> buf2)
  44. {
  45. asn1Out.WriteIdentifier(Asn1Tags.Universal, Asn1Tags.OctetString);
  46. asn1Out.WriteDL(buf1.Length + buf2.Length);
  47. asn1Out.Write(buf1);
  48. asn1Out.Write(buf2);
  49. }
  50. #endif
  51. }
  52. }
  53. #pragma warning restore
  54. #endif