No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ChannelCertificateUiImpl.cs 3.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. using Codice.Client.Common;
  2. using Codice.CM.Common;
  3. using PlasticGui;
  4. using PlasticPipe.Certificates;
  5. using Unity.PlasticSCM.Editor.UI;
  6. using UnityEditor;
  7. namespace Unity.PlasticSCM.Editor.Configuration
  8. {
  9. internal class ChannelCertificateUiImpl : IChannelCertificateUI
  10. {
  11. internal ChannelCertificateUiImpl()
  12. {
  13. }
  14. CertOperationResult IChannelCertificateUI.AcceptNewServerCertificate(PlasticCertInfo serverCertificate)
  15. {
  16. return GetUserResponse(
  17. PlasticLocalization.GetString(
  18. PlasticLocalization.Name.NewCertificateTitle),
  19. PlasticLocalization.GetString(
  20. PlasticLocalization.Name.NewCertificateMessageUnityVCS),
  21. serverCertificate);
  22. }
  23. CertOperationResult IChannelCertificateUI.AcceptChangedServerCertificate(PlasticCertInfo serverCertificate)
  24. {
  25. return GetUserResponse(
  26. PlasticLocalization.GetString(
  27. PlasticLocalization.Name.ExistingCertificateChangedTitle),
  28. PlasticLocalization.GetString(
  29. PlasticLocalization.Name.ExistingCertificateChangedMessageUnityVCS),
  30. serverCertificate);
  31. }
  32. bool IChannelCertificateUI.AcceptInvalidHostname(string certHostname, string serverHostname)
  33. {
  34. bool result = false;
  35. GUIActionRunner.RunGUIAction(delegate {
  36. result = EditorUtility.DisplayDialog(
  37. PlasticLocalization.GetString(
  38. PlasticLocalization.Name.InvalidCertificateHostnameTitle),
  39. PlasticLocalization.GetString(
  40. PlasticLocalization.Name.InvalidCertificateHostnameMessage,
  41. certHostname, serverHostname),
  42. PlasticLocalization.GetString(PlasticLocalization.Name.YesButton),
  43. PlasticLocalization.GetString(PlasticLocalization.Name.NoButton));
  44. });
  45. return result;
  46. }
  47. CertOperationResult GetUserResponse(
  48. string title, string message, PlasticCertInfo serverCertificate)
  49. {
  50. GuiMessage.GuiMessageResponseButton result =
  51. GuiMessage.GuiMessageResponseButton.Neutral;
  52. GUIActionRunner.RunGUIAction(delegate {
  53. result = GuiMessage.ShowQuestion(
  54. title,
  55. GetCertificateMessageString(message, serverCertificate),
  56. PlasticLocalization.GetString(PlasticLocalization.Name.YesButton),
  57. PlasticLocalization.GetString(PlasticLocalization.Name.CancelButton),
  58. PlasticLocalization.GetString(PlasticLocalization.Name.NoButton));
  59. });
  60. switch (result)
  61. {
  62. case GuiMessage.GuiMessageResponseButton.Positive:
  63. return CertOperationResult.AddToStore;
  64. case GuiMessage.GuiMessageResponseButton.Negative:
  65. return CertOperationResult.DoNotAddToStore;
  66. case GuiMessage.GuiMessageResponseButton.Neutral:
  67. return CertOperationResult.Cancel;
  68. default:
  69. return CertOperationResult.Cancel;
  70. }
  71. }
  72. string GetCertificateMessageString(string message, PlasticCertInfo serverCertificate)
  73. {
  74. return string.Format(message,
  75. CertificateUi.GetCnField(serverCertificate.Subject),
  76. CertificateUi.GetCnField(serverCertificate.Issuer),
  77. serverCertificate.Format,
  78. serverCertificate.ExpirationDateString,
  79. serverCertificate.KeyAlgorithm,
  80. serverCertificate.CertHashString);
  81. }
  82. }
  83. }