CertRequest.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
  2. #pragma warning disable
  3. using System;
  4. namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.Crmf
  5. {
  6. public class CertRequest
  7. : Asn1Encodable
  8. {
  9. private readonly DerInteger certReqId;
  10. private readonly CertTemplate certTemplate;
  11. private readonly Controls controls;
  12. private CertRequest(Asn1Sequence seq)
  13. {
  14. certReqId = DerInteger.GetInstance(seq[0]);
  15. certTemplate = CertTemplate.GetInstance(seq[1]);
  16. if (seq.Count > 2)
  17. {
  18. controls = Controls.GetInstance(seq[2]);
  19. }
  20. }
  21. public static CertRequest GetInstance(object obj)
  22. {
  23. if (obj is CertRequest)
  24. return (CertRequest)obj;
  25. if (obj != null)
  26. return new CertRequest(Asn1Sequence.GetInstance(obj));
  27. return null;
  28. }
  29. public CertRequest(
  30. int certReqId,
  31. CertTemplate certTemplate,
  32. Controls controls)
  33. : this(new DerInteger(certReqId), certTemplate, controls)
  34. {
  35. }
  36. public CertRequest(
  37. DerInteger certReqId,
  38. CertTemplate certTemplate,
  39. Controls controls)
  40. {
  41. this.certReqId = certReqId;
  42. this.certTemplate = certTemplate;
  43. this.controls = controls;
  44. }
  45. public virtual DerInteger CertReqID
  46. {
  47. get { return certReqId; }
  48. }
  49. public virtual CertTemplate CertTemplate
  50. {
  51. get { return certTemplate; }
  52. }
  53. public virtual Controls Controls
  54. {
  55. get { return controls; }
  56. }
  57. /**
  58. * <pre>
  59. * CertRequest ::= SEQUENCE {
  60. * certReqId INTEGER, -- ID for matching request and reply
  61. * certTemplate CertTemplate, -- Selected fields of cert to be issued
  62. * controls Controls OPTIONAL } -- Attributes affecting issuance
  63. * </pre>
  64. * @return a basic ASN.1 object representation.
  65. */
  66. public override Asn1Object ToAsn1Object()
  67. {
  68. Asn1EncodableVector v = new Asn1EncodableVector(certReqId, certTemplate);
  69. v.AddOptional(controls);
  70. return new DerSequence(v);
  71. }
  72. }
  73. }
  74. #pragma warning restore
  75. #endif