public static void ToBinaryStream(DataNode mainNode, BinaryWriter writer, DataNodeBinary.BinaryFormat format) { writer.Write("DEF2"); switch (format) { case DataNodeBinary.BinaryFormat.Simple: DataNodeBinary.WriteSimpleFormat(mainNode, writer); break; case DataNodeBinary.BinaryFormat.SimpleCompresssed: DataNodeBinary.WriteCompressedFormat(mainNode, writer); break; case DataNodeBinary.BinaryFormat.Encrypted: DataNodeBinary.WriteEncryptedFormat(mainNode, writer); break; default: throw new ArgumentOutOfRangeException("format"); } }
private static void WriteEncryptedFormat(DataNode mainNode, BinaryWriter writer) { writer.Write(3); using (RijndaelManaged rijndaelManaged = new RijndaelManaged()) { rijndaelManaged.Key = DataNodeBinary.m_EncryptKey; rijndaelManaged.IV = DataNodeBinary.m_EncryptVector; ICryptoTransform cryptoTransform = rijndaelManaged.CreateEncryptor(rijndaelManaged.Key, rijndaelManaged.IV); using (MemoryStream memoryStream = new MemoryStream()) { using (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoTransform, CryptoStreamMode.Write)) { BinaryWriter binaryWriter = new BinaryWriter(cryptoStream); DataNodeBinary.WriteCompressedFormat(mainNode, binaryWriter); binaryWriter.Flush(); cryptoStream.Flush(); } memoryStream.Flush(); writer.Write(memoryStream.ToArray()); } cryptoTransform.Dispose(); } writer.Flush(); }