private void ExportApplicationCertificateBTN_Click(object sender, EventArgs e)
{
try
{
const string caption = "Export Application Certificate";
ManagedApplication application = ManageApplicationSecurityCTRL.GetSelectedApplication();
if (application == null)
{
return;
}
application.Reload();
if (application.Certificate == null)
{
MessageBox.Show(this, "Certificate is not specified.", caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
X509Certificate2 certificate = application.Certificate.Find(false);
if (certificate == null)
{
MessageBox.Show(this, "Certificate does not exist.", caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
string displayName = null;
foreach (string element in Utils.ParseDistinguishedName(certificate.Subject))
{
if (element.StartsWith("CN="))
{
displayName = element.Substring(3);
break;
}
}
StringBuilder filePath = new StringBuilder();
if (!String.IsNullOrEmpty(displayName))
{
filePath.Append(displayName);
filePath.Append(" ");
}
filePath.Append("[");
filePath.Append(certificate.Thumbprint);
filePath.Append("].der");
SaveFileDialog dialog = new SaveFileDialog();
dialog.CheckFileExists = false;
dialog.CheckPathExists = true;
dialog.DefaultExt = ".pfx";
dialog.Filter = "Certificate Files (*.der)|*.der|All Files (*.*)|*.*";
dialog.ValidateNames = true;
dialog.Title = "Save Certificate File";
dialog.FileName = filePath.ToString();
dialog.InitialDirectory = m_currentDirectory;
if (dialog.ShowDialog() != DialogResult.OK)
{
return;
}
FileInfo fileInfo = new FileInfo(dialog.FileName);
m_currentDirectory = fileInfo.DirectoryName;
using (Stream ostrm = File.Open(fileInfo.FullName, FileMode.Create, FileAccess.ReadWrite, FileShare.None))
{
byte[] data = certificate.RawData;
ostrm.Write(data, 0, data.Length);
}
}
catch (Exception exception)
{
GuiUtils.HandleException(this.Text, MethodBase.GetCurrentMethod(), exception);
}
}