aboutsummaryrefslogtreecommitdiffstats
path: root/gpgme/encrypt.c
diff options
context:
space:
mode:
authorMarcus Brinkmann <[email protected]>2003-04-25 14:24:17 +0000
committerMarcus Brinkmann <[email protected]>2003-04-25 14:24:17 +0000
commit8002f98d48c3539e0211add8881620ea16cea21e (patch)
tree89ab8eefdb56085484a19124ddbeb8dcce54b5ba /gpgme/encrypt.c
parent2003-04-25 Marcus Brinkmann <[email protected]> (diff)
downloadgpgme-8002f98d48c3539e0211add8881620ea16cea21e.tar.gz
gpgme-8002f98d48c3539e0211add8881620ea16cea21e.zip
2003-04-25 Marcus Brinkmann <[email protected]>
* ops.h (_gpgme_passphrase_start): Remove prototype. * passphrase.c: Do not include <assert.h>, "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.
Diffstat (limited to '')
-rw-r--r--gpgme/encrypt.c56
1 files changed, 20 insertions, 36 deletions
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);
}