CertOrEncCert.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
  2. #pragma warning disable
  3. using System;
  4. using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.Crmf;
  5. using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities;
  6. namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.Cmp
  7. {
  8. public class CertOrEncCert
  9. : Asn1Encodable, IAsn1Choice
  10. {
  11. private readonly CmpCertificate certificate;
  12. private readonly EncryptedValue encryptedCert;
  13. private CertOrEncCert(Asn1TaggedObject tagged)
  14. {
  15. if (tagged.TagNo == 0)
  16. {
  17. certificate = CmpCertificate.GetInstance(tagged.GetObject());
  18. }
  19. else if (tagged.TagNo == 1)
  20. {
  21. encryptedCert = EncryptedValue.GetInstance(tagged.GetObject());
  22. }
  23. else
  24. {
  25. throw new ArgumentException("unknown tag: " + tagged.TagNo, "tagged");
  26. }
  27. }
  28. public static CertOrEncCert GetInstance(object obj)
  29. {
  30. if (obj is CertOrEncCert)
  31. return (CertOrEncCert)obj;
  32. if (obj is Asn1TaggedObject)
  33. return new CertOrEncCert((Asn1TaggedObject)obj);
  34. throw new ArgumentException("Invalid object: " + BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities.Platform.GetTypeName(obj), "obj");
  35. }
  36. public CertOrEncCert(CmpCertificate certificate)
  37. {
  38. if (certificate == null)
  39. throw new ArgumentNullException("certificate");
  40. this.certificate = certificate;
  41. }
  42. public CertOrEncCert(EncryptedValue encryptedCert)
  43. {
  44. if (encryptedCert == null)
  45. throw new ArgumentNullException("encryptedCert");
  46. this.encryptedCert = encryptedCert;
  47. }
  48. public virtual CmpCertificate Certificate
  49. {
  50. get { return certificate; }
  51. }
  52. public virtual EncryptedValue EncryptedCert
  53. {
  54. get { return encryptedCert; }
  55. }
  56. /**
  57. * <pre>
  58. * CertOrEncCert ::= CHOICE {
  59. * certificate [0] CMPCertificate,
  60. * encryptedCert [1] EncryptedValue
  61. * }
  62. * </pre>
  63. * @return a basic ASN.1 object representation.
  64. */
  65. public override Asn1Object ToAsn1Object()
  66. {
  67. if (certificate != null)
  68. {
  69. return new DerTaggedObject(true, 0, certificate);
  70. }
  71. return new DerTaggedObject(true, 1, encryptedCert);
  72. }
  73. }
  74. }
  75. #pragma warning restore
  76. #endif