diff options
Diffstat (limited to 'gpgme/encrypt-sign.c')
| -rw-r--r-- | gpgme/encrypt-sign.c | 48 | 
1 files changed, 18 insertions, 30 deletions
diff --git a/gpgme/encrypt-sign.c b/gpgme/encrypt-sign.c index 2ed1b1c6..68ab115c 100644 --- a/gpgme/encrypt-sign.c +++ b/gpgme/encrypt-sign.c @@ -33,12 +33,10 @@  static GpgmeError -encrypt_sign_status_handler (GpgmeCtx ctx, GpgmeStatusCode code, char *args) +encrypt_sign_status_handler (void *priv, GpgmeStatusCode code, char *args)  { -  GpgmeError err = _gpgme_encrypt_status_handler (ctx, code, args); -  if (err) -    return err; -  return _gpgme_sign_status_handler (ctx, code, args); +  return _gpgme_encrypt_status_handler (priv, code, args) +    || _gpgme_sign_status_handler (priv, code, args);  } @@ -47,41 +45,31 @@ _gpgme_op_encrypt_sign_start (GpgmeCtx ctx, int synchronous,  			      GpgmeRecipients recp,  			      GpgmeData plain, GpgmeData cipher)  { -  GpgmeError err = 0; +  GpgmeError err;    err = _gpgme_op_reset (ctx, synchronous);    if (err) -    goto leave; - -  err = _gpgme_passphrase_start (ctx); -  if (err) -    goto leave; - -  _gpgme_engine_set_status_handler (ctx->engine, -				    encrypt_sign_status_handler, ctx); +    return err; -  /* Check the supplied data */    if (!plain) -    { -      err = GPGME_No_Data; -      goto leave; -    } +    return GPGME_No_Data;    if (!cipher) +    return GPGME_Invalid_Value; + +  if (ctx->passphrase_cb)      { -      err = GPGME_Invalid_Value; -      goto leave; +      err = _gpgme_engine_set_command_handler (ctx->engine, +					       _gpgme_passphrase_command_handler, +					       ctx, NULL); +      if (err) +	return err;      } -  err = _gpgme_engine_op_encrypt_sign (ctx->engine, recp, plain, cipher, -				       ctx->use_armor, ctx /* FIXME */); +  _gpgme_engine_set_status_handler (ctx->engine, +				    encrypt_sign_status_handler, ctx); - leave: -  if (err) -    { -      _gpgme_engine_release (ctx->engine); -      ctx->engine = NULL; -    } -  return err; +  return _gpgme_engine_op_encrypt_sign (ctx->engine, recp, plain, cipher, +					ctx->use_armor, ctx /* FIXME */);  }  GpgmeError  | 
