public Session_Holder(IDataRepository db, long remote_key, long remote_shared_key)
        {
            this.session_id = session_id_generator.make_random_id(db);

            data_generator login_data = new data_generator(db, User_Password.Password);
            this.data = login_data.LoginData;
            this.calulated_key = db_calculatedKey.convert_Hashtable_to_list_of_calculatedKey(login_data.CalulatedKey);

            int counter = 0;
            do//ensure a unique key is picked
            {
                this.server_key = encryption_wrapper.get_keys();
                counter++;
            }
            while (!db.check_for_unique_pub_and_shared_key(this.server_key.public_key, this.server_key.shared_key)||counter >100);

            this.remote_pub_key = remote_key;
            this.remote_shared_key = remote_shared_key;
            string messageToBeEncrypted = "ID=" + session_id + ";" + "PUB_KEY=" + server_key.public_key + ";" + "SHARED_KEY=" + server_key.shared_key + ";" + data;
            this.encrypted_message = encryption_wrapper.encrypt_message(remote_key, remote_shared_key,
                "ID=" + session_id + ";" + "PUB_KEY=" + server_key.public_key + ";"+"SHARED_KEY="+server_key.shared_key+";"+data);
        }