X509ExtensionBase.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
  2. #pragma warning disable
  3. using System;
  4. using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1;
  5. using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509;
  6. using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities.Collections;
  7. namespace BestHTTP.SecureProtocol.Org.BouncyCastle.X509
  8. {
  9. public abstract class X509ExtensionBase
  10. : IX509Extension
  11. {
  12. protected abstract X509Extensions GetX509Extensions();
  13. protected virtual ISet GetExtensionOids(
  14. bool critical)
  15. {
  16. X509Extensions extensions = GetX509Extensions();
  17. if (extensions != null)
  18. {
  19. HashSet set = new HashSet();
  20. foreach (DerObjectIdentifier oid in extensions.ExtensionOids)
  21. {
  22. X509Extension ext = extensions.GetExtension(oid);
  23. if (ext.IsCritical == critical)
  24. {
  25. set.Add(oid.Id);
  26. }
  27. }
  28. return set;
  29. }
  30. return null;
  31. }
  32. /// <summary>
  33. /// Get non critical extensions.
  34. /// </summary>
  35. /// <returns>A set of non critical extension oids.</returns>
  36. public virtual ISet GetNonCriticalExtensionOids()
  37. {
  38. return GetExtensionOids(false);
  39. }
  40. /// <summary>
  41. /// Get any critical extensions.
  42. /// </summary>
  43. /// <returns>A sorted list of critical entension.</returns>
  44. public virtual ISet GetCriticalExtensionOids()
  45. {
  46. return GetExtensionOids(true);
  47. }
  48. /// <summary>
  49. /// Get the value of a given extension.
  50. /// </summary>
  51. /// <param name="oid">The object ID of the extension. </param>
  52. /// <returns>An Asn1OctetString object if that extension is found or null if not.</returns>
  53. public Asn1OctetString GetExtensionValue(
  54. string oid)
  55. {
  56. return GetExtensionValue(new DerObjectIdentifier(oid));
  57. }
  58. public virtual Asn1OctetString GetExtensionValue(
  59. DerObjectIdentifier oid)
  60. {
  61. X509Extensions exts = GetX509Extensions();
  62. if (exts != null)
  63. {
  64. X509Extension ext = exts.GetExtension(oid);
  65. if (ext != null)
  66. {
  67. return ext.Value;
  68. }
  69. }
  70. return null;
  71. }
  72. }
  73. }
  74. #pragma warning restore
  75. #endif