ReasonsMask.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
  2. #pragma warning disable
  3. using System;
  4. using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509;
  5. namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Pkix
  6. {
  7. /// <summary>
  8. /// This class helps to handle CRL revocation reasons mask. Each CRL handles a
  9. /// certain set of revocation reasons.
  10. /// </summary>
  11. internal class ReasonsMask
  12. {
  13. private int _reasons;
  14. /// <summary>
  15. /// Constructs are reason mask with the reasons.
  16. /// </summary>
  17. /// <param name="reasons">The reasons.</param>
  18. internal ReasonsMask(
  19. int reasons)
  20. {
  21. _reasons = reasons;
  22. }
  23. /// <summary>
  24. /// A reason mask with no reason.
  25. /// </summary>
  26. internal ReasonsMask()
  27. : this(0)
  28. {
  29. }
  30. /// <summary>
  31. /// A mask with all revocation reasons.
  32. /// </summary>
  33. internal static readonly ReasonsMask AllReasons = new ReasonsMask(
  34. ReasonFlags.AACompromise | ReasonFlags.AffiliationChanged | ReasonFlags.CACompromise
  35. | ReasonFlags.CertificateHold | ReasonFlags.CessationOfOperation
  36. | ReasonFlags.KeyCompromise | ReasonFlags.PrivilegeWithdrawn | ReasonFlags.Unused
  37. | ReasonFlags.Superseded);
  38. /**
  39. * Adds all reasons from the reasons mask to this mask.
  40. *
  41. * @param mask The reasons mask to add.
  42. */
  43. internal void AddReasons(
  44. ReasonsMask mask)
  45. {
  46. _reasons = _reasons | mask.Reasons.IntValue;
  47. }
  48. /// <summary>
  49. /// Returns <code>true</code> if this reasons mask contains all possible
  50. /// reasons.
  51. /// </summary>
  52. /// <returns>true if this reasons mask contains all possible reasons.
  53. /// </returns>
  54. internal bool IsAllReasons
  55. {
  56. get { return _reasons == AllReasons._reasons; }
  57. }
  58. /// <summary>
  59. /// Intersects this mask with the given reasons mask.
  60. /// </summary>
  61. /// <param name="mask">mask The mask to intersect with.</param>
  62. /// <returns>The intersection of this and teh given mask.</returns>
  63. internal ReasonsMask Intersect(
  64. ReasonsMask mask)
  65. {
  66. ReasonsMask _mask = new ReasonsMask();
  67. _mask.AddReasons(new ReasonsMask(_reasons & mask.Reasons.IntValue));
  68. return _mask;
  69. }
  70. /// <summary>
  71. /// Returns <c>true</c> if the passed reasons mask has new reasons.
  72. /// </summary>
  73. /// <param name="mask">The reasons mask which should be tested for new reasons.</param>
  74. /// <returns><c>true</c> if the passed reasons mask has new reasons.</returns>
  75. internal bool HasNewReasons(
  76. ReasonsMask mask)
  77. {
  78. return ((_reasons | mask.Reasons.IntValue ^ _reasons) != 0);
  79. }
  80. /// <summary>
  81. /// Returns the reasons in this mask.
  82. /// </summary>
  83. public ReasonFlags Reasons
  84. {
  85. get { return new ReasonFlags(_reasons); }
  86. }
  87. }
  88. }
  89. #pragma warning restore
  90. #endif