ErrorMsgContent.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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.Cmp
  5. {
  6. /**
  7. * <pre>
  8. * ErrorMsgContent ::= SEQUENCE {
  9. * pKIStatusInfo PKIStatusInfo,
  10. * errorCode INTEGER OPTIONAL,
  11. * -- implementation-specific error codes
  12. * errorDetails PKIFreeText OPTIONAL
  13. * -- implementation-specific error details
  14. * }
  15. * </pre>
  16. */
  17. public class ErrorMsgContent
  18. : Asn1Encodable
  19. {
  20. public static ErrorMsgContent GetInstance(object obj)
  21. {
  22. if (obj is ErrorMsgContent errorMsgContent)
  23. return errorMsgContent;
  24. if (obj != null)
  25. return new ErrorMsgContent(Asn1Sequence.GetInstance(obj));
  26. return null;
  27. }
  28. private readonly PkiStatusInfo m_pkiStatusInfo;
  29. private readonly DerInteger m_errorCode;
  30. private readonly PkiFreeText m_errorDetails;
  31. private ErrorMsgContent(Asn1Sequence seq)
  32. {
  33. m_pkiStatusInfo = PkiStatusInfo.GetInstance(seq[0]);
  34. for (int pos = 1; pos < seq.Count; ++pos)
  35. {
  36. Asn1Encodable ae = seq[pos];
  37. if (ae is DerInteger)
  38. {
  39. m_errorCode = DerInteger.GetInstance(ae);
  40. }
  41. else
  42. {
  43. m_errorDetails = PkiFreeText.GetInstance(ae);
  44. }
  45. }
  46. }
  47. public ErrorMsgContent(PkiStatusInfo pkiStatusInfo)
  48. : this(pkiStatusInfo, null, null)
  49. {
  50. }
  51. public ErrorMsgContent(
  52. PkiStatusInfo pkiStatusInfo,
  53. DerInteger errorCode,
  54. PkiFreeText errorDetails)
  55. {
  56. if (pkiStatusInfo == null)
  57. throw new ArgumentNullException(nameof(pkiStatusInfo));
  58. m_pkiStatusInfo = pkiStatusInfo;
  59. m_errorCode = errorCode;
  60. m_errorDetails = errorDetails;
  61. }
  62. public virtual PkiStatusInfo PkiStatusInfo => m_pkiStatusInfo;
  63. public virtual DerInteger ErrorCode => m_errorCode;
  64. public virtual PkiFreeText ErrorDetails => m_errorDetails;
  65. /**
  66. * <pre>
  67. * ErrorMsgContent ::= SEQUENCE {
  68. * pKIStatusInfo PKIStatusInfo,
  69. * errorCode INTEGER OPTIONAL,
  70. * -- implementation-specific error codes
  71. * errorDetails PKIFreeText OPTIONAL
  72. * -- implementation-specific error details
  73. * }
  74. * </pre>
  75. * @return a basic ASN.1 object representation.
  76. */
  77. public override Asn1Object ToAsn1Object()
  78. {
  79. Asn1EncodableVector v = new Asn1EncodableVector(m_pkiStatusInfo);
  80. v.AddOptional(m_errorCode, m_errorDetails);
  81. return new DerSequence(v);
  82. }
  83. }
  84. }
  85. #pragma warning restore
  86. #endif