diff options
author | Werner Koch <[email protected]> | 2016-11-15 09:29:48 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2016-11-15 09:34:13 +0000 |
commit | 7659d42468b604db2936b021425683f407eba4a7 (patch) | |
tree | 71ee551bdd948598d0e9015ae2ec10366c0be373 /tests/run-decrypt.c | |
parent | core: Add public function gpgme_get_ctx_flag. (diff) | |
download | gpgme-7659d42468b604db2936b021425683f407eba4a7.tar.gz gpgme-7659d42468b604db2936b021425683f407eba4a7.zip |
core: Implement context flag "override-session-key".
* src/gpgme.c (gpgme_set_ctx_flag): Add flags "export-session-key" and
"override-session-key".
(gpgme_get_ctx_flag): Ditto.
(gpgme_set_export_session_keys): Remove.
(gpgme_get_export_session_keys): Remove.
* src/gpgme.def, src/libgpgme.vers: Remove them.
* src/context.h (struct gpgme_context): Add field
override_session_key.
* src/decrypt-verify.c (decrypt_verify_start): Pass
override_session_key value to the engine.
* src/decrypt.c (decrypt_start): Ditto.
* src/engine.c (_gpgme_engine_op_decrypt): Ditto.
(_gpgme_engine_op_decrypt_verify): Ditto.
* src/engine-backend.h (struct engine_ops): Extend DECRYPT and
DECRYPT_VERIFY_START with override_session_key.
* src/engine-uiserver.c (_uiserver_decrypt): Add stub arg
override_session_key.
(uiserver_decrypt): Ditto.
(uiserver_decrypt_verify): Ditto.
* src/engine-gpgsm.c (gpgsm_decrypt): Ditto.
* src/engine-gpg.c (gpg_decrypt): Add arg override_session_key and set
corresponding gpg option.
* tests/run-decrypt.c (print_result): Print the session key if
available.
(main): Add options --export-session-key and --override-session-key.
--
To keep the number of context manipulation functions at bay, this
patches removes the just added gpgme_set_export_session_keys and
gpgme_get_export_session_keys by flags for the generic context
function.
The patch also implements the --override-session-key feature.
GnuPG-bug-id: 2754
Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'tests/run-decrypt.c')
-rw-r--r-- | tests/run-decrypt.c | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/tests/run-decrypt.c b/tests/run-decrypt.c index 6d38aeea..65624d09 100644 --- a/tests/run-decrypt.c +++ b/tests/run-decrypt.c @@ -51,9 +51,13 @@ print_result (gpgme_decrypt_result_t result) { gpgme_recipient_t recp; int count = 0; + printf ("Original file name: %s\n", nonnull(result->file_name)); printf ("Wrong key usage: %i\n", result->wrong_key_usage); - printf ("Unsupported algorithm: %s\n ", nonnull(result->unsupported_algorithm)); + printf ("Unsupported algorithm: %s\n", + nonnull(result->unsupported_algorithm)); + if (result->session_key) + printf ("Session key: %s\n", result->session_key); for (recp = result->recipients; recp->next; recp = recp->next) { @@ -74,6 +78,8 @@ show_usage (int ex) " --status print status lines from the backend\n" " --openpgp use the OpenPGP protocol (default)\n" " --cms use the CMS protocol\n" + " --export-session-key show the session key\n" + " --override-session-key STRING use STRING as session key\n" , stderr); exit (ex); } @@ -91,6 +97,8 @@ main (int argc, char **argv) gpgme_data_t out = NULL; gpgme_decrypt_result_t result; int print_status = 0; + int export_session_key = 0; + const char *override_session_key = NULL; if (argc) { argc--; argv++; } @@ -125,6 +133,19 @@ main (int argc, char **argv) protocol = GPGME_PROTOCOL_CMS; argc--; argv++; } + else if (!strcmp (*argv, "--export-session-key")) + { + export_session_key = 1; + argc--; argv++; + } + else if (!strcmp (*argv, "--override-session-key")) + { + argc--; argv++; + if (!argc) + show_usage (1); + override_session_key = *argv; + argc--; argv++; + } else if (!strncmp (*argv, "--", 2)) show_usage (1); @@ -152,6 +173,10 @@ main (int argc, char **argv) gpgme_set_status_cb (ctx, status_cb, NULL); gpgme_set_ctx_flag (ctx, "full-status", "1"); } + if (export_session_key) + gpgme_set_ctx_flag (ctx, "export-session-key", "1"); + if (override_session_key) + gpgme_set_ctx_flag (ctx, "override-session-key", override_session_key); err = gpgme_data_new_from_stream (&in, fp_in); if (err) |