Get the load func in place
This commit is contained in:
parent
8574d61349
commit
1e598470ef
@ -88,15 +88,20 @@ namespace EduNetworkBuilder
|
||||
|
||||
#region Load and Save
|
||||
//Load and save functions
|
||||
public void Load(string filename)
|
||||
public bool Load(string filename, string password = "")
|
||||
{
|
||||
XmlDocument xmlDoc = new XmlDocument();
|
||||
if (File.Exists(filename))
|
||||
{
|
||||
xmlDoc.Load(filename);
|
||||
if (TryToDecrypt(xmlDoc, password) != null)
|
||||
{
|
||||
Load(xmlDoc);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void Load(XmlNode TheNode)
|
||||
{
|
||||
@ -263,6 +268,61 @@ namespace EduNetworkBuilder
|
||||
}
|
||||
return xmlTDES.Doc;
|
||||
}
|
||||
|
||||
private XmlDocument TryToDecrypt(XmlDocument What, string PassToTry)
|
||||
{
|
||||
bool first_failed = false;
|
||||
XmlElement inputElement = What.GetElementsByTagName("Salt")[0] as XmlElement;
|
||||
if (inputElement == null) return What; //No salt means it was never encrypted. Load as normal
|
||||
string salt = inputElement.InnerText;
|
||||
// Create a new TripleDES key.
|
||||
TripleDES tDESkey = TrippleDESDocumentEncryption.GenKey(PassToTry, salt);
|
||||
TrippleDESDocumentEncryption xmlTDES = new TrippleDESDocumentEncryption(What, tDESkey);
|
||||
|
||||
//First, try to decrypt it using the user password.
|
||||
try
|
||||
{
|
||||
xmlTDES.Decrypt("User");
|
||||
}
|
||||
catch (LoginException le)
|
||||
{
|
||||
//we ignore this. Just try it again.
|
||||
first_failed = true;
|
||||
}
|
||||
catch(Exception e) //This is bad. Blow up and exit the function
|
||||
{
|
||||
MessageBox.Show(e.ToString());
|
||||
return null;
|
||||
}
|
||||
|
||||
if (first_failed)
|
||||
{ //try a second one, decrypting the alt key and then using that. The admin does this.
|
||||
// Create a new instance of the TrippleDESDocumentEncryption object
|
||||
// defined in this sample.
|
||||
try
|
||||
{
|
||||
xmlTDES.Decrypt("EncryptedKey");
|
||||
|
||||
inputElement = xmlTDES.Doc.GetElementsByTagName("EncryptedKey")[0] as XmlElement;
|
||||
|
||||
string userpw = inputElement.InnerText;
|
||||
xmlTDES.SetKey(userpw, salt);
|
||||
|
||||
xmlTDES.Decrypt("User");
|
||||
}
|
||||
catch (LoginException le)
|
||||
{
|
||||
//Neither password worked. Exit out so we can prompt for an appropriate password
|
||||
return null;
|
||||
}
|
||||
catch (Exception e) //This is bad. Blow up and exit the function
|
||||
{
|
||||
MessageBox.Show(e.ToString());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
return xmlTDES.Doc;
|
||||
}
|
||||
#endregion
|
||||
|
||||
public bool AddHomework(SchoolworkClass ToAdd)
|
||||
|
Loading…
Reference in New Issue
Block a user