diff options
| author | Werner Koch <[email protected]> | 2016-05-19 15:01:07 +0000 | 
|---|---|---|
| committer | Werner Koch <[email protected]> | 2016-05-19 15:04:54 +0000 | 
| commit | 88f2c1c0d16eee6bb36a901623ea65ac69499f03 (patch) | |
| tree | 4ac0d8ab84bee699987f61e277e8c4d80e857850 /tests/run-verify.c | |
| parent | api: Remove arbitrary restriction from gpgme_op_verify. (diff) | |
| download | gpgme-88f2c1c0d16eee6bb36a901623ea65ac69499f03.tar.gz gpgme-88f2c1c0d16eee6bb36a901623ea65ac69499f03.zip | |
api: Add new function gpgme_set_ctx_flag.
* src/gpgme.h.in (gpgme_set_ctx_flag): New prototype.
* src/gpgme.c (gpgme_set_ctx_flag): New.
* src/gpgme.def, src/libgpgme.vers: Add new function.
* src/context.h (struct gpgme_context): Add FULL_STATUS.
* src/decrypt.c (_gpgme_decrypt_status_handler): Do not call the
  status callback if FULL_STATUS is set.
* src/genkey.c (genkey_status_handler): Ditto.
* src/passphrase.c (_gpgme_passphrase_status_handler): Ditto.
* src/sign.c (_gpgme_sign_status_handler): Ditto.
* src/engine-backend.h (struct engine_ops): Add SET_STATUS_CB and add
adjust all definitions of that variable.
* src/engine.c (_gpgme_engine_set_status_cb): New.
* src/op-support.c (_gpgme_op_reset): Call this function.
* src/engine-gpg.c (struct engine_gpg): Add fields MON_CB and
MON_CB_VALUE.
(gpg_set_status_cb): New.
(_gpgme_engine_ops_gpg): Register that function.
(read_status): Call the monitor callback.
* src/engine-gpgsm.c (struct engine_gpgsm): Add fields MON_CB and
MON_CB_VALUE.
(_gpgme_engine_ops_gpgsm): Register that function.
(gpgsm_assuan_simple_command): Change first arg to be an engine
context and adjust call callers.  Call the monitor callback.
* src/engine-uiserver.c (struct engine_uiserver): Add fields MON_CB
and MON_CB_VALUE.
(_gpgme_engine_ops_uiserver): Register that function.
(uiserver_assuan_simple_command): Change first arg to be an engine
context and adjust call callers.  Call the monitor callback.
* tests/run-verify.c (status_cb): New.
(print_result): Print algo names.
(main): Add option --status.
--
This new feature is mainly intended for bug tracking.  Having access
to the raw status lines might also be useful for applications, though.
Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'tests/run-verify.c')
| -rw-r--r-- | tests/run-verify.c | 29 | 
1 files changed, 26 insertions, 3 deletions
| diff --git a/tests/run-verify.c b/tests/run-verify.c index b49ea2ab..b7be3203 100644 --- a/tests/run-verify.c +++ b/tests/run-verify.c @@ -36,6 +36,15 @@  static int verbose; +static gpg_error_t +status_cb (void *opaque, const char *keyword, const char *value) +{ +  (void)opaque; +  fprintf (stderr, "status_cb: %s %s\n", keyword, value); +  return 0; +} + +  static void  print_summary (gpgme_sigsum_t summary)  { @@ -102,8 +111,10 @@ print_result (gpgme_verify_result_t result)        printf ("  validity ..: ");        print_validity (sig->validity); putchar ('\n');        printf ("  val.reason : %s\n", gpgme_strerror (sig->status)); -      printf ("  pubkey algo: %d\n", sig->pubkey_algo); -      printf ("  digest algo: %d\n", sig->hash_algo); +      printf ("  pubkey algo: %d (%s)\n", sig->pubkey_algo, +              nonnull(gpgme_pubkey_algo_name (sig->pubkey_algo))); +      printf ("  digest algo: %d (%s)\n", sig->hash_algo, +              nonnull(gpgme_hash_algo_name (sig->hash_algo)));        printf ("  pka address: %s\n", nonnull (sig->pka_address));        printf ("  pka trust .: %s\n",                sig->pka_trust == 0? "n/a" : @@ -126,6 +137,7 @@ show_usage (int ex)    fputs ("usage: " PGM " [options] [DETACHEDSIGFILE] FILE\n\n"           "Options:\n"           "  --verbose        run in verbose mode\n" +         "  --status         print status lines from the backend\n"           "  --openpgp        use the OpenPGP protocol (default)\n"           "  --cms            use the CMS protocol\n"           , stderr); @@ -145,6 +157,7 @@ main (int argc, char **argv)    FILE *fp_msg = NULL;    gpgme_data_t msg = NULL;    gpgme_verify_result_t result; +  int print_status = 0;    if (argc)      { argc--; argv++; } @@ -164,6 +177,11 @@ main (int argc, char **argv)            verbose = 1;            argc--; argv++;          } +      else if (!strcmp (*argv, "--status")) +        { +          print_status = 1; +          argc--; argv++; +        }        else if (!strcmp (*argv, "--openpgp"))          {            protocol = GPGME_PROTOCOL_OpenPGP; @@ -207,6 +225,11 @@ main (int argc, char **argv)    err = gpgme_new (&ctx);    fail_if_err (err);    gpgme_set_protocol (ctx, protocol); +  if (print_status) +    { +      gpgme_set_status_cb (ctx, status_cb, NULL); +      gpgme_set_ctx_flag (ctx, "full-status", "1"); +    }    err = gpgme_data_new_from_stream (&sig, fp_sig);    if (err) @@ -232,7 +255,7 @@ main (int argc, char **argv)      print_result (result);    if (err)      { -      fprintf (stderr, PGM ": signing failed: %s\n", gpgme_strerror (err)); +      fprintf (stderr, PGM ": verify failed: %s\n", gpgme_strerror (err));        exit (1);      } | 
