public bool DecryptRulePackage(out byte[] outputDecryptedRulePackageData, out byte[] outputEncryptedRulePackageDataWithSymmetricKey)
            {
                XmlNode encryptionNode = this.GetEncryptionNode();

                if (encryptionNode == null)
                {
                    outputDecryptedRulePackageData = null;
                    outputEncryptedRulePackageDataWithSymmetricKey = null;
                    return(false);
                }
                byte[] array  = this.AsymmetricDecrypt(this.GetEncryptionParameter(encryptionNode, "ns:Key"));
                byte[] array2 = this.AsymmetricDecrypt(this.GetEncryptionParameter(encryptionNode, "ns:IV"));
                using (this.algorithm = new AesCryptoServiceProvider())
                {
                    this.algorithm.Key = array;
                    this.algorithm.IV  = array2;
                    this.DecryptEntities();
                    this.DecryptAffinities();
                    this.DecryptRegexes();
                    this.DecryptKeywordLists();
                }
                this.RemoveEncryptionNode();
                outputDecryptedRulePackageData = XmlProcessingUtils.XmlDocumentToUtf16EncodedBytes(this.document);
                outputEncryptedRulePackageDataWithSymmetricKey = this.ReplaceSymmetricAlgorithmParameters(array, array2);
                return(true);
            }
            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));
            }