diff options
author | Andre Heinecke <[email protected]> | 2018-08-29 12:32:36 +0000 |
---|---|---|
committer | Andre Heinecke <[email protected]> | 2018-08-29 12:32:36 +0000 |
commit | 1420c3bd681648b032d756536311621a3627bedb (patch) | |
tree | 9f3ffea88d3a5b30504881a56c3c998e52e552ec /src/gpgme-json.c | |
parent | docs: python bindings - protonmail examples (diff) | |
download | gpgme-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.
Diffstat (limited to 'src/gpgme-json.c')
-rw-r--r-- | src/gpgme-json.c | 43 |
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: |