コード例 #1
0
        public bool RemovePassword(string host, string username)
        {
            if (this._objectAlreadyDisposed)
            {
                throw new ObjectDisposedException("CredentialStore");
            }
            bool flag = false;

            if (File.Exists(this._credentialFilePath))
            {
                FileStream fileStream = (FileStream)null;
                try
                {
                    fileStream = this.OpenFile(FileShare.None);
                    XmlDocument credentialsXmlDocument = this.LoadCredentialsDocument((Stream)fileStream);
                    XmlNode     credentialNode         = CredentialStore.GetCredentialNode(credentialsXmlDocument, host, username, this._isUsernameCaseSensitive);
                    flag = credentialNode != null;
                    if (credentialNode != null)
                    {
                        credentialsXmlDocument.SelectSingleNode("/Credentials").RemoveChild(credentialNode);
                        CredentialStore.SaveCredentialsDocument(credentialsXmlDocument, (Stream)fileStream);
                    }
                }
                finally
                {
                    if (fileStream != null)
                    {
                        fileStream.Dispose();
                    }
                }
            }
            return(flag);
        }
コード例 #2
0
        public bool AddPassword(string host, string username, char[] password)
        {
            if (this._objectAlreadyDisposed)
            {
                throw new ObjectDisposedException("CredentialStore");
            }
            if (string.IsNullOrEmpty(host))
            {
                throw new ArgumentException("Host name cannot be empty.", "host");
            }
            if (string.IsNullOrEmpty(username))
            {
                throw new ArgumentException("User name cannot be empty.", "username");
            }
            if (password == null)
            {
                password = new char[0];
            }
            FileStream fileStream = (FileStream)null;
            bool       flag;

            try
            {
                if (!File.Exists(this._credentialFilePath))
                {
                    using (File.Create(this._credentialFilePath, 8192, FileOptions.RandomAccess, CredentialStore.GetSecuritySettings()))
                        ;
                    fileStream = this.OpenFile(FileShare.None);
                    CredentialStore.InitializeCredentialsDocument((Stream)fileStream);
                }
                else
                {
                    fileStream = this.OpenFile(FileShare.None);
                }
                XmlDocument credentialsXmlDocument = this.LoadCredentialsDocument((Stream)fileStream);
                XmlNode     xmlNode = CredentialStore.GetCredentialNode(credentialsXmlDocument, host, username, this._isUsernameCaseSensitive);
                flag = xmlNode == null;
                if (xmlNode == null)
                {
                    xmlNode = (XmlNode)credentialsXmlDocument.CreateElement("passwordEntry");
                }
                else
                {
                    xmlNode.RemoveAll();
                }
                CredentialStore.FillCredentialNode(xmlNode, host, username, password);
                Array.Clear((Array)password, 0, password.Length);
                credentialsXmlDocument.SelectSingleNode("/Credentials").AppendChild(xmlNode);
                CredentialStore.SaveCredentialsDocument(credentialsXmlDocument, (Stream)fileStream);
            }
            finally
            {
                if (fileStream != null)
                {
                    fileStream.Dispose();
                }
            }
            return(flag);
        }
コード例 #3
0
        private static char[] GetPasswordInternal(XmlDocument credentialsXmlDocument, string host, string username, bool isUsernameCaseSensitive)
        {
            char[]  chArray        = (char[])null;
            XmlNode credentialNode = CredentialStore.GetCredentialNode(credentialsXmlDocument, host, username, isUsernameCaseSensitive);

            if (credentialNode != null)
            {
                chArray = CredentialStore.DecryptPassword(credentialNode["password"].InnerText);
            }
            return(chArray);
        }