OcspListID.cs 2.2 KB

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