/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); |