private void FormMain_Load(object sender, EventArgs e) { listFileFormats.Items.Clear(); int wid = listFileFormats.Width; listFileFormats.Columns.Clear(); listFileFormats.Columns.Add("Name", (int)(wid * 0.2), HorizontalAlignment.Left); listFileFormats.Columns.Add("Contents", (int)(wid * 0.2), HorizontalAlignment.Left); listFileFormats.Columns.Add("Extension", (int)(wid * 0.2), HorizontalAlignment.Left); listFileFormats.Columns.Add("Needs Pwd?", (int)(wid * 0.1), HorizontalAlignment.Left); listFileFormats.Columns.Add("Comments", (int)(wid * 0.3), HorizontalAlignment.Left); int index = 0; foreach (X509FileFlavor flavor in X509FlavorList) { ListViewItem lvi = new ListViewItem(flavor.Name, index++); lvi.SubItems.Add(flavor.ContentType.ToString()); lvi.SubItems.Add(flavor.ExtensionName); lvi.SubItems.Add(flavor.Comments); lvi.SubItems.Add(flavor.RequiresPassword.ToString()); listFileFormats.Items.Add(lvi); } FileFlavor = null; }
private void buttonCreateCertificateFile_Click(object sender, EventArgs e) { try { if (string.IsNullOrEmpty(ExePath)) { return; } X509FileFlavor ff = X509FlavorList.SingleOrDefault(rr => rr.Name == FileFlavor.Name); if (ff != null) { if (ff.RequiresPassword) { alert("Requires Password. Not Implemented."); } else { string folderpath = GetFolderpath(); if (!WriteCertificateToFile(ExePath, folderpath, Certificate, ff, out string explanation)) { alert(explanation); } } } } catch (Exception ex) { logit($"Err={ex}"); } }
private void listFileFormats_SelectedIndexChanged(object sender, EventArgs e) { ListView lv = (sender as ListView); if (lv.SelectedItems.Count == 0) { return; } ListViewItem lvi = (sender as ListView).SelectedItems[0]; FileFlavor = X509FlavorList.SingleOrDefault(rr => rr.Name == lvi.Text); buttonCreateCertificateFile.Enabled = (FileFlavor != null); }
private static bool WriteCertificateToFile(string exeFullpath, string outputFolderpath, X509Certificate certificate, X509FileFlavor x509Flavor, out string explanation) { explanation = ""; string filepath = $"{Path.GetFileNameWithoutExtension(exeFullpath)}.{x509Flavor.ExtensionName}"; string fullpath = Path.Combine(outputFolderpath, filepath); try { if (File.Exists(fullpath)) { File.Delete(fullpath); } File.WriteAllBytes(fullpath, certificate.Export(x509Flavor.ContentType)); return(true); } catch (Exception ex) { explanation = $"Cannot write={fullpath} Err={ex}"; return(false); } }