CertStatus.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
  2. #pragma warning disable
  3. using System;
  4. using Best.HTTP.SecureProtocol.Org.BouncyCastle.Utilities;
  5. namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.Ocsp
  6. {
  7. public class CertStatus
  8. : Asn1Encodable, IAsn1Choice
  9. {
  10. private readonly int tagNo;
  11. private readonly Asn1Encodable value;
  12. /**
  13. * create a CertStatus object with a tag of zero.
  14. */
  15. public CertStatus()
  16. {
  17. tagNo = 0;
  18. value = DerNull.Instance;
  19. }
  20. public CertStatus(
  21. RevokedInfo info)
  22. {
  23. tagNo = 1;
  24. value = info;
  25. }
  26. public CertStatus(
  27. int tagNo,
  28. Asn1Encodable value)
  29. {
  30. this.tagNo = tagNo;
  31. this.value = value;
  32. }
  33. public CertStatus(Asn1TaggedObject choice)
  34. {
  35. this.tagNo = choice.TagNo;
  36. switch (choice.TagNo)
  37. {
  38. case 0:
  39. value = Asn1Null.GetInstance(choice, false);
  40. break;
  41. case 1:
  42. value = RevokedInfo.GetInstance(choice, false);
  43. break;
  44. case 2:
  45. value = Asn1Null.GetInstance(choice, false);
  46. break;
  47. default:
  48. throw new ArgumentException("Unknown tag encountered: " + Asn1Utilities.GetTagText(choice));
  49. }
  50. }
  51. public static CertStatus GetInstance(
  52. object obj)
  53. {
  54. if (obj == null || obj is CertStatus)
  55. {
  56. return (CertStatus)obj;
  57. }
  58. if (obj is Asn1TaggedObject)
  59. {
  60. return new CertStatus((Asn1TaggedObject)obj);
  61. }
  62. throw new ArgumentException("unknown object in factory: " + Org.BouncyCastle.Utilities.Platform.GetTypeName(obj), "obj");
  63. }
  64. public int TagNo
  65. {
  66. get { return tagNo; }
  67. }
  68. public Asn1Encodable Status
  69. {
  70. get { return value; }
  71. }
  72. /**
  73. * Produce an object suitable for an Asn1OutputStream.
  74. * <pre>
  75. * CertStatus ::= CHOICE {
  76. * good [0] IMPLICIT Null,
  77. * revoked [1] IMPLICIT RevokedInfo,
  78. * unknown [2] IMPLICIT UnknownInfo }
  79. * </pre>
  80. */
  81. public override Asn1Object ToAsn1Object()
  82. {
  83. return new DerTaggedObject(false, tagNo, value);
  84. }
  85. }
  86. }
  87. #pragma warning restore
  88. #endif