static void dont_encrypt_btn_cb (GtkWidget *widget, gpointer data) { struct select_keys_s *sk = data; cm_return_if_fail (sk); sk->okay = 0; sk->result = KEY_SELECTION_DONT; if (sk->select_ctx) gpgme_cancel (sk->select_ctx); gtk_main_quit (); }
void engine_gpgme_cancel (void *cancel_data) { gpg_error_t err; gpgme_ctx_t ctx = cancel_data; if (ctx) { EnterCriticalSection (&waiter_thread_lock); err = gpgme_cancel (ctx); LeaveCriticalSection (&waiter_thread_lock); if (err) log_debug ("%s:%s: gpgme_cancel failed: %s\n", SRCNAME, __func__, gpg_strerror (err)); } }
const char* gpgmegtk_passphrase_cb (void *opaque, const char *desc, void **r_hd) { struct passphrase_cb_info_s *info = opaque; GpgmeCtx ctx = info ? info->c : NULL; const char *pass; if (!desc) { /* FIXME: cleanup by looking at *r_hd */ return NULL; } if (prefs_gpg_get_config()->store_passphrase && last_pass != NULL && strncmp(desc, "TRY_AGAIN", 9) != 0) return g_strdup(last_pass); gpgmegtk_set_passphrase_grab (prefs_gpg_get_config()->passphrase_grab); debug_print ("%% requesting passphrase for `%s': ", desc); pass = passphrase_mbox (desc); gpgmegtk_free_passphrase(); if (!pass) { debug_print ("%% cancel passphrase entry"); gpgme_cancel (ctx); } else { if (prefs_gpg_get_config()->store_passphrase) { last_pass = g_strdup(pass); if (mlock(last_pass, strlen(last_pass)) == -1) debug_print("%% locking passphrase failed"); if (prefs_gpg_get_config()->store_passphrase_timeout > 0) { gtk_timeout_add(prefs_gpg_get_config()->store_passphrase_timeout*60*1000, free_passphrase, NULL); } } debug_print ("%% sending passphrase"); } return pass; }