|
|
|
|
using Codice.Client.Common;
|
|
|
|
|
using Codice.CM.Common;
|
|
|
|
|
using PlasticGui;
|
|
|
|
|
using PlasticPipe.Certificates;
|
|
|
|
|
using Unity.PlasticSCM.Editor.UI;
|
|
|
|
|
using UnityEditor;
|
|
|
|
|
|
|
|
|
|
namespace Unity.PlasticSCM.Editor.Configuration
|
|
|
|
|
{
|
|
|
|
|
internal class ChannelCertificateUiImpl : IChannelCertificateUI
|
|
|
|
|
{
|
|
|
|
|
internal ChannelCertificateUiImpl()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CertOperationResult IChannelCertificateUI.AcceptNewServerCertificate(PlasticCertInfo serverCertificate)
|
|
|
|
|
{
|
|
|
|
|
return GetUserResponse(
|
|
|
|
|
PlasticLocalization.GetString(
|
|
|
|
|
PlasticLocalization.Name.NewCertificateTitle),
|
|
|
|
|
PlasticLocalization.GetString(
|
|
|
|
|
PlasticLocalization.Name.NewCertificateMessageUnityVCS),
|
|
|
|
|
serverCertificate);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CertOperationResult IChannelCertificateUI.AcceptChangedServerCertificate(PlasticCertInfo serverCertificate)
|
|
|
|
|
{
|
|
|
|
|
return GetUserResponse(
|
|
|
|
|
PlasticLocalization.GetString(
|
|
|
|
|
PlasticLocalization.Name.ExistingCertificateChangedTitle),
|
|
|
|
|
PlasticLocalization.GetString(
|
|
|
|
|
PlasticLocalization.Name.ExistingCertificateChangedMessageUnityVCS),
|
|
|
|
|
serverCertificate);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool IChannelCertificateUI.AcceptInvalidHostname(string certHostname, string serverHostname)
|
|
|
|
|
{
|
|
|
|
|
bool result = false;
|
|
|
|
|
|
|
|
|
|
GUIActionRunner.RunGUIAction(delegate {
|
|
|
|
|
result = EditorUtility.DisplayDialog(
|
|
|
|
|
PlasticLocalization.GetString(
|
|
|
|
|
PlasticLocalization.Name.InvalidCertificateHostnameTitle),
|
|
|
|
|
PlasticLocalization.GetString(
|
|
|
|
|
PlasticLocalization.Name.InvalidCertificateHostnameMessage,
|
|
|
|
|
certHostname, serverHostname),
|
|
|
|
|
PlasticLocalization.GetString(PlasticLocalization.Name.YesButton),
|
|
|
|
|
PlasticLocalization.GetString(PlasticLocalization.Name.NoButton));
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CertOperationResult GetUserResponse(
|
|
|
|
|
string title, string message, PlasticCertInfo serverCertificate)
|
|
|
|
|
{
|
|
|
|
|
GuiMessage.GuiMessageResponseButton result =
|
|
|
|
|
GuiMessage.GuiMessageResponseButton.Neutral;
|
|
|
|
|
|
|
|
|
|
GUIActionRunner.RunGUIAction(delegate {
|
|
|
|
|
result = GuiMessage.ShowQuestion(
|
|
|
|
|
title,
|
|
|
|
|
GetCertificateMessageString(message, serverCertificate),
|
|
|
|
|
PlasticLocalization.GetString(PlasticLocalization.Name.YesButton),
|
|
|
|
|
PlasticLocalization.GetString(PlasticLocalization.Name.CancelButton),
|
|
|
|
|
PlasticLocalization.GetString(PlasticLocalization.Name.NoButton));
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
switch (result)
|
|
|
|
|
{
|
|
|
|
|
case GuiMessage.GuiMessageResponseButton.Positive:
|
|
|
|
|
return CertOperationResult.AddToStore;
|
|
|
|
|
case GuiMessage.GuiMessageResponseButton.Negative:
|
|
|
|
|
return CertOperationResult.DoNotAddToStore;
|
|
|
|
|
case GuiMessage.GuiMessageResponseButton.Neutral:
|
|
|
|
|
return CertOperationResult.Cancel;
|
|
|
|
|
default:
|
|
|
|
|
return CertOperationResult.Cancel;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
string GetCertificateMessageString(string message, PlasticCertInfo serverCertificate)
|
|
|
|
|
{
|
|
|
|
|
return string.Format(message,
|
|
|
|
|
CertificateUi.GetCnField(serverCertificate.Subject),
|
|
|
|
|
CertificateUi.GetCnField(serverCertificate.Issuer),
|
|
|
|
|
serverCertificate.Format,
|
|
|
|
|
serverCertificate.ExpirationDateString,
|
|
|
|
|
serverCertificate.KeyAlgorithm,
|
|
|
|
|
serverCertificate.CertHashString);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|