public MessageDlg( string text, MessageDlgButton left = MessageDlgButton.Ok, MessageDlgButton right = MessageDlgButton.None) { InitializeComponent(); Text = text; Left = left; Right = right; dialogPopup.Child = this; dialogPopup.Closed += ClosedEvent; }
public void MessageText( string text, MessageDlgButton left = MessageDlgButton.Ok, MessageDlgButton right = MessageDlgButton.None) { Text = text; Left = left; Right = right; }
private void RightButton_Click(object sender, RoutedEventArgs e) { Result = Right; dialogPopup.IsOpen = false; }
private void SetButtonText(Button button, MessageDlgButton item) { button.Content = item.ToString(); button.Visibility = (item == MessageDlgButton.None) ? Visibility.Collapsed : Visibility.Visible; }
/// <summary> /// Creates an application instance certificate if one does not already exist. /// </summary> public static async Task <X509Certificate2> CheckApplicationInstanceCertificate( ApplicationConfiguration configuration, ushort keySize, bool interactive, bool updateFile) { // create a default certificate if none is specified. CertificateIdentifier id = configuration.SecurityConfiguration.ApplicationCertificate; if (id == null) { id = new CertificateIdentifier(); id.StoreType = Utils.DefaultStoreType; id.StorePath = ApplicationData.Current.LocalFolder.Path + "\\OPC Foundation\\CertificateStores\\MachineDefault"; id.SubjectName = configuration.ApplicationName; } bool createNewCertificate = false; IList <string> serverDomainNames = configuration.GetServerDomainNames(); // check for private key. X509Certificate2 certificate = await id.Find(true); if (certificate == null) { // check if config file has wrong thumprint. if (!String.IsNullOrEmpty(id.SubjectName) && !String.IsNullOrEmpty(id.Thumbprint)) { CertificateIdentifier id2 = new CertificateIdentifier(); id2.StoreType = id.StoreType; id2.StorePath = id.StorePath; id2.SubjectName = id.SubjectName; id = id2; certificate = await id2.Find(true); if (certificate != null) { string message = Utils.Format( "Matching certificate with SubjectName={0} found but with a different thumbprint. Use certificate?", id.SubjectName); if (interactive) { MessageDlg dialog = new MessageDlg(message, MessageDlgButton.Yes, MessageDlgButton.No); MessageDlgButton result = await dialog.ShowAsync(); if (result != MessageDlgButton.Yes) { certificate = null; } } } } // check if private key is missing. if (certificate == null) { certificate = await id.Find(false); if (certificate != null) { string message = Utils.Format( "Matching certificate with SubjectName={0} found but without a private key. Create a new certificate?", id.SubjectName); if (interactive) { MessageDlg dialog = new MessageDlg(message, MessageDlgButton.Yes, MessageDlgButton.No); MessageDlgButton result = await dialog.ShowAsync(); if (result != MessageDlgButton.Yes) { certificate = null; } } } } // check domains. if (certificate != null) { IList <string> certificateDomainNames = Utils.GetDomainsFromCertficate(certificate); for (int ii = 0; ii < serverDomainNames.Count; ii++) { if (Utils.FindStringIgnoreCase(certificateDomainNames, serverDomainNames[ii])) { continue; } if (String.Compare(serverDomainNames[ii], "localhost", StringComparison.OrdinalIgnoreCase) == 0) { // check computer name. string computerName = Utils.GetHostName(); if (Utils.FindStringIgnoreCase(certificateDomainNames, computerName)) { continue; } } string message = Utils.Format( "The server is configured to use domain '{0}' which does not appear in the certificate. Create new certificate?", serverDomainNames[ii]); createNewCertificate = true; if (interactive) { MessageDlg dialog = new MessageDlg(message, MessageDlgButton.Yes, MessageDlgButton.No); MessageDlgButton result = await dialog.ShowAsync(); if (result != MessageDlgButton.Yes) { createNewCertificate = false; continue; } } Utils.Trace(message); break; } if (!createNewCertificate) { // check if key size matches. if (keySize == certificate.GetRSAPublicKey().KeySize) { await AddToTrustedStore(configuration, certificate); return(certificate); } } } // prompt user. if (interactive) { if (!createNewCertificate) { MessageDlg dialog = new MessageDlg("Application does not have an instance certificate.\n Create one automatically?", MessageDlgButton.Yes, MessageDlgButton.No); MessageDlgButton result = await dialog.ShowAsync(); if (result != MessageDlgButton.Yes) { return(null); } } } // delete existing certificate. if (certificate != null) { await DeleteApplicationInstanceCertificate(configuration); } // add the localhost. if (serverDomainNames.Count == 0) { serverDomainNames.Add(Utils.GetHostName()); } certificate = await Opc.Ua.CertificateFactory.CreateCertificate( id.StoreType, id.StorePath, configuration.ApplicationUri, configuration.ApplicationName, null, serverDomainNames, keySize, 300); id.Certificate = certificate; await AddToTrustedStore(configuration, certificate); if (updateFile && !String.IsNullOrEmpty(configuration.SourceFilePath)) { configuration.SaveToFile(configuration.SourceFilePath); } await configuration.CertificateValidator.Update(configuration.SecurityConfiguration); return(await configuration.SecurityConfiguration.ApplicationCertificate.LoadPrivateKey(null)); } return(certificate); }