/// <summary> /// Extract the workspace credentials from the XML element specified. /// </summary> private static KwsCredentials XmlToKwsCredentials(XmlElement el) { KwsCredentials c = new KwsCredentials(); int version = Int32.Parse(el.GetAttribute("version")); if (version > KwsCredentials.ExportVersion) { throw new Exception("unsupported kws version ('" + version + "')"); } c.KcdAddress = KwmXml.GetXmlChildValue(el, "KcdAddress", ""); c.KwmoAddress = KwmXml.GetXmlChildValue(el, "KwmoAddress", ""); c.ExternalID = UInt64.Parse(KwmXml.GetXmlChildValue(el, "ExternalID", "0")); c.EmailID = KwmXml.GetXmlChildValue(el, "EmailID", ""); c.KwsName = KwmXml.GetXmlChildValue(el, "KwsName", ""); c.UserName = KwmXml.GetXmlChildValue(el, "UserName", ""); c.UserEmailAddress = KwmXml.GetXmlChildValue(el, "UserEmailAddress", ""); c.InviterName = KwmXml.GetXmlChildValue(el, "InviterName", ""); c.InviterEmailAddress = KwmXml.GetXmlChildValue(el, "InviterEmailAddress", ""); c.UserID = UInt32.Parse(KwmXml.GetXmlChildValue(el, "UserID", "0")); c.Ticket = Convert.FromBase64String(KwmXml.GetXmlChildValue(el, "Ticket", "")); c.Pwd = KwmXml.GetXmlChildValue(el, "Pwd", ""); c.Flags = UInt32.Parse(KwmXml.GetXmlChildValue(el, "Flags", "0")); c.FolderPath = KwmXml.GetXmlChildValue(el, "FolderPath", ""); c.EtBlob = Convert.FromBase64String(KwmXml.GetXmlChildValue(el, "EtBlob", "")); if (version < 4) { XmlElement kasIDElem = KwmXml.GetXmlChildElement(el, "KasID"); if (kasIDElem == null) { throw new Exception("KasID element not present"); } c.KcdAddress = KwmXml.GetXmlChildValue(kasIDElem, "Host", ""); c.PublicFlag = bool.Parse(KwmXml.GetXmlChildValue(el, "PublicFlag", "False")); c.SecureFlag = bool.Parse(KwmXml.GetXmlChildValue(el, "SecureFlag", "False")); } // Normalize the data. if (c.Ticket != null && c.Ticket.Length == 0) { c.Ticket = null; } if (c.EtBlob != null && c.EtBlob.Length == 0) { c.EtBlob = null; } // Validate. if (c.KcdAddress == "" || c.ExternalID == 0) { throw new Exception("invalid kws credentials"); } return(c); }
/// <summary> /// Store the workspace credentials in the element specified. Nothing /// is exported if the credentials are invalid. /// </summary> private static void KwsCredentialsToXml(KwsCredentials c, XmlDocument doc, XmlElement parent) { if (c.KcdAddress == "" || c.ExternalID == 0) { return; } XmlElement el = doc.CreateElement("Kws"); parent.AppendChild(el); el.SetAttribute("version", KwsCredentials.ExportVersion.ToString()); KwmXml.CreateXmlElement(doc, el, "KcdAddress", c.KcdAddress); if (c.KwmoAddress != "") { KwmXml.CreateXmlElement(doc, el, "KwmoAddress", c.KwmoAddress); } KwmXml.CreateXmlElement(doc, el, "ExternalID", c.ExternalID.ToString()); KwmXml.CreateXmlElement(doc, el, "EmailID", c.EmailID); if (c.KwsName != "") { KwmXml.CreateXmlElement(doc, el, "KwsName", c.KwsName); } if (c.UserName != "") { KwmXml.CreateXmlElement(doc, el, "UserName", c.UserName); } if (c.UserEmailAddress != "") { KwmXml.CreateXmlElement(doc, el, "UserEmailAddress", c.UserEmailAddress); } if (c.InviterName != "") { KwmXml.CreateXmlElement(doc, el, "InviterName", c.InviterName); } if (c.InviterEmailAddress != "") { KwmXml.CreateXmlElement(doc, el, "InviterEmailAddress", c.InviterEmailAddress); } if (c.UserID != 0) { KwmXml.CreateXmlElement(doc, el, "UserID", c.UserID.ToString()); } if (c.Ticket != null) { KwmXml.CreateXmlElement(doc, el, "Ticket", Convert.ToBase64String(c.Ticket)); } if (c.Pwd != "") { KwmXml.CreateXmlElement(doc, el, "Pwd", c.Pwd); } if (c.Flags != 0) { KwmXml.CreateXmlElement(doc, el, "Flags", c.Flags.ToString()); } if (c.FolderPath != "") { KwmXml.CreateXmlElement(doc, el, "FolderPath", c.FolderPath); } if (c.EtBlob != null) { KwmXml.CreateXmlElement(doc, el, "EtBlob", Convert.ToBase64String(c.EtBlob)); } }