CertRepMessage.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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.Cmp
  6. {
  7. public class CertRepMessage
  8. : Asn1Encodable
  9. {
  10. public static CertRepMessage GetInstance(object obj)
  11. {
  12. if (obj is CertRepMessage certRepMessage)
  13. return certRepMessage;
  14. if (obj != null)
  15. return new CertRepMessage(Asn1Sequence.GetInstance(obj));
  16. return null;
  17. }
  18. private readonly Asn1Sequence m_caPubs;
  19. private readonly Asn1Sequence m_response;
  20. private CertRepMessage(Asn1Sequence seq)
  21. {
  22. int index = 0;
  23. if (seq.Count > 1)
  24. {
  25. m_caPubs = Asn1Sequence.GetInstance((Asn1TaggedObject)seq[index++], true);
  26. }
  27. m_response = Asn1Sequence.GetInstance(seq[index]);
  28. }
  29. public CertRepMessage(CmpCertificate[] caPubs, CertResponse[] response)
  30. {
  31. if (response == null)
  32. throw new ArgumentNullException(nameof(response));
  33. if (caPubs != null)
  34. {
  35. m_caPubs = new DerSequence(caPubs);
  36. }
  37. m_response = new DerSequence(response);
  38. }
  39. public virtual CmpCertificate[] GetCAPubs()
  40. {
  41. return m_caPubs == null ? null : m_caPubs.MapElements(CmpCertificate.GetInstance);
  42. }
  43. public virtual CertResponse[] GetResponse()
  44. {
  45. return m_response.MapElements(CertResponse.GetInstance);
  46. }
  47. /**
  48. * <pre>
  49. * CertRepMessage ::= SEQUENCE {
  50. * caPubs [1] SEQUENCE SIZE (1..MAX) OF CMPCertificate
  51. * OPTIONAL,
  52. * response SEQUENCE OF CertResponse
  53. * }
  54. * </pre>
  55. * @return a basic ASN.1 object representation.
  56. */
  57. public override Asn1Object ToAsn1Object()
  58. {
  59. Asn1EncodableVector v = new Asn1EncodableVector(2);
  60. v.AddOptionalTagged(true, 1, m_caPubs);
  61. v.Add(m_response);
  62. return new DerSequence(v);
  63. }
  64. }
  65. }
  66. #pragma warning restore
  67. #endif