94 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			94 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
|  | 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); | |||
|  |         } | |||
|  |     } | |||
|  | } |