unsigned int CALLBACK verify_context_thread(void *param) { Thread_Push( 0 ); if (param) { ConnContext *context = (ConnContext *)param; TCHAR msg[1024]; switch ( DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_SMP_INPUT), 0, DlgProcVerifyContext, (LPARAM)param) ) { case IDOK: case IDYES: lib_cs_lock(); otrl_context_set_trust(context->active_fingerprint, "verified"); otrl_privkey_write_fingerprints(otr_user_state, g_fingerprint_store_filename); lib_cs_unlock(); mir_sntprintf(msg, 1024, TranslateT(LANG_FINGERPRINT_VERIFIED), contact_get_nameT((HANDLE)context->app_data)); msg[1023] = '\0'; ShowMessage((HANDLE)context->app_data, msg); SetEncryptionStatus(context->app_data, otr_context_get_trust(context)); break; case IDNO: lib_cs_lock(); otrl_context_set_trust(context->active_fingerprint, NULL); otrl_privkey_write_fingerprints(otr_user_state, g_fingerprint_store_filename); lib_cs_unlock(); mir_sntprintf(msg, 1024, TranslateT(LANG_FINGERPRINT_NOT_VERIFIED), contact_get_nameT((HANDLE)context->app_data)); msg[1023] = '\0'; ShowMessage((HANDLE)context->app_data, msg); SetEncryptionStatus(context->app_data, otr_context_get_trust(context)); break; } } Thread_Pop(); return 0; }
static void cb_write_fingerprints(void *opdata) { gcry_error_t err = 0; gchar *data_home = xdg_get_data_home(); GString *basedir = g_string_new(data_home); free(data_home); gchar *account_dir = str_replace(jid, "@", "_at_"); g_string_append(basedir, "/profanity/otr/"); g_string_append(basedir, account_dir); g_string_append(basedir, "/"); free(account_dir); GString *fpsfilename = g_string_new(basedir->str); g_string_append(fpsfilename, "fingerprints.txt"); err = otrl_privkey_write_fingerprints(user_state, fpsfilename->str); if (!err == GPG_ERR_NO_ERROR) { log_error("Failed to write fingerprints file"); cons_show_error("Failed to create fingerprints file"); } g_string_free(basedir, TRUE); g_string_free(fpsfilename, TRUE); }
/* Set verification of fingerprint */ void VerifyFingerprint(ConnContext *context, bool verify) { lib_cs_lock(); otrl_context_set_trust(context->active_fingerprint, (verify)?"verified":NULL); otrl_privkey_write_fingerprints(otr_user_state, g_fingerprint_store_filename); lib_cs_unlock(); VerifyFingerprintMessage(context, verify); }
void OtrFingerprintService::writeFingerprints() const { if (!UserStateService) return; OtrlUserState userState = UserStateService->userState(); otrl_privkey_write_fingerprints(userState, PathService->fingerprintsStoreFilePath().toUtf8().data()); emit fingerprintsUpdated(); }
static void otrwui_write_fingerprints( void *opdata) { otrwui_trace("otrwui_write_fingerprints()"); /* The list of known fingerprints has changed. Write them to disk. */ if (gOTR) { std::string path = gDirUtilp->getExpandedFilename( LL_PATH_PER_SL_ACCOUNT, OTR_PUBLIC_KEYS_FILE); otrl_privkey_write_fingerprints(gOTR->get_userstate(), path.c_str()); } }
void otr_keygen(ProfAccount *account) { if (data_loaded) { cons_show("OTR key already generated."); return; } if (jid) { free(jid); } jid = strdup(account->jid); log_info("Generating OTR key for %s", jid); gchar *data_home = xdg_get_data_home(); GString *basedir = g_string_new(data_home); free(data_home); gchar *account_dir = str_replace(jid, "@", "_at_"); g_string_append(basedir, "/profanity/otr/"); g_string_append(basedir, account_dir); g_string_append(basedir, "/"); free(account_dir); if (!mkdir_recursive(basedir->str)) { log_error("Could not create %s for account %s.", basedir->str, jid); cons_show_error("Could not create %s for account %s.", basedir->str, jid); g_string_free(basedir, TRUE); return; } gcry_error_t err = 0; GString *keysfilename = g_string_new(basedir->str); g_string_append(keysfilename, "keys.txt"); log_debug("Generating private key file %s for %s", keysfilename->str, jid); cons_show("Generating private key, this may take some time."); cons_show("Moving the mouse randomly around the screen may speed up the process!"); ui_update(); err = otrl_privkey_generate(user_state, keysfilename->str, account->jid, "xmpp"); if (!err == GPG_ERR_NO_ERROR) { g_string_free(basedir, TRUE); g_string_free(keysfilename, TRUE); log_error("Failed to generate private key"); cons_show_error("Failed to generate private key"); return; } log_info("Private key generated"); cons_show(""); cons_show("Private key generation complete."); GString *fpsfilename = g_string_new(basedir->str); g_string_append(fpsfilename, "fingerprints.txt"); log_debug("Generating fingerprints file %s for %s", fpsfilename->str, jid); err = otrl_privkey_write_fingerprints(user_state, fpsfilename->str); if (!err == GPG_ERR_NO_ERROR) { g_string_free(basedir, TRUE); g_string_free(keysfilename, TRUE); log_error("Failed to create fingerprints file"); cons_show_error("Failed to create fingerprints file"); return; } log_info("Fingerprints file created"); err = otrl_privkey_read(user_state, keysfilename->str); if (!err == GPG_ERR_NO_ERROR) { g_string_free(basedir, TRUE); g_string_free(keysfilename, TRUE); log_error("Failed to load private key"); data_loaded = FALSE; return; } err = otrl_privkey_read_fingerprints(user_state, fpsfilename->str, NULL, NULL); if (!err == GPG_ERR_NO_ERROR) { g_string_free(basedir, TRUE); g_string_free(keysfilename, TRUE); log_error("Failed to load fingerprints"); data_loaded = FALSE; return; } data_loaded = TRUE; g_string_free(basedir, TRUE); g_string_free(keysfilename, TRUE); g_string_free(fpsfilename, TRUE); return; }
/* The list of known fingerprints has changed. Write them to disk. */ void OtrConnection::write_fingerprints() { otrl_privkey_write_fingerprints(userstate, fingerprintFile.toStdString().c_str()); }
/* The list of known fingerprints has changed. Write them to disk. */ void write_fingerprints_cb(void* opdata) { otrl_privkey_write_fingerprints(userstate, totr_config.GetStoreFilename()); }
void OtrInternal::write_fingerprints() { otrl_privkey_write_fingerprints(m_userstate, QFile::encodeName(m_fingerprintFile).constData()); }
void OtrInternal::write_fingerprints() { otrl_privkey_write_fingerprints(m_userstate, m_fingerprintFile.toStdString().c_str()); }