CryptoPlayer::CryptoPlayer(const Names& Nms, int id_base) : MultiPlayer<ssl_socket*>(Nms, id_base), plaintext_player(Nms, id_base), ctx(boost::asio::ssl::context::tlsv12) { string prefix = PREP_DIR "P" + to_string(my_num()); ctx.use_certificate_file(prefix + ".pem", ctx.pem); ctx.use_private_key_file(prefix + ".key", ctx.pem); ctx.add_verify_path("Player-Data"); sockets.resize(num_players()); for (int i = 0; i < (int)sockets.size(); i++) { if (i == my_num()) { sockets[i] = 0; continue; } sockets[i] = new ssl_socket(io_service, ctx); sockets[i]->lowest_layer().assign(boost::asio::ip::tcp::v4(), plaintext_player.socket(i)); sockets[i]->set_verify_mode(boost::asio::ssl::verify_peer); sockets[i]->set_verify_callback(boost::asio::ssl::rfc2818_verification("P" + to_string(i))); if (i < my_num()) sockets[i]->handshake(ssl_socket::client); if (i > my_num()) sockets[i]->handshake(ssl_socket::server); } }
void quote_view_remove_rejected_quotes(QuoteView * qv) { gint idx; for (idx = 0; idx < num_players(); idx++) { Player *player = player_get(idx); quote_found_flag = FALSE; gtk_tree_model_foreach(GTK_TREE_MODEL(qv->store), trade_locate_reject, player); if (quote_found_flag) gtk_list_store_remove(qv->store, "e_found_iter); } }
CryptoPlayer::~CryptoPlayer() { plaintext_player.sockets.clear(); for (int i = 0; i < num_players(); i++) delete sockets[i]; }