private void Create_Click(object sender, RoutedEventArgs e) { try { model.Validate(); Mouse.OverrideCursor = Cursors.Wait; var crt = X509.CreateCertificate(model); using (var certProvider = new CertProvider() { AppendOnly = true }) { certProvider.IsRoot = !model.SignByCertificateAuthority; if (model.SignByCertificateAuthority) { certProvider.IssuerThumbprint = model.CertificateAuthority; } certProvider.Append(crt); } model.Value = crt; Result = model; Close(); } catch (Exception ex) { if (ex is ValueException vex) { MessageBox.Show(vex.Message, "Invalid Value", MessageBoxButton.OK, MessageBoxImage.Warning); this.Focus(vex.PropertyName); } else { MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error); } } finally { Mouse.OverrideCursor = null; } }