KeyRecRepContent.cs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
  2. #pragma warning disable
  3. using System;
  4. using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities;
  5. namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.Cmp
  6. {
  7. public class KeyRecRepContent
  8. : Asn1Encodable
  9. {
  10. private readonly PkiStatusInfo status;
  11. private readonly CmpCertificate newSigCert;
  12. private readonly Asn1Sequence caCerts;
  13. private readonly Asn1Sequence keyPairHist;
  14. private KeyRecRepContent(Asn1Sequence seq)
  15. {
  16. status = PkiStatusInfo.GetInstance(seq[0]);
  17. for (int pos = 1; pos < seq.Count; ++pos)
  18. {
  19. Asn1TaggedObject tObj = Asn1TaggedObject.GetInstance(seq[pos]);
  20. switch (tObj.TagNo)
  21. {
  22. case 0:
  23. newSigCert = CmpCertificate.GetInstance(tObj.GetObject());
  24. break;
  25. case 1:
  26. caCerts = Asn1Sequence.GetInstance(tObj.GetObject());
  27. break;
  28. case 2:
  29. keyPairHist = Asn1Sequence.GetInstance(tObj.GetObject());
  30. break;
  31. default:
  32. throw new ArgumentException("unknown tag number: " + tObj.TagNo, "seq");
  33. }
  34. }
  35. }
  36. public static KeyRecRepContent GetInstance(object obj)
  37. {
  38. if (obj is KeyRecRepContent)
  39. return (KeyRecRepContent)obj;
  40. if (obj is Asn1Sequence)
  41. return new KeyRecRepContent((Asn1Sequence)obj);
  42. throw new ArgumentException("Invalid object: " + BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities.Platform.GetTypeName(obj), "obj");
  43. }
  44. public virtual PkiStatusInfo Status
  45. {
  46. get { return status; }
  47. }
  48. public virtual CmpCertificate NewSigCert
  49. {
  50. get { return newSigCert; }
  51. }
  52. public virtual CmpCertificate[] GetCACerts()
  53. {
  54. if (caCerts == null)
  55. return null;
  56. CmpCertificate[] results = new CmpCertificate[caCerts.Count];
  57. for (int i = 0; i != results.Length; ++i)
  58. {
  59. results[i] = CmpCertificate.GetInstance(caCerts[i]);
  60. }
  61. return results;
  62. }
  63. public virtual CertifiedKeyPair[] GetKeyPairHist()
  64. {
  65. if (keyPairHist == null)
  66. return null;
  67. CertifiedKeyPair[] results = new CertifiedKeyPair[keyPairHist.Count];
  68. for (int i = 0; i != results.Length; ++i)
  69. {
  70. results[i] = CertifiedKeyPair.GetInstance(keyPairHist[i]);
  71. }
  72. return results;
  73. }
  74. /**
  75. * <pre>
  76. * KeyRecRepContent ::= SEQUENCE {
  77. * status PKIStatusInfo,
  78. * newSigCert [0] CMPCertificate OPTIONAL,
  79. * caCerts [1] SEQUENCE SIZE (1..MAX) OF
  80. * CMPCertificate OPTIONAL,
  81. * keyPairHist [2] SEQUENCE SIZE (1..MAX) OF
  82. * CertifiedKeyPair OPTIONAL
  83. * }
  84. * </pre>
  85. * @return a basic ASN.1 object representation.
  86. */
  87. public override Asn1Object ToAsn1Object()
  88. {
  89. Asn1EncodableVector v = new Asn1EncodableVector(status);
  90. v.AddOptionalTagged(true, 0, newSigCert);
  91. v.AddOptionalTagged(true, 1, caCerts);
  92. v.AddOptionalTagged(true, 2, keyPairHist);
  93. return new DerSequence(v);
  94. }
  95. }
  96. }
  97. #pragma warning restore
  98. #endif