Esempio n. 1
0
static gpg_error_t
gpa_file_sign_operation_start (GpaFileSignOperation *op,
                               gpa_file_item_t file_item)
{
    gpg_error_t err;

    if (file_item->direct_in)
    {
        /* No copy is made.  */
        err = gpgme_data_new_from_mem (&op->plain, file_item->direct_in,
                                       file_item->direct_in_len, 0);
        if (err)
        {
            gpa_gpgme_warning (err);
            return err;
        }

        err = gpgme_data_new (&op->sig);
        if (err)
        {
            gpa_gpgme_warning (err);
            gpgme_data_release (op->plain);
            op->plain = NULL;
            return err;
        }
    }
    else
    {
        gchar *plain_filename = file_item->filename_in;
        char *filename_used;

        file_item->filename_out = destination_filename
                                  (plain_filename, gpgme_get_armor (GPA_OPERATION (op)->context->ctx),
                                   gpgme_get_protocol (GPA_OPERATION (op)->context->ctx), op->sign_type);

        /* Open the files */
        op->plain_fd = gpa_open_input (plain_filename, &op->plain,
                                       GPA_OPERATION (op)->window);
        if (op->plain_fd == -1)
            /* FIXME: Error value.  */
            return gpg_error (GPG_ERR_GENERAL);

        op->sig_fd = gpa_open_output (file_item->filename_out, &op->sig,
                                      GPA_OPERATION (op)->window,
                                      &filename_used);
        if (op->sig_fd == -1)
        {
            gpgme_data_release (op->plain);
            close (op->plain_fd);
            xfree (filename_used);
            /* FIXME: Error value.  */
            return gpg_error (GPG_ERR_GENERAL);
        }

        xfree (file_item->filename_out);
        file_item->filename_out = filename_used;
    }

    /* Start the operation */
    err = gpgme_op_sign_start (GPA_OPERATION (op)->context->ctx, op->plain,
                               op->sig, op->sign_type);
    if (err)
    {
        gpa_gpgme_warning (err);
        return err;
    }
    /* Show and update the progress dialog */
    gtk_widget_show_all (GPA_FILE_OPERATION (op)->progress_dialog);
    gpa_progress_dialog_set_label (GPA_PROGRESS_DIALOG
                                   (GPA_FILE_OPERATION (op)->progress_dialog),
                                   file_item->direct_name
                                   ? file_item->direct_name
                                   : file_item->filename_in);

    return 0;
}
Esempio n. 2
0
static PyObject *
pygpgme_context_get_armor(PyGpgmeContext *self)
{
    return PyBool_FromLong(gpgme_get_armor(self->ctx));
}