/// <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);
     }
 }
Example #2
0
 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);
     }
 }