OcspListID.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
  2. #pragma warning disable
  3. using System;
  4. using System.Collections;
  5. using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities;
  6. using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities.Collections;
  7. namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.Esf
  8. {
  9. /// <remarks>
  10. /// RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
  11. /// <code>
  12. /// OcspListID ::= SEQUENCE {
  13. /// ocspResponses SEQUENCE OF OcspResponsesID
  14. /// }
  15. /// </code>
  16. /// </remarks>
  17. public class OcspListID
  18. : Asn1Encodable
  19. {
  20. private readonly Asn1Sequence ocspResponses;
  21. public static OcspListID GetInstance(
  22. object obj)
  23. {
  24. if (obj == null || obj is OcspListID)
  25. return (OcspListID) obj;
  26. if (obj is Asn1Sequence)
  27. return new OcspListID((Asn1Sequence) obj);
  28. throw new ArgumentException(
  29. "Unknown object in 'OcspListID' factory: "
  30. + BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities.Platform.GetTypeName(obj),
  31. "obj");
  32. }
  33. private OcspListID(
  34. Asn1Sequence seq)
  35. {
  36. if (seq == null)
  37. throw new ArgumentNullException("seq");
  38. if (seq.Count != 1)
  39. throw new ArgumentException("Bad sequence size: " + seq.Count, "seq");
  40. this.ocspResponses = (Asn1Sequence) seq[0].ToAsn1Object();
  41. foreach (Asn1Encodable ae in this.ocspResponses)
  42. {
  43. OcspResponsesID.GetInstance(ae.ToAsn1Object());
  44. }
  45. }
  46. public OcspListID(
  47. params OcspResponsesID[] ocspResponses)
  48. {
  49. if (ocspResponses == null)
  50. throw new ArgumentNullException("ocspResponses");
  51. this.ocspResponses = new DerSequence(ocspResponses);
  52. }
  53. public OcspListID(
  54. IEnumerable ocspResponses)
  55. {
  56. if (ocspResponses == null)
  57. throw new ArgumentNullException("ocspResponses");
  58. if (!CollectionUtilities.CheckElementsAreOfType(ocspResponses, typeof(OcspResponsesID)))
  59. throw new ArgumentException("Must contain only 'OcspResponsesID' objects", "ocspResponses");
  60. this.ocspResponses = new DerSequence(
  61. Asn1EncodableVector.FromEnumerable(ocspResponses));
  62. }
  63. public OcspResponsesID[] GetOcspResponses()
  64. {
  65. OcspResponsesID[] result = new OcspResponsesID[ocspResponses.Count];
  66. for (int i = 0; i < ocspResponses.Count; ++i)
  67. {
  68. result[i] = OcspResponsesID.GetInstance(ocspResponses[i].ToAsn1Object());
  69. }
  70. return result;
  71. }
  72. public override Asn1Object ToAsn1Object()
  73. {
  74. return new DerSequence(ocspResponses);
  75. }
  76. }
  77. }
  78. #pragma warning restore
  79. #endif