예제 #1
0
        public static FavoriteConfigurationElement GetFavoriteUpdatedCopy(String connectionName,
                                                                          Boolean forceConsole, Boolean forceNewWindow,
                                                                          CredentialSet credential, bool isDatabaseFavorite)
        {
            FavoriteConfigurationElementCollection favorites = Settings.GetFavorites(isDatabaseFavorite);
            FavoriteConfigurationElement favorite = favorites[connectionName];
            if (favorite == null)
                return null;

            favorite = (FavoriteConfigurationElement) favorite.Clone();

            if (forceConsole)
                favorite.ConnectToConsole = true;

            if (forceNewWindow)
                favorite.NewWindow = true;

            if (credential != null)
            {
                favorite.XmlCredentialSetName = credential.Name;
                favorite.UserName = credential.Username;
                favorite.DomainName = credential.Domain;
                favorite.EncryptedPassword = credential.Password;
            }
            return favorite;
        }
예제 #2
0
        private static List <CredentialSet> LoadKeePass()
        {
            try
            {
                var ioConnInfo = new KeePassLib.Serialization.IOConnectionInfo {
                    Path = Main.Settings.Settings.KeePassPath
                };
                var compKey = new KeePassLib.Keys.CompositeKey();
                compKey.AddUserKey(new KeePassLib.Keys.KcpPassword(Main.Settings.Settings.KeePassPassword));

                var db = new KeePassLib.PwDatabase();
                db.Open(ioConnInfo, compKey, null);

                var entries = db.RootGroup.GetEntries(true);

                List <CredentialSet> list = new List <CredentialSet>();

                foreach (var entry in entries)
                {
                    string title    = entry.Strings.ReadSafe("Title");
                    string userName = entry.Strings.ReadSafe("UserName");
                    string domain   = entry.Strings.ReadSafe("Domain");

                    if (!string.IsNullOrEmpty(title) && !string.IsNullOrEmpty(userName))
                    {
                        CredentialSet credentialSet = new CredentialSet
                        {
                            Name     = title,
                            Username = string.IsNullOrEmpty(domain) && userName.Contains("\\") ? userName.Split(new string[] { "\\" }, StringSplitOptions.None)[1] : userName,
                            Domain   = string.IsNullOrEmpty(domain) && userName.Contains("\\") ? userName.Split(new string[] { "\\" }, StringSplitOptions.None)[0] : domain,
                            Password = entry.Strings.ReadSafe("Password")
                        };

                        list.Add(credentialSet);

                        string id = entry.Uuid.ToHexString();

                        if (!keyPassCredentialsById.ContainsKey(id))
                        {
                            keyPassCredentialsById.Add(id, credentialSet);
                        }
                    }
                }

                db.Close();

                return(list);
            } catch (Exception ex)
            {
                Log.Error("Error loading KeePass-File due to the following reason: " + ex.Message, ex);
                return(new List <CredentialSet>());
            }
        }
예제 #3
0
 private void FillControlsFromCredential(CredentialSet editedCredential)
 {
     if (editedCredential != null)
     {
         this.txtName.Text = editedCredential.Name;
         this.txtDomain.Text = editedCredential.Domain;
         this.txtUserName.Text = editedCredential.Username;
         if (!string.IsNullOrEmpty(editedCredential.Password))
             this.txtPassword.Text = CredentialPanel.HIDDEN_PASSWORD;
         this.editedCredentialName = editedCredential.Name;
     }
 }
예제 #4
0
 private void UpdateOldOrCreateNew(CredentialSet oldItem)
 {
     if (oldItem == null || this.editedCredentialName != this.txtName.Text)
     {
         CredentialSet newCredential = this.CreateNewCredential();
         StoredCredentials.Add(newCredential);
     }
     else
     {
         this.UpdateFromControls(oldItem);
     }
 }
예제 #5
0
        public static Credential ToCredential(this CredentialSet credential)
        {
            if (credential == null)
            {
                return(null);
            }

            return(new Credential()
            {
                Domain = credential.Domain,
                Password = credential.SecretKey,
                UserName = credential.Username,
            });
        }
예제 #6
0
        public ManageCredentialForm(CredentialSet editedCredential)
        {
            this.InitializeComponent();

            this.FillControlsFromCredential(editedCredential);

            this.Text = AssemblyInfo.Title + " - " +
				"Credential manager";

            this.txtPassword.PasswordChar = CredentialPanel.HIDDEN_PASSWORD_CHAR;
            
            if (Terminals.Configuration.Files.Main.Settings.Settings.CredentialStore == Terminals.Configuration.Files.Main.CredentialStoreType.KeePass)
            {
            	SaveButton_cred.Enabled = false;
            }
        }
예제 #7
0
 private void EditCredential(CredentialSet selected)
 {
     ManageCredentialForm mgr = new ManageCredentialForm(selected);
     if (mgr.ShowDialog() == DialogResult.OK)
         this.BindList();
 }
예제 #8
0
        public static void Add(CredentialSet toAdd)
        {
            if (String.IsNullOrEmpty(toAdd.Name))
                return;

            cache.Add(toAdd);
        }
예제 #9
0
 public static void Remove(CredentialSet toRemove)
 {
     cache.Remove(toRemove);
 }
예제 #10
0
 public static void Remove(CredentialSet toRemove)
 {
     cache.Remove(toRemove);
 }
예제 #11
0
        private bool UpdateConflicting(CredentialSet conflicting, CredentialSet oldItem)
        {
            DialogResult result =
				MessageBox.Show("The credential name you entered already exists.\nDo you want to overwrite it?",
			"Credential manager",
                                MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
            if (result != DialogResult.Yes)
                return false;

            if (oldItem != null)
            {
                StoredCredentials.Remove(oldItem);
            }

            this.UpdateFromControls(conflicting);
            return true;
        }
예제 #12
0
 private CredentialSet CreateNewCredential()
 {
     CredentialSet newItem = new CredentialSet();
     this.UpdateFromControls(newItem);
     return newItem;
 }
예제 #13
0
 private void UpdateFromControls(CredentialSet toUpdate)
 {
     toUpdate.Domain = this.txtDomain.Text;
     toUpdate.Name = this.txtName.Text;
     toUpdate.Username = this.txtUserName.Text;
     if (this.txtPassword.Text != CredentialPanel.HIDDEN_PASSWORD)
         toUpdate.SecretKey = this.txtPassword.Text;
 }
예제 #14
0
 private static void UpdateFromvrDCredentials(vRDConfigurationFileCredentialsFolderCredentials source,
                                              CredentialSet target)
 {
     target.Domain = source.Domain;
     target.Name = source.Name;
     target.SecretKey = source.Password;
     target.Username = source.UserName;
 }
예제 #15
0
        private void SaveCredentials(Dictionary<string, vRDConfigurationFileCredentialsFolderCredentials> credentials)
        {
            foreach (string guid in credentials.Keys)
            {
                vRDConfigurationFileCredentialsFolderCredentials toImport = credentials[guid];
                //will store the last one if the same credential name 
                CredentialSet destination = StoredCredentials.GetByName(toImport.Name);
                if (destination == null)
                {
                    destination = new CredentialSet();
                    StoredCredentials.Add(destination);
                }

                UpdateFromvrDCredentials(toImport, destination);
            }

            StoredCredentials.Save();
        }