public static List <string> GetDelegatedEmailAddressesFromB2BUseLicense(string useLicense) { XmlDocument firstNodeXdoc = RmsClientManagerUtils.GetFirstNodeXdoc(useLicense); if (firstNodeXdoc == null) { return(null); } XmlNode xmlNode = firstNodeXdoc.SelectSingleNode("XrML/BODY[@type=\"LICENSE\"]/ISSUEDPRINCIPALS/PRINCIPAL/OBJECT[@type=\"Group-Identity\"]/ADDRESS[@type=\"DelegatedEmailAddress\"]/text()"); List <string> list = new List <string>(); if (RmsClientManagerUtils.ValidateDelegatedEmailAddressOrAliasNode(xmlNode)) { list.Add(xmlNode.Value); } XmlNodeList xmlNodeList = firstNodeXdoc.SelectNodes("XrML/BODY[@type=\"LICENSE\"]/ISSUEDPRINCIPALS/PRINCIPAL/OBJECT[@type=\"Group-Identity\"]/ADDRESS[@type=\"email_alias\"]/text()"); foreach (object obj in xmlNodeList) { XmlNode xmlNode2 = (XmlNode)obj; if (RmsClientManagerUtils.ValidateDelegatedEmailAddressOrAliasNode(xmlNode2)) { list.Add(xmlNode2.Value); } } return(list); }
public static ExDateTime GetUseLicenseExpiryTime(string license, ContentRight usageRights) { ArgumentValidator.ThrowIfNullOrEmpty("license", license); XmlDocument firstNodeXdoc = RmsClientManagerUtils.GetFirstNodeXdoc(license); if (firstNodeXdoc == null) { Microsoft.Exchange.Diagnostics.Components.Data.Storage.ExTraceGlobals.RightsManagementTracer.TraceDebug(0L, "Failed to parse the use license. Returning DateTime.MaxValue"); return(ExDateTime.MaxValue); } XmlNode xmlNode = firstNodeXdoc.SelectSingleNode("XrML/BODY[@type=\"LICENSE\"]/ISSUEDTIME/text()"); if (xmlNode == null || string.IsNullOrEmpty(xmlNode.Value)) { Microsoft.Exchange.Diagnostics.Components.Data.Storage.ExTraceGlobals.RightsManagementTracer.TraceError(0L, "Failed to parse the use license to get the issued Time. Returning DateTime.MaxValue"); return(ExDateTime.MaxValue); } DateTime d; if (!DateTime.TryParseExact(xmlNode.Value, "yyyy-MM-ddTHH:mm", CultureInfo.InvariantCulture, DateTimeStyles.None, out d)) { Microsoft.Exchange.Diagnostics.Components.Data.Storage.ExTraceGlobals.RightsManagementTracer.TraceError <string>(0L, "Invalid IssuedTime entry {0}. Returning DateTime.MaxValue", xmlNode.Value); return(ExDateTime.MaxValue); } if (usageRights.IsUsageRightGranted(ContentRight.Owner)) { Microsoft.Exchange.Diagnostics.Components.Data.Storage.ExTraceGlobals.RightsManagementTracer.TraceDebug(0L, "User has OWNER rights - trying to get the expiry time from owner node"); XmlNode xmlNode2 = firstNodeXdoc.SelectSingleNode("XrML/BODY[@type=\"LICENSE\"]/WORK/RIGHTSGROUP[@name=\"Main-Rights\"]/RIGHTSLIST/OWNER/CONDITIONLIST/TIME/INTERVALTIME/@days"); if (xmlNode2 != null) { Microsoft.Exchange.Diagnostics.Components.Data.Storage.ExTraceGlobals.RightsManagementTracer.TraceDebug <string>(0L, "Found the owner node {0}", xmlNode2.Value); int num; if (int.TryParse(xmlNode2.Value, out num)) { return(new ExDateTime(ExTimeZone.TimeZoneFromKind(DateTimeKind.Utc), d + TimeSpan.FromDays((double)num))); } } Microsoft.Exchange.Diagnostics.Components.Data.Storage.ExTraceGlobals.RightsManagementTracer.TraceDebug(0L, "Couldn't find the OWNER node - either OWNER has no expiry or the value is not parsable"); return(ExDateTime.MaxValue); } if (usageRights.IsUsageRightGranted(ContentRight.View)) { Microsoft.Exchange.Diagnostics.Components.Data.Storage.ExTraceGlobals.RightsManagementTracer.TraceDebug(0L, "User has VIEW rights - trying to get the expiry time from VIEW node"); XmlNode xmlNode3 = firstNodeXdoc.SelectSingleNode("XrML/BODY[@type=\"LICENSE\"]/WORK/RIGHTSGROUP[@name=\"Main-Rights\"]/RIGHTSLIST/VIEW/CONDITIONLIST/TIME/INTERVALTIME/@days"); if (xmlNode3 != null) { Microsoft.Exchange.Diagnostics.Components.Data.Storage.ExTraceGlobals.RightsManagementTracer.TraceDebug <string>(0L, "Found the view node {0}", xmlNode3.Value); int num2; if (int.TryParse(xmlNode3.Value, NumberStyles.Integer, NumberFormatInfo.InvariantInfo, out num2)) { return(new ExDateTime(ExTimeZone.TimeZoneFromKind(DateTimeKind.Utc), d + TimeSpan.FromDays((double)num2))); } } Microsoft.Exchange.Diagnostics.Components.Data.Storage.ExTraceGlobals.RightsManagementTracer.TraceDebug(0L, "Couldn't find the VIEW node - either VIEW rights has no expiry or the value is not parsable"); } return(ExDateTime.MaxValue); }
internal static bool ExtractExternalOrgIdFromPublishingLicense(string publishingLicense, out Guid externalDirectoryOrgId) { ArgumentValidator.ThrowIfNullOrEmpty("publishingLicense", publishingLicense); externalDirectoryOrgId = Guid.Empty; try { XmlDocument firstNodeXdoc = RmsClientManagerUtils.GetFirstNodeXdoc(publishingLicense); if (firstNodeXdoc == null) { return(false); } XmlNodeList xmlNodeList = firstNodeXdoc.SelectNodes("/XrML/BODY/ISSUEDPRINCIPALS/PRINCIPAL"); if (xmlNodeList == null || xmlNodeList.Count == 0) { return(false); } foreach (object obj in xmlNodeList[0]) { XmlNode xmlNode = (XmlNode)obj; if (!(xmlNode.Name != "SECURITYLEVEL") && xmlNode.Attributes != null) { bool flag = false; string text = null; foreach (object obj2 in xmlNode.Attributes) { XmlAttribute xmlAttribute = (XmlAttribute)obj2; if (xmlAttribute.Name == "name" && xmlAttribute.Value == "Tenant-ID") { flag = true; } else if (xmlAttribute.Name == "value") { text = xmlAttribute.Value; } } if (flag && !string.IsNullOrEmpty(text)) { return(Guid.TryParse(text, out externalDirectoryOrgId)); } } } } catch (XmlException arg) { Microsoft.Exchange.Diagnostics.Components.Transport.ExTraceGlobals.RightsManagementTracer.TraceError <XmlException>(0L, "Exception while extracting MSODS tenant ID from publishing license: {0}", arg); } return(false); }