EncryptedKey.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
  2. #pragma warning disable
  3. using Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.Cms;
  4. namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.Crmf
  5. {
  6. public class EncryptedKey
  7. : Asn1Encodable, IAsn1Choice
  8. {
  9. public static EncryptedKey GetInstance(object obj)
  10. {
  11. if (obj is EncryptedKey encryptedKey)
  12. return encryptedKey;
  13. if (obj is Asn1TaggedObject taggedObject)
  14. return new EncryptedKey(EnvelopedData.GetInstance(taggedObject, false));
  15. return new EncryptedKey(EncryptedValue.GetInstance(obj));
  16. }
  17. private readonly EnvelopedData m_envelopedData;
  18. private readonly EncryptedValue m_encryptedValue;
  19. public EncryptedKey(EnvelopedData envelopedData)
  20. {
  21. m_envelopedData = envelopedData;
  22. }
  23. public EncryptedKey(EncryptedValue encryptedValue)
  24. {
  25. m_encryptedValue = encryptedValue;
  26. }
  27. public virtual bool IsEncryptedValue => m_encryptedValue != null;
  28. public virtual Asn1Encodable Value
  29. {
  30. get
  31. {
  32. if (m_encryptedValue != null)
  33. return m_encryptedValue;
  34. return m_envelopedData;
  35. }
  36. }
  37. /**
  38. * <pre>
  39. * EncryptedKey ::= CHOICE {
  40. * encryptedValue EncryptedValue, -- deprecated
  41. * envelopedData [0] EnvelopedData }
  42. * -- The encrypted private key MUST be placed in the envelopedData
  43. * -- encryptedContentInfo encryptedContent OCTET STRING.
  44. * </pre>
  45. */
  46. public override Asn1Object ToAsn1Object()
  47. {
  48. if (m_encryptedValue != null)
  49. return m_encryptedValue.ToAsn1Object();
  50. return new DerTaggedObject(false, 0, m_envelopedData);
  51. }
  52. }
  53. }
  54. #pragma warning restore
  55. #endif