private XDocument DeserializeMceConfig()
            {
                XmlReaderSettings xmlReaderSettings = ClassificationDefinitionUtils.CreateSafeXmlReaderSettings();

                xmlReaderSettings.IgnoreComments = true;
                xmlReaderSettings.ValidationType = ValidationType.None;
                XDocument result;

                using (Stream stream = this.OpenSourceStream())
                {
                    using (XmlReader xmlReader = XmlReader.Create(stream, xmlReaderSettings))
                    {
                        result = XDocument.Load(xmlReader);
                    }
                }
                return(result);
            }
        internal static XDocument ValidateRulePackageXmlContentsLite(byte[] dataToValidate)
        {
            ArgumentValidator.ThrowIfNull("dataToValidate", dataToValidate);
            XmlReaderSettings xmlReaderSettings = ClassificationDefinitionUtils.CreateSafeXmlReaderSettings();

            xmlReaderSettings.IgnoreComments   = true;
            xmlReaderSettings.ValidationFlags |= XmlSchemaValidationFlags.ProcessIdentityConstraints;
            xmlReaderSettings.ValidationType   = ValidationType.Schema;
            xmlReaderSettings.Schemas          = XmlProcessingUtils.RulePackageSchemaInstance;
            XDocument xdocument;

            try
            {
                using (Stream stream = new MemoryStream(dataToValidate))
                {
                    using (XmlReader xmlReader = XmlReader.Create(stream, xmlReaderSettings))
                    {
                        xdocument = XDocument.Load(xmlReader);
                    }
                }
                if (xdocument.Root == null)
                {
                    throw new XmlSchemaValidationException(Strings.ClassificationRuleCollectionMissingRootElementViolation, null, 1, 1);
                }
                XNamespace defaultNamespace = xdocument.Root.GetDefaultNamespace();
                if (!string.Equals(defaultNamespace.NamespaceName, "http://schemas.microsoft.com/office/2011/mce", StringComparison.OrdinalIgnoreCase))
                {
                    throw new XmlSchemaValidationException(Strings.ClassificationRuleCollectionIncorrectDocumentNamespaceViolation(defaultNamespace.NamespaceName, "http://schemas.microsoft.com/office/2011/mce"), null, 1, 1);
                }
            }
            catch (XmlSchemaValidationException ex)
            {
                throw new ClassificationRuleCollectionSchemaValidationException(ex.Message, ex.LineNumber, ex.LinePosition);
            }
            catch (XmlException ex2)
            {
                throw new ClassificationRuleCollectionSchemaValidationException(ex2.Message, ex2.LineNumber, ex2.LinePosition);
            }
            return(xdocument);
        }
            public InternalRulePackageDecrypter(byte[] inputRulePackageData)
            {
                this.inputRulePackageData = inputRulePackageData;
                XmlReader reader = XmlReader.Create(new MemoryStream(this.inputRulePackageData), ClassificationDefinitionUtils.CreateSafeXmlReaderSettings());

                this.document.Load(reader);
                this.nsmgr = new XmlNamespaceManager(this.document.NameTable);
                this.nsmgr.AddNamespace("ns", this.document.DocumentElement.NamespaceURI);
            }
            private byte[] ReplaceSymmetricAlgorithmParameters(byte[] symmetricKey, byte[] initializationVector)
            {
                XmlDocument xmlDocument = new XmlDocument();
                XmlReader   reader      = XmlReader.Create(new MemoryStream(this.inputRulePackageData), ClassificationDefinitionUtils.CreateSafeXmlReaderSettings());

                xmlDocument.Load(reader);
                XmlNode xmlNode = RulePackageDecrypter.InternalRulePackageDecrypter.SelectAndEnsureSingleNode(xmlDocument, this.nsmgr, "/ns:RulePackage/ns:RulePack/ns:Encryption/ns:Key");

                if (xmlNode == null)
                {
                    throw new XmlException("Encryption key node not found");
                }
                xmlNode.InnerText = Convert.ToBase64String(symmetricKey);
                XmlNode xmlNode2 = RulePackageDecrypter.InternalRulePackageDecrypter.SelectAndEnsureSingleNode(xmlDocument, this.nsmgr, "/ns:RulePackage/ns:RulePack/ns:Encryption/ns:IV");

                if (xmlNode2 == null)
                {
                    throw new XmlException("Encryption IV node not found");
                }
                xmlNode2.InnerText = Convert.ToBase64String(initializationVector);
                return(XmlProcessingUtils.XmlDocumentToUtf16EncodedBytes(xmlDocument));
            }