public bool SignUp() { try { if (!Directory.Exists(DatabaseDir)) { Directory.CreateDirectory(DatabaseDir); } if (!IsUserValid()) { return(false); } var emailExists = this.CheckUniqueEmail(); if (emailExists) { this.WarningMessage = "This email already exists. Please choose another one!"; return(false); } var isEmailValid = this.isEmailValid(); if (!isEmailValid) { this.WarningMessage = "Please input a valid email!"; return(false); } var emailEncoded = Convert.ToBase64String(Encoding.UTF8.GetBytes(this.User.Email)); var filePath = Path.Combine(DatabaseDir, emailEncoded); filePath = Path.ChangeExtension(filePath, "xml"); var keyPair = RSAService.GenerateKeyPair((int)this.KeySize); User.Passphrase = HashService.SHA256Hash(User.Passphrase, User.Salt); User.IV = Convert.ToBase64String(SymetricService.RijndaelGenerateIV()); User.PrivateKey = SymetricService.RijndaelEncryptData(keyPair.PrivateKey, Convert.FromBase64String(User.Passphrase), Convert.FromBase64String(User.IV)); User.PublicKey = Convert.ToBase64String(Encoding.UTF8.GetBytes(keyPair.PublicKey)); XmlService.WriteToXml <UserDto>(filePath, User); this.InfoMessage = "Sign up successfully"; } catch (Exception ex) { this.WarningMessage = "There was an error creating your account"; return(false); } return(true); }