aboutsummaryrefslogtreecommitdiffstats
path: root/gpgme/encrypt.c
diff options
context:
space:
mode:
authorMarcus Brinkmann <[email protected]>2001-11-21 03:40:17 +0000
committerMarcus Brinkmann <[email protected]>2001-11-21 03:40:17 +0000
commitda95ecfc2c8d9340371c77b7f0c35736b110c839 (patch)
treee3964d089764c04bb31ec5451699b1b2c3c3f5fe /gpgme/encrypt.c
parent2001-11-20 Marcus Brinkmann <[email protected]> (diff)
downloadgpgme-da95ecfc2c8d9340371c77b7f0c35736b110c839.tar.gz
gpgme-da95ecfc2c8d9340371c77b7f0c35736b110c839.zip
2001-11-21 Marcus Brinkmann <[email protected]>
* context.h: Do not include rungpg.h, but engine.h. (struct gpgme_context_s): Replace member gpg with engine. * gpgme.c (gpgme_release): Release engine, not gpg. * recipient.c (_gpgme_append_gpg_args_from_recifgpients): Function moved ... * rungpg.c (_gpgme_append_gpg_args_from_recipients): ... here. Make static, change order of arguments, and return an error value. * ops.h (_gpgme_append_gpg_args_from_recipients): Removed prototype. * rungpg.h (_gpgme_gpg_op_verify): Add prototype. (_gpgme_gpg_op_encrypt): Likewise. (_gpgme_gpg_op_decrypt): Likewise. (_gpgme_gpg_op_delete): Likewise. (_gpgme_gpg_op_export): Likewise. (_gpgme_gpg_op_genkey): Likewise. (_gpgme_gpg_op_import): Likewise. (_gpgme_gpg_op_keylist): Likewise. (_gpgme_gpg_op_sign): Likewise. (_gpgme_gpg_op_trustlist): Likewise. * rungpg.c (_gpgme_gpg_op_verify): New function. (_gpgme_gpg_op_encrypt): Likewise. (_gpgme_gpg_op_decrypt): Likewise. (_gpgme_gpg_op_delete): Likewise. (_gpgme_gpg_op_export): Likewise. (_gpgme_gpg_op_genkey): Likewise. (_gpgme_gpg_op_import): Likewise. (_gpgme_gpg_op_keylist): Likewise. (_gpgme_gpg_op_sign): Likewise. (_gpgme_gpg_op_trustlist): Likewise. * engine.h (_gpgme_engine_set_status_handler): Add prototype. (_gpgme_engine_set_command_handler): Likewise. (_gpgme_engine_set_colon_line_handler): Likewise. (_gpgme_engine_op_decrypt): Likewise. (_gpgme_engine_op_delete): Likewise. (_gpgme_engine_op_encrypt): Likewise. (_gpgme_engine_op_export): Likewise. (_gpgme_engine_op_genkey): Likewise. (_gpgme_engine_op_import): Likewise. (_gpgme_engine_op_keylist): Likewise. (_gpgme_engine_op_sign): Likewise. (_gpgme_engine_op_trustlist): Likewise. (_gpgme_engine_op_verify): Likewise. (_gpgme_engine_start): Likewise. * engine.c (_gpgme_engine_set_status_handler): New function. (_gpgme_engine_set_command_handler): Likewise. (_gpgme_engine_set_colon_line_handler): Likewise. (_gpgme_engine_op_decrypt): Likewise. (_gpgme_engine_op_delete): Likewise. (_gpgme_engine_op_encrypt): Likewise. (_gpgme_engine_op_export): Likewise. (_gpgme_engine_op_genkey): Likewise. (_gpgme_engine_op_import): Likewise. (_gpgme_engine_op_keylist): Likewise. (_gpgme_engine_op_sign): Likewise. (_gpgme_engine_op_trustlist): Likewise. (_gpgme_engine_op_verify): Likewise. (_gpgme_engine_start): Likewise. * verify.c (gpgme_op_verify_start): Reimplement in terms of above functions. * encrypt.c (gpgme_op_encrypt_start): Likewise. * decrypt.c (_gpgme_decrypt_start): Likewise. * passphrase.c (_gpgme_passphrase_start): Likewise. * keylist.c (gpgme_op_keylist_start): Likewise.
Diffstat (limited to '')
-rw-r--r--gpgme/encrypt.c101
1 files changed, 46 insertions, 55 deletions
diff --git a/gpgme/encrypt.c b/gpgme/encrypt.c
index 2179443e..d2463336 100644
--- a/gpgme/encrypt.c
+++ b/gpgme/encrypt.c
@@ -138,73 +138,64 @@ encrypt_status_handler (GpgmeCtx ctx, GpgStatusCode code, char *args)
GpgmeError
-gpgme_op_encrypt_start ( GpgmeCtx c, GpgmeRecipients recp,
- GpgmeData plain, GpgmeData ciph )
+gpgme_op_encrypt_start (GpgmeCtx ctx, GpgmeRecipients recp, GpgmeData plain,
+ GpgmeData ciph)
{
- int rc = 0;
- int i;
+ int err = 0;
- fail_on_pending_request( c );
- c->pending = 1;
+ fail_on_pending_request (ctx);
+ ctx->pending = 1;
- _gpgme_release_result (c);
- c->out_of_core = 0;
+ _gpgme_release_result (ctx);
+ ctx->out_of_core = 0;
- /* do some checks */
- if ( !gpgme_recipients_count ( recp ) ) {
- /* Fixme: In this case we should do symmentric encryption */
- rc = mk_error (No_Recipients);
- goto leave;
+ /* Do some checks. */
+ if (!gpgme_recipients_count (recp))
+ {
+ /* Fixme: In this case we should do symmentric encryption. */
+ err = mk_error (No_Recipients);
+ goto leave;
}
-
- /* create a process object */
- _gpgme_gpg_release (c->gpg); c->gpg = NULL;
- rc = _gpgme_gpg_new ( &c->gpg );
- if (rc)
- goto leave;
-
- _gpgme_gpg_set_status_handler ( c->gpg, encrypt_status_handler, c );
-
- /* build the commandline */
- _gpgme_gpg_add_arg ( c->gpg, "--encrypt" );
- if ( c->use_armor )
- _gpgme_gpg_add_arg ( c->gpg, "--armor" );
- for ( i=0; i < c->verbosity; i++ )
- _gpgme_gpg_add_arg ( c->gpg, "--verbose" );
- /* If we know that all recipients are valid (full or ultimate trust)
- * we can suppress further checks */
- if ( _gpgme_recipients_all_valid (recp) )
- _gpgme_gpg_add_arg ( c->gpg, "--always-trust" );
-
- _gpgme_append_gpg_args_from_recipients ( recp, c->gpg );
- /* Check the supplied data */
- if ( gpgme_data_get_type (plain) == GPGME_DATA_TYPE_NONE ) {
- rc = mk_error (No_Data);
- goto leave;
+ /* Create an engine object. */
+ _gpgme_engine_release (ctx->engine);
+ ctx->engine = NULL;
+ err = _gpgme_engine_new (ctx->use_cms ? GPGME_PROTOCOL_CMS
+ : GPGME_PROTOCOL_OpenPGP, &ctx->engine);
+ if (err)
+ goto leave;
+
+ _gpgme_engine_set_status_handler (ctx->engine, encrypt_status_handler, ctx);
+ _gpgme_engine_set_verbosity (ctx->engine, ctx->verbosity);
+
+ /* Check the supplied data */
+ if (gpgme_data_get_type (plain) == GPGME_DATA_TYPE_NONE)
+ {
+ err = mk_error (No_Data);
+ goto leave;
}
- _gpgme_data_set_mode (plain, GPGME_DATA_MODE_OUT );
- if ( !ciph || gpgme_data_get_type (ciph) != GPGME_DATA_TYPE_NONE ) {
- rc = mk_error (Invalid_Value);
- goto leave;
+ _gpgme_data_set_mode (plain, GPGME_DATA_MODE_OUT);
+ if (!ciph || gpgme_data_get_type (ciph) != GPGME_DATA_TYPE_NONE)
+ {
+ err = mk_error (Invalid_Value);
+ goto leave;
}
- _gpgme_data_set_mode (ciph, GPGME_DATA_MODE_IN );
- /* Tell the gpg object about the data */
- _gpgme_gpg_add_arg ( c->gpg, "--output" );
- _gpgme_gpg_add_arg ( c->gpg, "-" );
- _gpgme_gpg_add_data ( c->gpg, ciph, 1 );
- _gpgme_gpg_add_arg ( c->gpg, "--" );
- _gpgme_gpg_add_data ( c->gpg, plain, 0 );
+ _gpgme_data_set_mode (ciph, GPGME_DATA_MODE_IN);
+
+ err = _gpgme_engine_op_encrypt (ctx->engine, recp, plain, ciph, ctx->use_armor);
+
- /* and kick off the process */
- rc = _gpgme_gpg_spawn ( c->gpg, c );
+ if (!err) /* And kick off the process. */
+ err = _gpgme_engine_start (ctx->engine, ctx);
leave:
- if (rc) {
- c->pending = 0;
- _gpgme_gpg_release ( c->gpg ); c->gpg = NULL;
+ if (err)
+ {
+ ctx->pending = 0;
+ _gpgme_engine_release (ctx->engine);
+ ctx->engine = NULL;
}
- return rc;
+ return err;
}