CrlID.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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.Ocsp
  5. {
  6. public class CrlID
  7. : Asn1Encodable
  8. {
  9. private readonly DerIA5String crlUrl;
  10. private readonly DerInteger crlNum;
  11. private readonly Asn1GeneralizedTime crlTime;
  12. // TODO Add GetInstance method(s) and make this private?
  13. public CrlID(Asn1Sequence seq)
  14. {
  15. foreach (Asn1TaggedObject o in seq)
  16. {
  17. switch (o.TagNo)
  18. {
  19. case 0:
  20. crlUrl = DerIA5String.GetInstance(o, true);
  21. break;
  22. case 1:
  23. crlNum = DerInteger.GetInstance(o, true);
  24. break;
  25. case 2:
  26. crlTime = Asn1GeneralizedTime.GetInstance(o, true);
  27. break;
  28. default:
  29. throw new ArgumentException("unknown tag number: " + o.TagNo);
  30. }
  31. }
  32. }
  33. public DerIA5String CrlUrl
  34. {
  35. get { return crlUrl; }
  36. }
  37. public DerInteger CrlNum
  38. {
  39. get { return crlNum; }
  40. }
  41. public Asn1GeneralizedTime CrlTime
  42. {
  43. get { return crlTime; }
  44. }
  45. /**
  46. * Produce an object suitable for an Asn1OutputStream.
  47. * <pre>
  48. * CrlID ::= Sequence {
  49. * crlUrl [0] EXPLICIT IA5String OPTIONAL,
  50. * crlNum [1] EXPLICIT Integer OPTIONAL,
  51. * crlTime [2] EXPLICIT GeneralizedTime OPTIONAL }
  52. * </pre>
  53. */
  54. public override Asn1Object ToAsn1Object()
  55. {
  56. Asn1EncodableVector v = new Asn1EncodableVector();
  57. v.AddOptionalTagged(true, 0, crlUrl);
  58. v.AddOptionalTagged(true, 1, crlNum);
  59. v.AddOptionalTagged(true, 2, crlTime);
  60. return new DerSequence(v);
  61. }
  62. }
  63. }
  64. #pragma warning restore
  65. #endif