示例#1
0
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 ();
}
示例#2
0
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));
    }
}
示例#3
0
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;
}