private Tuple <Boolean, string> create_user(User user) { try { string salt = PasswordHasher.GenSalt(); byte[] saltBytes = Encoding.UTF8.GetBytes(salt); string hashedPass = PasswordHasher.Hash(user.password, saltBytes); DataTable table = new DataTable(); string query = "insert into users values (@username, @password, @salt)"; var con = new SqlConnection(Program._connStr); var cmd = new SqlCommand(query, con); cmd.Parameters.AddWithValue("@username", user.username); cmd.Parameters.AddWithValue("@password", hashedPass); cmd.Parameters.AddWithValue("@salt", salt); using (var da = new SqlDataAdapter(cmd)) { cmd.CommandType = CommandType.Text; da.Fill(table); } return(Tuple.Create(true, "")); } catch (Exception e) { if (e.HResult.ToString() == "-2146232060") { return(Tuple.Create(false, "Username already taken")); } return(Tuple.Create(false, "Unknown error occurred")); } }