aboutsummaryrefslogtreecommitdiffstats
path: root/gpgme/rungpg.c
diff options
context:
space:
mode:
Diffstat (limited to 'gpgme/rungpg.c')
-rw-r--r--gpgme/rungpg.c41
1 files changed, 28 insertions, 13 deletions
diff --git a/gpgme/rungpg.c b/gpgme/rungpg.c
index dc69acba..be639b97 100644
--- a/gpgme/rungpg.c
+++ b/gpgme/rungpg.c
@@ -1553,29 +1553,44 @@ _gpgme_gpg_op_verify (GpgObject gpg, GpgmeData sig, GpgmeData text)
{
GpgmeError err = 0;
- if (gpg->pm.used)
+ if (_gpgme_data_get_mode (text) == GPGME_DATA_MODE_IN)
{
- err = _gpgme_gpg_add_arg (gpg, gpg->pm.used ? "--pipemode" : "--verify");
+ /* Normal or cleartext signature. */
+
+ err = _gpgme_gpg_add_arg (gpg, "--output");
if (!err)
- err = _gpgme_gpg_add_arg (gpg, "--");
+ err = _gpgme_gpg_add_arg (gpg, "-");
if (!err)
- err = _gpgme_gpg_add_pm_data (gpg, sig, 0);
+ err = _gpgme_gpg_add_data (gpg, sig, 0);
if (!err)
- err = _gpgme_gpg_add_pm_data (gpg, text, 1);
+ err = _gpgme_gpg_add_data (gpg, text, 1);
}
else
{
- err = _gpgme_gpg_add_arg (gpg, "--verify");
- if (!err)
- err = _gpgme_gpg_add_arg (gpg, "--");
- if (!err)
- err = _gpgme_gpg_add_data (gpg, sig, -1);
- if (text)
+ if (gpg->pm.used)
+ {
+ err = _gpgme_gpg_add_arg (gpg, gpg->pm.used ? "--pipemode" : "--verify");
+ if (!err)
+ err = _gpgme_gpg_add_arg (gpg, "--");
+ if (!err)
+ err = _gpgme_gpg_add_pm_data (gpg, sig, 0);
+ if (!err)
+ err = _gpgme_gpg_add_pm_data (gpg, text, 1);
+ }
+ else
{
+ err = _gpgme_gpg_add_arg (gpg, "--verify");
if (!err)
- err = _gpgme_gpg_add_arg (gpg, "-");
+ err = _gpgme_gpg_add_arg (gpg, "--");
if (!err)
- err = _gpgme_gpg_add_data (gpg, text, 0);
+ err = _gpgme_gpg_add_data (gpg, sig, -1);
+ if (text)
+ {
+ if (!err)
+ err = _gpgme_gpg_add_arg (gpg, "-");
+ if (!err)
+ err = _gpgme_gpg_add_data (gpg, text, 0);
+ }
}
}
return err;