From ffa2b2158c80b61356a17e97e4d2684da0ee74a2 Mon Sep 17 00:00:00 2001 From: Marcus Brinkmann Date: Fri, 25 Apr 2003 17:08:00 +0000 Subject: [PATCH] doc/ 2003-04-25 Marcus Brinkmann * gpgme.texi (Importing Keys): Change GPGME_IMPORT_PRIVATE to GPGME_IMPORT_SECRET. gpgme/ 2003-04-25 Marcus Brinkmann * gpgme.h: Change GPGME_IMPORT_PRIVATE to GPGME_IMPORT_SECRET. * import.c (parse_import_res): Parse unchanged field. tests/ 2003-04-25 Marcus Brinkmann * gpg/t-import.c: Rewritten. --- doc/ChangeLog | 3 + doc/gpgme.texi | 4 +- gpgme/ChangeLog | 3 + gpgme/gpgme.h | 4 +- gpgme/import.c | 1 + tests/ChangeLog | 2 + tests/gpg/t-import.c | 264 ++++++++++++++++++++++++++++++------------- 7 files changed, 199 insertions(+), 82 deletions(-) diff --git a/doc/ChangeLog b/doc/ChangeLog index 0f819055..8cd00e78 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,5 +1,8 @@ 2003-04-25 Marcus Brinkmann + * gpgme.texi (Importing Keys): Change GPGME_IMPORT_PRIVATE to + GPGME_IMPORT_SECRET. + * gpgme.texi (Importing Keys): Remove note about gpgme_get_op_info. (Detailed Results): Remove note about import. diff --git a/doc/gpgme.texi b/doc/gpgme.texi index 4f0e852e..cb923851 100644 --- a/doc/gpgme.texi +++ b/doc/gpgme.texi @@ -2315,8 +2315,8 @@ The key contained new signatures. @item GPGME_IMPORT_SUBKEY The key contained new sub keys. -@item GPGME_IMPORT_PRIVATE -The key contained a private key. +@item GPGME_IMPORT_SECRET +The key contained a secret key. @end table @end table @end deftp diff --git a/gpgme/ChangeLog b/gpgme/ChangeLog index 1202ea1b..3949b544 100644 --- a/gpgme/ChangeLog +++ b/gpgme/ChangeLog @@ -1,5 +1,8 @@ 2003-04-25 Marcus Brinkmann + * gpgme.h: Change GPGME_IMPORT_PRIVATE to GPGME_IMPORT_SECRET. + * import.c (parse_import_res): Parse unchanged field. + * gpgme.h: New enum for GPGME_IMPORT_NEW, GPGME_IMPORT_UID, GPGME_IMPORT_SIG, GPGME_IMPORT_SUBKEY, GPGME_IMPORT_PRIVATE. (GpgmeError): GPGME_Unknown_Reason, GPGME_Not_Found, diff --git a/gpgme/gpgme.h b/gpgme/gpgme.h index 416ae90b..7d92443b 100644 --- a/gpgme/gpgme.h +++ b/gpgme/gpgme.h @@ -790,8 +790,8 @@ enum /* The key contained new sub keys. */ GPGME_IMPORT_SUBKEY = 8, - /* The key contained a private key. */ - GPGME_IMPORT_PRIVATE = 16 + /* The key contained a secret key. */ + GPGME_IMPORT_SECRET = 16 }; struct _gpgme_import_status diff --git a/gpgme/import.c b/gpgme/import.c index c9fff5b5..90a6e360 100644 --- a/gpgme/import.c +++ b/gpgme/import.c @@ -160,6 +160,7 @@ parse_import_res (char *args, GpgmeImportResult result) PARSE_NEXT (result->no_user_id); PARSE_NEXT (result->imported); PARSE_NEXT (result->imported_rsa); + PARSE_NEXT (result->unchanged); PARSE_NEXT (result->new_user_ids); PARSE_NEXT (result->new_sub_keys); PARSE_NEXT (result->new_signatures); diff --git a/tests/ChangeLog b/tests/ChangeLog index 4800f225..6a60abb8 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,5 +1,7 @@ 2003-04-25 Marcus Brinkmann + * gpg/t-import.c: Rewritten. + * gpgsm/t-genkey.c: Rewritten. * gpgsm/Makefile.am (noinst_PROGRAMS): Add t-genkey. * gpg/t-genkey.c: Include . diff --git a/tests/gpg/t-import.c b/tests/gpg/t-import.c index 7bf21244..13d1f39c 100644 --- a/tests/gpg/t-import.c +++ b/tests/gpg/t-import.c @@ -1,108 +1,216 @@ /* t-import.c - regression test - * Copyright (C) 2000 Werner Koch (dd9jn) - * Copyright (C) 2001 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 General Public License as published by - * the Free Software Foundation; either version 2 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ + Copyright (C) 2000 Werner Koch (dd9jn) + Copyright (C) 2001, 2003 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 General Public License as published by + the Free Software Foundation; either version 2 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 + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GPGME; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include #include +#include #include -#include #include #include -#define fail_if_err(a) do { if(a) { int my_errno = errno; \ - fprintf (stderr, "%s:%d: GpgmeError %s\n", \ - __FILE__, __LINE__, gpgme_strerror(a)); \ - if ((a) == GPGME_File_Error) \ - fprintf (stderr, "\terrno=`%s'\n", strerror (my_errno)); \ - exit (1); } \ - } while(0) +#define fail_if_err(err) \ + do \ + { \ + if (err) \ + { \ + fprintf (stderr, "%s:%d: GpgmeError %s\n", \ + __FILE__, __LINE__, gpgme_strerror (err)); \ + exit (1); \ + } \ + } \ + while (0) static char * -mk_fname ( const char *fname ) +mk_fname (const char *fname) { - const char *srcdir = getenv ("srcdir"); - char *buf; + const char *srcdir = getenv ("srcdir"); + char *buf; - if (!srcdir) - srcdir = "."; - buf = malloc (strlen(srcdir) + strlen(fname) + 2 ); - if (!buf ) - exit (8); - strcpy (buf, srcdir); - strcat (buf, "/"); - strcat (buf, fname ); - return buf; + if (!srcdir) + srcdir = "."; + buf = malloc (strlen(srcdir) + strlen(fname) + 2); + if (!buf) + exit (8); + strcpy (buf, srcdir); + strcat (buf, "/"); + strcat (buf, fname); + return buf; } -static void -print_op_info (GpgmeCtx c) +void +check_result (GpgmeImportResult result, char *fpr, int secret) { - char *s = gpgme_get_op_info (c, 0); - - if (!s) - puts (""); - else { - puts (s); - free (s); - } + if (result->considered != 1) + { + fprintf (stderr, "Unexpected number of considered keys %i\n", + result->considered); + exit (1); + } + if (result->no_user_id != 0) + { + fprintf (stderr, "Unexpected number of user ids %i\n", + result->no_user_id); + exit (1); + } + if ((secret && result->imported != 0) + || (!secret && (result->imported != 0 && result->imported != 1))) + { + fprintf (stderr, "Unexpected number of imported keys %i\n", + result->imported); + exit (1); + } + if (result->imported_rsa != 0) + { + fprintf (stderr, "Unexpected number of imported RSA keys %i\n", + result->imported_rsa); + exit (1); + } + if ((secret && result->unchanged != 0) + || (!secret && ((result->imported == 0 && result->unchanged != 1) + || (result->imported == 1 && result->unchanged != 0)))) + { + fprintf (stderr, "Unexpected number of unchanged keys %i\n", + result->unchanged); + exit (1); + } + if (result->new_user_ids != 0) + { + fprintf (stderr, "Unexpected number of new user IDs %i\n", + result->new_user_ids); + exit (1); + } + if (result->new_sub_keys != 0) + { + fprintf (stderr, "Unexpected number of new sub keys %i\n", + result->new_sub_keys); + exit (1); + } + if (result->new_signatures != 0) + { + fprintf (stderr, "Unexpected number of new signatures %i\n", + result->new_signatures); + exit (1); + } + if (result->new_revocations != 0) + { + fprintf (stderr, "Unexpected number of new revocations %i\n", + result->new_revocations); + exit (1); + } + if ((secret && result->secret_read != 1) + || (!secret && result->secret_read != 0)) + { + fprintf (stderr, "Unexpected number of secret keys read %i\n", + result->secret_read); + exit (1); + } + if ((secret && result->secret_imported != 0 && result->secret_imported != 1) + || (!secret && result->secret_imported != 0)) + { + fprintf (stderr, "Unexpected number of secret keys imported %i\n", + result->secret_imported); + exit (1); + } + if ((secret + && ((result->secret_imported == 0 && result->secret_unchanged != 1) + || (result->secret_imported == 1 && result->secret_unchanged != 0))) + || (!secret && result->secret_unchanged != 0)) + { + fprintf (stderr, "Unexpected number of secret keys unchanged %i\n", + result->secret_unchanged); + exit (1); + } + if (result->not_imported != 0) + { + fprintf (stderr, "Unexpected number of secret keys not imported %i\n", + result->not_imported); + exit (1); + } + if (!result->imports || result->imports->next) + { + fprintf (stderr, "Unexpected number of status reports\n"); + exit (1); + } + if (strcmp ("ADAB7FCC1F4DE2616ECFA402AF82244F9CD9FD55", result->imports->fpr)) + { + fprintf (stderr, "Unexpected fingerprint %s\n", + result->imports->fpr); + exit (1); + } + if (result->imports->result != 0) + { + fprintf (stderr, "Unexpected status result %s\n", + gpgme_strerror (result->imports->result)); + exit (1); + } + if ((secret + && ((result->secret_imported == 0 + && result->imports->status != GPGME_IMPORT_SECRET) + || (result->secret_imported == 1 + && result->imports->status != (GPGME_IMPORT_SECRET | GPGME_IMPORT_NEW)))) + || (!secret + && ((result->imported == 0 && result->imports->status != 0) + || (result->imported == 1 + && result->imports->status != GPGME_IMPORT_NEW)))) + { + fprintf (stderr, "Unexpected status %i\n", + result->imports->status); + exit (1); + } } int -main (int argc, char **argv ) +main (int argc, char **argv) { - GpgmeCtx ctx; - GpgmeError err; - GpgmeData in; - const char *pubkey_1_asc = mk_fname ("pubkey-1.asc"); - const char *seckey_1_asc = mk_fname ("seckey-1.asc"); + GpgmeCtx ctx; + GpgmeError err; + GpgmeData in; + GpgmeImportResult result; + const char *pubkey_1_asc = mk_fname ("pubkey-1.asc"); + const char *seckey_1_asc = mk_fname ("seckey-1.asc"); - do { - err = gpgme_new (&ctx); - fail_if_err (err); + err = gpgme_new (&ctx); + fail_if_err (err); - err = gpgme_data_new_from_file ( &in, pubkey_1_asc, 1 ); - fail_if_err (err); + err = gpgme_data_new_from_file (&in, pubkey_1_asc, 1); + fail_if_err (err); - err = gpgme_op_import (ctx, in ); - fail_if_err (err); - print_op_info (ctx); + err = gpgme_op_import (ctx, in); + fail_if_err (err); + result = gpgme_op_import_result (ctx); + check_result (result, "ADAB7FCC1F4DE2616ECFA402AF82244F9CD9FD55", 0); + gpgme_data_release (in); - gpgme_data_release (in); + err = gpgme_data_new_from_file (&in, seckey_1_asc, 1); + fail_if_err (err); - err = gpgme_data_new_from_file ( &in, seckey_1_asc, 1 ); - fail_if_err (err); + err = gpgme_op_import (ctx, in); + fail_if_err (err); + result = gpgme_op_import_result (ctx); + check_result (result, "ADAB7FCC1F4DE2616ECFA402AF82244F9CD9FD55", 1); + gpgme_data_release (in); - err = gpgme_op_import (ctx, in ); - fail_if_err (err); - print_op_info (ctx); - - gpgme_data_release (in); - gpgme_release (ctx); - } while ( argc > 1 && !strcmp( argv[1], "--loop" ) ); - - return 0; + gpgme_release (ctx); + return 0; } - -