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