CertificateValues.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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.Asn1.X509;
  6. using Best.HTTP.SecureProtocol.Org.BouncyCastle.Utilities;
  7. namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.Esf
  8. {
  9. /// <remarks>
  10. /// RFC 3126: 4.3.1 Certificate Values Attribute Definition
  11. /// <code>
  12. /// CertificateValues ::= SEQUENCE OF Certificate
  13. /// </code>
  14. /// </remarks>
  15. public class CertificateValues
  16. : Asn1Encodable
  17. {
  18. private readonly Asn1Sequence certificates;
  19. public static CertificateValues GetInstance(
  20. object obj)
  21. {
  22. if (obj == null || obj is CertificateValues)
  23. return (CertificateValues) obj;
  24. if (obj is Asn1Sequence)
  25. return new CertificateValues((Asn1Sequence) obj);
  26. throw new ArgumentException(
  27. "Unknown object in 'CertificateValues' factory: "
  28. + Org.BouncyCastle.Utilities.Platform.GetTypeName(obj),
  29. "obj");
  30. }
  31. private CertificateValues(
  32. Asn1Sequence seq)
  33. {
  34. if (seq == null)
  35. throw new ArgumentNullException("seq");
  36. foreach (Asn1Encodable ae in seq)
  37. {
  38. X509CertificateStructure.GetInstance(ae.ToAsn1Object());
  39. }
  40. this.certificates = seq;
  41. }
  42. public CertificateValues(
  43. params X509CertificateStructure[] certificates)
  44. {
  45. if (certificates == null)
  46. throw new ArgumentNullException("certificates");
  47. this.certificates = new DerSequence(certificates);
  48. }
  49. public CertificateValues(
  50. IEnumerable<X509CertificateStructure> certificates)
  51. {
  52. if (certificates == null)
  53. throw new ArgumentNullException("certificates");
  54. this.certificates = new DerSequence(
  55. Asn1EncodableVector.FromEnumerable(certificates));
  56. }
  57. public X509CertificateStructure[] GetCertificates()
  58. {
  59. X509CertificateStructure[] result = new X509CertificateStructure[certificates.Count];
  60. for (int i = 0; i < certificates.Count; ++i)
  61. {
  62. result[i] = X509CertificateStructure.GetInstance(certificates[i]);
  63. }
  64. return result;
  65. }
  66. public override Asn1Object ToAsn1Object()
  67. {
  68. return certificates;
  69. }
  70. }
  71. }
  72. #pragma warning restore
  73. #endif