SMIMECapability.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
  2. #pragma warning disable
  3. using System;
  4. using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1;
  5. using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.Pkcs;
  6. namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.Smime
  7. {
  8. public class SmimeCapability
  9. : Asn1Encodable
  10. {
  11. /**
  12. * general preferences
  13. */
  14. public static readonly DerObjectIdentifier PreferSignedData = PkcsObjectIdentifiers.PreferSignedData;
  15. public static readonly DerObjectIdentifier CannotDecryptAny = PkcsObjectIdentifiers.CannotDecryptAny;
  16. public static readonly DerObjectIdentifier SmimeCapabilitiesVersions = PkcsObjectIdentifiers.SmimeCapabilitiesVersions;
  17. /**
  18. * encryption algorithms preferences
  19. */
  20. public static readonly DerObjectIdentifier DesCbc = new DerObjectIdentifier("1.3.14.3.2.7");
  21. public static readonly DerObjectIdentifier DesEde3Cbc = PkcsObjectIdentifiers.DesEde3Cbc;
  22. public static readonly DerObjectIdentifier RC2Cbc = PkcsObjectIdentifiers.RC2Cbc;
  23. private DerObjectIdentifier capabilityID;
  24. private Asn1Object parameters;
  25. public SmimeCapability(
  26. Asn1Sequence seq)
  27. {
  28. capabilityID = (DerObjectIdentifier) seq[0].ToAsn1Object();
  29. if (seq.Count > 1)
  30. {
  31. parameters = seq[1].ToAsn1Object();
  32. }
  33. }
  34. public SmimeCapability(
  35. DerObjectIdentifier capabilityID,
  36. Asn1Encodable parameters)
  37. {
  38. if (capabilityID == null)
  39. throw new ArgumentNullException("capabilityID");
  40. this.capabilityID = capabilityID;
  41. if (parameters != null)
  42. {
  43. this.parameters = parameters.ToAsn1Object();
  44. }
  45. }
  46. public static SmimeCapability GetInstance(
  47. object obj)
  48. {
  49. if (obj == null || obj is SmimeCapability)
  50. {
  51. return (SmimeCapability) obj;
  52. }
  53. if (obj is Asn1Sequence)
  54. {
  55. return new SmimeCapability((Asn1Sequence) obj);
  56. }
  57. throw new ArgumentException("Invalid SmimeCapability");
  58. }
  59. public DerObjectIdentifier CapabilityID
  60. {
  61. get { return capabilityID; }
  62. }
  63. public Asn1Object Parameters
  64. {
  65. get { return parameters; }
  66. }
  67. /**
  68. * Produce an object suitable for an Asn1OutputStream.
  69. * <pre>
  70. * SMIMECapability ::= Sequence {
  71. * capabilityID OBJECT IDENTIFIER,
  72. * parameters ANY DEFINED BY capabilityID OPTIONAL
  73. * }
  74. * </pre>
  75. */
  76. public override Asn1Object ToAsn1Object()
  77. {
  78. Asn1EncodableVector v = new Asn1EncodableVector(capabilityID);
  79. v.AddOptional(parameters);
  80. return new DerSequence(v);
  81. }
  82. }
  83. }
  84. #pragma warning restore
  85. #endif