From 8002f98d48c3539e0211add8881620ea16cea21e Mon Sep 17 00:00:00 2001 From: Marcus Brinkmann Date: Fri, 25 Apr 2003 14:24:17 +0000 Subject: 2003-04-25 Marcus Brinkmann * ops.h (_gpgme_passphrase_start): Remove prototype. * passphrase.c: Do not include , "util.h" or "debug.h", but "gpgme.h". (struct passphrase_result): Change to typedef for op_data_t. (release_passphrase_result): Rename to release_op_data. (_gpgme_passphrase_status_handler): Change first argument to void *. Use new op_data_t type. (_gpgme_passphrase_command_handler): Use new op_data_t type. (_gpgme_passphrase_start): Remove function. * decrypt.c (_gpgme_decrypt_start): Rewrite error handling. Do not call _gpgme_passphrase_start, but install command handler. * encrypt.c (_gpgme_op_encrypt_start): Likewise. * encrypt-sign.c (_gpgme_op_encrypt_sign_start): Likewise. * sign.c (_gpgme_op_sign_start): Likewise. --- gpgme/encrypt.c | 56 ++++++++++++++++++++------------------------------------ 1 file changed, 20 insertions(+), 36 deletions(-) (limited to 'gpgme/encrypt.c') diff --git a/gpgme/encrypt.c b/gpgme/encrypt.c index 86de371e..e0fcc570 100644 --- a/gpgme/encrypt.c +++ b/gpgme/encrypt.c @@ -158,29 +158,33 @@ _gpgme_encrypt_sym_status_handler (GpgmeCtx ctx, GpgmeStatusCode code, static GpgmeError _gpgme_op_encrypt_start (GpgmeCtx ctx, int synchronous, - GpgmeRecipients recp, GpgmeData plain, GpgmeData ciph) + GpgmeRecipients recp, GpgmeData plain, GpgmeData cipher) { - GpgmeError err = 0; + GpgmeError err; int symmetric = 0; - /* Do some checks. */ + err = _gpgme_op_reset (ctx, synchronous); + if (err) + return err; + if (!recp) symmetric = 1; - else if (!gpgme_recipients_count (recp)) - { - err = GPGME_No_UserID; - goto leave; - } + else if (gpgme_recipients_count (recp) == 0) + return GPGME_No_UserID; - err = _gpgme_op_reset (ctx, synchronous); - if (err) - goto leave; + if (!plain) + return GPGME_No_Data; + if (!cipher) + return GPGME_Invalid_Value; - if (symmetric) + if (symmetric && ctx->passphrase_cb) { - err = _gpgme_passphrase_start (ctx); + /* Symmetric encryption requires a passphrase. */ + err = _gpgme_engine_set_command_handler (ctx->engine, + _gpgme_passphrase_command_handler, + ctx, NULL); if (err) - goto leave; + return err; } _gpgme_engine_set_status_handler (ctx->engine, @@ -189,28 +193,8 @@ _gpgme_op_encrypt_start (GpgmeCtx ctx, int synchronous, : _gpgme_encrypt_status_handler, ctx); - /* Check the supplied data */ - if (!plain) - { - err = GPGME_No_Data; - goto leave; - } - if (!ciph) - { - err = GPGME_Invalid_Value; - goto leave; - } - - err = _gpgme_engine_op_encrypt (ctx->engine, recp, plain, ciph, - ctx->use_armor); - - leave: - if (err) - { - _gpgme_engine_release (ctx->engine); - ctx->engine = NULL; - } - return err; + return _gpgme_engine_op_encrypt (ctx->engine, recp, plain, cipher, + ctx->use_armor); } -- cgit v1.2.3