aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2009-06-16 15:42:37 +0000
committerWerner Koch <[email protected]>2009-06-16 15:42:37 +0000
commitbebd9cbe29cf6db15469502b5c6b1f83c93513ef (patch)
treef2812ddbb4ddd2f00592b36a6c16cbf494cc7f81 /tests
parentdoc/ (diff)
downloadgpgme-bebd9cbe29cf6db15469502b5c6b1f83c93513ef.tar.gz
gpgme-bebd9cbe29cf6db15469502b5c6b1f83c93513ef.zip
Add support for gpg --fetch-keys.
Diffstat (limited to 'tests')
-rw-r--r--tests/ChangeLog4
-rw-r--r--tests/gpg/Makefile.am2
-rw-r--r--tests/gpg/pgp-export.c7
-rw-r--r--tests/gpg/pgp-import.c129
-rw-r--r--tests/gpg/pgp-keylist.c61
-rw-r--r--tests/gpg/t-support.h61
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);
+}
+