From b8159eadb5636cd9d93ee60c41e75d5978927870 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Tue, 25 Oct 2016 17:27:49 +0200 Subject: core: New API functions gpgme_set_sender, gpgme_get_sender. * src/context.h (struct gpgme_context): Add field 'sender'. * src/gpgme.c: Include mbox-util.h. (gpgme_release): Free SENDER. (gpgme_set_sender): New. (gpgme_get_sender): New. * src/gpgme.def, src/libgpgme.vers: Add new functions. * src/engine-gpg.c (append_args_from_sender): New. (gpg_encrypt_sign, gpg_sign): Call append_args_from_sender. (gpg_verify): Add arg CTX. Call append_args_from_sender/ * src/engine-gpgsm.c (gpgsm_verify): Add dummy arg CTX. * src/engine-uiserver.c (uiserver_verify): Ditto. * src/engine.c (_gpgme_engine_op_verify): Add arg CTX. * src/verify.c (verify_start): Pass CTX to engine function. * tests/gpg/t-verify.c (main): Add some checks for new functions. * tests/run-sign.c (main): Add option --sender. * tests/run-verify.c (main): Ditto. Signed-off-by: Werner Koch --- tests/gpg/t-verify.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) (limited to 'tests/gpg/t-verify.c') diff --git a/tests/gpg/t-verify.c b/tests/gpg/t-verify.c index 9842d3af..f955cc9d 100644 --- a/tests/gpg/t-verify.c +++ b/tests/gpg/t-verify.c @@ -209,6 +209,7 @@ main (int argc, char *argv[]) gpgme_error_t err; gpgme_data_t sig, text; gpgme_verify_result_t result; + const char *s; (void)argc; (void)argv; @@ -270,6 +271,54 @@ main (int argc, char *argv[]) exit (1); } + /* Checking that set/get_sernder works. */ + err = gpgme_set_sender (ctx, "foo@example.org"); + fail_if_err (err); + s = gpgme_get_sender (ctx); + if (!s || strcmp (s, "foo@example.org")) + { + fprintf (stderr, "%s:%i: gpgme_{set,get}_sender mismatch\n", + __FILE__, __LINE__); + exit (1); + } + + err = gpgme_set_sender (ctx, ""); + fail_if_err (err); + s = gpgme_get_sender (ctx); + if (!s || strcmp (s, "bar@example.org")) + { + fprintf (stderr, "%s:%i: gpgme_{set,get}_sender mismatch\n", + __FILE__, __LINE__); + exit (1); + } + + err = gpgme_set_sender (ctx, "Foo bar (comment) "); + fail_if_err (err); + s = gpgme_get_sender (ctx); + if (!s || strcmp (s, "foo@example.org")) + { + fprintf (stderr, "%s:%i: gpgme_{set,get}_sender mismatch\n", + __FILE__, __LINE__); + exit (1); + } + + err = gpgme_set_sender (ctx, "foo"); + if (gpgme_err_code (err) != GPG_ERR_INV_VALUE) + { + fprintf (stderr, "%s:%i: gpgme_set_sender didn't detect bogus address\n", + __FILE__, __LINE__); + exit (1); + } + /* (the former address should still be there.) */ + s = gpgme_get_sender (ctx); + if (!s || strcmp (s, "foo@example.org")) + { + fprintf (stderr, "%s:%i: gpgme_{set,get}_sender mismatch\n", + __FILE__, __LINE__); + exit (1); + } + + gpgme_data_release (sig); gpgme_data_release (text); gpgme_release (ctx); -- cgit v1.2.3