ErrorMsgContent.cs 2.4 KB

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