private static byte[] SerializeManifest(FileDatabaseManifest fileDatabaseManifest, Config config) { using (MemoryStream serializedManifestStream = new MemoryStream(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(fileDatabaseManifest)))) using (MemoryStream compressedMemoryStream = new MemoryStream()) { // It's very important that we dispose of the GZipStream before reading from the memory stream using (GZipStream compressionStream = new GZipStream(compressedMemoryStream, CompressionMode.Compress, true)) { serializedManifestStream.CopyTo(compressionStream); } return(EncryptionHelpers.EncryptBytes(compressedMemoryStream.ToArray(), config.EncryptionKey, config.InitializationVector)); } }