RevRepContentBuilder.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
  2. #pragma warning disable
  3. using System;
  4. using Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.Crmf;
  5. using Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509;
  6. namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.Cmp
  7. {
  8. public class RevRepContentBuilder
  9. {
  10. private readonly Asn1EncodableVector m_status = new Asn1EncodableVector();
  11. private readonly Asn1EncodableVector m_revCerts = new Asn1EncodableVector();
  12. private readonly Asn1EncodableVector m_crls = new Asn1EncodableVector();
  13. public virtual RevRepContentBuilder Add(PkiStatusInfo status)
  14. {
  15. m_status.Add(status);
  16. return this;
  17. }
  18. public virtual RevRepContentBuilder Add(PkiStatusInfo status, CertId certId)
  19. {
  20. if (m_status.Count != m_revCerts.Count)
  21. throw new InvalidOperationException("status and revCerts sequence must be in common order");
  22. m_status.Add(status);
  23. m_revCerts.Add(certId);
  24. return this;
  25. }
  26. public virtual RevRepContentBuilder AddCrl(CertificateList crl)
  27. {
  28. m_crls.Add(crl);
  29. return this;
  30. }
  31. public virtual RevRepContent Build()
  32. {
  33. Asn1EncodableVector v = new Asn1EncodableVector();
  34. v.Add(new DerSequence(m_status));
  35. if (m_revCerts.Count != 0)
  36. {
  37. v.Add(new DerTaggedObject(true, 0, new DerSequence(m_revCerts)));
  38. }
  39. if (m_crls.Count != 0)
  40. {
  41. v.Add(new DerTaggedObject(true, 1, new DerSequence(m_crls)));
  42. }
  43. return RevRepContent.GetInstance(new DerSequence(v));
  44. }
  45. }
  46. }
  47. #pragma warning restore
  48. #endif