AuthorityInformationAccess.cs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
  2. #pragma warning disable
  3. using System;
  4. using System.Collections;
  5. using System.Text;
  6. using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1;
  7. using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities;
  8. namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509
  9. {
  10. /**
  11. * The AuthorityInformationAccess object.
  12. * <pre>
  13. * id-pe-authorityInfoAccess OBJECT IDENTIFIER ::= { id-pe 1 }
  14. *
  15. * AuthorityInfoAccessSyntax ::=
  16. * Sequence SIZE (1..MAX) OF AccessDescription
  17. * AccessDescription ::= Sequence {
  18. * accessMethod OBJECT IDENTIFIER,
  19. * accessLocation GeneralName }
  20. *
  21. * id-ad OBJECT IDENTIFIER ::= { id-pkix 48 }
  22. * id-ad-caIssuers OBJECT IDENTIFIER ::= { id-ad 2 }
  23. * id-ad-ocsp OBJECT IDENTIFIER ::= { id-ad 1 }
  24. * </pre>
  25. */
  26. public class AuthorityInformationAccess
  27. : Asn1Encodable
  28. {
  29. private readonly AccessDescription[] descriptions;
  30. public static AuthorityInformationAccess GetInstance(object obj)
  31. {
  32. if (obj is AuthorityInformationAccess)
  33. return (AuthorityInformationAccess)obj;
  34. if (obj == null)
  35. return null;
  36. return new AuthorityInformationAccess(Asn1Sequence.GetInstance(obj));
  37. }
  38. private AuthorityInformationAccess(
  39. Asn1Sequence seq)
  40. {
  41. if (seq.Count < 1)
  42. throw new ArgumentException("sequence may not be empty");
  43. this.descriptions = new AccessDescription[seq.Count];
  44. for (int i = 0; i < seq.Count; ++i)
  45. {
  46. descriptions[i] = AccessDescription.GetInstance(seq[i]);
  47. }
  48. }
  49. public AuthorityInformationAccess(
  50. AccessDescription description)
  51. {
  52. this.descriptions = new AccessDescription[]{ description };
  53. }
  54. /**
  55. * create an AuthorityInformationAccess with the oid and location provided.
  56. */
  57. public AuthorityInformationAccess(DerObjectIdentifier oid, GeneralName location)
  58. : this(new AccessDescription(oid, location))
  59. {
  60. }
  61. public AccessDescription[] GetAccessDescriptions()
  62. {
  63. return (AccessDescription[])descriptions.Clone();
  64. }
  65. public override Asn1Object ToAsn1Object()
  66. {
  67. return new DerSequence(descriptions);
  68. }
  69. public override string ToString()
  70. {
  71. //return "AuthorityInformationAccess: Oid(" + this.descriptions[0].AccessMethod.Id + ")";
  72. StringBuilder buf = new StringBuilder();
  73. string sep = BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities.Platform.NewLine;
  74. buf.Append("AuthorityInformationAccess:");
  75. buf.Append(sep);
  76. foreach (AccessDescription description in descriptions)
  77. {
  78. buf.Append(" ");
  79. buf.Append(description);
  80. buf.Append(sep);
  81. }
  82. return buf.ToString();
  83. }
  84. }
  85. }
  86. #pragma warning restore
  87. #endif