예제 #1
0
        protected override void OnDelete(SyncStatus status)
        {
            if (!MMCDlgHelper.ShowConfirm(CommonConstants.GetSelectedDeleteMsg("secret keys", this.SelectedNodes.Count)))
            {
                return;
            }

            base.OnDelete(status);
            var entriesNode = this.ScopeNode as VecsStoreEntriesNode;
            var dto         = entriesNode.ServerDTO;
            var storeName   = entriesNode.StoreName;
            var storePass   = "";

            MMCActionHelper.CheckedExec(delegate()
            {
                using (var session = new VecsStoreSession(dto.VecsClient, storeName, storePass))
                {
                    foreach (ResultNode node in this.SelectedNodes)
                    {
                        var certDTO = node.Tag as Vecs.CertDTO;
                        session.DeleteCertificate(certDTO.Alias);
                    }
                }
            });
            Refresh();
        }
예제 #2
0
        public override void Refresh()
        {
            ResultNodes.Clear();

            var entriesNode = this.ScopeNode as VecsStoreEntriesNode;
            var dto         = entriesNode.ServerDTO;
            var storeName   = entriesNode.StoreName;
            var storePass   = "";

            MMCActionHelper.CheckedExec(delegate()
            {
                using (var session = new VecsStoreSession(dto.VecsClient, storeName, storePass))
                {
                    var lst = session.GetSecretKeys();
                    if (lst == null)
                    {
                        return;
                    }

                    foreach (var certDTO in lst)
                    {
                        var resultNode = new ResultNode {
                            DisplayName = certDTO.Alias
                        };
                        resultNode.ImageIndex = (int)VMCertStoreImageIndex.SecretKeys;
                        resultNode.Tag        = certDTO;
                        this.ResultNodes.Add(resultNode);
                    }
                }
            });
            this.Sort(0);
            this.DescriptionBarText = this.ResultNodes.Count.ToString();
        }
예제 #3
0
        public void AddCertificate(object sender, EventArgs args)
        {
            AddCertificateWindowController cwc = new AddCertificateWindowController();

            NSApplication.SharedApplication.BeginSheet(cwc.Window, VMCertStoreSnapInEnvironment.Instance.mainWindow, () => {
            });
            nint result = NSApplication.SharedApplication.RunModalForWindow(cwc.Window);

            try {
                if (result == (nint)VMIdentityConstants.DIALOGOK)
                {
                    var    dto       = cwc.CertificateDTO;
                    string storeName = (string)Tag;
                    string storePass = "";
                    using (var session = new VecsStoreSession(ServerNode.ServerDTO.VecsClient, storeName, storePass)) {
                        session.AddCertificateEntry(dto.Alias, "", "", dto.Certificate);
                    }
                    UIErrorHelper.ShowAlert("Successfully added Certificate", "Info");
                    ServerNode.UpdateStoreInfo(storeName);
                    NSNotificationCenter.DefaultCenter.PostNotificationName("ReloadTableView", this);
                }
            } catch (Exception e) {
                UIErrorHelper.ShowAlert(e.Message, "Alert");
            } finally {
                VMCertStoreSnapInEnvironment.Instance.mainWindow.EndSheet(cwc.Window);
                cwc.Dispose();
            }
        }
예제 #4
0
 public void AddSecretKey(object sender, EventArgs args)
 {
     UIErrorHelper.CheckedExec(delegate() {
         AddSecretKeyWindowController cwc = new AddSecretKeyWindowController();
         NSApplication.SharedApplication.BeginSheet(cwc.Window, VMCertStoreSnapInEnvironment.Instance.mainWindow, () => {
         });
         nint result = NSApplication.SharedApplication.RunModalForWindow(cwc.Window);
         try {
             if (result == (nint)VMIdentityConstants.DIALOGOK)
             {
                 var dto          = cwc.SecretKeyDTO;
                 string storeName = (string)Tag;
                 string storePass = "";
                 using (var session = new VecsStoreSession(ServerNode.ServerDTO.VecsClient, storeName, storePass)) {
                     session.AddSecretKeyEntry(dto.Alias, dto.SecretKey, dto.Password, null);
                 }
                 ServerNode.UpdateStoreInfo(storeName);
                 NSNotificationCenter.DefaultCenter.PostNotificationName("ReloadTableView", this);
             }
         } finally {
             VMCertStoreSnapInEnvironment.Instance.mainWindow.EndSheet(cwc.Window);
             cwc.Dispose();
         }
     });
 }
예제 #5
0
 public void UpdateStoreInfo(string storename)
 {
     UIErrorHelper.CheckedExec(delegate() {
         if (storename != null)
         {
             string storePass = "";
             using (var session = new VecsStoreSession(ServerDTO.VecsClient, storename, storePass)) {
                 // update store info
                 if (StoresInfo.ContainsKey(storename))
                 {
                     StoresInfo [storename] = new CertBagItem()
                     {
                         PrivateKeys = session.GetPrivateKeys().Concat(session.GetEncryptedPrivateKeys()).ToList(),
                         SecretKeys  = session.GetSecretKeys().ToList(),
                         Certs       = session.GetCertificates().ToList()
                     };
                     CalculateKeyInfo();
                 }
                 else
                 {
                     StoresInfo.Add(storename, new CertBagItem()
                     {
                         PrivateKeys = session.GetPrivateKeys().Concat(session.GetEncryptedPrivateKeys()).ToList(),
                         SecretKeys  = session.GetSecretKeys().ToList(),
                         Certs       = session.GetCertificates().ToList()
                     });
                     NoStores++;
                 }
             }
         }
     });
 }
예제 #6
0
        public override NSMenu MenuForEvent(NSEvent theEvent)
        {
            CGPoint pt = this.ConvertPointFromView(theEvent.LocationInWindow, null);

            _selectedRow = this.GetRow(pt);
            NSTableViewDataSource ds = (NSTableViewDataSource)this.DataSource;
            NSMenu menu = new NSMenu();

            if (_selectedRow >= (nint)0)
            {
                if (ds is NodesListView)
                {
                    string data = (ds as NodesListView).Entries [(int)_selectedRow].DisplayName;
                    switch (data)
                    {
                    case "Private Entities":
                        NSMenuItem addPrivateEntity = new NSMenuItem("Add Private Entity", ((ds as NodesListView).Entries [(int)_selectedRow] as VecsPrivateKeysNode).AddPrivateKeyHandler);
                        menu.AddItem(addPrivateEntity);
                        break;

                    case "Secret Keys":
                        NSMenuItem createCertificate = new NSMenuItem("Add Secret Key", ((ds as NodesListView).Entries [(int)_selectedRow] as VecsSecretKeysNode).AddSecretKey);
                        menu.AddItem(createCertificate);
                        break;

                    case "Trusted Certs":
                        NSMenuItem createSigningRequest = new NSMenuItem("Create Certificate", ((ds as NodesListView).Entries [(int)_selectedRow] as VecsTrustedCertsNode).AddCertificate);
                        menu.AddItem(createSigningRequest);
                        break;

                    default:
                        break;
                    }
                }
                else if (ds is CertificateDetailsListView)
                {
                    CertificateDetailsListView lw = ds as CertificateDetailsListView;
                    CertDTO    cert     = lw.Entries [(int)_selectedRow];
                    NSMenuItem showCert = new NSMenuItem("Show Certificate", (object sender, EventArgs e) => CertificateService.DisplayX509Certificate2(this, cert.Cert));
                    menu.AddItem(showCert);
                    NSMenuItem deleteEntry = new NSMenuItem("Delete", (object sender, EventArgs e) => {
                        UIErrorHelper.CheckedExec(delegate() {
                            if (UIErrorHelper.ConfirmDeleteOperation("Are you sure?") == true)
                            {
                                using (var session = new VecsStoreSession(lw.ServerDto.VecsClient, lw.Store, "")) {
                                    session.DeleteCertificate(cert.Alias);
                                }
                                lw.Entries.Remove(cert);
                                UIErrorHelper.ShowAlert("", "Successfully deleted the entry.");
                                NSNotificationCenter.DefaultCenter.PostNotificationName("ReloadServerData", this);
                            }
                        });
                    });
                    menu.AddItem(deleteEntry);
                }
                NSMenu.PopUpContextMenu(menu, theEvent, theEvent.Window.ContentView);
            }
            return(base.MenuForEvent(theEvent));
        }
예제 #7
0
        public override void Refresh()
        {
            ResultNodes.Clear();

            var entriesNode = this.ScopeNode as VecsStoreEntriesNode;
            var dto         = entriesNode.ServerDTO;
            var storeName   = entriesNode.StoreName;
            var storePass   = "";

            MMCActionHelper.CheckedExec(delegate()
            {
                using (var session = new VecsStoreSession(dto.VecsClient, storeName, storePass))
                {
                    var lst = session.GetCertificates();
                    if (lst == null)
                    {
                        return;
                    }

                    foreach (var certDTO in lst)
                    {
                        var resultNode = new ResultNode {
                            DisplayName = certDTO.Alias
                        };
                        resultNode.ImageIndex = (int)VMCertStoreImageIndex.TrustedCert;
                        if (certDTO.Cert != null)
                        {
                            resultNode.SubItemDisplayNames.Add(certDTO.Cert.Subject);
                            resultNode.SubItemDisplayNames.Add(certDTO.Cert.Issuer);
                            resultNode.SubItemDisplayNames.Add(certDTO.Cert.NotBefore.ToShortDateString());
                            resultNode.SubItemDisplayNames.Add(certDTO.Cert.NotAfter.ToShortDateString());
                            resultNode.SubItemDisplayNames.Add(certDTO.Cert.GetKeyUsage());
                            resultNode.Tag = certDTO;
                        }

                        this.ResultNodes.Add(resultNode);
                    }
                }
            });
            this.Sort(0);
            this.DescriptionBarText = this.ResultNodes.Count.ToString();
        }
예제 #8
0
 void AddPrivateKey()
 {
     MMCActionHelper.CheckedExec(delegate()
     {
         var frm = new FormAddPrivateKey();
         if (MMCDlgHelper.ShowForm(frm))
         {
             var dto          = frm.PrivateKeyDTO;
             string storeName = (string)Tag;
             string storePass = "";
             using (var session = new VecsStoreSession(ServerDTO.VecsClient, storeName, storePass))
             {
                 session.AddPrivateKeyEntry(dto.Alias, dto.PrivateKey, dto.Password, dto.Certificate);
             }
             if (ListView != null)
             {
                 ListView.Refresh();
             }
         }
     });
 }
예제 #9
0
 void AddSecretKey()
 {
     MMCActionHelper.CheckedExec(delegate()
     {
         var frm = new FormAddSecretKey();
         if (MMCDlgHelper.ShowForm(frm))
         {
             var dto          = frm.SecretKeyDTO;
             string storeName = (string)Tag;
             string storePass = "";
             using (var session = new VecsStoreSession(ServerDTO.VecsClient, storeName, storePass))
             {
                 // add secret key to session here.
                 session.AddSecretKeyEntry(dto.Alias, dto.SecretKey, dto.Password, null);
             }
             if (ListView != null)
             {
                 ListView.Refresh();
             }
         }
     });
 }
예제 #10
0
 public async void  FillServerInfo()
 {
     try {
         var stores = ServerDTO.VecsClient.GetStores();
         IsDetailsLoaded = true;
         StoresInfo.Clear();
         foreach (var store in stores)
         {
             var storePass = "";
             using (var session = new VecsStoreSession(ServerDTO.VecsClient, store, storePass)) {
                 //store add
                 StoresInfo.Add(store, new CertBagItem()
                 {
                     PrivateKeys = session.GetPrivateKeys().Concat(session.GetEncryptedPrivateKeys()).ToList(),
                     SecretKeys  = session.GetSecretKeys().ToList(),
                     Certs       = session.GetCertificates().ToList()
                 });
             }
         }
         CalculateKeyInfo();
     } catch (Exception e) {
         // do nothing in async task.
     }
 }