93 lines
3.4 KiB
C#
93 lines
3.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using System.Security;
|
|
using System.Security.Cryptography;
|
|
using System.Security.Cryptography.X509Certificates;
|
|
using Opc.Ua;
|
|
using Opc.Ua.Client;
|
|
|
|
namespace Xylem.Common.Ui.Siemens.UAClient1500Demo
|
|
{
|
|
public partial class UAClientCertForm : Form
|
|
{
|
|
/// <summary>
|
|
/// Form Construction
|
|
/// </summary>
|
|
#region Construction
|
|
public UAClientCertForm(CertificateValidationEventArgs e)
|
|
{
|
|
InitializeComponent();
|
|
eventArgs = e;
|
|
|
|
//Get certificate meta data
|
|
String[] row1 = new String[] { "Issuer Info", eventArgs.Certificate.IssuerName.Name };
|
|
String[] row2 = new String[] { "Valid From", eventArgs.Certificate.NotBefore.ToString() };
|
|
String[] row3 = new String[] { "Valit To", eventArgs.Certificate.NotAfter.ToString() };
|
|
String[] row4 = new String[] { "Serial Number", eventArgs.Certificate.SerialNumber };
|
|
String[] row5 = new String[] { "Signature Algorithm", eventArgs.Certificate.SignatureAlgorithm.FriendlyName};
|
|
String[] row6 = new String[] { "Cipher Strength", eventArgs.Certificate.PublicKey.Key.KeySize.ToString()};
|
|
String[] row7 = new String[] { "Thumbprint", eventArgs.Certificate.Thumbprint};
|
|
String[] row8 = new String[] { "URI", eventArgs.Certificate.GetNameInfo(X509NameType.UrlName, false) };
|
|
String[] row9 = new String[] { "Subject Alternative Name", "" };
|
|
|
|
foreach (X509Extension ext in eventArgs.Certificate.Extensions)
|
|
{
|
|
AsnEncodedData asnData = new AsnEncodedData(ext.Oid, ext.RawData);
|
|
String tempString = asnData.Format(true);
|
|
if (tempString.Contains("URL") || tempString.Contains("IP") || tempString.Contains("DNS"))
|
|
{
|
|
row9 = new String[] { "Subject Alternative Name", tempString };
|
|
}
|
|
}
|
|
|
|
Object[] rows = new Object[] { row1, row2, row3, row4, row5, row6, row7, row8, row9};
|
|
foreach (String[] rowArray in rows)
|
|
{
|
|
certGridView.Rows.Add(rowArray);
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// Properties of this class
|
|
/// </summary>
|
|
#region Properties
|
|
/// <summary>
|
|
/// Keeps a session with an UA server.
|
|
/// </summary>
|
|
CertificateValidationEventArgs eventArgs = null;
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// Event handlers called by the UI
|
|
/// </summary>
|
|
#region UserInteractionsHandlers
|
|
private void acceptButton_Click(Object sender, EventArgs e)
|
|
{
|
|
eventArgs.Accept = true;
|
|
|
|
if (permaCheckBox.Checked)
|
|
{
|
|
X509Store store = new X509Store(StoreName.Root, StoreLocation.CurrentUser);
|
|
store.Open(OpenFlags.ReadWrite);
|
|
store.Add(eventArgs.Certificate);
|
|
store.Close();
|
|
}
|
|
Close();
|
|
}
|
|
private void rejectButton_Click(Object sender, EventArgs e)
|
|
{
|
|
eventArgs.Accept = false;
|
|
Close();
|
|
}
|
|
#endregion
|
|
}
|
|
}
|