sslservertrustdialog.cs

来自「SharpDevelop2.0.0 c#开发免费工具」· CS 代码 · 共 130 行

CS
130
字号
// <file>
//     <copyright see="prj:///doc/copyright.txt"/>
//     <license see="prj:///doc/license.txt"/>
//     <owner name="Mike Krüger" email="mike@icsharpcode.net"/>
//     <version>$Revision: 915 $</version>
// </file>

using System;
using System.Reflection;
using System.Drawing;
using System.Text;
using System.Threading;
using System.IO;
using System.Windows.Forms;
using ICSharpCode.SharpDevelop.Gui;
using NSvn.Common;
using NSvn.Core;
using ICSharpCode.SharpDevelop.Gui.XmlForms;

namespace ICSharpCode.Svn.Gui
{
	/// <summary>
	/// Description of LoginDialog.
	/// </summary>
	public class SslServerTrustDialog : BaseSharpDevelopForm
	{
		SslServerCertificateInfo certificateInfo;
		SslFailures              failures;
		
		public SslServerCertificateInfo CertificateInfo {
			get {
				return certificateInfo;
			}
			set {
				certificateInfo = value;
				UpdateCertificateInfo();
			}
		}
		
		public SslFailures Failures {
			get {
				return failures;
			}
			set {
				failures = value;
				UpdateFailures();
			}
		}
		
		public bool MaySave {
			get {
				return ((CheckBox)ControlDictionary["saveCredentialsCheckBox"]).Checked;
			}
			set {
				((CheckBox)ControlDictionary["saveCredentialsCheckBox"]).Checked = value;
			}
		}
		
		public SslServerTrustCredential Credential {
			get {
				SslServerTrustCredential cred = new SslServerTrustCredential();
				cred.AcceptedFailures = failures;
				cred.MaySave = MaySave;
				return cred;
			}
		}
		
		public SslServerTrustDialog(SslServerCertificateInfo certificateInfo, SslFailures failures, bool maySave)
		{
			SetupFromXmlStream(Assembly.GetExecutingAssembly().GetManifestResourceStream("ICSharpCode.Svn.Resources.SslServerTrustDialog.xfrm"));
			this.CertificateInfo = certificateInfo;
			this.Failures        = failures;
			this.MaySave         = maySave;
		}
		
		void UpdateCertificateInfo()
		{
			if (certificateInfo != null) {
				ControlDictionary["hostNameLabel"].Text      = certificateInfo.HostName;
				ControlDictionary["fingerPrintlabel"].Text   = certificateInfo.FingerPrint;
				ControlDictionary["validLabel"].Text         = "From " + certificateInfo.ValidFrom + " to " + certificateInfo.ValidUntil;
				ControlDictionary["issuerLabel"].Text        = certificateInfo.Issuer;
				ControlDictionary["certificateTextBox"].Text = certificateInfo.AsciiCertificate;
			} else {
				ControlDictionary["hostNameLabel"].Text      = String.Empty;
				ControlDictionary["fingerPrintlabel"].Text   = String.Empty;
				ControlDictionary["validLabel"].Text         = String.Empty;
				ControlDictionary["issuerLabel"].Text        = String.Empty;
				ControlDictionary["certificateTextBox"].Text = String.Empty;
			}
		}
		
		bool HasFailures(SslFailures testFailures)
		{
			return (failures & testFailures) == testFailures;
		}
		
		void UpdateFailures()
		{
			if (HasFailures(SslFailures.CertificateAuthorityUnknown)) {
				ControlDictionary["certificateAuthorityStatusLabel"].Text      = "The issuing certificate authority(CA) is not trusted.";
				ControlDictionary["certificateAuthorityStatusLabel"].ForeColor = Color.Red;
			} else {
				ControlDictionary["certificateAuthorityStatusLabel"].Text      = "The issuing certificate authority(CA) is known and trusted.";
				ControlDictionary["certificateAuthorityStatusLabel"].ForeColor = Color.Green;
			}
			
			if (HasFailures(SslFailures.CertificateNameMismatch)) {
				ControlDictionary["certificateNameStatusLabel"].Text      = "The certificate's hostname does not match the hostname of the server.";
				ControlDictionary["certificateNameStatusLabel"].ForeColor = Color.Red;
			} else {
				ControlDictionary["certificateNameStatusLabel"].Text      = "The certificate's hostname matches the hostname of the server.";
				ControlDictionary["certificateNameStatusLabel"].ForeColor = Color.Green;
			}
			
			if (HasFailures(SslFailures.Expired)) {
				ControlDictionary["certificateDateStatusLabel"].Text      = "The server certificate has expired.";
				ControlDictionary["certificateDateStatusLabel"].ForeColor = Color.Red;
			} else if (HasFailures(SslFailures.NotYetValid)) {
				ControlDictionary["certificateDateStatusLabel"].Text      = "The server certificate is not yet valid.";
				ControlDictionary["certificateDateStatusLabel"].ForeColor = Color.Red;
			} else {
				ControlDictionary["certificateDateStatusLabel"].Text      = "The server certificate date is valid.";
				ControlDictionary["certificateDateStatusLabel"].ForeColor = Color.Green;
			}
			
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?