/// <summary> /// Add new certificate. /// </summary> private void CertificateAddMnu_Click(object sender, EventArgs e) { try { OpenFileDialog dlg = new OpenFileDialog(); dlg.Multiselect = true; if (string.IsNullOrEmpty(_path)) { dlg.InitialDirectory = Directory.GetCurrentDirectory(); } else { System.IO.FileInfo fi = new System.IO.FileInfo(_path); dlg.InitialDirectory = fi.DirectoryName; dlg.FileName = fi.Name; } dlg.Filter = Properties.Resources.PemFilterTxt; dlg.DefaultExt = ".pem"; dlg.ValidateNames = true; if (dlg.ShowDialog(Parent) == DialogResult.OK) { foreach (string fileName in dlg.FileNames) { try { _path = fileName; if (File.Exists(fileName)) { GXx509Certificate cert = GXx509Certificate.Load(fileName); foreach (ListViewItem it in CertificatesList.Items) { if (it.SubItems[1].Text == cert.SerialNumber.ToString()) { throw new Exception("Certificate already exists for the meter." + cert.Subject + ". File name:" + Path.GetFileNameWithoutExtension((string)it.Tag)); } } string path = Path.Combine(CertificateFolder, Path.GetFileName(fileName)); cert.Save(path); AddCertificate(cert, path, null); } } catch (Exception ex) { MessageBox.Show(Parent, ex.Message); } } } } catch (Exception ex) { MessageBox.Show(Parent, ex.Message); } }
void SaveCertificate(GXActionArgs arg) { try { GXx509Certificate csr = new GXx509Certificate((byte[])arg.Value); SaveFileDialog dlg = new SaveFileDialog(); dlg.Filter = Properties.Resources.PemFilterTxt; dlg.DefaultExt = ".pem"; if (string.IsNullOrEmpty(path)) { dlg.InitialDirectory = Directory.GetCurrentDirectory(); } else { FileInfo fi = new FileInfo(path); dlg.InitialDirectory = fi.DirectoryName; dlg.FileName = fi.Name; } dlg.FileName = ""; int pos = csr.Subject.IndexOf("CN="); if (pos != -1) { string name; if (csr.KeyUsage == ASN.Enums.KeyUsage.DigitalSignature) { name = "D"; } else if (csr.KeyUsage == ASN.Enums.KeyUsage.KeyAgreement) { name = "A"; } else { name = ""; } dlg.FileName = name + csr.Subject.Substring(pos + 3, 16); } if (dlg.ShowDialog(Parent) == DialogResult.OK) { csr.Save(dlg.FileName); path = dlg.FileName; } } catch (Exception ex) { MessageBox.Show(Parent, ex.Message); } }
private void descriptionToolStripMenuItem_Click(object sender, EventArgs e) { try { ListViewItem it = CertificatesList.SelectedItems[0]; GXTextDlg dlg = new GXTextDlg("Certificate description.", "Certificate description:", it.SubItems[6].Text); if (dlg.ShowDialog(Parent) == DialogResult.OK) { string desc = dlg.GetValue(); GXx509Certificate cert = GXx509Certificate.Load((string)it.Tag); cert.Description = desc; cert.Save((string)it.Tag); it.SubItems[6].Text = desc; } } catch (Exception ex) { MessageBox.Show(Parent, ex.Message); } }