public bool LoadProfileXml(string profileFilePath,
                                   out Dictionary <string, CertificateProfileInfo> profileDic)
        {
            bool ret = true;

            profileDic = new Dictionary <string, CertificateProfileInfo>();

            XmlDocument xml = new XmlDocument();

            try
            {
                xml.Load(profileFilePath);
            }
            catch (Exception)
            {
                return(false);
            }

            XmlNodeList xnList = xml.SelectNodes("/profiles/profile");

            foreach (XmlNode xn in xnList)
            {
                CertificateProfileInfo certProfileInfo =
                    new CertificateProfileInfo();

                certProfileInfo.profileName = xn.Attributes["name"].Value;

                foreach (XmlNode xnProfileItem in xn.ChildNodes)
                {
                    CertificateProfileItem certProfileItem =
                        new CertificateProfileItem(
                            xnProfileItem.Attributes["key"].Value,
                            xnProfileItem.Attributes["password"].Value,
                            xnProfileItem.Attributes["distributor"].Value,
                            xnProfileItem.Attributes["ca"].Value,
                            xnProfileItem.Attributes["rootca"].Value);

                    certProfileInfo.profileItemDic.Add(
                        xnProfileItem.Attributes["distributor"].Value,
                        certProfileItem);
                }

                profileDic.Add(certProfileInfo.profileName, certProfileInfo);
            }

            XmlNode xnProfiles = xml.SelectSingleNode("/profiles");

            activeProfile = xnProfiles?.Attributes["active"]?.Value;

            return(ret);
        }
        public override bool Equals(Object obj)
        {
            CertificateProfileItem personObj = obj as CertificateProfileItem;

            if (personObj == null)
            {
                return(false);
            }
            else
            {
                return(keyPath.Equals(personObj.keyPath) &&
                       keyPassword.Equals(personObj.keyPassword) &&
                       caPath.Equals(personObj.caPath) &&
                       rootca.Equals(personObj.rootca));
            }
        }