diff options
author | Werner Koch <[email protected]> | 2009-06-16 15:42:37 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2009-06-16 15:42:37 +0000 |
commit | bebd9cbe29cf6db15469502b5c6b1f83c93513ef (patch) | |
tree | f2812ddbb4ddd2f00592b36a6c16cbf494cc7f81 /tests | |
parent | doc/ (diff) | |
download | gpgme-bebd9cbe29cf6db15469502b5c6b1f83c93513ef.tar.gz gpgme-bebd9cbe29cf6db15469502b5c6b1f83c93513ef.zip |
Add support for gpg --fetch-keys.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/ChangeLog | 4 | ||||
-rw-r--r-- | tests/gpg/Makefile.am | 2 | ||||
-rw-r--r-- | tests/gpg/pgp-export.c | 7 | ||||
-rw-r--r-- | tests/gpg/pgp-import.c | 129 | ||||
-rw-r--r-- | tests/gpg/pgp-keylist.c | 61 | ||||
-rw-r--r-- | tests/gpg/t-support.h | 61 |
6 files changed, 195 insertions, 69 deletions
diff --git a/tests/ChangeLog b/tests/ChangeLog index c9ab1337..fcdf1565 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,5 +1,9 @@ 2009-06-16 Werner Koch <[email protected]> + * gpg/pgp-import.c: New. + * gpg/t-support.h (print_import_result, nonnull): Factored out + from other tools. + * gpg/pgp-export.c, gpg/pgp-keylist.c: New. 2009-06-09 Werner Koch <[email protected]> diff --git a/tests/gpg/Makefile.am b/tests/gpg/Makefile.am index fdb023c9..441e80ca 100644 --- a/tests/gpg/Makefile.am +++ b/tests/gpg/Makefile.am @@ -51,7 +51,7 @@ t_thread1_LDADD = ../../src/libgpgme-pthread.la # We don't run t-genkey in the test suite, because it takes too long # The other programs are used for debugging. -noinst_PROGRAMS = $(TESTS) t-genkey pgp-keylist pgp-export +noinst_PROGRAMS = $(TESTS) t-genkey pgp-keylist pgp-export pgp-import mkdemodirs: mkdemodirs.in Makefile sed -e 's,[@]GPG[@],$(GPG),g' < $(srcdir)/mkdemodirs.in > mkdemodirs diff --git a/tests/gpg/pgp-export.c b/tests/gpg/pgp-export.c index 9911c182..a0b3e8a5 100644 --- a/tests/gpg/pgp-export.c +++ b/tests/gpg/pgp-export.c @@ -37,13 +37,6 @@ static int verbose; -static const char * -nonnull (const char *s) -{ - return s? s :"[none]"; -} - - static int show_usage (int ex) { diff --git a/tests/gpg/pgp-import.c b/tests/gpg/pgp-import.c new file mode 100644 index 00000000..b9d68608 --- /dev/null +++ b/tests/gpg/pgp-import.c @@ -0,0 +1,129 @@ +/* pgp-import.c - Helper to run an import command + Copyright (C) 2008, 2009 g10 Code GmbH + + This file is part of GPGME. + + GPGME is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of + the License, or (at your option) any later version. + + GPGME is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this program; if not, see <http://www.gnu.org/licenses/>. +*/ + +/* We need to include config.h so that we know whether we are building + with large file system (LFS) support. */ +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> + +#include <gpgme.h> + +#define PGM "pgp-import" + +#include "t-support.h" + + +static int verbose; + + +static int +show_usage (int ex) +{ + fputs ("usage: " PGM " [options] FILENAMEs\n\n" + "Options:\n" + " --verbose run in verbose mode\n" + " --url import from given URLs\n" + " -0 URLs are delimited by a nul\n" + , stderr); + exit (ex); +} + +int +main (int argc, char **argv) +{ + int last_argc = -1; + gpgme_error_t err; + gpgme_ctx_t ctx; + int url_mode = 0; + int nul_mode = 0; + gpgme_import_result_t impres; + gpgme_data_t data; + + if (argc) + { argc--; argv++; } + while (argc && last_argc != argc ) + { + last_argc = argc; + if (!strcmp (*argv, "--")) + { + argc--; argv++; + break; + } + else if (!strcmp (*argv, "--help")) + show_usage (0); + else if (!strcmp (*argv, "--verbose")) + { + verbose = 1; + argc--; argv++; + } + else if (!strcmp (*argv, "--url")) + { + url_mode = 1; + argc--; argv++; + } + else if (!strcmp (*argv, "-0")) + { + nul_mode = 1; + argc--; argv++; + } + else if (!strncmp (*argv, "--", 2)) + show_usage (1); + + } + + if (!argc) + show_usage (1); + + init_gpgme (GPGME_PROTOCOL_OpenPGP); + + err = gpgme_new (&ctx); + fail_if_err (err); + gpgme_set_protocol (ctx, GPGME_PROTOCOL_OpenPGP); + + for (; argc; argc--, argv++) + { + printf ("reading file `%s'\n", *argv); + err = gpgme_data_new_from_file (&data, *argv, 1); + fail_if_err (err); + + if (url_mode) + gpgme_data_set_encoding (data, (nul_mode? GPGME_DATA_ENCODING_URL0 + : GPGME_DATA_ENCODING_URL)); + + err = gpgme_op_import (ctx, data); + fail_if_err (err); + impres = gpgme_op_import_result (ctx); + if (!impres) + { + fprintf (stderr, PGM ": no import result returned\n"); + exit (1); + } + print_import_result (impres); + + gpgme_data_release (data); + } + + gpgme_release (ctx); + return 0; +} diff --git a/tests/gpg/pgp-keylist.c b/tests/gpg/pgp-keylist.c index 2645f48b..4978b8dd 100644 --- a/tests/gpg/pgp-keylist.c +++ b/tests/gpg/pgp-keylist.c @@ -37,67 +37,6 @@ static int verbose; -static const char * -nonnull (const char *s) -{ - return s? s :"[none]"; -} - - -static void -print_import_result (gpgme_import_result_t r) -{ - gpgme_import_status_t st; - - printf ("key import results:\n" - " considered: %d\n" - " no user id: %d\n" - " imported: %d\n" - " imported_rsa: %d\n" - " unchanged: %d\n" - " new user ids: %d\n" - " new subkeys: %d\n" - " new signatures: %d\n" - " new revocations: %d\n" - " secret read: %d\n" - " secret imported: %d\n" - " secret unchanged: %d\n" - " skipped new keys: %d\n" - " not imported: %d\n", - r->considered, - r->no_user_id, - r->imported, - r->imported_rsa, - r->unchanged, - r->new_user_ids, - r->new_sub_keys, - r->new_signatures, - r->new_revocations, - r->secret_read, - r->secret_imported, - r->secret_unchanged, - r->skipped_new_keys, - r->not_imported); - - for (st=r->imports; st; st = st->next) - { - printf (" fpr: %s err: %d (%s) status:", nonnull (st->fpr), - st->result, gpg_strerror (st->result)); - if (st->status & GPGME_IMPORT_NEW) - fputs (" new", stdout); - if (st->status & GPGME_IMPORT_UID) - fputs (" uid", stdout); - if (st->status & GPGME_IMPORT_SIG) - fputs (" sig", stdout); - if (st->status & GPGME_IMPORT_SUBKEY) - fputs (" subkey", stdout); - if (st->status & GPGME_IMPORT_SECRET) - fputs (" secret", stdout); - putchar ('\n'); - } -} - - static int show_usage (int ex) { diff --git a/tests/gpg/t-support.h b/tests/gpg/t-support.h index 362b857a..13475f29 100644 --- a/tests/gpg/t-support.h +++ b/tests/gpg/t-support.h @@ -48,6 +48,13 @@ while (0) +static const char * +nonnull (const char *s) +{ + return s? s :"[none]"; +} + + void print_data (gpgme_data_t dh) { @@ -113,3 +120,57 @@ init_gpgme (gpgme_protocol_t proto) err = gpgme_engine_check_version (proto); fail_if_err (err); } + + +void +print_import_result (gpgme_import_result_t r) +{ + gpgme_import_status_t st; + + for (st=r->imports; st; st = st->next) + { + printf (" fpr: %s err: %d (%s) status:", nonnull (st->fpr), + st->result, gpg_strerror (st->result)); + if (st->status & GPGME_IMPORT_NEW) + fputs (" new", stdout); + if (st->status & GPGME_IMPORT_UID) + fputs (" uid", stdout); + if (st->status & GPGME_IMPORT_SIG) + fputs (" sig", stdout); + if (st->status & GPGME_IMPORT_SUBKEY) + fputs (" subkey", stdout); + if (st->status & GPGME_IMPORT_SECRET) + fputs (" secret", stdout); + putchar ('\n'); + } + printf ("key import summary:\n" + " considered: %d\n" + " no user id: %d\n" + " imported: %d\n" + " imported_rsa: %d\n" + " unchanged: %d\n" + " new user ids: %d\n" + " new subkeys: %d\n" + " new signatures: %d\n" + " new revocations: %d\n" + " secret read: %d\n" + " secret imported: %d\n" + " secret unchanged: %d\n" + " skipped new keys: %d\n" + " not imported: %d\n", + r->considered, + r->no_user_id, + r->imported, + r->imported_rsa, + r->unchanged, + r->new_user_ids, + r->new_sub_keys, + r->new_signatures, + r->new_revocations, + r->secret_read, + r->secret_imported, + r->secret_unchanged, + r->skipped_new_keys, + r->not_imported); +} + |