X509ExtensionBase.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
  2. #pragma warning disable
  3. using System;
  4. using System.Collections.Generic;
  5. using Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1;
  6. using Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509;
  7. namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.X509
  8. {
  9. public abstract class X509ExtensionBase
  10. : IX509Extension
  11. {
  12. protected abstract X509Extensions GetX509Extensions();
  13. protected virtual ISet<string> GetExtensionOids(bool critical)
  14. {
  15. X509Extensions extensions = GetX509Extensions();
  16. if (extensions == null)
  17. return null;
  18. var set = new HashSet<string>();
  19. foreach (DerObjectIdentifier oid in extensions.ExtensionOids)
  20. {
  21. X509Extension ext = extensions.GetExtension(oid);
  22. if (ext.IsCritical == critical)
  23. {
  24. set.Add(oid.Id);
  25. }
  26. }
  27. return set;
  28. }
  29. /// <summary>
  30. /// Get non critical extensions.
  31. /// </summary>
  32. /// <returns>A set of non critical extension oids.</returns>
  33. public virtual ISet<string> GetNonCriticalExtensionOids()
  34. {
  35. return GetExtensionOids(false);
  36. }
  37. /// <summary>
  38. /// Get any critical extensions.
  39. /// </summary>
  40. /// <returns>A sorted list of critical entension.</returns>
  41. public virtual ISet<string> GetCriticalExtensionOids()
  42. {
  43. return GetExtensionOids(true);
  44. }
  45. public virtual Asn1OctetString GetExtensionValue(DerObjectIdentifier oid)
  46. {
  47. return GetX509Extensions()?.GetExtension(oid)?.Value;
  48. }
  49. }
  50. }
  51. #pragma warning restore
  52. #endif