Winify

Subversion Repositories:
Compare Path: Rev
With Path: Rev
?path1? @ 13  →  ?path2? @ 14
/trunk/Winify/Servers/Serialization/ServersSerialization.cs
@@ -6,6 +6,8 @@
using System.Xml;
using System.Xml.Schema;
using System.Xml.Serialization;
using Servers;
using Winify.Utilities;
 
namespace Winify.Servers.Serialization
{
@@ -87,7 +89,21 @@
XmlReaderSettingsValidationEventHandler;
}
 
return new ServersSerializationSuccess(servers, validationEventArgs);
// Decrypt password.
var deviceId = Miscellaneous.GetMachineGuid();
var protectedServers = new global::Servers.Servers
{
Server = new BindingListWithCollectionChanged<Server>()
};
foreach (var server in servers.Server)
{
var unarmored = Convert.FromBase64String(server.Password);
var decrypted = Encoding.UTF8.GetString(AES.Decrypt(unarmored, deviceId));
 
protectedServers.Server.Add(new Server(server.Name, server.Url, server.Username, decrypted));
}
 
return new ServersSerializationSuccess(protectedServers, validationEventArgs);
}
 
public static async Task<ServersSerializationState> Serialize(global::Servers.Servers servers, string file)
@@ -111,8 +127,22 @@
null,
"<!ATTLIST Servers xmlns:xsi CDATA #IMPLIED xsi:noNamespaceSchemaLocation CDATA #IMPLIED>");
 
XmlSerializer.Serialize(xmlWriter, servers);
// Encrypt password for all servers.
var deviceId = Miscellaneous.GetMachineGuid();
var protectedServers = new global::Servers.Servers
{
Server = new BindingListWithCollectionChanged<Server>()
};
foreach (var server in servers.Server)
{
var encrypted = AES.Encrypt(Encoding.UTF8.GetBytes(server.Password), deviceId);
var armored = Convert.ToBase64String(encrypted);
 
protectedServers.Server.Add(new Server(server.Name, server.Url, server.Username, armored));
}
 
XmlSerializer.Serialize(xmlWriter, protectedServers);
 
using (var fileStream =
new FileStream(file, FileMode.Create, FileAccess.Write, FileShare.ReadWrite))
{
@@ -153,8 +183,22 @@
null,
"<!ATTLIST Servers xmlns:xsi CDATA #IMPLIED xsi:noNamespaceSchemaLocation CDATA #IMPLIED>");
 
XmlSerializer.Serialize(xmlWriter, servers);
// Encrypt password for all servers.
var deviceId = Miscellaneous.GetMachineGuid();
var protectedServers = new global::Servers.Servers
{
Server = new BindingListWithCollectionChanged<Server>()
};
foreach (var server in servers.Server)
{
var encrypted = AES.Encrypt(Encoding.UTF8.GetBytes(server.Password), deviceId);
var armored = Convert.ToBase64String(encrypted);
 
protectedServers.Server.Add(new Server(server.Name, server.Url, server.Username, armored));
}
 
XmlSerializer.Serialize(xmlWriter, protectedServers);
 
memoryStream.Position = 0L;
 
await memoryStream.CopyToAsync(outputStream);