void ServerWidget::slot_choice( int choice ) { switch( choice ) { case 0: { QString filename; switch( _group->id( _group->selected() ) ) { case 0: filename = SCENAR_PATH + "demo_1player.scn"; break; case 1: filename = SCENAR_PATH + "demo_2players.scn"; break; case 2: filename = _radio3->getText(); break; } emit sig_load( filename ); break; } case 1: emit sig_save(); break; case 2: emit sig_stop(); break; } }
/** add comments here */ ServerInterface::ServerInterface() :QMainWindow() { setCaption( "Attal - Lords of Doom (Server)" ); initMenuBar(); initStatusBar(); DataTheme.init(); _widget = new ServerWidget( this ); setCentralWidget( _widget ); connect( _widget, SIGNAL( sig_stop() ), SLOT( slot_stop() ) ); connect( _widget, SIGNAL( sig_load( QString ) ), SLOT( slot_load( QString ) ) ); connect( _widget, SIGNAL( sig_save() ), SLOT( slot_save() ) ); setMinimumSize( 350, 200 ); if( !init() ) { logDD( "quit" ); qApp->quit(); } connect( _server, SIGNAL( sig_endConnection( QString ) ), _widget, SLOT( slot_endConnection( QString ) ) ); }
static int verify(PubkeyStruct *pubkey_struct, const char *message_file, const char *sig_file, int quiet, int output) { char trusted_comment[TRUSTEDCOMMENTMAXBYTES]; unsigned char global_sig[crypto_sign_BYTES]; FILE *info_fp = stdout; unsigned char *sig_and_trusted_comment; SigStruct *sig_struct; unsigned char *message; size_t message_len; size_t trusted_comment_len; int hashed; if (output != 0) { info_fp = stderr; } sig_struct = sig_load(sig_file, global_sig, &hashed, trusted_comment, sizeof trusted_comment); message = message_load(&message_len, message_file, hashed); if (memcmp(sig_struct->keynum, pubkey_struct->keynum_pk.keynum, sizeof sig_struct->keynum) != 0) { fprintf(stderr, "Signature key id in %s is %" PRIX64 "\n" "but the key id in the public key is %" PRIX64 "\n", sig_file, le64_load(sig_struct->keynum), le64_load(pubkey_struct->keynum_pk.keynum)); exit(1); } if (crypto_sign_verify_detached(sig_struct->sig, message, message_len, pubkey_struct->keynum_pk.pk) != 0) { if (quiet == 0) { fprintf(stderr, "Signature verification failed\n"); } exit(1); } free(message); trusted_comment_len = strlen(trusted_comment); sig_and_trusted_comment = xmalloc((sizeof sig_struct->sig) + trusted_comment_len); memcpy(sig_and_trusted_comment, sig_struct->sig, sizeof sig_struct->sig); memcpy(sig_and_trusted_comment + sizeof sig_struct->sig, trusted_comment, trusted_comment_len); if (crypto_sign_verify_detached(global_sig, sig_and_trusted_comment, (sizeof sig_struct->sig) + trusted_comment_len, pubkey_struct->keynum_pk.pk) != 0) { if (quiet == 0) { fprintf(stderr, "Comment signature verification failed\n"); } exit(1); } free(sig_and_trusted_comment); free(pubkey_struct); free(sig_struct); if (quiet == 0) { fprintf(info_fp, "Signature and comment signature verified\n" "Trusted comment: %s\n", trusted_comment); } else if (quiet == 2) { fprintf(info_fp, "%s\n", trusted_comment); } if (output != 0 && output_file(message_file) != 0) { exit(2); } return 0; }