aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndre Heinecke <[email protected]>2018-08-29 12:32:36 +0000
committerAndre Heinecke <[email protected]>2018-08-29 12:32:36 +0000
commit1420c3bd681648b032d756536311621a3627bedb (patch)
tree9f3ffea88d3a5b30504881a56c3c998e52e552ec
parentdocs: python bindings - protonmail examples (diff)
downloadgpgme-1420c3bd681648b032d756536311621a3627bedb.tar.gz
gpgme-1420c3bd681648b032d756536311621a3627bedb.zip
json: Fix detached verify
* src/gpgme-json.c (op_verify): Only create output and use it for clearsigned and opaque signed. -- Just passing output to gpgme_op_verify changes the behavior to no longer do a verify of the signature.
-rw-r--r--src/gpgme-json.c43
1 files changed, 23 insertions, 20 deletions
diff --git a/src/gpgme-json.c b/src/gpgme-json.c
index 5c670eb3..2a8f1d3a 100644
--- a/src/gpgme-json.c
+++ b/src/gpgme-json.c
@@ -2173,24 +2173,24 @@ op_verify (cjson_t request, cjson_t result)
if (err && err != gpg_error (GPG_ERR_NO_DATA))
goto leave;
- /* Create an output data object. */
- err = gpgme_data_new (&output);
- if (err)
- {
- gpg_error_object (result, err, "Error creating output data object: %s",
- gpg_strerror (err));
- goto leave;
- }
-
- /* Verify. */
- if (signature)
+ if (!signature)
{
- err = gpgme_op_verify (ctx, signature, input, output);
+ /* Verify opaque or clearsigned we need an output data object. */
+ err = gpgme_data_new (&output);
+ if (err)
+ {
+ gpg_error_object (result, err,
+ "Error creating output data object: %s",
+ gpg_strerror (err));
+ goto leave;
+ }
+ err = gpgme_op_verify (ctx, input, 0, output);
}
else
{
- err = gpgme_op_verify (ctx, input, 0, output);
+ err = gpgme_op_verify (ctx, signature, input, NULL);
}
+
if (err)
{
gpg_error_object (result, err, "Verify failed: %s", gpg_strerror (err));
@@ -2208,14 +2208,17 @@ op_verify (cjson_t request, cjson_t result)
verify_result_to_json (verify_result));
}
- err = make_data_object (result, output, "plaintext", -1);
- output = NULL;
-
- if (err)
+ if (output)
{
- gpg_error_object (result, err, "Plaintext output failed: %s",
- gpg_strerror (err));
- goto leave;
+ err = make_data_object (result, output, "plaintext", -1);
+ output = NULL;
+
+ if (err)
+ {
+ gpg_error_object (result, err, "Plaintext output failed: %s",
+ gpg_strerror (err));
+ goto leave;
+ }
}
leave: